module.exports = function(e) {
    function t(t) {
        for (var i, n, r = t[0], o = t[1], s = 0, a = []; s < r.length; s++) n = r[s], Object.prototype.hasOwnProperty.call(I, n) && I[n] && a.push(I[n][0]), I[n] = 0;
        for (i in o) Object.prototype.hasOwnProperty.call(o, i) && (e[i] = o[i]);
        for (R && R(t); a.length;) a.shift()()
    }

    function i(e) {
        delete I[e]
    }
    var n = window.webpackHotUpdate;
    window.webpackHotUpdate = function(e, t) {
        ! function(e, t) {
            if (C[e] && y[e]) {
                for (var i in y[e] = !1, t) Object.prototype.hasOwnProperty.call(t, i) && (f[i] = t[i]);
                0 == --b && 0 === _ && L()
            }
        }(e, t), n && n(e, t)
    };
    var r, o = !0,
        s = "f55a29d0ed603b299dc2",
        a = {},
        l = [],
        d = [];

    function c(e) {
        var t = D[e];
        if (!t) return T;

        function i(i) {
            return t.hot.active ? (D[i] ? -1 === D[i].parents.indexOf(e) && D[i].parents.push(e) : (l = [e], r = i), -1 === t.children.indexOf(i) && t.children.push(i)) : (console.warn("[HMR] unexpected require(" + i + ") from disposed module " + e), l = []), T(i)
        }
        for (var n in T) Object.prototype.hasOwnProperty.call(T, n) && "e" !== n && "t" !== n && Object.defineProperty(i, n, function(e) {
            return {
                configurable: !0,
                enumerable: !0,
                get: function() {
                    return T[e]
                },
                set: function(t) {
                    T[e] = t
                }
            }
        }(n));
        return i.e = function(e) {
            return "ready" === u && p("prepare"), _++, T.e(e).then(t, (function(e) {
                throw t(), e
            }));

            function t() {
                _--, "prepare" === u && (w[e] || k(e), 0 === _ && 0 === b && L())
            }
        }, i.t = function(e, t) {
            return 1 & t && (e = i(e)), T.t(e, -2 & t)
        }, i
    }
    var h = [],
        u = "idle";

    function p(e) {
        u = e;
        for (var t = 0; t < h.length; t++) h[t].call(null, e)
    }
    var g, f, m, v, b = 0,
        _ = 0,
        w = {},
        y = {},
        C = {};

    function x(e) {
        return +e + "" === e ? +e : e
    }

    function S(e) {
        if ("idle" !== u) throw new Error("check() is only allowed in idle status");
        return o = e, p("check"), t = (t = 1e4) || 1e4, new Promise((function(e, i) {
            if ("undefined" == typeof XMLHttpRequest) return i(new Error("No browser support"));
            try {
                var n = new XMLHttpRequest,
                    r = T.p + "" + s + ".hot-update.json";
                n.open("GET", r, !0), n.timeout = t, n.send(null)
            } catch (e) {
                return i(e)
            }
            n.onreadystatechange = function() {
                if (4 === n.readyState)
                    if (0 === n.status) i(new Error("Manifest request to " + r + " timed out."));
                    else if (404 === n.status) e();
                else if (200 !== n.status && 304 !== n.status) i(new Error("Manifest request to " + r + " failed."));
                else {
                    try {
                        var t = JSON.parse(n.responseText)
                    } catch (t) {
                        return void i(t)
                    }
                    e(t)
                }
            }
        })).then((function(e) {
            if (!e) return p(E() ? "ready" : "idle"), null;
            y = {}, w = {}, C = e.c, m = e.h, p("prepare");
            var t;
            e = new Promise((function(e, t) {
                g = {
                    resolve: e,
                    reject: t
                }
            }));
            for (t in f = {}, I) k(t);
            return "prepare" === u && 0 === _ && 0 === b && L(), e
        }));
        var t
    }

    function k(e) {
        var t, i;
        C[e] ? (y[e] = !0, b++, t = e, (i = document.createElement("script")).charset = "utf-8", i.src = T.p + "" + t + "." + s + ".hot-update.js", document.head.appendChild(i)) : w[e] = !0
    }

    function L() {
        p("ready");
        var e = g;
        if (g = null, e)
            if (o) Promise.resolve().then((function() {
                return O(o)
            })).then((function(t) {
                e.resolve(t)
            }), (function(t) {
                e.reject(t)
            }));
            else {
                var t, i = [];
                for (t in f) Object.prototype.hasOwnProperty.call(f, t) && i.push(x(t));
                e.resolve(i)
            }
    }

    function O(t) {
        if ("ready" !== u) throw new Error("apply() is only allowed in ready status");
        return function t(n) {
            var o, d, c, h;

            function u(e) {
                for (var t = [e], i = {}, n = t.map((function(e) {
                        return {
                            chain: [e],
                            id: e
                        }
                    })); 0 < n.length;) {
                    var r = n.pop(),
                        o = r.id,
                        s = r.chain;
                    if ((h = D[o]) && (!h.hot._selfAccepted || h.hot._selfInvalidated)) {
                        if (h.hot._selfDeclined) return {
                            type: "self-declined",
                            chain: s,
                            moduleId: o
                        };
                        if (h.hot._main) return {
                            type: "unaccepted",
                            chain: s,
                            moduleId: o
                        };
                        for (var a = 0; a < h.parents.length; a++) {
                            var l = h.parents[a],
                                d = D[l];
                            if (d) {
                                if (d.hot._declinedDependencies[o]) return {
                                    type: "declined",
                                    chain: s.concat([l]),
                                    moduleId: o,
                                    parentId: l
                                }; - 1 === t.indexOf(l) && (d.hot._acceptedDependencies[o] ? (i[l] || (i[l] = []), g(i[l], [o])) : (delete i[l], t.push(l), n.push({
                                    chain: s.concat([l]),
                                    id: l
                                })))
                            }
                        }
                    }
                }
                return {
                    type: "accepted",
                    moduleId: e,
                    outdatedModules: t,
                    outdatedDependencies: i
                }
            }

            function g(e, t) {
                for (var i = 0; i < t.length; i++) {
                    var n = t[i]; - 1 === e.indexOf(n) && e.push(n)
                }
            }
            E();
            var b = {},
                _ = [],
                w = {},
                y = function() {
                    console.warn("[HMR] unexpected require(" + k.moduleId + ") to disposed module")
                };
            for (var S in f)
                if (Object.prototype.hasOwnProperty.call(f, S)) {
                    var k;
                    M = x(S);
                    var L = !1,
                        O = !1,
                        N = !1,
                        I = "";
                    switch ((k = f[S] ? u(M) : {
                        type: "disposed",
                        moduleId: S
                    }).chain && (I = "\nUpdate propagation: " + k.chain.join(" -> ")), k.type) {
                        case "self-declined":
                            n.onDeclined && n.onDeclined(k), n.ignoreDeclined || (L = new Error("Aborted because of self decline: " + k.moduleId + I));
                            break;
                        case "declined":
                            n.onDeclined && n.onDeclined(k), n.ignoreDeclined || (L = new Error("Aborted because of declined dependency: " + k.moduleId + " in " + k.parentId + I));
                            break;
                        case "unaccepted":
                            n.onUnaccepted && n.onUnaccepted(k), n.ignoreUnaccepted || (L = new Error("Aborted because " + M + " is not accepted" + I));
                            break;
                        case "accepted":
                            n.onAccepted && n.onAccepted(k), O = !0;
                            break;
                        case "disposed":
                            n.onDisposed && n.onDisposed(k), N = !0;
                            break;
                        default:
                            throw new Error("Unexception type " + k.type)
                    }
                    if (L) return p("abort"), Promise.reject(L);
                    if (O)
                        for (var M in w[M] = f[M], g(_, k.outdatedModules), k.outdatedDependencies) Object.prototype.hasOwnProperty.call(k.outdatedDependencies, M) && (b[M] || (b[M] = []), g(b[M], k.outdatedDependencies[M]));
                    N && (g(_, [k.moduleId]), w[M] = y)
                } var P, A = [];
            for (d = 0; d < _.length; d++) M = _[d], D[M] && D[M].hot._selfAccepted && w[M] !== y && !D[M].hot._selfInvalidated && A.push({
                module: M,
                parents: D[M].parents.slice(),
                errorHandler: D[M].hot._selfAccepted
            });
            p("dispose"), Object.keys(C).forEach((function(e) {
                !1 === C[e] && i(e)
            }));
            for (var R, F, j = _.slice(); 0 < j.length;)
                if (M = j.pop(), h = D[M]) {
                    var B = {},
                        V = h.hot._disposeHandlers;
                    for (c = 0; c < V.length; c++)(o = V[c])(B);
                    for (a[M] = B, h.hot.active = !1, delete D[M], delete b[M], c = 0; c < h.children.length; c++) {
                        var W = D[h.children[c]];
                        W && 0 <= (P = W.parents.indexOf(M)) && W.parents.splice(P, 1)
                    }
                } for (M in b)
                if (Object.prototype.hasOwnProperty.call(b, M) && (h = D[M]))
                    for (F = b[M], c = 0; c < F.length; c++) R = F[c], 0 <= (P = h.children.indexOf(R)) && h.children.splice(P, 1);
            for (M in p("apply"), void 0 !== m && (s = m, m = void 0), f = void 0, w) Object.prototype.hasOwnProperty.call(w, M) && (e[M] = w[M]);
            var z = null;
            for (M in b)
                if (Object.prototype.hasOwnProperty.call(b, M) && (h = D[M])) {
                    F = b[M];
                    var H = [];
                    for (d = 0; d < F.length; d++) R = F[d], (o = h.hot._acceptedDependencies[R]) && -1 === H.indexOf(o) && H.push(o);
                    for (d = 0; d < H.length; d++) {
                        o = H[d];
                        try {
                            o(F)
                        } catch (t) {
                            n.onErrored && n.onErrored({
                                type: "accept-errored",
                                moduleId: M,
                                dependencyId: F[d],
                                error: t
                            }), n.ignoreErrored || (z = z || t)
                        }
                    }
                } for (d = 0; d < A.length; d++) {
                var U = A[d];
                M = U.module, l = U.parents, r = M;
                try {
                    T(M)
                } catch (o) {
                    if ("function" == typeof U.errorHandler) try {
                        U.errorHandler(o)
                    } catch (t) {
                        n.onErrored && n.onErrored({
                            type: "self-accept-error-handler-errored",
                            moduleId: M,
                            error: t,
                            originalError: o
                        }), z = (z = n.ignoreErrored ? z : z || t) || o
                    } else n.onErrored && n.onErrored({
                        type: "self-accept-errored",
                        moduleId: M,
                        error: o
                    }), n.ignoreErrored || (z = z || o)
                }
            }
            return z ? (p("fail"), Promise.reject(z)) : v ? t(n).then((function(e) {
                return _.forEach((function(t) {
                    e.indexOf(t) < 0 && e.push(t)
                })), e
            })) : (p("idle"), new Promise((function(e) {
                e(_)
            })))
        }(t = t || {})
    }

    function E() {
        return v && (f = f || {}, v.forEach(N), v = void 0, 1)
    }

    function N(t) {
        Object.prototype.hasOwnProperty.call(f, t) || (f[t] = e[t])
    }
    var D = {},
        I = {
            1: 0
        };

    function T(t) {
        if (D[t]) return D[t].exports;
        var i, n, o = D[t] = {
            i: t,
            l: !1,
            exports: {},
            hot: (n = {
                _acceptedDependencies: {},
                _declinedDependencies: {},
                _selfAccepted: !1,
                _selfDeclined: !1,
                _selfInvalidated: !1,
                _disposeHandlers: [],
                _main: r !== (i = t),
                active: !0,
                accept: function(e, t) {
                    if (void 0 === e) n._selfAccepted = !0;
                    else if ("function" == typeof e) n._selfAccepted = e;
                    else if ("object" == typeof e)
                        for (var i = 0; i < e.length; i++) n._acceptedDependencies[e[i]] = t || function() {};
                    else n._acceptedDependencies[e] = t || function() {}
                },
                decline: function(e) {
                    if (void 0 === e) n._selfDeclined = !0;
                    else if ("object" == typeof e)
                        for (var t = 0; t < e.length; t++) n._declinedDependencies[e[t]] = !0;
                    else n._declinedDependencies[e] = !0
                },
                dispose: function(e) {
                    n._disposeHandlers.push(e)
                },
                addDisposeHandler: function(e) {
                    n._disposeHandlers.push(e)
                },
                removeDisposeHandler: function(e) {
                    0 <= (e = n._disposeHandlers.indexOf(e)) && n._disposeHandlers.splice(e, 1)
                },
                invalidate: function() {
                    switch (this._selfInvalidated = !0, u) {
                        case "idle":
                            (f = {})[i] = e[i], p("ready");
                            break;
                        case "ready":
                            N(i);
                            break;
                        case "prepare":
                        case "check":
                        case "dispose":
                        case "apply":
                            (v = v || []).push(i)
                    }
                },
                check: S,
                apply: O,
                status: function(e) {
                    if (!e) return u;
                    h.push(e)
                },
                addStatusHandler: function(e) {
                    h.push(e)
                },
                removeStatusHandler: function(e) {
                    0 <= (e = h.indexOf(e)) && h.splice(e, 1)
                },
                data: a[i]
            }, r = void 0, n),
            parents: (d = l, l = [], d),
            children: []
        };
        return e[t].call(o.exports, o, o.exports, c(t)), o.l = !0, o.exports
    }
    T.e = function(e) {
        var t, i, n, r, o, s = [],
            a = I[e];
        return 0 !== a && (a ? s.push(a[2]) : (o = new Promise((function(t, i) {
            a = I[e] = [t, i]
        })), s.push(a[2] = o), (t = document.createElement("script")).charset = "utf-8", t.timeout = 120, T.nc && t.setAttribute("nonce", T.nc), t.src = T.p + "" + ({} [o = e] || o) + ".js", i = new Error, n = function(n) {
            t.onerror = t.onload = null, clearTimeout(r);
            var o, s = I[e];
            0 !== s && (s && (o = n && ("load" === n.type ? "missing" : n.type), n = n && n.target && n.target.src, i.message = "正在加载 chunk " + e + " failed.\n(" + o + ": " + n + ")", i.name = "ChunkLoadError", i.type = o, i.request = n, s[1](i)), I[e] = void 0)
        }, r = setTimeout((function() {
            n({
                type: "timeout",
                target: t
            })
        }), 12e4), t.onerror = t.onload = n, document.head.appendChild(t))), Promise.all(s)
    }, T.m = e, T.c = D, T.d = function(e, t, i) {
        T.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: i
        })
    }, T.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }), Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }, T.t = function(e, t) {
        if (1 & t && (e = T(e)), 8 & t) return e;
        if (4 & t && "object" == typeof e && e && e.__esModule) return e;
        var i = Object.create(null);
        if (T.r(i), Object.defineProperty(i, "default", {
                enumerable: !0,
                value: e
            }), 2 & t && "string" != typeof e)
            for (var n in e) T.d(i, n, function(t) {
                return e[t]
            }.bind(null, n));
        return i
    }, T.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e.default
        } : function() {
            return e
        };
        return T.d(t, "a", t), t
    }, T.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }, T.p = "", T.oe = function(e) {
        throw console.error(e), e
    }, T.h = function() {
        return s
    };
    var M = (P = window.webpackJsonp = window.webpackJsonp || []).push.bind(P);
    P.push = t;
    for (var P = P.slice(), A = 0; A < P.length; A++) t(P[A]);
    var R = M;
    return c(471)(T.s = 471)
}([function(e, t, i) {
    "use strict";

    function n(e, t, ...i) {
        return function(e, t) {
            let i;
            return i = 0 === t.length ? e : e.replace(/\{(\d+)\}/g, (function(e, i) {
                return i = i[0], void 0 !== t[i] ? t[i] : e
            })), i
        }(t, i)
    }
    i.d(t, "a", (function() {
        return n
    }))
}, function(e, t, i) {
    "use strict";
    i.d(t, "q", (function() {
        return h
    })), i.d(t, "K", (function() {
        return u
    })), i.d(t, "g", (function() {
        return g
    })), i.d(t, "l", (function() {
        return m
    })), i.d(t, "h", (function() {
        return b
    })), i.d(t, "i", (function() {
        return _
    })), i.d(t, "P", (function() {
        return w
    })), i.d(t, "R", (function() {
        return y
    })), i.d(t, "j", (function() {
        return k
    })), i.d(t, "x", (function() {
        return L
    })), i.d(t, "w", (function() {
        return O
    })), i.d(t, "b", (function() {
        return N
    })), i.d(t, "D", (function() {
        return D
    })), i.d(t, "A", (function() {
        return I
    })), i.d(t, "f", (function() {
        return T
    })), i.d(t, "F", (function() {
        return M
    })), i.d(t, "z", (function() {
        return P
    })), i.d(t, "y", (function() {
        return A
    })), i.d(t, "E", (function() {
        return R
    })), i.d(t, "I", (function() {
        return F
    })), i.d(t, "u", (function() {
        return j
    })), i.d(t, "G", (function() {
        return B
    })), i.d(t, "L", (function() {
        return W
    })), i.d(t, "C", (function() {
        return z
    })), i.d(t, "v", (function() {
        return H
    })), i.d(t, "t", (function() {
        return U
    })), i.d(t, "s", (function() {
        return q
    })), i.d(t, "M", (function() {
        return G
    })), i.d(t, "J", (function() {
        return Y
    })), i.d(t, "d", (function() {
        return Z
    })), i.d(t, "c", (function() {
        return X
    })), i.d(t, "Q", (function() {
        return Q
    })), i.d(t, "O", (function() {
        return J
    })), i.d(t, "T", (function() {
        return te
    })), i.d(t, "n", (function() {
        return ie
    })), i.d(t, "N", (function() {
        return ne
    })), i.d(t, "a", (function() {
        return se
    })), i.d(t, "S", (function() {
        return ae
    })), i.d(t, "H", (function() {
        return le
    })), i.d(t, "B", (function() {
        return de
    })), i.d(t, "r", (function() {
        return ce
    })), i.d(t, "U", (function() {
        return he
    })), i.d(t, "m", (function() {
        return ue
    })), i.d(t, "p", (function() {
        return pe
    })), i.d(t, "o", (function() {
        return ge
    })), i.d(t, "e", (function() {
        return fe
    })), i.d(t, "k", (function() {
        return me
    }));
    t = i(37);
    var n = (i(138), i(55)),
        r = i(66),
        o = i(32),
        s = i(31),
        a = i(2),
        l = i(4),
        d = i(54),
        c = i(9);

    function h(e) {
        for (; e.firstChild;) e.firstChild.remove()
    }

    function u(e) {
        return null !== (e = null == e ? void 0 : e.isConnected) && void 0 !== e && e
    }
    class p {
        constructor(e, t, i, n) {
            this._node = e, this._type = t, this._handler = i, this._options = n || !1, this._node.addEventListener(this._type, this._handler, this._options)
        }
        dispose() {
            this._handler && (this._node.removeEventListener(this._type, this._handler, this._options), this._node = null, this._handler = null)
        }
    }

    function g(e, t, i, n) {
        return new p(e, t, i, n)
    }

    function f(e) {
        return function(t) {
            return e(new r.a(t))
        }
    }
    let m = function(e, t, i, r) {
        let o = i;
        var s;
        return "click" === t || "mousedown" === t ? o = f(i) : "keydown" !== t && "keypress" !== t && "keyup" !== t || (s = i, o = function(e) {
            return s(new n.a(e))
        }), g(e, t, o, r)
    };
    var v;

    function b(e, t) {
        return g(e, "mouseout", i => {
            let n = i.relatedTarget;
            for (; n && n !== e;) n = n.parentNode;
            n !== e && t(i)
        })
    }

    function _(e, t) {
        return g(e, "pointerout", i => {
            let n = i.relatedTarget;
            for (; n && n !== e;) n = n.parentNode;
            n !== e && t(i)
        })
    }
    let w, y, C = null;
    class x {
        constructor(e, t = 0) {
            this._runner = e, this.priority = t, this._canceled = !1
        }
        dispose() {
            this._canceled = !0
        }
        execute() {
            if (!this._canceled) try {
                this._runner()
            } catch (e) {
                Object(s.f)(e)
            }
        }
        static sort(e, t) {
            return t.priority - e.priority
        }
    }! function() {
        let e = [],
            t = null,
            i = !1,
            n = !1,
            r = () => {
                for (i = !1, t = e, e = [], n = !0; 0 < t.length;) {
                    t.sort(x.sort), t.shift().execute()
                }
                n = !1
            };
        y = (t, n = 0) => (t = new x(t, n), e.push(t), i || (i = !0, n = r, C || (C = self.requestAnimationFrame || self.msRequestAnimationFrame || self.webkitRequestAnimationFrame || self.mozRequestAnimationFrame || self.oRequestAnimationFrame || (e => setTimeout(() => e((new Date).getTime()), 0))), C.call(self, n)), t), w = (e, i) => {
            if (n) {
                var r = new x(e, i);
                return t.push(r), r
            }
            return y(e, i)
        }
    }();
    class S extends l.a {
        constructor(e, t, i, n = function(e, t) {
            return t
        }, r = 8) {
            super();
            let s = null,
                a = 0,
                l = this._register(new o.g),
                d = () => {
                    a = (new Date).getTime(), i(s), s = null
                };
            this._register(g(e, t, e => {
                s = n(s, e), e = (new Date).getTime() - a, r <= e ? (l.cancel(), d()) : l.setIfNotSet(d, r - e)
            }))
        }
    }

    function k(e, t, i, n, r) {
        return new S(e, t, i, n, r)
    }

    function L(e) {
        return document.defaultView.getComputedStyle(e, null)
    }

    function O(e) {
        if (e !== document.body) return new N(e.clientWidth, e.clientHeight);
        if (c.c && window.visualViewport) return new N(window.visualViewport.width, window.visualViewport.height);
        if (window.innerWidth && window.innerHeight) return new N(window.innerWidth, window.innerHeight);
        if (document.body && document.body.clientWidth && document.body.clientHeight) return new N(document.body.clientWidth, document.body.clientHeight);
        if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) return new N(document.documentElement.clientWidth, document.documentElement.clientHeight);
        throw new Error("Unable to figure out browser width and height")
    }
    class E {
        static convertToPixels(e, t) {
            return parseFloat(t) || 0
        }
        static getDimension(e, t, i) {
            let n = L(e),
                r = "0";
            return n && (r = n.getPropertyValue ? n.getPropertyValue(t) : n.getAttribute(i)), E.convertToPixels(e, r)
        }
        static getBorderLeftWidth(e) {
            return E.getDimension(e, "border-left-width", "borderLeftWidth")
        }
        static getBorderRightWidth(e) {
            return E.getDimension(e, "border-right-width", "borderRightWidth")
        }
        static getBorderTopWidth(e) {
            return E.getDimension(e, "border-top-width", "borderTopWidth")
        }
        static getBorderBottomWidth(e) {
            return E.getDimension(e, "border-bottom-width", "borderBottomWidth")
        }
        static getPaddingLeft(e) {
            return E.getDimension(e, "padding-left", "paddingLeft")
        }
        static getPaddingRight(e) {
            return E.getDimension(e, "padding-right", "paddingRight")
        }
        static getPaddingTop(e) {
            return E.getDimension(e, "padding-top", "paddingTop")
        }
        static getPaddingBottom(e) {
            return E.getDimension(e, "padding-bottom", "paddingBottom")
        }
        static getMarginLeft(e) {
            return E.getDimension(e, "margin-left", "marginLeft")
        }
        static getMarginTop(e) {
            return E.getDimension(e, "margin-top", "marginTop")
        }
        static getMarginRight(e) {
            return E.getDimension(e, "margin-right", "marginRight")
        }
        static getMarginBottom(e) {
            return E.getDimension(e, "margin-bottom", "marginBottom")
        }
    }
    class N {
        constructor(e, t) {
            this.width = e, this.height = t
        }
        with(e = this.width, t = this.height) {
            return e !== this.width || t !== this.height ? new N(e, t) : this
        }
        static is(e) {
            return "object" == typeof e && "number" == typeof e.height && "number" == typeof e.width
        }
        static lift(e) {
            return e instanceof N ? e : new N(e.width, e.height)
        }
        static equals(e, t) {
            return e === t || !(!e || !t) && e.width === t.width && e.height === t.height
        }
    }

    function D(e) {
        let t = e.offsetParent,
            i = e.offsetTop,
            n = e.offsetLeft;
        for (; null !== (e = e.parentNode) && e !== document.body && e !== document.documentElement;) {
            i -= e.scrollTop;
            var r = V(e) ? null : L(e);
            r && (n -= "rtl" !== r.direction ? e.scrollLeft : -e.scrollLeft), e === t && (n += E.getBorderLeftWidth(e), i += E.getBorderTopWidth(e), i += e.offsetTop, n += e.offsetLeft, t = e.offsetParent)
        }
        return {
            left: n,
            top: i
        }
    }

    function I(e) {
        return {
            left: (e = e.getBoundingClientRect()).left + T.scrollX,
            top: e.top + T.scrollY,
            width: e.width,
            height: e.height
        }
    }
    const T = new class {
        get scrollX() {
            return "number" == typeof window.scrollX ? window.scrollX : document.body.scrollLeft + document.documentElement.scrollLeft
        }
        get scrollY() {
            return "number" == typeof window.scrollY ? window.scrollY : document.body.scrollTop + document.documentElement.scrollTop
        }
    };

    function M(e) {
        var t = E.getMarginLeft(e) + E.getMarginRight(e);
        return e.offsetWidth + t
    }

    function P(e) {
        var t = E.getBorderLeftWidth(e) + E.getBorderRightWidth(e),
            i = E.getPaddingLeft(e) + E.getPaddingRight(e);
        return e.offsetWidth - t - i
    }

    function A(e) {
        var t = E.getBorderTopWidth(e) + E.getBorderBottomWidth(e),
            i = E.getPaddingTop(e) + E.getPaddingBottom(e);
        return e.offsetHeight - t - i
    }

    function R(e) {
        var t = E.getMarginTop(e) + E.getMarginBottom(e);
        return e.offsetHeight + t
    }

    function F(e, t) {
        for (; e;) {
            if (e === t) return !0;
            e = e.parentNode
        }
        return !1
    }

    function j(e, t, i) {
        for (; e && e.nodeType === e.ELEMENT_NODE;) {
            if (e.classList.contains(t)) return e;
            if (i)
                if ("string" == typeof i) {
                    if (e.classList.contains(i)) return null
                } else if (e === i) return null;
            e = e.parentNode
        }
        return null
    }

    function B(e, t, i) {
        return !!j(e, t, i)
    }

    function V(e) {
        return e && e.host && e.mode
    }

    function W(e) {
        return !!z(e)
    }

    function z(e) {
        for (; e.parentNode;) {
            if (e === document.body) return null;
            e = e.parentNode
        }
        return V(e) ? e : null
    }

    function H() {
        let e = document.activeElement;
        for (; null != e && e.shadowRoot;) e = e.shadowRoot.activeElement;
        return e
    }

    function U(e = document.getElementsByTagName("head")[0]) {
        let t = document.createElement("style");
        return t.type = "text/css", t.media = "screen", e.appendChild(t), t
    }
    let K = null;

    function $() {
        return K = K || U(), K
    }

    function q(e, t, i = $()) {
        i && t && i.sheet.insertRule(e + "{" + t + "}", 0)
    }

    function G(e, t = $()) {
        if (t) {
            var i, n, r = null !== (n = null == (i = t) ? void 0 : i.sheet) && void 0 !== n && n.rules ? i.sheet.rules : null !== (n = null == i ? void 0 : i.sheet) && void 0 !== n && n.cssRules ? i.sheet.cssRules : [];
            let o = [];
            for (let t = 0; t < r.length; t++) {
                -1 !== r[t].selectorText.indexOf(e) && o.push(t)
            }
            for (let e = o.length - 1; 0 <= e; e--) t.sheet.deleteRule(o[e])
        }
    }

    function Y(e) {
        return "object" == typeof HTMLElement ? e instanceof HTMLElement : e && "object" == typeof e && 1 === e.nodeType && "string" == typeof e.nodeName
    }
    const Z = {
            CLICK: "click",
            AUXCLICK: "auxclick",
            DBLCLICK: "dblclick",
            MOUSE_UP: "mouseup",
            MOUSE_DOWN: "mousedown",
            MOUSE_OVER: "mouseover",
            MOUSE_MOVE: "mousemove",
            MOUSE_OUT: "mouseout",
            MOUSE_ENTER: "mouseenter",
            MOUSE_LEAVE: "mouseleave",
            MOUSE_WHEEL: "wheel",
            POINTER_UP: "pointerup",
            POINTER_DOWN: "pointerdown",
            POINTER_MOVE: "pointermove",
            CONTEXT_MENU: "contextmenu",
            WHEEL: "wheel",
            KEY_DOWN: "keydown",
            KEY_PRESS: "keypress",
            KEY_UP: "keyup",
            LOAD: "load",
            BEFORE_UNLOAD: "beforeunload",
            UNLOAD: "unload",
            ABORT: "abort",
            ERROR: "error",
            RESIZE: "resize",
            SCROLL: "scroll",
            FULLSCREEN_CHANGE: "fullscreenchange",
            WK_FULLSCREEN_CHANGE: "webkitfullscreenchange",
            SELECT: "select",
            CHANGE: "change",
            SUBMIT: "submit",
            RESET: "reset",
            FOCUS: "focus",
            FOCUS_IN: "focusin",
            FOCUS_OUT: "focusout",
            BLUR: "blur",
            INPUT: "input",
            STORAGE: "storage",
            DRAG_START: "dragstart",
            DRAG: "drag",
            DRAG_ENTER: "dragenter",
            DRAG_LEAVE: "dragleave",
            DRAG_OVER: "dragover",
            DROP: "drop",
            DRAG_END: "dragend",
            ANIMATION_START: t.j ? "webkitAnimationStart" : "animationstart",
            ANIMATION_END: t.j ? "webkitAnimationEnd" : "animationend",
            ANIMATION_ITERATION: t.j ? "webkitAnimationIteration" : "animationiteration"
        },
        X = {
            stop: function(e, t) {
                e.preventDefault ? e.preventDefault() : e.returnValue = !1, t && (e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0)
            }
        };

    function Q(e) {
        let t = [];
        for (let i = 0; e && e.nodeType === e.ELEMENT_NODE; i++) t[i] = e.scrollTop, e = e.parentNode;
        return t
    }

    function J(e, t) {
        for (let i = 0; e && e.nodeType === e.ELEMENT_NODE; i++) e.scrollTop !== t[i] && (e.scrollTop = t[i]), e = e.parentNode
    }
    class ee extends l.a {
        constructor(e) {
            super(), this._onDidFocus = this._register(new a.b), this.onDidFocus = this._onDidFocus.event, this._onDidBlur = this._register(new a.b), this.onDidBlur = this._onDidBlur.event;
            let t = F(document.activeElement, e),
                i = !1;
            const n = () => {
                    i = !1, t || (t = !0, this._onDidFocus.fire())
                },
                r = () => {
                    t && (i = !0, window.setTimeout(() => {
                        i && (i = !1, t = !1, this._onDidBlur.fire())
                    }, 0))
                };
            this._refreshStateHandler = () => {
                F(document.activeElement, e) !== t && (t ? r : n)()
            }, this._register(g(e, Z.FOCUS, n, !0)), this._register(g(e, Z.BLUR, r, !0))
        }
    }

    function te(e) {
        return new ee(e)
    }

    function ie(e, ...t) {
        if (e.append(...t), 1 === t.length && "string" != typeof t[0]) return t[0]
    }

    function ne(e, ...t) {
        e.innerText = "", ie(e, ...t)
    }
    const re = /([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;

    function oe(e, t, i, ...n) {
        let r, o = re.exec(t);
        if (!o) throw new Error("Bad use of emmet");
        return i = Object.assign({}, i || {}), t = o[1] || "div", r = e !== v.HTML ? document.createElementNS(e, t) : document.createElement(t), o[3] && (r.id = o[3]), o[4] && (r.className = o[4].replace(/\./g, " ").trim()), Object.keys(i).forEach(e => {
            var t = i[e];
            void 0 !== t && (/^on\w+$/.test(e) ? r[e] = t : "selected" === e ? t && r.setAttribute(e, "true") : r.setAttribute(e, t))
        }), r.append(...n), r
    }

    function se(e, t, ...i) {
        return oe(v.HTML, e, t, ...i)
    }

    function ae(...e) {
        for (var t of e) t.style.display = "", t.removeAttribute("aria-hidden")
    }

    function le(...e) {
        for (var t of e) t.style.display = "none", t.setAttribute("aria-hidden", "true")
    }

    function de(e) {
        return Array.prototype.slice.call(document.getElementsByTagName(e), 0)
    }

    function ce(e) {
        return e = window.devicePixelRatio * e, Math.max(1, Math.floor(e)) / window.devicePixelRatio
    }

    function he(e) {
        window.open(e, "_blank", "noopener")
    }

    function ue(e) {
        const t = () => {
            e(), i = y(t)
        };
        let i = y(t);
        return Object(l.i)(() => i.dispose())
    }

    function pe(e) {
        return e ? `url('${d.a.asBrowserUri(e).toString(!0).replace(/'/g,"%27")}')` : "url('')"
    }

    function ge(e) {
        return `'${e.replace(/'/g,"%27")}'`
    }(t = v = v || {}).HTML = "http://www.w3.org/1999/xhtml", t.SVG = "http://www.w3.org/2000/svg", se.SVG = function(e, t, ...i) {
        return oe(v.SVG, e, t, ...i)
    }, d.b.setPreferredWebSchema(/^https:/.test(window.location.href) ? "https" : "http");
    class fe extends a.b {
        constructor() {
            super(), this._subscriptions = new l.b, this._keyStatus = {
                altKey: !1,
                shiftKey: !1,
                ctrlKey: !1,
                metaKey: !1
            }, this._subscriptions.add(g(window, "keydown", e => {
                if (!e.defaultPrevented) {
                    var t = new n.a(e);
                    if (6 !== t.keyCode || !e.repeat) {
                        if (e.altKey && !this._keyStatus.altKey) this._keyStatus.lastKeyPressed = "alt";
                        else if (e.ctrlKey && !this._keyStatus.ctrlKey) this._keyStatus.lastKeyPressed = "ctrl";
                        else if (e.metaKey && !this._keyStatus.metaKey) this._keyStatus.lastKeyPressed = "meta";
                        else if (e.shiftKey && !this._keyStatus.shiftKey) this._keyStatus.lastKeyPressed = "shift";
                        else {
                            if (6 === t.keyCode) return;
                            this._keyStatus.lastKeyPressed = void 0
                        }
                        this._keyStatus.altKey = e.altKey, this._keyStatus.ctrlKey = e.ctrlKey, this._keyStatus.metaKey = e.metaKey, this._keyStatus.shiftKey = e.shiftKey, this._keyStatus.lastKeyPressed && (this._keyStatus.event = e, this.fire(this._keyStatus))
                    }
                }
            }, !0)), this._subscriptions.add(g(window, "keyup", e => {
                e.defaultPrevented || (!e.altKey && this._keyStatus.altKey ? this._keyStatus.lastKeyReleased = "alt" : !e.ctrlKey && this._keyStatus.ctrlKey ? this._keyStatus.lastKeyReleased = "ctrl" : !e.metaKey && this._keyStatus.metaKey ? this._keyStatus.lastKeyReleased = "meta" : !e.shiftKey && this._keyStatus.shiftKey ? this._keyStatus.lastKeyReleased = "shift" : this._keyStatus.lastKeyReleased = void 0, this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased && (this._keyStatus.lastKeyPressed = void 0), this._keyStatus.altKey = e.altKey, this._keyStatus.ctrlKey = e.ctrlKey, this._keyStatus.metaKey = e.metaKey, this._keyStatus.shiftKey = e.shiftKey, this._keyStatus.lastKeyReleased && (this._keyStatus.event = e, this.fire(this._keyStatus)))
            }, !0)), this._subscriptions.add(g(document.body, "mousedown", () => {
                this._keyStatus.lastKeyPressed = void 0
            }, !0)), this._subscriptions.add(g(document.body, "mouseup", () => {
                this._keyStatus.lastKeyPressed = void 0
            }, !0)), this._subscriptions.add(g(document.body, "mousemove", e => {
                e.buttons && (this._keyStatus.lastKeyPressed = void 0)
            }, !0)), this._subscriptions.add(g(window, "blur", () => {
                this.resetKeyStatus()
            }))
        }
        get keyStatus() {
            return this._keyStatus
        }
        resetKeyStatus() {
            this.doResetKeyStatus(), this.fire(this._keyStatus)
        }
        doResetKeyStatus() {
            this._keyStatus = {
                altKey: !1,
                shiftKey: !1,
                ctrlKey: !1,
                metaKey: !1
            }
        }
        static getInstance() {
            return fe.instance || (fe.instance = new fe), fe.instance
        }
        dispose() {
            super.dispose(), this._subscriptions.dispose()
        }
    }

    function me(e, t) {
        const i = window.matchMedia(e);
        "function" == typeof i.addEventListener ? i.addEventListener("change", t) : i.addListener(t)
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "c", (function() {
        return n
    })), i.d(t, "b", (function() {
        return d
    })), i.d(t, "e", (function() {
        return c
    })), i.d(t, "a", (function() {
        return h
    })), i.d(t, "d", (function() {
        return u
    })), i.d(t, "f", (function() {
        return p
    }));
    var n, r = i(31),
        o = i(4),
        s = i(79),
        a = i(90);
    ! function(e) {
        function t(e) {
            return (t, i = null, n) => {
                let r, o = !1;
                return r = e(e => {
                    if (!o) return r ? r.dispose() : o = !0, t.call(i, e)
                }, null, n), o && r.dispose(), r
            }
        }

        function i(e, t) {
            return a((i, n = null, r) => e(e => i.call(n, t(e)), null, r))
        }

        function n(e, t) {
            return a((i, n = null, r) => e(e => {
                t(e), i.call(n, e)
            }, null, r))
        }

        function r(e, t) {
            return a((i, n = null, r) => e(e => t(e) && i.call(n, e), null, r))
        }

        function s(e, t, n) {
            let r = n;
            return i(e, e => (r = t(r, e), r))
        }

        function a(e) {
            let t;
            const i = new d({
                onFirstListenerAdd() {
                    t = e(i.fire, i)
                },
                onLastListenerRemove() {
                    t.dispose()
                }
            });
            return i.event
        }

        function l(e, t, i = 100, n = !1, r) {
            let o, s = void 0,
                a = void 0,
                l = 0;
            const c = new d({
                leakWarningThreshold: r,
                onFirstListenerAdd() {
                    o = e(e => {
                        l++, s = t(s, e), n && !a && (c.fire(s), s = void 0), clearTimeout(a), a = setTimeout(() => {
                            var e = s;
                            s = void 0, a = void 0, (!n || 1 < l) && c.fire(e), l = 0
                        }, i)
                    })
                },
                onLastListenerRemove() {
                    o.dispose()
                }
            });
            return c.event
        }

        function c(e, t = ((e, t) => e === t)) {
            let i, n = !0;
            return r(e, e => {
                var r = n || !t(e, i);
                return n = !1, i = e, r
            })
        }
        e.None = () => o.a.None, e.once = t, e.map = i, e.forEach = n, e.filter = r, e.signal = function(e) {
            return e
        }, e.any = function(...e) {
            return (t, i = null, n) => Object(o.e)(...e.map(e => e(e => t.call(i, e), null, n)))
        }, e.reduce = s, e.debounce = l, e.latch = c, e.split = function(t, i) {
            return [e.filter(t, i), e.filter(t, e => !i(e))]
        }, e.buffer = function(e, t = !1, i = []) {
            let n = i.slice(),
                r = e(e => {
                    n ? n.push(e) : s.fire(e)
                });
            const o = () => {
                    n && n.forEach(e => s.fire(e)), n = null
                },
                s = new d({
                    onFirstListenerAdd() {
                        r = r || e(e => s.fire(e))
                    },
                    onFirstListenerDidAdd() {
                        n && (t ? setTimeout(o) : o())
                    },
                    onLastListenerRemove() {
                        r && r.dispose(), r = null
                    }
                });
            return s.event
        };
        class h {
            constructor(e) {
                this.event = e
            }
            map(e) {
                return new h(i(this.event, e))
            }
            forEach(e) {
                return new h(n(this.event, e))
            }
            filter(e) {
                return new h(r(this.event, e))
            }
            reduce(e, t) {
                return new h(s(this.event, e, t))
            }
            latch() {
                return new h(c(this.event))
            }
            debounce(e, t = 100, i = !1, n) {
                return new h(l(this.event, e, t, i, n))
            }
            on(e, t, i) {
                return this.event(e, t, i)
            }
            once(e, i, n) {
                return t(this.event)(e, i, n)
            }
        }
        e.chain = function(e) {
            return new h(e)
        }, e.fromNodeEventEmitter = function(e, t, i = (e => e)) {
            const n = (...e) => r.fire(i(...e)),
                r = new d({
                    onFirstListenerAdd: () => e.on(t, n),
                    onLastListenerRemove: () => e.removeListener(t, n)
                });
            return r.event
        }, e.fromDOMEventEmitter = function(e, t, i = (e => e)) {
            const n = (...e) => r.fire(i(...e)),
                r = new d({
                    onFirstListenerAdd: () => e.addEventListener(t, n),
                    onLastListenerRemove: () => e.removeEventListener(t, n)
                });
            return r.event
        }, e.toPromise = function(e) {
            return new Promise(i => t(e)(i))
        }
    }(n = n || {});
    class l {
        constructor(e) {
            this._listenerCount = 0, this._invocationCount = 0, this._elapsedOverall = 0, this._name = `${e}_${l._idPool++}`
        }
        start(e) {
            this._stopWatch = new a.a(!0), this._listenerCount = e
        }
        stop() {
            if (this._stopWatch) {
                const e = this._stopWatch.elapsed();
                this._elapsedOverall += e, this._invocationCount += 1, console.info(`did FIRE ${this._name}: elapsed_ms: ${e.toFixed(5)}, listener: ${this._listenerCount} (elapsed_overall: ${this._elapsedOverall.toFixed(2)}, invocations: ${this._invocationCount})`), this._stopWatch = void 0
            }
        }
    }
    l._idPool = 0;
    class d {
        constructor(e) {
            this._disposed = !1, this._options = e, this._leakageMon = void 0, this._perfMon = null !== (e = this._options) && void 0 !== e && e._profName ? new l(this._options._profName) : void 0
        }
        get event() {
            return this._event || (this._event = (e, t, i) => {
                this._listeners || (this._listeners = new s.a);
                var n = this._listeners.isEmpty();
                n && this._options && this._options.onFirstListenerAdd && this._options.onFirstListenerAdd(this);
                const r = this._listeners.push(t ? [e, t] : e);
                n && this._options && this._options.onFirstListenerDidAdd && this._options.onFirstListenerDidAdd(this), this._options && this._options.onListenerDidAdd && this._options.onListenerDidAdd(this, e, t);
                const a = null === (t = this._leakageMon) || void 0 === t ? void 0 : t.check(this._listeners.size);
                return t = Object(o.i)(() => {
                    a && a(), this._disposed || (r(), this._options && this._options.onLastListenerRemove && (this._listeners && !this._listeners.isEmpty() || this._options.onLastListenerRemove(this)))
                }), i instanceof o.b ? i.add(t) : Array.isArray(i) && i.push(t), t
            }), this._event
        }
        fire(e) {
            var t;
            if (this._listeners) {
                for (var i of (this._deliveryQueue || (this._deliveryQueue = new s.a), this._listeners)) this._deliveryQueue.push([i, e]);
                for (null !== (t = this._perfMon) && void 0 !== t && t.start(this._deliveryQueue.size); 0 < this._deliveryQueue.size;) {
                    const [t, i] = this._deliveryQueue.shift();
                    try {
                        "function" == typeof t ? t.call(void 0, i) : t[0].call(t[1], i)
                    } catch (e) {
                        Object(r.f)(e)
                    }
                }
                null !== (t = this._perfMon) && void 0 !== t && t.stop()
            }
        }
        dispose() {
            var e, t;
            this._disposed || (this._disposed = !0, null !== (t = this._listeners) && void 0 !== t && t.clear(), null !== (e = this._deliveryQueue) && void 0 !== e && e.clear(), null !== (e = null === (t = this._options) || void 0 === t ? void 0 : t.onLastListenerRemove) && void 0 !== e && e.call(t), null !== (t = this._leakageMon) && void 0 !== t && t.dispose())
        }
    }
    class c extends d {
        constructor(e) {
            super(e), this._isPaused = 0, this._eventQueue = new s.a, this._mergeFn = null == e ? void 0 : e.merge
        }
        pause() {
            this._isPaused++
        }
        resume() {
            if (0 !== this._isPaused && 0 == --this._isPaused)
                if (this._mergeFn) {
                    var e = Array.from(this._eventQueue);
                    this._eventQueue.clear(), super.fire(this._mergeFn(e))
                } else
                    for (; !this._isPaused && 0 !== this._eventQueue.size;) super.fire(this._eventQueue.shift())
        }
        fire(e) {
            this._listeners && (0 !== this._isPaused ? this._eventQueue.push(e) : super.fire(e))
        }
    }
    class h extends c {
        constructor(e) {
            super(e), this._delay = null !== (e = e.delay) && void 0 !== e ? e : 100
        }
        fire(e) {
            this._handle || (this.pause(), this._handle = setTimeout(() => {
                this._handle = void 0, this.resume()
            }, this._delay)), super.fire(e)
        }
    }
    class u {
        constructor() {
            this.buffers = []
        }
        wrapEvent(e) {
            return (t, i, n) => e(e => {
                const n = this.buffers[this.buffers.length - 1];
                n ? n.push(() => t.call(i, e)) : t.call(i, e)
            }, void 0, n)
        }
        bufferEvents(e) {
            const t = [];
            return this.buffers.push(t), e = e(), this.buffers.pop(), t.forEach(e => e()), e
        }
    }
    class p {
        constructor() {
            this.listening = !1, this.inputEvent = n.None, this.inputEventListener = o.a.None, this.emitter = new d({
                onFirstListenerDidAdd: () => {
                    this.listening = !0, this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter)
                },
                onLastListenerRemove: () => {
                    this.listening = !1, this.inputEventListener.dispose()
                }
            }), this.event = this.emitter.event
        }
        set input(e) {
            this.inputEvent = e, this.listening && (this.inputEventListener.dispose(), this.inputEventListener = e(this.emitter.fire, this.emitter))
        }
        dispose() {
            this.inputEventListener.dispose(), this.emitter.dispose()
        }
    }
}, function(e, t, i) {
    e.exports = i(256)
}, function(e, t, i) {
    "use strict";
    i.d(t, "h", (function() {
        return o
    })), i.d(t, "g", (function() {
        return a
    })), i.d(t, "f", (function() {
        return l
    })), i.d(t, "e", (function() {
        return d
    })), i.d(t, "i", (function() {
        return c
    })), i.d(t, "b", (function() {
        return h
    })), i.d(t, "a", (function() {
        return u
    })), i.d(t, "d", (function() {
        return p
    })), i.d(t, "c", (function() {
        return g
    }));
    var n = i(104),
        r = i(43);

    function o(e) {
        return e
    }
    class s extends Error {
        constructor(e) {
            super(`Encountered errors while disposing of store. Errors: [${e.join(", ")}]`), this.errors = e
        }
    }

    function a(e) {
        return "function" == typeof e.dispose && 0 === e.dispose.length
    }

    function l(e) {
        if (r.a.is(e)) {
            let t = [];
            for (const i of e)
                if (i) try {
                    i.dispose()
                } catch (e) {
                    t.push(e)
                }
            if (1 === t.length) throw t[0];
            if (1 < t.length) throw new s(t);
            return Array.isArray(e) ? [] : e
        }
        if (e) return e.dispose(), e
    }

    function d(...e) {
        var t = c(() => l(e));
        return t
    }

    function c(e) {
        const t = {
            dispose: Object(n.a)(() => {
                e()
            })
        };
        return t
    }
    class h {
        constructor() {
            this._toDispose = new Set, this._isDisposed = !1
        }
        dispose() {
            this._isDisposed || (this._isDisposed = !0, this.clear())
        }
        clear() {
            try {
                l(this._toDispose.values())
            } finally {
                this._toDispose.clear()
            }
        }
        add(e) {
            if (!e) return e;
            if (e === this) throw new Error("Cannot register a disposable on itself!");
            return this._isDisposed ? h.DISABLE_DISPOSED_WARNING || console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack) : this._toDispose.add(e), e
        }
    }
    h.DISABLE_DISPOSED_WARNING = !1;
    class u {
        constructor() {
            this._store = new h, this._store
        }
        dispose() {
            this._store.dispose()
        }
        _register(e) {
            if (e === this) throw new Error("Cannot register a disposable on itself!");
            return this._store.add(e)
        }
    }
    u.None = Object.freeze({
        dispose() {}
    });
    class p {
        constructor() {
            this._isDisposed = !1
        }
        get value() {
            return this._isDisposed ? void 0 : this._value
        }
        set value(e) {
            var t;
            this._isDisposed || e === this._value || (null !== (t = this._value) && void 0 !== t && t.dispose(), this._value = e)
        }
        clear() {
            this.value = void 0
        }
        dispose() {
            var e;
            this._isDisposed = !0, null !== (e = this._value) && void 0 !== e && e.dispose(), this._value = void 0
        }
        clearAndLeak() {
            var e = this._value;
            return this._value = void 0, e
        }
    }
    class g {
        constructor(e) {
            this.object = e
        }
        dispose() {}
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(8);
    class r {
        constructor(e, t, i, n) {
            i < e || e === i && n < t ? (this.startLineNumber = i, this.startColumn = n, this.endLineNumber = e, this.endColumn = t) : (this.startLineNumber = e, this.startColumn = t, this.endLineNumber = i, this.endColumn = n)
        }
        isEmpty() {
            return r.isEmpty(this)
        }
        static isEmpty(e) {
            return e.startLineNumber === e.endLineNumber && e.startColumn === e.endColumn
        }
        containsPosition(e) {
            return r.containsPosition(this, e)
        }
        static containsPosition(e, t) {
            return !(t.lineNumber < e.startLineNumber || t.lineNumber > e.endLineNumber || t.lineNumber === e.startLineNumber && t.column < e.startColumn || t.lineNumber === e.endLineNumber && t.column > e.endColumn)
        }
        containsRange(e) {
            return r.containsRange(this, e)
        }
        static containsRange(e, t) {
            return !(t.startLineNumber < e.startLineNumber || t.endLineNumber < e.startLineNumber || t.startLineNumber > e.endLineNumber || t.endLineNumber > e.endLineNumber || t.startLineNumber === e.startLineNumber && t.startColumn < e.startColumn || t.endLineNumber === e.endLineNumber && t.endColumn > e.endColumn)
        }
        strictContainsRange(e) {
            return r.strictContainsRange(this, e)
        }
        static strictContainsRange(e, t) {
            return !(t.startLineNumber < e.startLineNumber || t.endLineNumber < e.startLineNumber || t.startLineNumber > e.endLineNumber || t.endLineNumber > e.endLineNumber || t.startLineNumber === e.startLineNumber && t.startColumn <= e.startColumn || t.endLineNumber === e.endLineNumber && t.endColumn >= e.endColumn)
        }
        plusRange(e) {
            return r.plusRange(this, e)
        }
        static plusRange(e, t) {
            let i, n, o, s;
            return n = t.startLineNumber < e.startLineNumber ? (i = t.startLineNumber, t.startColumn) : t.startLineNumber === e.startLineNumber ? (i = t.startLineNumber, Math.min(t.startColumn, e.startColumn)) : (i = e.startLineNumber, e.startColumn), s = t.endLineNumber > e.endLineNumber ? (o = t.endLineNumber, t.endColumn) : t.endLineNumber === e.endLineNumber ? (o = t.endLineNumber, Math.max(t.endColumn, e.endColumn)) : (o = e.endLineNumber, e.endColumn), new r(i, n, o, s)
        }
        intersectRanges(e) {
            return r.intersectRanges(this, e)
        }
        static intersectRanges(e, t) {
            let i = e.startLineNumber,
                n = e.startColumn,
                o = e.endLineNumber,
                s = e.endColumn;
            var a = t.startLineNumber,
                l = t.startColumn;
            e = t.endLineNumber, t = t.endColumn;
            return i < a ? (i = a, n = l) : i === a && (n = Math.max(n, l)), o > e ? (o = e, s = t) : o === e && (s = Math.min(s, t)), i > o || i === o && n > s ? null : new r(i, n, o, s)
        }
        equalsRange(e) {
            return r.equalsRange(this, e)
        }
        static equalsRange(e, t) {
            return !!e && !!t && e.startLineNumber === t.startLineNumber && e.startColumn === t.startColumn && e.endLineNumber === t.endLineNumber && e.endColumn === t.endColumn
        }
        getEndPosition() {
            return r.getEndPosition(this)
        }
        static getEndPosition(e) {
            return new n.a(e.endLineNumber, e.endColumn)
        }
        getStartPosition() {
            return r.getStartPosition(this)
        }
        static getStartPosition(e) {
            return new n.a(e.startLineNumber, e.startColumn)
        }
        toString() {
            return "[" + this.startLineNumber + "," + this.startColumn + " -> " + this.endLineNumber + "," + this.endColumn + "]"
        }
        setEndPosition(e, t) {
            return new r(this.startLineNumber, this.startColumn, e, t)
        }
        setStartPosition(e, t) {
            return new r(e, t, this.endLineNumber, this.endColumn)
        }
        collapseToStart() {
            return r.collapseToStart(this)
        }
        static collapseToStart(e) {
            return new r(e.startLineNumber, e.startColumn, e.startLineNumber, e.startColumn)
        }
        static fromPositions(e, t = e) {
            return new r(e.lineNumber, e.column, t.lineNumber, t.column)
        }
        static lift(e) {
            return e ? new r(e.startLineNumber, e.startColumn, e.endLineNumber, e.endColumn) : null
        }
        static isIRange(e) {
            return e && "number" == typeof e.startLineNumber && "number" == typeof e.startColumn && "number" == typeof e.endLineNumber && "number" == typeof e.endColumn
        }
        static areIntersectingOrTouching(e, t) {
            return !(e.endLineNumber < t.startLineNumber || e.endLineNumber === t.startLineNumber && e.endColumn < t.startColumn || t.endLineNumber < e.startLineNumber || t.endLineNumber === e.startLineNumber && t.endColumn < e.startColumn)
        }
        static areIntersecting(e, t) {
            return !(e.endLineNumber < t.startLineNumber || e.endLineNumber === t.startLineNumber && e.endColumn <= t.startColumn || t.endLineNumber < e.startLineNumber || t.endLineNumber === e.startLineNumber && t.endColumn <= e.startColumn)
        }
        static compareRangesUsingStarts(e, t) {
            if (e && t) {
                var i = 0 | e.startLineNumber,
                    n = 0 | t.startLineNumber;
                return i != n || ((i = 0 | e.startColumn) != (n = 0 | t.startColumn) || (i = 0 | e.endLineNumber) != (n = 0 | t.endLineNumber)) ? i - n : (0 | e.endColumn) - (0 | t.endColumn)
            }
            return (e ? 1 : 0) - (t ? 1 : 0)
        }
        static compareRangesUsingEnds(e, t) {
            return e.endLineNumber === t.endLineNumber ? e.endColumn === t.endColumn ? e.startLineNumber === t.startLineNumber ? e.startColumn - t.startColumn : e.startLineNumber - t.startLineNumber : e.endColumn - t.endColumn : e.endLineNumber - t.endLineNumber
        }
        static spansMultipleLines(e) {
            return e.endLineNumber > e.startLineNumber
        }
    }
}, function(e, t, i) {
    "use strict";

    function n(e) {
        return !e || "string" != typeof e || 0 === e.trim().length
    }
    i.d(t, "C", (function() {
        return n
    })), i.d(t, "v", (function() {
        return o
    })), i.d(t, "s", (function() {
        return s
    })), i.d(t, "t", (function() {
        return a
    })), i.d(t, "J", (function() {
        return l
    })), i.d(t, "O", (function() {
        return d
    })), i.d(t, "p", (function() {
        return c
    })), i.d(t, "q", (function() {
        return h
    })), i.d(t, "N", (function() {
        return u
    })), i.d(t, "M", (function() {
        return p
    })), i.d(t, "Q", (function() {
        return g
    })), i.d(t, "u", (function() {
        return f
    })), i.d(t, "x", (function() {
        return m
    })), i.d(t, "I", (function() {
        return v
    })), i.d(t, "f", (function() {
        return b
    })), i.d(t, "h", (function() {
        return _
    })), i.d(t, "g", (function() {
        return w
    })), i.d(t, "i", (function() {
        return y
    })), i.d(t, "G", (function() {
        return C
    })), i.d(t, "H", (function() {
        return x
    })), i.d(t, "r", (function() {
        return S
    })), i.d(t, "R", (function() {
        return k
    })), i.d(t, "d", (function() {
        return L
    })), i.d(t, "e", (function() {
        return O
    })), i.d(t, "E", (function() {
        return E
    })), i.d(t, "F", (function() {
        return N
    })), i.d(t, "j", (function() {
        return D
    })), i.d(t, "z", (function() {
        return I
    })), i.d(t, "K", (function() {
        return M
    })), i.d(t, "L", (function() {
        return P
    })), i.d(t, "m", (function() {
        return R
    })), i.d(t, "k", (function() {
        return j
    })), i.d(t, "A", (function() {
        return V
    })), i.d(t, "a", (function() {
        return W
    })), i.d(t, "n", (function() {
        return z
    })), i.d(t, "l", (function() {
        return H
    })), i.d(t, "D", (function() {
        return U
    })), i.d(t, "B", (function() {
        return K
    })), i.d(t, "b", (function() {
        return $
    })), i.d(t, "S", (function() {
        return q
    })), i.d(t, "o", (function() {
        return G
    })), i.d(t, "P", (function() {
        return Y
    })), i.d(t, "w", (function() {
        return Z
    })), i.d(t, "c", (function() {
        return X
    })), i.d(t, "y", (function() {
        return J
    }));
    const r = /{(\d+)}/g;

    function o(e, ...t) {
        return 0 === t.length ? e : e.replace(r, (function(e, i) {
            return i = parseInt(i, 10), isNaN(i) || i < 0 || i >= t.length ? e : t[i]
        }))
    }

    function s(e) {
        return e.replace(/[<>&]/g, (function(e) {
            switch (e) {
                case "<":
                    return "&lt;";
                case ">":
                    return "&gt;";
                case "&":
                    return "&amp;";
                default:
                    return e
            }
        }))
    }

    function a(e) {
        return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g, "\\$&")
    }

    function l(e, t) {
        if (!e || !t) return e;
        var i = t.length;
        if (0 === i || 0 === e.length) return e;
        let n = 0;
        for (; e.indexOf(t, n) === n;) n += i;
        return e.substring(n)
    }

    function d(e, t) {
        if (!e || !t) return e;
        var i = t.length,
            n = e.length;
        if (0 === i || 0 === n) return e;
        let r, o = n;
        for (; - 1 !== (r = e.lastIndexOf(t, o - 1)) && r + i === o;) {
            if (0 === r) return "";
            o = r
        }
        return e.substring(0, o)
    }

    function c(e) {
        return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, "\\$&").replace(/[\*]/g, ".*")
    }

    function h(e, t, i = {}) {
        if (!e) throw new Error("Cannot create regex from empty string");
        t || (e = a(e)), i.wholeWord && (/\B/.test(e.charAt(0)) || (e = "\\b" + e), /\B/.test(e.charAt(e.length - 1)) || (e += "\\b"));
        let n = "";
        return i.global && (n += "g"), i.matchCase || (n += "i"), i.multiline && (n += "m"), i.unicode && (n += "u"), new RegExp(e, n)
    }

    function u(e) {
        return "^" !== e.source && "^$" !== e.source && "$" !== e.source && "^\\s*$" !== e.source && !(!e.exec("") || 0 !== e.lastIndex)
    }

    function p(e) {
        return (e.global ? "g" : "") + (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.unicode ? "u" : "")
    }

    function g(e) {
        return e.split(/\r\n|\r|\n/)
    }

    function f(e) {
        for (let i = 0, n = e.length; i < n; i++) {
            var t = e.charCodeAt(i);
            if (32 !== t && 9 !== t) return i
        }
        return -1
    }

    function m(e, t = 0, i = e.length) {
        for (let r = t; r < i; r++) {
            var n = e.charCodeAt(r);
            if (32 !== n && 9 !== n) return e.substring(t, r)
        }
        return e.substring(t, i)
    }

    function v(e, t = e.length - 1) {
        for (let n = t; 0 <= n; n--) {
            var i = e.charCodeAt(n);
            if (32 !== i && 9 !== i) return n
        }
        return -1
    }

    function b(e, t) {
        return e < t ? -1 : t < e ? 1 : 0
    }

    function _(e, t, i = 0, n = e.length, r = 0, o = t.length) {
        for (; i < n && r < o; i++, r++) {
            var s = e.charCodeAt(i),
                a = t.charCodeAt(r);
            if (s < a) return -1;
            if (a < s) return 1
        }
        var l = n - i,
            d = o - r;
        return l < d ? -1 : d < l ? 1 : 0
    }

    function w(e, t) {
        return y(e, t, 0, e.length, 0, t.length)
    }

    function y(e, t, i = 0, n = e.length, r = 0, o = t.length) {
        for (; i < n && r < o; i++, r++) {
            let a = e.charCodeAt(i),
                l = t.charCodeAt(r);
            if (a !== l) {
                if (128 <= a || 128 <= l) return _(e.toLowerCase(), t.toLowerCase(), i, n, r, o);
                C(a) && (a -= 32), C(l) && (l -= 32);
                var s = a - l;
                if (0 != s) return s
            }
        }
        var a = n - i,
            l = o - r;
        return a < l ? -1 : l < a ? 1 : 0
    }

    function C(e) {
        return 97 <= e && e <= 122
    }

    function x(e) {
        return 65 <= e && e <= 90
    }

    function S(e, t) {
        return e.length === t.length && 0 === y(e, t)
    }

    function k(e, t) {
        var i = t.length;
        return !(t.length > e.length) && 0 === y(e, t, 0, i)
    }

    function L(e, t) {
        let i, n = Math.min(e.length, t.length);
        for (i = 0; i < n; i++)
            if (e.charCodeAt(i) !== t.charCodeAt(i)) return i;
        return n
    }

    function O(e, t) {
        let i, n = Math.min(e.length, t.length);
        var r = e.length - 1,
            o = t.length - 1;
        for (i = 0; i < n; i++)
            if (e.charCodeAt(r - i) !== t.charCodeAt(o - i)) return i;
        return n
    }

    function E(e) {
        return 55296 <= e && e <= 56319
    }

    function N(e) {
        return 56320 <= e && e <= 57343
    }

    function D(e, t) {
        return t - 56320 + (e - 55296 << 10) + 65536
    }

    function I(e, t, i) {
        var n = e.charCodeAt(i);
        return E(n) && i + 1 < t && N(i = e.charCodeAt(i + 1)) ? D(n, i) : n
    }

    function T(e, t) {
        var i = e.charCodeAt(t - 1);
        return N(i) && 1 < t && E(t = e.charCodeAt(t - 2)) ? D(t, i) : i
    }

    function M(e, t) {
        const i = Q.getInstance();
        var n = t,
            r = e.length,
            o = I(e, r, t);
        t += 65536 <= o ? 2 : 1;
        let s = i.getGraphemeBreakType(o);
        for (; t < r;) {
            var a = I(e, r, t),
                l = i.getGraphemeBreakType(a);
            if (X(s, l)) break;
            t += 65536 <= a ? 2 : 1, s = l
        }
        return t - n
    }

    function P(e, t) {
        const i = Q.getInstance();
        var n = t,
            r = T(e, t);
        t -= 65536 <= r ? 2 : 1;
        let o = i.getGraphemeBreakType(r);
        for (; 0 < t;) {
            var s = T(e, t),
                a = i.getGraphemeBreakType(s);
            if (X(a, o)) break;
            t -= 65536 <= s ? 2 : 1, o = a
        }
        return n - t
    }
    const A = /(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u08BD\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE33\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDCFF]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD50-\uDFFF]|\uD83B[\uDC00-\uDEBB])/;

    function R(e) {
        return A.test(e)
    }
    const F = /(?:[\u231A\u231B\u23F0\u23F3\u2600-\u27BF\u2B50\u2B55]|\uD83C[\uDDE6-\uDDFF\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F\uDE80-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD00-\uDDFF\uDE70-\uDED6])/;

    function j(e) {
        return F.test(e)
    }
    const B = /^[\t\n\r\x20-\x7E]*$/;

    function V(e) {
        return B.test(e)
    }
    const W = /[\u2028\u2029]/;

    function z(e) {
        return W.test(e)
    }

    function H(e) {
        for (let t = 0, i = e.length; t < i; t++)
            if (U(e.charCodeAt(t))) return !0;
        return !1
    }

    function U(e) {
        return 11904 <= (e = +e) && e <= 55215 || 63744 <= e && e <= 64255 || 65281 <= e && e <= 65374
    }

    function K(e) {
        return 127462 <= e && e <= 127487 || 8986 === e || 8987 === e || 9200 === e || 9203 === e || 9728 <= e && e <= 10175 || 11088 === e || 11093 === e || 127744 <= e && e <= 128591 || 128640 <= e && e <= 128764 || 128992 <= e && e <= 129003 || 129280 <= e && e <= 129535 || 129648 <= e && e <= 129750
    }
    const $ = String.fromCharCode(65279);

    function q(e) {
        return !!(e && 0 < e.length && 65279 === e.charCodeAt(0))
    }

    function G(e, t = !1) {
        return !!e && (e = t ? e.replace(/\\./g, "") : e).toLowerCase() !== e
    }

    function Y(e) {
        return (e %= 52) < 26 ? String.fromCharCode(97 + e) : String.fromCharCode(65 + e - 26)
    }

    function Z(e) {
        return Q.getInstance().getGraphemeBreakType(e)
    }

    function X(e, t) {
        return 0 === e ? 5 !== t && 7 !== t : !(2 === e && 3 === t || 4 !== e && 2 !== e && 3 !== e && 4 !== t && 2 !== t && 3 !== t && (8 === e && (8 === t || 9 === t || 11 === t || 12 === t) || !(11 !== e && 9 !== e || 9 !== t && 10 !== t) || (12 === e || 10 === e) && 10 === t || 5 === t || 13 === t || 7 === t || 1 === e || 13 === e && 14 === t || 6 === e && 6 === t))
    }
    class Q {
        constructor() {
            this._data = JSON.parse("[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]")
        }
        static getInstance() {
            return Q._INSTANCE || (Q._INSTANCE = new Q), Q._INSTANCE
        }
        getGraphemeBreakType(e) {
            if (e < 32) return 10 === e ? 3 : 13 === e ? 2 : 4;
            if (e < 127) return 0;
            var t = this._data,
                i = t.length / 3;
            let n = 1;
            for (; n <= i;)
                if (e < t[3 * n]) n *= 2;
                else {
                    if (!(e > t[3 * n + 1])) return t[3 * n + 2];
                    n = 2 * n + 1
                } return 0
        }
    }

    function J(e, t) {
        if (0 === e) return 0;
        var i = function(e, t) {
            let i = T(t, e);
            for (e -= ee(i);

                function(e) {
                    return 127995 <= e && e <= 127999
                }(i) || 65039 === i || 8419 === i;) {
                if (0 === e) return;
                i = T(t, e), e -= ee(i)
            }
            var n;
            if (K(i)) return 0 <= e && 8205 === (n = T(t, e)) && (e -= ee(n)), e
        }(e, t);
        return void 0 !== i ? i : e -= ee(T(t, e))
    }

    function ee(e) {
        return 65536 <= e ? 2 : 1
    }
    Q._INSTANCE = null
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return c
    })), i.d(t, "dc", (function() {
        return u
    })), i.d(t, "R", (function() {
        return g
    })), i.d(t, "S", (function() {
        return f
    })), i.d(t, "h", (function() {
        return m
    })), i.d(t, "b", (function() {
        return v
    })), i.d(t, "mc", (function() {
        return b
    })), i.d(t, "W", (function() {
        return _
    })), i.d(t, "Y", (function() {
        return w
    })), i.d(t, "X", (function() {
        return y
    })), i.d(t, "U", (function() {
        return C
    })), i.d(t, "T", (function() {
        return x
    })), i.d(t, "V", (function() {
        return S
    })), i.d(t, "cb", (function() {
        return k
    })), i.d(t, "eb", (function() {
        return L
    })), i.d(t, "db", (function() {
        return O
    })), i.d(t, "fb", (function() {
        return E
    })), i.d(t, "hb", (function() {
        return N
    })), i.d(t, "gb", (function() {
        return D
    })), i.d(t, "Z", (function() {
        return I
    })), i.d(t, "bb", (function() {
        return T
    })), i.d(t, "ab", (function() {
        return M
    })), i.d(t, "f", (function() {
        return R
    })), i.d(t, "e", (function() {
        return F
    })), i.d(t, "g", (function() {
        return j
    })), i.d(t, "c", (function() {
        return B
    })), i.d(t, "d", (function() {
        return V
    })), i.d(t, "fc", (function() {
        return W
    })), i.d(t, "hc", (function() {
        return z
    })), i.d(t, "ic", (function() {
        return H
    })), i.d(t, "gc", (function() {
        return U
    })), i.d(t, "Wb", (function() {
        return K
    })), i.d(t, "r", (function() {
        return $
    })), i.d(t, "t", (function() {
        return q
    })), i.d(t, "s", (function() {
        return G
    })), i.d(t, "K", (function() {
        return Y
    })), i.d(t, "M", (function() {
        return Z
    })), i.d(t, "L", (function() {
        return X
    })), i.d(t, "E", (function() {
        return Q
    })), i.d(t, "G", (function() {
        return J
    })), i.d(t, "F", (function() {
        return ee
    })), i.d(t, "C", (function() {
        return te
    })), i.d(t, "B", (function() {
        return ie
    })), i.d(t, "q", (function() {
        return ne
    })), i.d(t, "A", (function() {
        return re
    })), i.d(t, "N", (function() {
        return oe
    })), i.d(t, "P", (function() {
        return se
    })), i.d(t, "O", (function() {
        return ae
    })), i.d(t, "Q", (function() {
        return le
    })), i.d(t, "Xb", (function() {
        return de
    })), i.d(t, "Yb", (function() {
        return ce
    })), i.d(t, "cc", (function() {
        return he
    })), i.d(t, "Vb", (function() {
        return ue
    })), i.d(t, "Ub", (function() {
        return pe
    })), i.d(t, "ib", (function() {
        return ge
    })), i.d(t, "lb", (function() {
        return fe
    })), i.d(t, "jb", (function() {
        return me
    })), i.d(t, "kb", (function() {
        return ve
    })), i.d(t, "H", (function() {
        return be
    })), i.d(t, "I", (function() {
        return _e
    })), i.d(t, "D", (function() {
        return we
    })), i.d(t, "J", (function() {
        return ye
    })), i.d(t, "u", (function() {
        return Ce
    })), i.d(t, "w", (function() {
        return xe
    })), i.d(t, "y", (function() {
        return Se
    })), i.d(t, "v", (function() {
        return ke
    })), i.d(t, "x", (function() {
        return Le
    })), i.d(t, "z", (function() {
        return Oe
    })), i.d(t, "i", (function() {
        return Ee
    })), i.d(t, "j", (function() {
        return Ne
    })), i.d(t, "m", (function() {
        return De
    })), i.d(t, "o", (function() {
        return Ie
    })), i.d(t, "n", (function() {
        return Te
    })), i.d(t, "p", (function() {
        return Me
    })), i.d(t, "k", (function() {
        return Pe
    })), i.d(t, "l", (function() {
        return Ae
    })), i.d(t, "tb", (function() {
        return Re
    })), i.d(t, "ub", (function() {
        return Fe
    })), i.d(t, "vb", (function() {
        return je
    })), i.d(t, "mb", (function() {
        return Be
    })), i.d(t, "nb", (function() {
        return Ve
    })), i.d(t, "ob", (function() {
        return We
    })), i.d(t, "Ab", (function() {
        return ze
    })), i.d(t, "Bb", (function() {
        return He
    })), i.d(t, "Cb", (function() {
        return Ue
    })), i.d(t, "yb", (function() {
        return Ke
    })), i.d(t, "zb", (function() {
        return $e
    })), i.d(t, "wb", (function() {
        return qe
    })), i.d(t, "xb", (function() {
        return Ge
    })), i.d(t, "pb", (function() {
        return Ye
    })), i.d(t, "qb", (function() {
        return Ze
    })), i.d(t, "sb", (function() {
        return Xe
    })), i.d(t, "rb", (function() {
        return Qe
    })), i.d(t, "lc", (function() {
        return Je
    })), i.d(t, "jc", (function() {
        return et
    })), i.d(t, "ac", (function() {
        return tt
    })), i.d(t, "bc", (function() {
        return it
    })), i.d(t, "Zb", (function() {
        return nt
    })), i.d(t, "Eb", (function() {
        return rt
    })), i.d(t, "Fb", (function() {
        return ot
    })), i.d(t, "Db", (function() {
        return st
    })), i.d(t, "Ib", (function() {
        return at
    })), i.d(t, "Gb", (function() {
        return lt
    })), i.d(t, "Hb", (function() {
        return dt
    })), i.d(t, "Jb", (function() {
        return ct
    })), i.d(t, "kc", (function() {
        return ht
    })), i.d(t, "Tb", (function() {
        return ut
    })), i.d(t, "Mb", (function() {
        return pt
    })), i.d(t, "Ob", (function() {
        return gt
    })), i.d(t, "Lb", (function() {
        return ft
    })), i.d(t, "Sb", (function() {
        return mt
    })), i.d(t, "Kb", (function() {
        return vt
    })), i.d(t, "Nb", (function() {
        return bt
    })), i.d(t, "Qb", (function() {
        return _t
    })), i.d(t, "Rb", (function() {
        return wt
    })), i.d(t, "Pb", (function() {
        return yt
    })), i.d(t, "ec", (function() {
        return Ot
    }));
    var n = i(32),
        r = i(11),
        o = i(2),
        s = i(17),
        a = i(0),
        l = i(148),
        d = i(58);
    const c = {
            ColorContribution: "base.contributions.colors"
        },
        h = new class {
            constructor() {
                this._onDidChangeSchema = new o.b, this.onDidChangeSchema = this._onDidChangeSchema.event, this.colorSchema = {
                    type: "object",
                    properties: {}
                }, this.colorReferenceSchema = {
                    type: "string",
                    enum: [],
                    enumDescriptions: []
                }, this.colorsById = {}
            }
            registerColor(e, t, i, n = !1, r) {
                this.colorsById[e] = {
                    id: e,
                    description: i,
                    defaults: t,
                    needsTransparency: n,
                    deprecationMessage: r
                };
                let o = {
                    type: "string",
                    description: i,
                    format: "color-hex",
                    defaultSnippets: [{
                        body: "${1:#ff0000}"
                    }]
                };
                return r && (o.deprecationMessage = r), this.colorSchema.properties[e] = o, this.colorReferenceSchema.enum.push(e), this.colorReferenceSchema.enumDescriptions.push(i), this._onDidChangeSchema.fire(), e
            }
            resolveDefaultColor(e, t) {
                if ((e = this.colorsById[e]) && e.defaults) return Ot(e.defaults[t.type], t)
            }
            getColorSchema() {
                return this.colorSchema
            }
            toString() {
                return Object.keys(this.colorsById).sort((e, t) => {
                    var i = -1 === e.indexOf(".") ? 0 : 1,
                        n = -1 === t.indexOf(".") ? 0 : 1;
                    return i != n ? i - n : e.localeCompare(t)
                }).map(e => `- \`${e}\`: ${this.colorsById[e].description}`).join("\n")
            }
        };

    function u(e, t, i, n, r) {
        return h.registerColor(e, t, i, n, r)
    }
    d.a.add(c.ColorContribution, h);
    var p = u("foreground", {
        dark: "#CCCCCC",
        light: "#616161",
        hc: "#FFFFFF"
    }, a.a("foreground", "Overall foreground color. This color is only used if not overridden by a component."));
    const g = u("errorForeground", {
        dark: "#F48771",
        light: "#A1260D",
        hc: "#F48771"
    }, a.a("errorForeground", "Overall foreground color for error messages. This color is only used if not overridden by a component."));
    u("icon.foreground", {
        dark: "#C5C5C5",
        light: "#424242",
        hc: "#FFFFFF"
    }, a.a("iconForeground", "The default color for icons in the workbench."));
    const f = u("focusBorder", {
            dark: "#007FD4",
            light: "#0090F1",
            hc: "#F38518"
        }, a.a("focusBorder", "Overall border color for focused elements. This color is only used if not overridden by a component.")),
        m = u("contrastBorder", {
            light: null,
            dark: null,
            hc: "#6FC3DF"
        }, a.a("contrastBorder", "An extra border around elements to separate them from others for greater contrast.")),
        v = u("contrastActiveBorder", {
            light: null,
            dark: null,
            hc: f
        }, a.a("activeContrastBorder", "An extra border around active elements to separate them from others for greater contrast."));
    u("textLink.foreground", {
        light: "#006AB1",
        dark: "#3794FF",
        hc: "#3794FF"
    }, a.a("textLinkForeground", "Foreground color for links in text.")), u("textLink.activeForeground", {
        light: "#006AB1",
        dark: "#3794FF",
        hc: "#3794FF"
    }, a.a("textLinkActiveForeground", "Foreground color for links in text when clicked on and on mouse hover.")), u("textCodeBlock.background", {
        light: "#dcdcdc66",
        dark: "#0a0a0a66",
        hc: r.a.black
    }, a.a("textCodeBlockBackground", "Background color for code blocks in text."));
    const b = u("widget.shadow", {
            dark: St(r.a.black, .36),
            light: St(r.a.black, .16),
            hc: null
        }, a.a("widgetShadow", "Shadow color of widgets such as find/replace inside the editor.")),
        _ = u("input.background", {
            dark: "#3C3C3C",
            light: r.a.white,
            hc: r.a.black
        }, a.a("inputBoxBackground", "Input box background.")),
        w = u("input.foreground", {
            dark: p,
            light: p,
            hc: p
        }, a.a("inputBoxForeground", "Input box foreground.")),
        y = u("input.border", {
            dark: null,
            light: null,
            hc: m
        }, a.a("inputBoxBorder", "Input box border.")),
        C = u("inputOption.activeBorder", {
            dark: "#007ACC00",
            light: "#007ACC00",
            hc: m
        }, a.a("inputBoxActiveOptionBorder", "Border color of activated options in input fields.")),
        x = u("inputOption.activeBackground", {
            dark: St(f, .4),
            light: St(f, .2),
            hc: r.a.transparent
        }, a.a("inputOption.activeBackground", "Background color of activated options in input fields.")),
        S = u("inputOption.activeForeground", {
            dark: r.a.white,
            light: r.a.black,
            hc: null
        }, a.a("inputOption.activeForeground", "Foreground color of activated options in input fields.")),
        k = u("inputValidation.infoBackground", {
            dark: "#063B49",
            light: "#D6ECF2",
            hc: r.a.black
        }, a.a("inputValidationInfoBackground", "Input validation background color for information severity.")),
        L = u("inputValidation.infoForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("inputValidationInfoForeground", "Input validation foreground color for information severity.")),
        O = u("inputValidation.infoBorder", {
            dark: "#007acc",
            light: "#007acc",
            hc: m
        }, a.a("inputValidationInfoBorder", "Input validation border color for information severity.")),
        E = u("inputValidation.warningBackground", {
            dark: "#352A05",
            light: "#F6F5D2",
            hc: r.a.black
        }, a.a("inputValidationWarningBackground", "Input validation background color for warning severity.")),
        N = u("inputValidation.warningForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("inputValidationWarningForeground", "Input validation foreground color for warning severity.")),
        D = u("inputValidation.warningBorder", {
            dark: "#B89500",
            light: "#B89500",
            hc: m
        }, a.a("inputValidationWarningBorder", "Input validation border color for warning severity.")),
        I = u("inputValidation.errorBackground", {
            dark: "#5A1D1D",
            light: "#F2DEDE",
            hc: r.a.black
        }, a.a("inputValidationErrorBackground", "Input validation background color for error severity.")),
        T = u("inputValidation.errorForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("inputValidationErrorForeground", "Input validation foreground color for error severity.")),
        M = u("inputValidation.errorBorder", {
            dark: "#BE1100",
            light: "#BE1100",
            hc: m
        }, a.a("inputValidationErrorBorder", "Input validation border color for error severity."));
    var P = u("dropdown.background", {
            dark: "#3C3C3C",
            light: r.a.white,
            hc: r.a.black
        }, a.a("dropdownBackground", "Dropdown background.")),
        A = u("dropdown.foreground", {
            dark: "#F0F0F0",
            light: null,
            hc: r.a.white
        }, a.a("dropdownForeground", "Dropdown foreground."));
    const R = u("button.foreground", {
            dark: r.a.white,
            light: r.a.white,
            hc: r.a.white
        }, a.a("buttonForeground", "Button foreground color.")),
        F = u("button.background", {
            dark: "#0E639C",
            light: "#007ACC",
            hc: null
        }, a.a("buttonBackground", "Button background color.")),
        j = u("button.hoverBackground", {
            dark: xt(F, .2),
            light: Ct(F, .2),
            hc: null
        }, a.a("buttonHoverBackground", "Button background color when hovering.")),
        B = u("badge.background", {
            dark: "#4D4D4D",
            light: "#C4C4C4",
            hc: r.a.black
        }, a.a("badgeBackground", "Badge background color. Badges are small information labels, e.g. for search results count.")),
        V = u("badge.foreground", {
            dark: r.a.white,
            light: "#333",
            hc: r.a.white
        }, a.a("badgeForeground", "Badge foreground color. Badges are small information labels, e.g. for search results count.")),
        W = u("scrollbar.shadow", {
            dark: "#000000",
            light: "#DDDDDD",
            hc: null
        }, a.a("scrollbarShadow", "Scrollbar shadow to indicate that the view is scrolled.")),
        z = u("scrollbarSlider.background", {
            dark: r.a.fromHex("#797979").transparent(.4),
            light: r.a.fromHex("#646464").transparent(.4),
            hc: St(m, .6)
        }, a.a("scrollbarSliderBackground", "Scrollbar slider background color.")),
        H = u("scrollbarSlider.hoverBackground", {
            dark: r.a.fromHex("#646464").transparent(.7),
            light: r.a.fromHex("#646464").transparent(.7),
            hc: St(m, .8)
        }, a.a("scrollbarSliderHoverBackground", "Scrollbar slider background color when hovering.")),
        U = u("scrollbarSlider.activeBackground", {
            dark: r.a.fromHex("#BFBFBF").transparent(.4),
            light: r.a.fromHex("#000000").transparent(.6),
            hc: m
        }, a.a("scrollbarSliderActiveBackground", "Scrollbar slider background color when clicked on.")),
        K = u("progressBar.background", {
            dark: r.a.fromHex("#0E70C0"),
            light: r.a.fromHex("#0E70C0"),
            hc: m
        }, a.a("progressBarBackground", "Background color of the progress bar that can show for long running operations.")),
        $ = u("editorError.background", {
            dark: null,
            light: null,
            hc: null
        }, a.a("editorError.background", "Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."), !0),
        q = u("editorError.foreground", {
            dark: "#F14C4C",
            light: "#E51400",
            hc: null
        }, a.a("editorError.foreground", "Foreground color of error squigglies in the editor.")),
        G = u("editorError.border", {
            dark: null,
            light: null,
            hc: r.a.fromHex("#E47777").transparent(.8)
        }, a.a("errorBorder", "Border color of error boxes in the editor.")),
        Y = u("editorWarning.background", {
            dark: null,
            light: null,
            hc: null
        }, a.a("editorWarning.background", "Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."), !0),
        Z = u("editorWarning.foreground", {
            dark: "#CCA700",
            light: "#BF8803",
            hc: null
        }, a.a("editorWarning.foreground", "Foreground color of warning squigglies in the editor.")),
        X = u("editorWarning.border", {
            dark: null,
            light: null,
            hc: r.a.fromHex("#FFCC00").transparent(.8)
        }, a.a("warningBorder", "Border color of warning boxes in the editor.")),
        Q = u("editorInfo.background", {
            dark: null,
            light: null,
            hc: null
        }, a.a("editorInfo.background", "Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."), !0),
        J = u("editorInfo.foreground", {
            dark: "#3794FF",
            light: "#1a85ff",
            hc: "#3794FF"
        }, a.a("editorInfo.foreground", "Foreground color of info squigglies in the editor.")),
        ee = u("editorInfo.border", {
            dark: null,
            light: null,
            hc: r.a.fromHex("#3794FF").transparent(.8)
        }, a.a("infoBorder", "Border color of info boxes in the editor.")),
        te = u("editorHint.foreground", {
            dark: r.a.fromHex("#eeeeee").transparent(.7),
            light: "#6c6c6c",
            hc: null
        }, a.a("editorHint.foreground", "Foreground color of hint squigglies in the editor.")),
        ie = u("editorHint.border", {
            dark: null,
            light: null,
            hc: r.a.fromHex("#eeeeee").transparent(.8)
        }, a.a("hintBorder", "Border color of hint boxes in the editor.")),
        ne = u("editor.background", {
            light: "#fffffe",
            dark: "#1E1E1E",
            hc: r.a.black
        }, a.a("editorBackground", "Editor background color.")),
        re = u("editor.foreground", {
            light: "#333333",
            dark: "#BBBBBB",
            hc: r.a.white
        }, a.a("editorForeground", "Editor default foreground color.")),
        oe = u("editorWidget.background", {
            dark: "#252526",
            light: "#F3F3F3",
            hc: "#0C141F"
        }, a.a("editorWidgetBackground", "Background color of editor widgets, such as find/replace.")),
        se = u("editorWidget.foreground", {
            dark: p,
            light: p,
            hc: p
        }, a.a("editorWidgetForeground", "Foreground color of editor widgets, such as find/replace.")),
        ae = u("editorWidget.border", {
            dark: "#454545",
            light: "#C8C8C8",
            hc: m
        }, a.a("editorWidgetBorder", "Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.")),
        le = u("editorWidget.resizeBorder", {
            light: null,
            dark: null,
            hc: null
        }, a.a("editorWidgetResizeBorder", "Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.")),
        de = u("quickInput.background", {
            dark: oe,
            light: oe,
            hc: oe
        }, a.a("pickerBackground", "Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),
        ce = u("quickInput.foreground", {
            dark: se,
            light: se,
            hc: se
        }, a.a("pickerForeground", "Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),
        he = u("quickInputTitle.background", {
            dark: new r.a(new r.b(255, 255, 255, .105)),
            light: new r.a(new r.b(0, 0, 0, .06)),
            hc: "#000000"
        }, a.a("pickerTitleBackground", "Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),
        ue = u("pickerGroup.foreground", {
            dark: "#3794FF",
            light: "#0066BF",
            hc: r.a.white
        }, a.a("pickerGroupForeground", "Quick picker color for grouping labels.")),
        pe = u("pickerGroup.border", {
            dark: "#3F3F46",
            light: "#CCCEDB",
            hc: r.a.white
        }, a.a("pickerGroupBorder", "Quick picker color for grouping borders.")),
        ge = u("keybindingLabel.background", {
            dark: new r.a(new r.b(128, 128, 128, .17)),
            light: new r.a(new r.b(221, 221, 221, .4)),
            hc: r.a.transparent
        }, a.a("keybindingLabelBackground", "Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.")),
        fe = u("keybindingLabel.foreground", {
            dark: r.a.fromHex("#CCCCCC"),
            light: r.a.fromHex("#555555"),
            hc: r.a.white
        }, a.a("keybindingLabelForeground", "Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.")),
        me = u("keybindingLabel.border", {
            dark: new r.a(new r.b(51, 51, 51, .6)),
            light: new r.a(new r.b(204, 204, 204, .4)),
            hc: new r.a(new r.b(111, 195, 223))
        }, a.a("keybindingLabelBorder", "Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.")),
        ve = u("keybindingLabel.bottomBorder", {
            dark: new r.a(new r.b(68, 68, 68, .6)),
            light: new r.a(new r.b(187, 187, 187, .4)),
            hc: new r.a(new r.b(111, 195, 223))
        }, a.a("keybindingLabelBottomBorder", "Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.")),
        be = u("editor.selectionBackground", {
            light: "#ADD6FF",
            dark: "#264F78",
            hc: "#f3f518"
        }, a.a("editorSelectionBackground", "Color of the editor selection.")),
        _e = u("editor.selectionForeground", {
            light: null,
            dark: null,
            hc: "#000000"
        }, a.a("editorSelectionForeground", "Color of the selected text for high contrast.")),
        we = u("editor.inactiveSelectionBackground", {
            light: St(be, .5),
            dark: St(be, .5),
            hc: St(be, .5)
        }, a.a("editorInactiveSelection", "Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."), !0),
        ye = u("editor.selectionHighlightBackground", {
            light: Lt(be, ne, .3, .6),
            dark: Lt(be, ne, .3, .6),
            hc: null
        }, a.a("editorSelectionHighlight", "Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."), !0);
    u("editor.selectionHighlightBorder", {
        light: null,
        dark: null,
        hc: v
    }, a.a("editorSelectionHighlightBorder", "Border color for regions with the same content as the selection."));
    const Ce = u("editor.findMatchBackground", {
            light: "#A8AC94",
            dark: "#515C6A",
            hc: null
        }, a.a("editorFindMatch", "Color of the current search match.")),
        xe = u("editor.findMatchHighlightBackground", {
            light: "#EA5C0055",
            dark: "#EA5C0055",
            hc: null
        }, a.a("findMatchHighlight", "Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."), !0),
        Se = u("editor.findRangeHighlightBackground", {
            dark: "#3a3d4166",
            light: "#b4b4b44d",
            hc: null
        }, a.a("findRangeHighlight", "Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."), !0),
        ke = u("editor.findMatchBorder", {
            light: null,
            dark: null,
            hc: v
        }, a.a("editorFindMatchBorder", "Border color of the current search match.")),
        Le = u("editor.findMatchHighlightBorder", {
            light: null,
            dark: null,
            hc: v
        }, a.a("findMatchHighlightBorder", "Border color of the other search matches.")),
        Oe = u("editor.findRangeHighlightBorder", {
            dark: null,
            light: null,
            hc: St(v, .4)
        }, a.a("findRangeHighlightBorder", "Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."), !0);
    u("editor.hoverHighlightBackground", {
        light: "#ADD6FF26",
        dark: "#264f7840",
        hc: "#ADD6FF26"
    }, a.a("hoverHighlight", "Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."), !0), t = u("editorHoverWidget.background", {
        light: oe,
        dark: oe,
        hc: oe
    }, a.a("hoverBackground", "Background color of the editor hover.")), u("editorHoverWidget.foreground", {
        light: se,
        dark: se,
        hc: se
    }, a.a("hoverForeground", "Foreground color of the editor hover.")), u("editorHoverWidget.border", {
        light: ae,
        dark: ae,
        hc: ae
    }, a.a("hoverBorder", "Border color of the editor hover.")), u("editorHoverWidget.statusBarBackground", {
        dark: xt(t, .2),
        light: Ct(t, .05),
        hc: oe
    }, a.a("statusBarBackground", "Background color of the editor hover status bar.")), u("editorLink.activeForeground", {
        dark: "#4E94CE",
        light: r.a.blue,
        hc: r.a.cyan
    }, a.a("activeLinkForeground", "Color of active links.")), i = u("editorInlayHint.foreground", {
        dark: St(V, .8),
        light: St(V, .8),
        hc: V
    }, a.a("editorInlayHintForeground", "Foreground color of inline hints")), t = u("editorInlayHint.background", {
        dark: St(B, .6),
        light: St(B, .3),
        hc: B
    }, a.a("editorInlayHintBackground", "Background color of inline hints")), u("editorInlayHint.typeForeground", {
        dark: i,
        light: i,
        hc: i
    }, a.a("editorInlayHintForegroundTypes", "Foreground color of inline hints for types")), u("editorInlayHint.typeBackground", {
        dark: t,
        light: t,
        hc: t
    }, a.a("editorInlayHintBackgroundTypes", "Background color of inline hints for types")), u("editorInlayHint.parameterForeground", {
        dark: i,
        light: i,
        hc: i
    }, a.a("editorInlayHintForegroundParameter", "Foreground color of inline hints for parameters")), u("editorInlayHint.parameterBackground", {
        dark: t,
        light: t,
        hc: t
    }, a.a("editorInlayHintBackgroundParameter", "Background color of inline hints for parameters")), u("editorLightBulb.foreground", {
        dark: "#FFCC00",
        light: "#DDB100",
        hc: "#FFCC00"
    }, a.a("editorLightBulbForeground", "The color used for the lightbulb actions icon.")), u("editorLightBulbAutoFix.foreground", {
        dark: "#75BEFF",
        light: "#007ACC",
        hc: "#75BEFF"
    }, a.a("editorLightBulbAutoFixForeground", "The color used for the lightbulb auto fix actions icon."));
    const Ee = new r.a(new r.b(155, 185, 85, .2)),
        Ne = new r.a(new r.b(255, 0, 0, .2)),
        De = u("diffEditor.insertedTextBackground", {
            dark: Ee,
            light: Ee,
            hc: null
        }, a.a("diffEditorInserted", "Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."), !0),
        Ie = u("diffEditor.removedTextBackground", {
            dark: Ne,
            light: Ne,
            hc: null
        }, a.a("diffEditorRemoved", "Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."), !0),
        Te = u("diffEditor.insertedTextBorder", {
            dark: null,
            light: null,
            hc: "#33ff2eff"
        }, a.a("diffEditorInsertedOutline", "Outline color for the text that got inserted.")),
        Me = u("diffEditor.removedTextBorder", {
            dark: null,
            light: null,
            hc: "#FF008F"
        }, a.a("diffEditorRemovedOutline", "Outline color for text that got removed.")),
        Pe = u("diffEditor.border", {
            dark: null,
            light: null,
            hc: m
        }, a.a("diffEditorBorder", "Border color between the two text editors.")),
        Ae = u("diffEditor.diagonalFill", {
            dark: "#cccccc33",
            light: "#22222233",
            hc: null
        }, a.a("diffDiagonalFill", "Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.")),
        Re = u("list.focusBackground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listFocusBackground", "List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),
        Fe = u("list.focusForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listFocusForeground", "List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),
        je = u("list.focusOutline", {
            dark: f,
            light: f,
            hc: v
        }, a.a("listFocusOutline", "List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),
        Be = u("list.activeSelectionBackground", {
            dark: "#094771",
            light: "#0060C0",
            hc: null
        }, a.a("listActiveSelectionBackground", "List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),
        Ve = u("list.activeSelectionForeground", {
            dark: r.a.white,
            light: r.a.white,
            hc: null
        }, a.a("listActiveSelectionForeground", "List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),
        We = u("list.activeSelectionIconForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listActiveSelectionIconForeground", "List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),
        ze = u("list.inactiveSelectionBackground", {
            dark: "#37373D",
            light: "#E4E6F1",
            hc: null
        }, a.a("listInactiveSelectionBackground", "List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),
        He = u("list.inactiveSelectionForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listInactiveSelectionForeground", "List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),
        Ue = u("list.inactiveSelectionIconForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listInactiveSelectionIconForeground", "List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),
        Ke = u("list.inactiveFocusBackground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listInactiveFocusBackground", "List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),
        $e = u("list.inactiveFocusOutline", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listInactiveFocusOutline", "List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),
        qe = u("list.hoverBackground", {
            dark: "#2A2D2E",
            light: "#F0F0F0",
            hc: null
        }, a.a("listHoverBackground", "List/Tree background when hovering over items using the mouse.")),
        Ge = u("list.hoverForeground", {
            dark: null,
            light: null,
            hc: null
        }, a.a("listHoverForeground", "List/Tree foreground when hovering over items using the mouse.")),
        Ye = u("list.dropBackground", {
            dark: "#062F4A",
            light: "#D6EBFF",
            hc: null
        }, a.a("listDropBackground", "List/Tree drag and drop background when moving items around using the mouse."));
    t = u("list.highlightForeground", {
        dark: "#18A3FF",
        light: "#0066BF",
        hc: f
    }, a.a("highlight", "List/Tree foreground color of the match highlights when searching inside the list/tree.")), u("list.focusHighlightForeground", {
        dark: t,
        light: {
            op: 5,
            if: Be,
            then: t,
            else: "#9DDDFF"
        },
        hc: t
    }, a.a("listFocusHighlightForeground", "List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree."));
    const Ze = u("listFilterWidget.background", {
            light: "#efc1ad",
            dark: "#653723",
            hc: r.a.black
        }, a.a("listFilterWidgetBackground", "Background color of the type filter widget in lists and trees.")),
        Xe = u("listFilterWidget.outline", {
            dark: r.a.transparent,
            light: r.a.transparent,
            hc: "#f38518"
        }, a.a("listFilterWidgetOutline", "Outline color of the type filter widget in lists and trees.")),
        Qe = u("listFilterWidget.noMatchesOutline", {
            dark: "#BE1100",
            light: "#BE1100",
            hc: m
        }, a.a("listFilterWidgetNoMatchesOutline", "Outline color of the type filter widget in lists and trees, when there are no matches.")),
        Je = u("tree.indentGuidesStroke", {
            dark: "#585858",
            light: "#a9a9a9",
            hc: "#a9a9a9"
        }, a.a("treeIndentGuidesStroke", "Tree stroke color for the indentation guides.")),
        et = u("tree.tableColumnsBorder", {
            dark: "#CCCCCC20",
            light: "#61616120",
            hc: null
        }, a.a("treeIndentGuidesStroke", "Tree stroke color for the indentation guides."));
    t = u("quickInput.list.focusBackground", {
        dark: null,
        light: null,
        hc: null
    }, "", void 0, a.a("quickInput.list.focusBackground deprecation", "Please use quickInputList.focusBackground instead"));
    const tt = u("quickInputList.focusForeground", {
            dark: Ve,
            light: Ve,
            hc: Ve
        }, a.a("quickInput.listFocusForeground", "Quick picker foreground color for the focused item.")),
        it = u("quickInputList.focusIconForeground", {
            dark: We,
            light: We,
            hc: We
        }, a.a("quickInput.listFocusIconForeground", "Quick picker icon foreground color for the focused item.")),
        nt = u("quickInputList.focusBackground", {
            dark: kt(t, Be),
            light: kt(t, Be),
            hc: null
        }, a.a("quickInput.listFocusBackground", "Quick picker background color for the focused item.")),
        rt = u("menu.border", {
            dark: null,
            light: null,
            hc: m
        }, a.a("menuBorder", "Border color of menus.")),
        ot = u("menu.foreground", {
            dark: A,
            light: p,
            hc: A
        }, a.a("menuForeground", "Foreground color of menu items.")),
        st = u("menu.background", {
            dark: P,
            light: P,
            hc: P
        }, a.a("menuBackground", "Background color of menu items.")),
        at = u("menu.selectionForeground", {
            dark: Ve,
            light: Ve,
            hc: Ve
        }, a.a("menuSelectionForeground", "Foreground color of the selected menu item in menus.")),
        lt = u("menu.selectionBackground", {
            dark: Be,
            light: Be,
            hc: Be
        }, a.a("menuSelectionBackground", "Background color of the selected menu item in menus.")),
        dt = u("menu.selectionBorder", {
            dark: null,
            light: null,
            hc: v
        }, a.a("menuSelectionBorder", "Border color of the selected menu item in menus.")),
        ct = u("menu.separatorBackground", {
            dark: "#BBBBBB",
            light: "#888888",
            hc: m
        }, a.a("menuSeparatorBackground", "Color of a separator menu item in menus.")),
        ht = u("toolbar.hoverBackground", {
            dark: "#5a5d5e50",
            light: "#b8b8b850",
            hc: null
        }, a.a("toolbarHoverBackground", "Toolbar background when hovering over actions using the mouse"));
    u("editor.snippetTabstopHighlightBackground", {
        dark: new r.a(new r.b(124, 124, 124, .3)),
        light: new r.a(new r.b(10, 50, 100, .2)),
        hc: new r.a(new r.b(124, 124, 124, .3))
    }, a.a("snippetTabstopHighlightBackground", "Highlight background color of a snippet tabstop.")), u("editor.snippetTabstopHighlightBorder", {
        dark: null,
        light: null,
        hc: null
    }, a.a("snippetTabstopHighlightBorder", "Highlight border color of a snippet tabstop.")), u("editor.snippetFinalTabstopHighlightBackground", {
        dark: null,
        light: null,
        hc: null
    }, a.a("snippetFinalTabstopHighlightBackground", "Highlight background color of the final tabstop of a snippet.")), u("editor.snippetFinalTabstopHighlightBorder", {
        dark: "#525252",
        light: new r.a(new r.b(10, 50, 100, .5)),
        hc: "#525252"
    }, a.a("snippetFinalTabstopHighlightBorder", "Highlight border color of the final tabstop of a snippet."));
    const ut = u("editorOverviewRuler.findMatchForeground", {
        dark: "#d186167e",
        light: "#d186167e",
        hc: "#AB5A00"
    }, a.a("overviewRulerFindMatchForeground", "Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."), !0);
    u("editorOverviewRuler.selectionHighlightForeground", {
        dark: "#A0A0A0CC",
        light: "#A0A0A0CC",
        hc: "#A0A0A0CC"
    }, a.a("overviewRulerSelectionHighlightForeground", "Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."), !0);
    const pt = u("minimap.findMatchHighlight", {
        light: "#d18616",
        dark: "#d18616",
        hc: "#AB5A00"
    }, a.a("minimapFindMatchHighlight", "Minimap marker color for find matches."), !0);
    u("minimap.selectionOccurrenceHighlight", {
        light: "#c9c9c9",
        dark: "#676767",
        hc: "#ffffff"
    }, a.a("minimapSelectionOccurrenceHighlight", "Minimap marker color for repeating editor selections."), !0);
    const gt = u("minimap.selectionHighlight", {
            light: "#ADD6FF",
            dark: "#264F78",
            hc: "#ffffff"
        }, a.a("minimapSelectionHighlight", "Minimap marker color for the editor selection."), !0),
        ft = u("minimap.errorHighlight", {
            dark: new r.a(new r.b(255, 18, 18, .7)),
            light: new r.a(new r.b(255, 18, 18, .7)),
            hc: new r.a(new r.b(255, 50, 50, 1))
        }, a.a("minimapError", "Minimap marker color for errors.")),
        mt = u("minimap.warningHighlight", {
            dark: Z,
            light: Z,
            hc: X
        }, a.a("overviewRuleWarning", "Minimap marker color for warnings.")),
        vt = u("minimap.background", {
            dark: null,
            light: null,
            hc: null
        }, a.a("minimapBackground", "Minimap background color.")),
        bt = u("minimap.foregroundOpacity", {
            dark: r.a.fromHex("#000f"),
            light: r.a.fromHex("#000f"),
            hc: r.a.fromHex("#000f")
        }, a.a("minimapForegroundOpacity", 'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.')),
        _t = u("minimapSlider.background", {
            light: St(z, .5),
            dark: St(z, .5),
            hc: St(z, .5)
        }, a.a("minimapSliderBackground", "Minimap slider background color.")),
        wt = u("minimapSlider.hoverBackground", {
            light: St(H, .5),
            dark: St(H, .5),
            hc: St(H, .5)
        }, a.a("minimapSliderHoverBackground", "Minimap slider background color when hovering.")),
        yt = u("minimapSlider.activeBackground", {
            light: St(U, .5),
            dark: St(U, .5),
            hc: St(U, .5)
        }, a.a("minimapSliderActiveBackground", "Minimap slider background color when clicked on."));

    function Ct(e, t) {
        return {
            op: 0,
            value: e,
            factor: t
        }
    }

    function xt(e, t) {
        return {
            op: 1,
            value: e,
            factor: t
        }
    }

    function St(e, t) {
        return {
            op: 2,
            value: e,
            factor: t
        }
    }

    function kt(...e) {
        return {
            op: 3,
            values: e
        }
    }

    function Lt(e, t, i, n) {
        return {
            op: 4,
            value: e,
            background: t,
            factor: i,
            transparency: n
        }
    }

    function Ot(e, t) {
        if (null !== e) return "string" == typeof e ? "#" === e[0] ? r.a.fromHex(e) : t.getColor(e) : e instanceof r.a ? e : "object" == typeof e ? function(e, t) {
            var i;
            switch (e.op) {
                case 0:
                    return null === (i = Ot(e.value, t)) || void 0 === i ? void 0 : i.darken(e.factor);
                case 1:
                    return null === (i = Ot(e.value, t)) || void 0 === i ? void 0 : i.lighten(e.factor);
                case 2:
                    return null === (o = Ot(e.value, t)) || void 0 === o ? void 0 : o.transparent(e.factor);
                case 3:
                    for (const i of e.values) {
                        var n = Ot(i, t);
                        if (n) return n
                    }
                    return;
                case 5:
                    return Ot(t.defines(e.if) ? e.then : e.else, t);
                case 4:
                    const a = Ot(e.value, t);
                    if (!a) return;
                    var o = Ot(e.background, t);
                    return o ? (a.isDarkerThan(o) ? r.a.getLighterColor(a, o, e.factor) : r.a.getDarkerColor(a, o, e.factor)).transparent(e.transparency) : a.transparent(e.factor * e.transparency);
                default:
                    throw Object(s.a)(e)
            }
        }(e, t) : void 0
    }
    u("problemsErrorIcon.foreground", {
        dark: q,
        light: q,
        hc: q
    }, a.a("problemsErrorIconForeground", "The color used for the problems error icon.")), u("problemsWarningIcon.foreground", {
        dark: Z,
        light: Z,
        hc: Z
    }, a.a("problemsWarningIconForeground", "The color used for the problems warning icon.")), u("problemsInfoIcon.foreground", {
        dark: J,
        light: J,
        hc: J
    }, a.a("problemsInfoIconForeground", "The color used for the problems info icon."));
    const Et = "vscode://schemas/workbench-colors";
    let Nt = d.a.as(l.a.JSONContribution);
    Nt.registerSchema(Et, h.getColorSchema());
    const Dt = new n.e(() => Nt.notifySchemaChanged(Et), 200);
    h.onDidChangeSchema(() => {
        Dt.isScheduled() || Dt.schedule()
    })
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    }));
    class n {
        constructor(e, t) {
            this.lineNumber = e, this.column = t
        }
        with(e = this.lineNumber, t = this.column) {
            return e === this.lineNumber && t === this.column ? this : new n(e, t)
        }
        delta(e = 0, t = 0) {
            return this.with(this.lineNumber + e, this.column + t)
        }
        equals(e) {
            return n.equals(this, e)
        }
        static equals(e, t) {
            return !e && !t || !!e && !!t && e.lineNumber === t.lineNumber && e.column === t.column
        }
        isBefore(e) {
            return n.isBefore(this, e)
        }
        static isBefore(e, t) {
            return e.lineNumber < t.lineNumber || !(t.lineNumber < e.lineNumber) && e.column < t.column
        }
        isBeforeOrEqual(e) {
            return n.isBeforeOrEqual(this, e)
        }
        static isBeforeOrEqual(e, t) {
            return e.lineNumber < t.lineNumber || !(t.lineNumber < e.lineNumber) && e.column <= t.column
        }
        static compare(e, t) {
            var i = 0 | e.lineNumber,
                n = 0 | t.lineNumber;
            return i != n ? i - n : (0 | e.column) - (0 | t.column)
        }
        clone() {
            return new n(this.lineNumber, this.column)
        }
        toString() {
            return "(" + this.lineNumber + "," + this.column + ")"
        }
        static lift(e) {
            return new n(e.lineNumber, e.column)
        }
        static isIPosition(e) {
            return e && "number" == typeof e.lineNumber && "number" == typeof e.column
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return u
    })), i.d(t, "i", (function() {
        return v
    })), i.d(t, "f", (function() {
        return b
    })), i.d(t, "d", (function() {
        return _
    })), i.d(t, "g", (function() {
        return w
    })), i.d(t, "h", (function() {
        return y
    })), i.d(t, "c", (function() {
        return C
    })), i.d(t, "k", (function() {
        return x
    })), i.d(t, "j", (function() {
        return S
    })), i.d(t, "a", (function() {
        return k
    })), i.d(t, "e", (function() {
        return E
    }));
    let n = !1,
        r = !1,
        o = !1,
        s = !1,
        a = !1,
        l = !1,
        d = void 0,
        c = "en",
        h = void 0;
    const u = "object" == typeof self ? self : "object" == typeof global ? global : {};
    let p = void 0;
    if (void 0 !== u.vscode && void 0 !== u.vscode.process ? p = u.vscode.process : "undefined" != typeof process && (p = process), t = "string" == typeof(null === (t = null == p ? void 0 : p.versions) || void 0 === t ? void 0 : t.electron) && "renderer" === p.type, "object" != typeof navigator || t)
        if ("object" == typeof p) {
            if (n = "win32" === p.platform, r = "darwin" === p.platform, o = "linux" === p.platform, o && !!p.env.SNAP && p.env.SNAP_REVISION, d = "en", c = "en", t = p.env.VSCODE_NLS_CONFIG) try {
                var g = JSON.parse(t),
                    f = g.availableLanguages["*"];
                d = g.locale, c = f || "en", g._translationsConfigFile
            } catch (e) {}
            s = !0
        } else console.error("Unable to resolve platform.");
    else h = navigator.userAgent, n = 0 <= h.indexOf("Windows"), r = 0 <= h.indexOf("Macintosh"), l = (0 <= h.indexOf("Macintosh") || 0 <= h.indexOf("iPad") || 0 <= h.indexOf("iPhone")) && !!navigator.maxTouchPoints && 0 < navigator.maxTouchPoints, o = 0 <= h.indexOf("Linux"), a = !0, d = navigator.language, c = d;
    let m = 0;
    r ? m = 1 : n ? m = 3 : o && (m = 2);
    const v = n,
        b = r,
        _ = o,
        w = s,
        y = a,
        C = l,
        x = h,
        S = function() {
            if (u.setImmediate) return u.setImmediate.bind(u);
            if ("function" == typeof u.postMessage && !u.importScripts) {
                let e = [];
                u.addEventListener("message", t => {
                    if (t.data && t.data.vscodeSetImmediateId)
                        for (let i = 0, n = e.length; i < n; i++) {
                            const n = e[i];
                            if (n.id === t.data.vscodeSetImmediateId) return e.splice(i, 1), void n.callback()
                        }
                });
                let t = 0;
                return i => {
                    var n = ++t;
                    e.push({
                        id: n,
                        callback: i
                    }), u.postMessage({
                        vscodeSetImmediateId: n
                    }, "*")
                }
            }
            if ("function" == typeof(null == p ? void 0 : p.nextTick)) return p.nextTick.bind(p);
            const e = Promise.resolve();
            return t => e.then(t)
        }(),
        k = r || l ? 2 : n ? 1 : 3;
    let L = !0,
        O = !1;

    function E() {
        if (!O) {
            O = !0;
            const t = new Uint8Array(2);
            t[0] = 1, t[1] = 2;
            var e = new Uint16Array(t.buffer);
            L = 513 === e[0]
        }
        return L
    }
}, function(e, t) {
    function i(e, t, i, n, r, o, s) {
        try {
            var a = e[o](s),
                l = a.value
        } catch (e) {
            return void i(e)
        }
        a.done ? t(l) : Promise.resolve(l).then(n, r)
    }
    e.exports = function(e) {
        return function() {
            var t = this,
                n = arguments;
            return new Promise((function(r, o) {
                var s = e.apply(t, n);

                function a(e) {
                    i(s, r, o, a, l, "next", e)
                }

                function l(e) {
                    i(s, r, o, a, l, "throw", e)
                }
                a(void 0)
            }))
        }
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    "use strict";

    function n(e, t) {
        return t = Math.pow(10, t), Math.round(e * t) / t
    }
    i.d(t, "b", (function() {
        return r
    })), i.d(t, "a", (function() {
        return a
    }));
    class r {
        constructor(e, t, i, r = 1) {
            this._rgbaBrand = void 0, this.r = 0 | Math.min(255, Math.max(0, e)), this.g = 0 | Math.min(255, Math.max(0, t)), this.b = 0 | Math.min(255, Math.max(0, i)), this.a = n(Math.max(Math.min(1, r), 0), 3)
        }
        static equals(e, t) {
            return e.r === t.r && e.g === t.g && e.b === t.b && e.a === t.a
        }
    }
    class o {
        constructor(e, t, i, r) {
            this._hslaBrand = void 0, this.h = 0 | Math.max(Math.min(360, e), 0), this.s = n(Math.max(Math.min(1, t), 0), 3), this.l = n(Math.max(Math.min(1, i), 0), 3), this.a = n(Math.max(Math.min(1, r), 0), 3)
        }
        static equals(e, t) {
            return e.h === t.h && e.s === t.s && e.l === t.l && e.a === t.a
        }
        static fromRGBA(e) {
            var t = e.r / 255,
                i = e.g / 255,
                n = e.b / 255,
                r = e.a,
                s = Math.max(t, i, n),
                a = Math.min(t, i, n);
            let l = 0,
                d = 0;
            e = (a + s) / 2;
            var c = s - a;
            if (0 < c) {
                switch (d = Math.min(e <= .5 ? c / (2 * e) : c / (2 - 2 * e), 1), s) {
                    case t:
                        l = (i - n) / c + (i < n ? 6 : 0);
                        break;
                    case i:
                        l = (n - t) / c + 2;
                        break;
                    case n:
                        l = (t - i) / c + 4
                }
                l *= 60, l = Math.round(l)
            }
            return new o(l, d, e, r)
        }
        static _hue2rgb(e, t, i) {
            return i < 0 && (i += 1), 1 < i && --i, i < 1 / 6 ? e + 6 * (t - e) * i : i < .5 ? t : i < 2 / 3 ? e + (t - e) * (2 / 3 - i) * 6 : e
        }
        static toRGBA(e) {
            var t = e.h / 360,
                {
                    s: i,
                    l: n,
                    a: e
                } = e;
            let s, a, l;
            return 0 === i ? s = a = l = n : (i = 2 * n - (n = n < .5 ? n * (1 + i) : n + i - n * i), s = o._hue2rgb(i, n, t + 1 / 3), a = o._hue2rgb(i, n, t), l = o._hue2rgb(i, n, t - 1 / 3)), new r(Math.round(255 * s), Math.round(255 * a), Math.round(255 * l), e)
        }
    }
    class s {
        constructor(e, t, i, r) {
            this._hsvaBrand = void 0, this.h = 0 | Math.max(Math.min(360, e), 0), this.s = n(Math.max(Math.min(1, t), 0), 3), this.v = n(Math.max(Math.min(1, i), 0), 3), this.a = n(Math.max(Math.min(1, r), 0), 3)
        }
        static equals(e, t) {
            return e.h === t.h && e.s === t.s && e.v === t.v && e.a === t.a
        }
        static fromRGBA(e) {
            var t = e.r / 255,
                i = e.g / 255,
                n = e.b / 255,
                r = Math.max(t, i, n),
                o = r - Math.min(t, i, n),
                a = 0 === r ? 0 : o / r;
            let l;
            return l = 0 == o ? 0 : r === t ? ((i - n) / o % 6 + 6) % 6 : r === i ? (n - t) / o + 2 : (t - i) / o + 4, new s(Math.round(60 * l), a, r, e.a)
        }
        static toRGBA(e) {
            var {
                h: t,
                s: i,
                v: n,
                a: o
            } = e, i = (e = n * i) * (1 - Math.abs(t / 60 % 2 - 1)), n = n - e;
            let [s, a, l] = [0, 0, 0];
            return t < 60 ? (s = e, a = i) : t < 120 ? (s = i, a = e) : t < 180 ? (a = e, l = i) : t < 240 ? (a = i, l = e) : t < 300 ? (s = i, l = e) : t <= 360 && (s = e, l = i), s = Math.round(255 * (s + n)), a = Math.round(255 * (a + n)), l = Math.round(255 * (l + n)), new r(s, a, l, o)
        }
    }
    class a {
        constructor(e) {
            if (!e) throw new Error("Color needs a value");
            if (e instanceof r) this.rgba = e;
            else if (e instanceof o) this._hsla = e, this.rgba = o.toRGBA(e);
            else {
                if (!(e instanceof s)) throw new Error("Invalid color ctor argument");
                this._hsva = e, this.rgba = s.toRGBA(e)
            }
        }
        static fromHex(e) {
            return a.Format.CSS.parseHex(e) || a.red
        }
        get hsla() {
            return this._hsla || o.fromRGBA(this.rgba)
        }
        get hsva() {
            return this._hsva || s.fromRGBA(this.rgba)
        }
        equals(e) {
            return !!e && r.equals(this.rgba, e.rgba) && o.equals(this.hsla, e.hsla) && s.equals(this.hsva, e.hsva)
        }
        getRelativeLuminance() {
            return n(.2126 * a._relativeLuminanceForComponent(this.rgba.r) + .7152 * a._relativeLuminanceForComponent(this.rgba.g) + .0722 * a._relativeLuminanceForComponent(this.rgba.b), 4)
        }
        static _relativeLuminanceForComponent(e) {
            return (e /= 255) <= .03928 ? e / 12.92 : Math.pow((.055 + e) / 1.055, 2.4)
        }
        isLighter() {
            return 128 <= (299 * this.rgba.r + 587 * this.rgba.g + 114 * this.rgba.b) / 1e3
        }
        isLighterThan(e) {
            var t = this.getRelativeLuminance();
            return e.getRelativeLuminance() < t
        }
        isDarkerThan(e) {
            return this.getRelativeLuminance() < e.getRelativeLuminance()
        }
        lighten(e) {
            return new a(new o(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * e, this.hsla.a))
        }
        darken(e) {
            return new a(new o(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * e, this.hsla.a))
        }
        transparent(e) {
            var {
                r: t,
                g: i,
                b: n,
                a: o
            } = this.rgba;
            return new a(new r(t, i, n, o * e))
        }
        isTransparent() {
            return 0 === this.rgba.a
        }
        isOpaque() {
            return 1 === this.rgba.a
        }
        opposite() {
            return new a(new r(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a))
        }
        toString() {
            return this._toString || (this._toString = a.Format.CSS.format(this)), this._toString
        }
        static getLighterColor(e, t, i) {
            if (e.isLighterThan(t)) return e;
            i = i || .5;
            var n = e.getRelativeLuminance();
            t = t.getRelativeLuminance();
            return e.lighten(i = i * (t - n) / t)
        }
        static getDarkerColor(e, t, i) {
            if (e.isDarkerThan(t)) return e;
            i = i || .5;
            var n = e.getRelativeLuminance();
            t = t.getRelativeLuminance();
            return e.darken(i = i * (n - t) / n)
        }
    }

    function l(e) {
        return 2 !== (e = e.toString(16)).length ? "0" + e : e
    }

    function d(e) {
        switch (e) {
            case 48:
                return 0;
            case 49:
                return 1;
            case 50:
                return 2;
            case 51:
                return 3;
            case 52:
                return 4;
            case 53:
                return 5;
            case 54:
                return 6;
            case 55:
                return 7;
            case 56:
                return 8;
            case 57:
                return 9;
            case 97:
            case 65:
                return 10;
            case 98:
            case 66:
                return 11;
            case 99:
            case 67:
                return 12;
            case 100:
            case 68:
                return 13;
            case 101:
            case 69:
                return 14;
            case 102:
            case 70:
                return 15
        }
        return 0
    }
    var c;
    a.white = new a(new r(255, 255, 255, 1)), a.black = new a(new r(0, 0, 0, 1)), a.red = new a(new r(255, 0, 0, 1)), a.blue = new a(new r(0, 0, 255, 1)), a.cyan = new a(new r(0, 255, 255, 1)), a.lightgrey = new a(new r(211, 211, 211, 1)), a.transparent = new a(new r(0, 0, 0, 0)), (t = (t = (c = a = a || {}).Format || (c.Format = {})).CSS || (t.CSS = {})).formatRGB = function(e) {
        return 1 === e.rgba.a ? `rgb(${e.rgba.r}, ${e.rgba.g}, ${e.rgba.b})` : c.Format.CSS.formatRGBA(e)
    }, t.formatRGBA = function(e) {
        return `rgba(${e.rgba.r}, ${e.rgba.g}, ${e.rgba.b}, ${+e.rgba.a.toFixed(2)})`
    }, t.formatHSL = function(e) {
        return 1 === e.hsla.a ? `hsl(${e.hsla.h}, ${(100*e.hsla.s).toFixed(2)}%, ${(100*e.hsla.l).toFixed(2)}%)` : c.Format.CSS.formatHSLA(e)
    }, t.formatHSLA = function(e) {
        return `hsla(${e.hsla.h}, ${(100*e.hsla.s).toFixed(2)}%, ${(100*e.hsla.l).toFixed(2)}%, ${e.hsla.a.toFixed(2)})`
    }, t.formatHex = function(e) {
        return `#${l(e.rgba.r)}${l(e.rgba.g)}${l(e.rgba.b)}`
    }, t.formatHexA = function(e, t = !1) {
        return t && 1 === e.rgba.a ? c.Format.CSS.formatHex(e) : `#${l(e.rgba.r)}${l(e.rgba.g)}${l(e.rgba.b)}${l(Math.round(255*e.rgba.a))}`
    }, t.format = function(e) {
        return e.isOpaque() ? c.Format.CSS.formatHex(e) : c.Format.CSS.formatRGBA(e)
    }, t.parseHex = function(e) {
        var t = e.length;
        if (0 === t) return null;
        if (35 !== e.charCodeAt(0)) return null;
        if (7 === t) {
            var i = 16 * d(e.charCodeAt(1)) + d(e.charCodeAt(2)),
                n = 16 * d(e.charCodeAt(3)) + d(e.charCodeAt(4)),
                o = 16 * d(e.charCodeAt(5)) + d(e.charCodeAt(6));
            return new c(new r(i, n, o, 1))
        }
        if (9 === t) {
            i = 16 * d(e.charCodeAt(1)) + d(e.charCodeAt(2)), n = 16 * d(e.charCodeAt(3)) + d(e.charCodeAt(4)), o = 16 * d(e.charCodeAt(5)) + d(e.charCodeAt(6));
            var s = 16 * d(e.charCodeAt(7)) + d(e.charCodeAt(8));
            return new c(new r(i, n, o, s / 255))
        }
        if (4 !== t) return 5 !== t ? null : (a = d(e.charCodeAt(1)), l = d(e.charCodeAt(2)), t = d(e.charCodeAt(3)), e = d(e.charCodeAt(4)), new c(new r(16 * a + a, 16 * l + l, 16 * t + t, (16 * e + e) / 255)));
        s = d(e.charCodeAt(1));
        var a = d(e.charCodeAt(2)),
            l = d(e.charCodeAt(3));
        return new c(new r(16 * s + s, 16 * a + a, 16 * l + l))
    }
}, function(e, t) {
    e.exports = require("path")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return a
    })), i.d(t, "e", (function() {
        return l
    })), i.d(t, "c", (function() {
        return E
    })), i.d(t, "b", (function() {
        return N
    })), i.d(t, "d", (function() {
        return D
    })), i.d(t, "f", (function() {
        return M
    }));
    t = i(9);
    var n = i(6);
    i = i(26);
    let r = t.k || "";
    const o = new Map;
    o.set("false", !1), o.set("true", !0), o.set("isMac", t.f), o.set("isLinux", t.d), o.set("isWindows", t.i), o.set("isWeb", t.h), o.set("isMacNative", t.f && !t.h), o.set("isEdge", 0 <= r.indexOf("Edg/")), o.set("isFirefox", 0 <= r.indexOf("Firefox")), o.set("isChrome", 0 <= r.indexOf("Chrome")), o.set("isSafari", 0 <= r.indexOf("Safari"));
    const s = Object.prototype.hasOwnProperty;
    class a {
        static has(e) {
            return u.create(e)
        }
        static equals(e, t) {
            return p.create(e, t)
        }
        static regex(e, t) {
            return x.create(e, t)
        }
        static not(e) {
            return v.create(e)
        }
        static and(...e) {
            return L.create(e, null)
        }
        static or(...e) {
            return O.create(e, null, !0)
        }
        static deserialize(e, t = !1) {
            if (e) return this._deserializeOrExpression(e, t)
        }
        static _deserializeOrExpression(e, t) {
            let i = e.split("||");
            return O.create(i.map(e => this._deserializeAndExpression(e, t)), null, !0)
        }
        static _deserializeAndExpression(e, t) {
            let i = e.split("&&");
            return L.create(i.map(e => this._deserializeOne(e, t)), null)
        }
        static _deserializeOne(e, t) {
            if (0 <= (e = e.trim()).indexOf("!=")) {
                let i = e.split("!=");
                return m.create(i[0].trim(), this._deserializeValue(i[1], t))
            }
            if (0 <= e.indexOf("==")) {
                let i = e.split("==");
                return p.create(i[0].trim(), this._deserializeValue(i[1], t))
            }
            if (0 <= e.indexOf("=~")) {
                let i = e.split("=~");
                return x.create(i[0].trim(), this._deserializeRegexValue(i[1], t))
            }
            if (0 <= e.indexOf(" in ")) {
                let t = e.split(" in ");
                return g.create(t[0].trim(), t[1].trim())
            }
            if (/^[^<=>]+>=[^<=>]+$/.test(e)) {
                const t = e.split(">=");
                return w.create(t[0].trim(), t[1].trim())
            }
            if (/^[^<=>]+>[^<=>]+$/.test(e)) {
                const t = e.split(">");
                return _.create(t[0].trim(), t[1].trim())
            }
            if (/^[^<=>]+<=[^<=>]+$/.test(e)) {
                const t = e.split("<=");
                return C.create(t[0].trim(), t[1].trim())
            }
            if (/^[^<=>]+<[^<=>]+$/.test(e)) {
                const t = e.split("<");
                return y.create(t[0].trim(), t[1].trim())
            }
            return /^\!\s*/.test(e) ? v.create(e.substr(1).trim()) : u.create(e)
        }
        static _deserializeValue(e, t) {
            if ("true" === (e = e.trim())) return !0;
            if ("false" === e) return !1;
            let i = /^'([^']*)'$/.exec(e);
            return i ? i[1].trim() : e
        }
        static _deserializeRegexValue(e, t) {
            if (Object(n.C)(e)) {
                if (t) throw new Error("missing regexp-value for =~-expression");
                return console.warn("missing regexp-value for =~-expression"), null
            }
            var i = e.indexOf("/"),
                r = e.lastIndexOf("/");
            if (i === r || i < 0) {
                if (t) throw new Error(`bad regexp-value '${e}', missing /-enclosure`);
                return console.warn(`bad regexp-value '${e}', missing /-enclosure`), null
            }
            i = e.slice(i + 1, r), r = "i" === e[r + 1] ? "i" : "";
            try {
                return new RegExp(i, r)
            } catch (i) {
                if (t) throw new Error(`bad regexp-value '${e}', parse error: ${i}`);
                return console.warn(`bad regexp-value '${e}', parse error: ${i}`), null
            }
        }
    }

    function l(e, t) {
        const i = e ? e.substituteConstants() : void 0;
        return t = t ? t.substituteConstants() : void 0, !i && !t || !(!i || !t) && i.equals(t)
    }

    function d(e, t) {
        return e.cmp(t)
    }
    class c {
        constructor() {
            this.type = 0
        }
        cmp(e) {
            return this.type - e.type
        }
        equals(e) {
            return e.type === this.type
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return !1
        }
        serialize() {
            return "false"
        }
        keys() {
            return []
        }
        negate() {
            return h.INSTANCE
        }
    }
    c.INSTANCE = new c;
    class h {
        constructor() {
            this.type = 1
        }
        cmp(e) {
            return this.type - e.type
        }
        equals(e) {
            return e.type === this.type
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return !0
        }
        serialize() {
            return "true"
        }
        keys() {
            return []
        }
        negate() {
            return c.INSTANCE
        }
    }
    h.INSTANCE = new h;
    class u {
        constructor(e, t) {
            this.key = e, this.negated = t, this.type = 2
        }
        static create(e, t = null) {
            var i = o.get(e);
            return "boolean" == typeof i ? (i ? h : c).INSTANCE : new u(e, t)
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : I(this.key, e.key)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key
        }
        substituteConstants() {
            var e = o.get(this.key);
            return "boolean" == typeof e ? (e ? h : c).INSTANCE : this
        }
        evaluate(e) {
            return !!e.getValue(this.key)
        }
        serialize() {
            return this.key
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = v.create(this.key, this)), this.negated
        }
    }
    class p {
        constructor(e, t, i) {
            this.key = e, this.value = t, this.negated = i, this.type = 4
        }
        static create(e, t, i = null) {
            if ("boolean" == typeof t) return (t ? u : v).create(e, i);
            var n = o.get(e);
            return "boolean" != typeof n ? new p(e, t, i) : (t === (n ? "true" : "false") ? h : c).INSTANCE
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.value, e.key, e.value)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.value === e.value
        }
        substituteConstants() {
            var e = o.get(this.key);
            return "boolean" != typeof e ? this : (this.value === (e ? "true" : "false") ? h : c).INSTANCE
        }
        evaluate(e) {
            return e.getValue(this.key) == this.value
        }
        serialize() {
            return `${this.key} == '${this.value}'`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = m.create(this.key, this.value, this)), this.negated
        }
    }
    class g {
        constructor(e, t) {
            this.key = e, this.valueKey = t, this.type = 10, this.negated = null
        }
        static create(e, t) {
            return new g(e, t)
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.valueKey, e.key, e.valueKey)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.valueKey === e.valueKey
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            const t = e.getValue(this.valueKey);
            return e = e.getValue(this.key), Array.isArray(t) ? 0 <= t.indexOf(e) : "string" == typeof e && "object" == typeof t && null !== t && s.call(t, e)
        }
        serialize() {
            return `${this.key} in '${this.valueKey}'`
        }
        keys() {
            return [this.key, this.valueKey]
        }
        negate() {
            return this.negated || (this.negated = f.create(this)), this.negated
        }
    }
    class f {
        constructor(e) {
            this._actual = e, this.type = 11
        }
        static create(e) {
            return new f(e)
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : this._actual.cmp(e._actual)
        }
        equals(e) {
            return e.type === this.type && this._actual.equals(e._actual)
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return !this._actual.evaluate(e)
        }
        serialize() {
            throw new Error("Method not implemented.")
        }
        keys() {
            return this._actual.keys()
        }
        negate() {
            return this._actual
        }
    }
    class m {
        constructor(e, t, i) {
            this.key = e, this.value = t, this.negated = i, this.type = 5
        }
        static create(e, t, i = null) {
            if ("boolean" == typeof t) return (t ? v : u).create(e, i);
            var n = o.get(e);
            return "boolean" != typeof n ? new m(e, t, i) : (t === (n ? "true" : "false") ? c : h).INSTANCE
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.value, e.key, e.value)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.value === e.value
        }
        substituteConstants() {
            var e = o.get(this.key);
            return "boolean" != typeof e ? this : (this.value === (e ? "true" : "false") ? c : h).INSTANCE
        }
        evaluate(e) {
            return e.getValue(this.key) != this.value
        }
        serialize() {
            return `${this.key} != '${this.value}'`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = p.create(this.key, this.value, this)), this.negated
        }
    }
    class v {
        constructor(e, t) {
            this.key = e, this.negated = t, this.type = 3
        }
        static create(e, t = null) {
            var i = o.get(e);
            return "boolean" == typeof i ? (i ? c : h).INSTANCE : new v(e, t)
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : I(this.key, e.key)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key
        }
        substituteConstants() {
            var e = o.get(this.key);
            return "boolean" == typeof e ? (e ? c : h).INSTANCE : this
        }
        evaluate(e) {
            return !e.getValue(this.key)
        }
        serialize() {
            return "!" + this.key
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = u.create(this.key, this)), this.negated
        }
    }

    function b(e, t) {
        var i;
        return "string" == typeof e && (i = parseFloat(e), isNaN(i) || (e = i)), "string" == typeof e || "number" == typeof e ? t(e) : c.INSTANCE
    }
    class _ {
        constructor(e, t, i) {
            this.key = e, this.value = t, this.negated = i, this.type = 12
        }
        static create(e, t, i = null) {
            return b(t, t => new _(e, t, i))
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.value, e.key, e.value)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.value === e.value
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return "string" != typeof this.value && parseFloat(e.getValue(this.key)) > this.value
        }
        serialize() {
            return `${this.key} > ${this.value}`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = C.create(this.key, this.value, this)), this.negated
        }
    }
    class w {
        constructor(e, t, i) {
            this.key = e, this.value = t, this.negated = i, this.type = 13
        }
        static create(e, t, i = null) {
            return b(t, t => new w(e, t, i))
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.value, e.key, e.value)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.value === e.value
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return "string" != typeof this.value && parseFloat(e.getValue(this.key)) >= this.value
        }
        serialize() {
            return `${this.key} >= ${this.value}`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = y.create(this.key, this.value, this)), this.negated
        }
    }
    class y {
        constructor(e, t, i) {
            this.key = e, this.value = t, this.negated = i, this.type = 14
        }
        static create(e, t, i = null) {
            return b(t, t => new y(e, t, i))
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.value, e.key, e.value)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.value === e.value
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return "string" != typeof this.value && parseFloat(e.getValue(this.key)) < this.value
        }
        serialize() {
            return `${this.key} < ${this.value}`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = w.create(this.key, this.value, this)), this.negated
        }
    }
    class C {
        constructor(e, t, i) {
            this.key = e, this.value = t, this.negated = i, this.type = 15
        }
        static create(e, t, i = null) {
            return b(t, t => new C(e, t, i))
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : T(this.key, this.value, e.key, e.value)
        }
        equals(e) {
            return e.type === this.type && this.key === e.key && this.value === e.value
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return "string" != typeof this.value && parseFloat(e.getValue(this.key)) <= this.value
        }
        serialize() {
            return `${this.key} <= ${this.value}`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = _.create(this.key, this.value, this)), this.negated
        }
    }
    class x {
        constructor(e, t) {
            this.key = e, this.regexp = t, this.type = 7, this.negated = null
        }
        static create(e, t) {
            return new x(e, t)
        }
        cmp(e) {
            if (e.type !== this.type) return this.type - e.type;
            if (this.key < e.key) return -1;
            if (this.key > e.key) return 1;
            var t = this.regexp ? this.regexp.source : "";
            return t < (e = e.regexp ? e.regexp.source : "") ? -1 : e < t ? 1 : 0
        }
        equals(e) {
            if (e.type !== this.type) return !1;
            var t = this.regexp ? this.regexp.source : "",
                i = e.regexp ? e.regexp.source : "";
            return this.key === e.key && t === i
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return e = e.getValue(this.key), !!this.regexp && this.regexp.test(e)
        }
        serialize() {
            var e = this.regexp ? `/${this.regexp.source}/${this.regexp.ignoreCase?"i":""}` : "/invalid/";
            return `${this.key} =~ ${e}`
        }
        keys() {
            return [this.key]
        }
        negate() {
            return this.negated || (this.negated = S.create(this)), this.negated
        }
    }
    class S {
        constructor(e) {
            this._actual = e, this.type = 8
        }
        static create(e) {
            return new S(e)
        }
        cmp(e) {
            return e.type !== this.type ? this.type - e.type : this._actual.cmp(e._actual)
        }
        equals(e) {
            return e.type === this.type && this._actual.equals(e._actual)
        }
        substituteConstants() {
            return this
        }
        evaluate(e) {
            return !this._actual.evaluate(e)
        }
        serialize() {
            throw new Error("Method not implemented.")
        }
        keys() {
            return this._actual.keys()
        }
        negate() {
            return this._actual
        }
    }

    function k(e) {
        let t = null;
        for (let n = 0, r = e.length; n < r; n++) {
            var i = e[n].substituteConstants();
            if (e[n] !== i && null === t) {
                t = [];
                for (let i = 0; i < n; i++) t[i] = e[i]
            }
            null !== t && (t[n] = i)
        }
        return null === t ? e : t
    }
    class L {
        constructor(e, t) {
            this.expr = e, this.negated = t, this.type = 6
        }
        static create(e, t) {
            return L._normalizeArr(e, t)
        }
        cmp(e) {
            if (e.type !== this.type) return this.type - e.type;
            if (this.expr.length < e.expr.length) return -1;
            if (this.expr.length > e.expr.length) return 1;
            for (let i = 0, n = this.expr.length; i < n; i++) {
                var t = d(this.expr[i], e.expr[i]);
                if (0 !== t) return t
            }
            return 0
        }
        equals(e) {
            if (e.type !== this.type) return !1;
            if (this.expr.length !== e.expr.length) return !1;
            for (let t = 0, i = this.expr.length; t < i; t++)
                if (!this.expr[t].equals(e.expr[t])) return !1;
            return !0
        }
        substituteConstants() {
            var e = k(this.expr);
            return e === this.expr ? this : L.create(e, this.negated)
        }
        evaluate(e) {
            for (let t = 0, i = this.expr.length; t < i; t++)
                if (!this.expr[t].evaluate(e)) return !1;
            return !0
        }
        static _normalizeArr(e, t) {
            const i = [];
            let n = !1;
            for (const t of e)
                if (t)
                    if (1 !== t.type) {
                        if (0 === t.type) return c.INSTANCE;
                        6 !== t.type ? i.push(t) : i.push(...t.expr)
                    } else n = !0;
            if (0 === i.length && n) return h.INSTANCE;
            if (0 !== i.length) {
                if (1 === i.length) return i[0];
                i.sort(d);
                for (let e = 1; e < i.length; e++) i[e - 1].equals(i[e]) && (i.splice(e, 1), e--);
                if (1 === i.length) return i[0];
                for (; 1 < i.length;) {
                    const e = i[i.length - 1];
                    if (9 !== e.type) break;
                    i.pop();
                    const t = i.pop();
                    var r = 0 === i.length;
                    (r = O.create(e.expr.map(e => L.create([e, t], null)), null, r)) && (i.push(r), i.sort(d))
                }
                return 1 === i.length ? i[0] : new L(i, t)
            }
        }
        serialize() {
            return this.expr.map(e => e.serialize()).join(" && ")
        }
        keys() {
            const e = [];
            for (var t of this.expr) e.push(...t.keys());
            return e
        }
        negate() {
            if (!this.negated) {
                const t = [];
                for (var e of this.expr) t.push(e.negate());
                this.negated = O.create(t, this, !0)
            }
            return this.negated
        }
    }
    class O {
        constructor(e, t) {
            this.expr = e, this.negated = t, this.type = 9
        }
        static create(e, t, i) {
            return O._normalizeArr(e, t, i)
        }
        cmp(e) {
            if (e.type !== this.type) return this.type - e.type;
            if (this.expr.length < e.expr.length) return -1;
            if (this.expr.length > e.expr.length) return 1;
            for (let i = 0, n = this.expr.length; i < n; i++) {
                var t = d(this.expr[i], e.expr[i]);
                if (0 !== t) return t
            }
            return 0
        }
        equals(e) {
            if (e.type !== this.type) return !1;
            if (this.expr.length !== e.expr.length) return !1;
            for (let t = 0, i = this.expr.length; t < i; t++)
                if (!this.expr[t].equals(e.expr[t])) return !1;
            return !0
        }
        substituteConstants() {
            var e = k(this.expr);
            return e === this.expr ? this : O.create(e, this.negated, !1)
        }
        evaluate(e) {
            for (let t = 0, i = this.expr.length; t < i; t++)
                if (this.expr[t].evaluate(e)) return !0;
            return !1
        }
        static _normalizeArr(e, t, i) {
            let n = [],
                r = !1;
            if (e) {
                for (let t = 0, i = e.length; t < i; t++) {
                    var o = e[t];
                    if (o)
                        if (0 !== o.type) {
                            if (1 === o.type) return h.INSTANCE;
                            9 !== o.type ? n.push(o) : n = n.concat(o.expr)
                        } else r = !0
                }
                if (0 === n.length && r) return c.INSTANCE;
                n.sort(d)
            }
            if (0 !== n.length) {
                if (1 === n.length) return n[0];
                for (let e = 1; e < n.length; e++) n[e - 1].equals(n[e]) && (n.splice(e, 1), e--);
                if (1 === n.length) return n[0];
                if (i) {
                    for (let e = 0; e < n.length; e++)
                        for (let t = e + 1; t < n.length; t++) M(n[e], n[t]) && (n.splice(t, 1), t--);
                    if (1 === n.length) return n[0]
                }
                return new O(n, t)
            }
        }
        serialize() {
            return this.expr.map(e => e.serialize()).join(" || ")
        }
        keys() {
            const e = [];
            for (var t of this.expr) e.push(...t.keys());
            return e
        }
        negate() {
            if (!this.negated) {
                let n = [];
                for (var e of this.expr) n.push(e.negate());
                for (; 1 < n.length;) {
                    var t = n.shift(),
                        i = n.shift();
                    const e = [];
                    for (const n of P(t))
                        for (const t of P(i)) e.push(L.create([n, t], null));
                    t = 0 === n.length, n.unshift(O.create(e, null, t))
                }
                this.negated = n[0]
            }
            return this.negated
        }
    }
    class E extends u {
        constructor(e, t, i) {
            super(e, null), this._defaultValue = t, "object" == typeof i ? E._info.push(Object.assign(Object.assign({}, i), {
                key: e
            })) : !0 !== i && E._info.push({
                key: e,
                description: i,
                type: null != t ? typeof t : void 0
            })
        }
        static all() {
            return E._info.values()
        }
        bindTo(e) {
            return e.createKey(this.key, this._defaultValue)
        }
        getValue(e) {
            return e.getContextKeyValue(this.key)
        }
        toNegated() {
            return this.negate()
        }
        isEqualTo(e) {
            return p.create(this.key, e)
        }
    }
    E._info = [];
    const N = Object(i.c)("contextKeyService"),
        D = "setContext";

    function I(e, t) {
        return e < t ? -1 : t < e ? 1 : 0
    }

    function T(e, t, i, n) {
        return e < i ? -1 : i < e ? 1 : t < n ? -1 : n < t ? 1 : 0
    }

    function M(e, t) {
        if (6 === t.type && 9 !== e.type && 6 !== e.type)
            for (const i of t.expr)
                if (e.equals(i)) return !0;
        const i = P(e.negate()).concat(P(t));
        i.sort(d);
        for (let e = 0; e < i.length; e++) {
            const t = i[e].negate();
            for (let r = e + 1; r < i.length; r++) {
                var n = i[r];
                if (t.equals(n)) return !0
            }
        }
        return !1
    }

    function P(e) {
        return 9 === e.type ? e.expr : [e]
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return p
    })), i.d(t, "f", (function() {
        return g
    })), i.d(t, "c", (function() {
        return f
    })), i.d(t, "d", (function() {
        return b
    })), i.d(t, "e", (function() {
        return _
    })), i.d(t, "g", (function() {
        return w
    }));
    var n = i(31),
        r = i(8),
        o = i(5),
        s = i(36),
        a = i(76),
        l = i(57),
        d = i(144);
    i.d(t, "a", (function() {
        return d.a
    }));
    const c = () => !0,
        h = () => !1,
        u = e => " " === e || "\t" === e;
    class p {
        constructor(e, t, i) {
            this._cursorMove配置Brand = void 0, this._languageId = e;
            const n = i.options;
            if (i = n.get(129), this.readOnly = n.get(80), this.tabSize = t.tabSize, this.indentSize = t.indentSize, this.insertSpaces = t.insertSpaces, this.stickyTabStops = n.get(103), this.lineHeight = n.get(58), this.pageSize = Math.max(1, Math.floor(i.height / this.lineHeight) - 2), this.useTabStops = n.get(114), this.wordSeparators = n.get(115), this.emptySelectionClipboard = n.get(32), this.copyWithSyntaxHighlighting = n.get(21), this.multiCursorMergeOverlapping = n.get(68), this.multiCursorPaste = n.get(70), this.autoClosingBrackets = n.get(5), this.autoClosingQuotes = n.get(8), this.autoClosingDelete = n.get(6), this.autoClosingOvertype = n.get(7), this.autoSurround = n.get(11), this.autoIndent = n.get(9), this.surroundingPairs = {}, this._electricChars = null, this.shouldAutoCloseBefore = {
                    quote: p._getShouldAutoClose(e, this.autoClosingQuotes),
                    bracket: p._getShouldAutoClose(e, this.autoClosingBrackets)
                }, this.autoClosingPairs = l.b.getAutoClosingPairs(e), e = p._getSurroundingPairs(e))
                for (const t of e) this.surroundingPairs[t.open] = t.close
        }
        static shouldRecreate(e) {
            return e.hasChanged(129) || e.hasChanged(115) || e.hasChanged(32) || e.hasChanged(68) || e.hasChanged(70) || e.hasChanged(5) || e.hasChanged(8) || e.hasChanged(6) || e.hasChanged(7) || e.hasChanged(11) || e.hasChanged(114) || e.hasChanged(58) || e.hasChanged(80)
        }
        get electricChars() {
            if (!this._electricChars) {
                this._electricChars = {};
                var e = p._getElectricCharacters(this._languageId);
                if (e)
                    for (const t of e) this._electricChars[t] = !0
            }
            return this._electricChars
        }
        normalizeIndentation(e) {
            return a.c.normalizeIndentation(e, this.indentSize, this.insertSpaces)
        }
        static _getElectricCharacters(e) {
            try {
                return l.b.getElectricCharacters(e)
            } catch (e) {
                return Object(n.f)(e), null
            }
        }
        static _getShouldAutoClose(e, t) {
            switch (t) {
                case "beforeWhitespace":
                    return u;
                case "languageDefined":
                    return p._getLanguageDefinedShouldAutoClose(e);
                case "always":
                    return c;
                case "never":
                    return h
            }
        }
        static _getLanguageDefinedShouldAutoClose(e) {
            try {
                const t = l.b.getAutoCloseBeforeSet(e);
                return e => -1 !== t.indexOf(e)
            } catch (e) {
                return Object(n.f)(e), h
            }
        }
        static _getSurroundingPairs(e) {
            try {
                return l.b.getSurroundingPairs(e)
            } catch (e) {
                return Object(n.f)(e), null
            }
        }
    }
    class g {
        constructor(e, t, i, n) {
            this._singleCursorStateBrand = void 0, this.selectionStart = e, this.selectionStartLeftoverVisibleColumns = t, this.position = i, this.leftoverVisibleColumns = n, this.selection = g._computeSelection(this.selectionStart, this.position)
        }
        equals(e) {
            return this.selectionStartLeftoverVisibleColumns === e.selectionStartLeftoverVisibleColumns && this.leftoverVisibleColumns === e.leftoverVisibleColumns && this.position.equals(e.position) && this.selectionStart.equalsRange(e.selectionStart)
        }
        hasSelection() {
            return !this.selection.isEmpty() || !this.selectionStart.isEmpty()
        }
        move(e, t, i, n) {
            return e ? new g(this.selectionStart, this.selectionStartLeftoverVisibleColumns, new r.a(t, i), n) : new g(new o.a(t, i, t, i), n, new r.a(t, i), n)
        }
        static _computeSelection(e, t) {
            let i, n, r, o;
            return n = !e.isEmpty() && t.isBeforeOrEqual(e.getStartPosition()) ? (i = e.endLineNumber, e.endColumn) : (i = e.startLineNumber, e.startColumn), r = t.lineNumber, o = t.column, new s.a(i, n, r, o)
        }
    }
    class f {
        constructor(e, t, i, n) {
            this._cursorContextBrand = void 0, this.model = e, this.viewModel = t, this.coordinatesConverter = i, this.cursorConfig = n
        }
    }
    class m {
        constructor(e) {
            this.modelState = e, this.viewState = null
        }
    }
    class v {
        constructor(e) {
            this.modelState = null, this.viewState = e
        }
    }
    class b {
        constructor(e, t) {
            this._cursorStateBrand = void 0, this.modelState = e, this.viewState = t
        }
        static fromModelState(e) {
            return new m(e)
        }
        static fromViewState(e) {
            return new v(e)
        }
        static fromModelSelection(e) {
            var t = e.selectionStartLineNumber,
                i = e.selectionStartColumn,
                n = e.positionLineNumber;
            e = e.positionColumn, e = new g(new o.a(t, i, t, i), 0, new r.a(n, e), 0);
            return b.fromModelState(e)
        }
        static fromModelSelections(e) {
            let t = [];
            for (let i = 0, n = e.length; i < n; i++) t[i] = this.fromModelSelection(e[i]);
            return t
        }
        equals(e) {
            return this.viewState.equals(e.viewState) && this.modelState.equals(e.modelState)
        }
    }
    class _ {
        constructor(e, t, i) {
            this._editOperationResultBrand = void 0, this.type = e, this.commands = t, this.shouldPushStackElementBefore = i.shouldPushStackElementBefore, this.shouldPushStackElementAfter = i.shouldPushStackElementAfter
        }
    }

    function w(e) {
        return "'" === e || '"' === e || "`" === e
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "z", (function() {
        return h
    })), i.d(t, "m", (function() {
        return u
    })), i.d(t, "v", (function() {
        return p
    })), i.d(t, "w", (function() {
        return g
    })), i.d(t, "d", (function() {
        return f
    })), i.d(t, "r", (function() {
        return m
    })), i.d(t, "y", (function() {
        return v
    })), i.d(t, "o", (function() {
        return b
    })), i.d(t, "l", (function() {
        return _
    })), i.d(t, "h", (function() {
        return w
    })), i.d(t, "t", (function() {
        return y
    })), i.d(t, "f", (function() {
        return C
    })), i.d(t, "e", (function() {
        return x
    })), i.d(t, "p", (function() {
        return S
    })), i.d(t, "B", (function() {
        return k
    })), i.d(t, "b", (function() {
        return L
    })), i.d(t, "q", (function() {
        return O
    })), i.d(t, "a", (function() {
        return E
    })), i.d(t, "g", (function() {
        return N
    })), i.d(t, "i", (function() {
        return D
    })), i.d(t, "u", (function() {
        return I
    })), i.d(t, "s", (function() {
        return T
    })), i.d(t, "c", (function() {
        return M
    })), i.d(t, "x", (function() {
        return P
    })), i.d(t, "n", (function() {
        return A
    })), i.d(t, "k", (function() {
        return R
    })), i.d(t, "j", (function() {
        return F
    })), i.d(t, "A", (function() {
        return j
    })), i(39), i(5);
    var n = i(2),
        r = (i(126), i(4)),
        o = (i(73), i(100), i(171)),
        s = i(62),
        a = i(78);

    function l(e) {
        return "string" != typeof e && (Array.isArray(e) ? e.every(l) : !!e.exclusive)
    }
    class d {
        constructor() {
            this._clock = 0, this._entries = [], this._onDidChange = new n.b
        }
        get onDidChange() {
            return this._onDidChange.event
        }
        register(e, t) {
            let i = {
                selector: e,
                provider: t,
                _score: -1,
                _time: this._clock++
            };
            return this._entries.push(i), this._lastCandidate = void 0, this._onDidChange.fire(this._entries.length), Object(r.i)(() => {
                var e;
                !i || 0 <= (e = this._entries.indexOf(i)) && (this._entries.splice(e, 1), this._lastCandidate = void 0, this._onDidChange.fire(this._entries.length), i = void 0)
            })
        }
        has(e) {
            return 0 < this.all(e).length
        }
        all(e) {
            if (!e) return [];
            this._updateScores(e);
            const t = [];
            for (var i of this._entries) 0 < i._score && t.push(i.provider);
            return t
        }
        ordered(e) {
            const t = [];
            return this._orderedForEach(e, e => t.push(e.provider)), t
        }
        orderedGroups(e) {
            const t = [];
            let i, n;
            return this._orderedForEach(e, e => {
                i && n === e._score ? i.push(e.provider) : (n = e._score, i = [e.provider], t.push(i))
            }), t
        }
        _orderedForEach(e, t) {
            if (e) {
                this._updateScores(e);
                for (const e of this._entries) 0 < e._score && t(e)
            }
        }
        _updateScores(e) {
            var t = {
                uri: e.uri.toString(),
                language: e.getLanguageId()
            };
            if (!this._lastCandidate || this._lastCandidate.language !== t.language || this._lastCandidate.uri !== t.uri) {
                for (var i of (this._lastCandidate = t, this._entries))
                    if (i._score = function e(t, i, n, r) {
                            if (Array.isArray(t)) {
                                let o = 0;
                                for (const s of t) {
                                    var a = e(s, i, n, r);
                                    if (10 === a) return a;
                                    a > o && (o = a)
                                }
                                return o
                            }
                            if ("string" == typeof t) return r ? "*" === t ? 5 : t === n ? 10 : 0 : 0;
                            if (t) {
                                var {
                                    language: l,
                                    pattern: d,
                                    scheme: c,
                                    hasAccessToAllModels: t
                                } = t;
                                if (!r && !t) return 0;
                                let e = 0;
                                if (c)
                                    if (c === i.scheme) e = 10;
                                    else {
                                        if ("*" !== c) return 0;
                                        e = 5
                                    } if (l)
                                    if (l === n) e = 10;
                                    else {
                                        if ("*" !== l) return 0;
                                        e = Math.max(e, 5)
                                    } if (d) {
                                    let t;
                                    if (t = "string" == typeof d ? d : Object.assign(Object.assign({}, d), {
                                            base: Object(s.d)(d.base)
                                        }), t !== i.fsPath && !Object(o.a)(t, i.fsPath)) return 0;
                                    e = 10
                                }
                                return e
                            }
                            return 0
                        }(i.selector, e.uri, e.getLanguageId(), Object(a.b)(e)), l(i.selector) && 0 < i._score) {
                        for (var n of this._entries) n._score = 0;
                        i._score = 1e3;
                        break
                    } this._entries.sort(d._compareByScoreAndTime)
            }
        }
        static _compareByScoreAndTime(e, t) {
            return e._score < t._score ? 1 : e._score > t._score ? -1 : e._time < t._time ? 1 : e._time > t._time ? -1 : 0
        }
    }
    new WeakMap;
    var c = i(33);
    class h {
        static getLanguageId(e) {
            return (255 & e) >>> 0
        }
        static getTokenType(e) {
            return (1792 & e) >>> 8
        }
        static getFontStyle(e) {
            return (14336 & e) >>> 11
        }
        static getForeground(e) {
            return (8372224 & e) >>> 14
        }
        static getBackground(e) {
            return (4286578688 & e) >>> 23
        }
        static getClassNameFromMetadata(e) {
            let t = "mtk" + this.getForeground(e);
            return 1 & (e = this.getFontStyle(e)) && (t += " mtki"), 2 & e && (t += " mtkb"), 4 & e && (t += " mtku"), t
        }
        static getInlineStyleFromMetadata(e, t) {
            var i = this.getForeground(e);
            e = this.getFontStyle(e);
            let n = `color: ${t[i]};`;
            return 1 & e && (n += "font-style: italic;"), 2 & e && (n += "font-weight: bold;"), 4 & e && (n += "text-decoration: underline;"), n
        }
    }(function() {
        let e = Object.create(null);
        e[0] = "symbol-method", e[1] = "symbol-function", e[2] = "symbol-constructor", e[3] = "symbol-field", e[4] = "symbol-variable", e[5] = "symbol-class", e[6] = "symbol-struct", e[7] = "symbol-interface", e[8] = "symbol-module", e[9] = "symbol-property", e[10] = "symbol-event", e[11] = "symbol-operator", e[12] = "symbol-unit", e[13] = "symbol-value", e[14] = "symbol-constant", e[15] = "symbol-enum", e[16] = "symbol-enum-member", e[17] = "symbol-keyword", e[27] = "symbol-snippet", e[18] = "symbol-text", e[19] = "symbol-color", e[20] = "symbol-file", e[21] = "symbol-reference", e[22] = "symbol-customcolor", e[23] = "symbol-folder", e[24] = "symbol-type-parameter", e[25] = "account", e[26] = "issues"
    })(),
    function() {
        let e = Object.create(null);
        e.method = 0, e.function = 1, e.constructor = 2, e.field = 3, e.variable = 4, e.class = 5, e.struct = 6, e.interface = 7, e.module = 8, e.property = 9, e.event = 10, e.operator = 11, e.unit = 12, e.value = 13, e.constant = 14, e.enum = 15, e["enum-member"] = 16, e.enumMember = 16, e.keyword = 17, e.snippet = 27, e.text = 18, e.color = 19, e.file = 20, e.reference = 21, e.customcolor = 22, e.folder = 23, e["type-parameter"] = 24, e.typeParameter = 24, e.account = 25, e.issue = 26
    }(), (i = {})[i.Automatic = 0] = "Automatic", i[i.Explicit = 1] = "Explicit", (i = {})[i.Invoke = 1] = "Invoke", i[i.TriggerCharacter = 2] = "TriggerCharacter", i[i.ContentChange = 3] = "ContentChange", (i = {})[i.Text = 0] = "文本", i[i.Read = 1] = "Read", i[i.Write = 2] = "Write",
        function(e) {
            const t = new Map;
            t.set("file", 0), t.set("module", 1), t.set("namespace", 2), t.set("package", 3), t.set("class", 4), t.set("method", 5), t.set("property", 6), t.set("field", 7), t.set("constructor", 8), t.set("enum", 9), t.set("interface", 10), t.set("function", 11), t.set("variable", 12), t.set("constant", 13), t.set("string", 14), t.set("number", 15), t.set("boolean", 16), t.set("array", 17), t.set("object", 18), t.set("key", 19), t.set("null", 20), t.set("enum-member", 21), t.set("struct", 22), t.set("event", 23), t.set("operator", 24), t.set("type-parameter", 25);
            const i = new Map;
            i.set(0, "file"), i.set(1, "module"), i.set(2, "namespace"), i.set(3, "package"), i.set(4, "class"), i.set(5, "method"), i.set(6, "property"), i.set(7, "field"), i.set(8, "constructor"), i.set(9, "enum"), i.set(10, "interface"), i.set(11, "function"), i.set(12, "variable"), i.set(13, "constant"), i.set(14, "string"), i.set(15, "number"), i.set(16, "boolean"), i.set(17, "array"), i.set(18, "object"), i.set(19, "key"), i.set(20, "null"), i.set(21, "enum-member"), i.set(22, "struct"), i.set(23, "event"), i.set(24, "operator"), i.set(25, "type-parameter"), e.fromString = function(e) {
                return t.get(e)
            }, e.toString = function(e) {
                return i.get(e)
            }, e.toCssClassName = function(e, t) {
                var n = i.get(e);
                let r = n && c.d.get("symbol-" + n);
                return r || (console.info("No codicon found for SymbolKind " + e), r = c.b.symbolProperty), `${t?"inline":"block"} ${r.classNames}`
            }
        }({});
    class u {
        constructor(e) {
            this.value = e
        }
    }
    u.Comment = new u("comment"), u.Imports = new u("imports"), u.Region = new u("region"), (i = {})[i.Other = 0] = "Other", i[i.Type = 1] = "类型", i[i.Parameter = 2] = "Parameter";
    const p = new d,
        g = new d,
        f = new d,
        m = new d,
        v = new d,
        b = new d,
        _ = new d,
        w = new d,
        y = new d,
        C = new d,
        x = new d,
        S = new d,
        k = new d,
        L = new d,
        O = new d,
        E = new d,
        N = new d,
        D = new d,
        I = new d,
        T = new d,
        M = new d,
        P = new d,
        A = new d,
        R = new d,
        F = new d,
        j = new class {
            constructor() {
                this._map = new Map, this._promises = new Map, this._onDidChange = new n.b, this.onDidChange = this._onDidChange.event, this._colorMap = null
            }
            fire(e) {
                this._onDidChange.fire({
                    changedLanguages: e,
                    changedColorMap: !1
                })
            }
            register(e, t) {
                return this._map.set(e, t), this.fire([e]), Object(r.i)(() => {
                    this._map.get(e) === t && (this._map.delete(e), this.fire([e]))
                })
            }
            registerPromise(e, t) {
                let i = null,
                    n = !1;
                return this._promises.set(e, t.then(t => {
                    this._promises.delete(e), !n && t && (i = this.register(e, t))
                })), Object(r.i)(() => {
                    n = !0, i && i.dispose()
                })
            }
            getPromise(e) {
                var t = this.get(e);
                if (t) return Promise.resolve(t);
                const i = this._promises.get(e);
                return i ? i.then(t => this.get(e)) : null
            }
            get(e) {
                return this._map.get(e) || null
            }
            setColorMap(e) {
                this._colorMap = e, this._onDidChange.fire({
                    changedLanguages: Array.from(this._map.keys()),
                    changedColorMap: !0
                })
            }
            getColorMap() {
                return this._colorMap
            }
            getDefaultBackground() {
                return this._colorMap && 2 < this._colorMap.length ? this._colorMap[2] : null
            }
        }
}, function(e, t) {
    e.exports = require("fs")
}, function(e, t, i) {
    "use strict";

    function n(e) {
        return Array.isArray(e)
    }

    function r(e) {
        return "string" == typeof e
    }

    function o(e) {
        return !("object" != typeof e || null === e || Array.isArray(e) || e instanceof RegExp || e instanceof Date)
    }

    function s(e) {
        return "number" == typeof e && !isNaN(e)
    }

    function a(e) {
        return !0 === e || !1 === e
    }

    function l(e) {
        return void 0 === e
    }

    function d(e) {
        return !c(e)
    }

    function c(e) {
        return l(e) || null === e
    }

    function h(e, t) {
        if (!e) throw new Error(t ? `Unexpected type, expected '${t}'` : "Unexpected type")
    }

    function u(e) {
        return "function" == typeof e
    }

    function p(e, t) {
        var i = Math.min(e.length, t.length);
        for (let n = 0; n < i; n++) ! function(e, t) {
            if (r(t)) {
                if (typeof e !== t) throw new Error("argument does not match constraint: typeof " + t)
            } else if (u(t)) {
                try {
                    if (e instanceof t) return
                } catch (e) {}
                if ((c(e) || e.constructor !== t) && (1 !== t.length || !0 !== t.call(void 0, e))) throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")
            }
        }(e[n], t[n])
    }

    function g(e) {
        const t = [];
        for (const i of function(e) {
                let t = [],
                    i = Object.getPrototypeOf(e);
                for (; Object.prototype !== i;) t = t.concat(Object.getOwnPropertyNames(i)), i = Object.getPrototypeOf(i);
                return t
            }(e)) "function" == typeof e[i] && t.push(i);
        return t
    }

    function f(e, t) {
        let i = {};
        for (const n of e) i[n] = (e => function() {
            var i = Array.prototype.slice.call(arguments, 0);
            return t(e, i)
        })(n);
        return i
    }

    function m(e) {
        return null === e ? void 0 : e
    }

    function v(e, t = "Unreachable") {
        throw new Error(t)
    }
    i.d(t, "e", (function() {
        return n
    })), i.d(t, "k", (function() {
        return r
    })), i.d(t, "j", (function() {
        return o
    })), i.d(t, "i", (function() {
        return s
    })), i.d(t, "f", (function() {
        return a
    })), i.d(t, "l", (function() {
        return l
    })), i.d(t, "g", (function() {
        return d
    })), i.d(t, "m", (function() {
        return c
    })), i.d(t, "b", (function() {
        return h
    })), i.d(t, "h", (function() {
        return u
    })), i.d(t, "n", (function() {
        return p
    })), i.d(t, "d", (function() {
        return g
    })), i.d(t, "c", (function() {
        return f
    })), i.d(t, "o", (function() {
        return m
    })), i.d(t, "a", (function() {
        return v
    }))
}, function(e, t) {
    e.exports = function(e, t, i) {
        return t in e ? Object.defineProperty(e, t, {
            value: i,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = i, e
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    "use strict";
    i.d(t, "e", (function() {
        return n
    })), i.d(t, "d", (function() {
        return r
    })), i.d(t, "c", (function() {
        return a
    })), i.d(t, "b", (function() {
        return l
    })), i.d(t, "a", (function() {
        return d
    })), i.d(t, "g", (function() {
        return h
    })), i.d(t, "f", (function() {
        return u
    })), i.d(t, "j", (function() {
        return p
    })), i.d(t, "i", (function() {
        return g
    })), i.d(t, "h", (function() {
        return f
    }));
    var n = Symbol(),
        r = Symbol(),
        o = Symbol(),
        s = Symbol(),
        a = Symbol(),
        l = Symbol(),
        d = Symbol(),
        c = Symbol(),
        h = function() {
            if ("win32" === process.platform) {
                if ("x64" === process.arch) return n;
                if ("ia32" === process.arch) return r;
                if ("arm" === process.arch) return o;
                if ("arm64" === process.arch) return s
            }
            if ("darwin" === process.platform) {
                if ("x64" === process.arch) return a;
                if ("arm64" === process.arch) return l
            }
            return "linux" === process.platform && "x64" === process.arch ? d : c
        },
        u = function() {
            var e = h();
            return [r, o, s].includes(e) ? r : e
        },
        p = function() {
            return [o, s, r, n].includes(h())
        },
        g = function() {
            return [a, l].includes(h())
        },
        f = function() {
            return [d].includes(h())
        }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return p
    })), i.d(t, "c", (function() {
        return m
    })), i.d(t, "b", (function() {
        return v
    })), i.d(t, "e", (function() {
        return b
    })), i.d(t, "j", (function() {
        return _
    })), i.d(t, "i", (function() {
        return w
    })), i.d(t, "l", (function() {
        return y
    })), i.d(t, "k", (function() {
        return C
    })), i.d(t, "d", (function() {
        return n
    })), i.d(t, "h", (function() {
        return k
    })), i.d(t, "f", (function() {
        return L
    })), i.d(t, "g", (function() {
        return O
    }));
    var n, r = i(0),
        o = (i(39), i(67)),
        s = (i(8), i(78), i(114), i(63)),
        a = i(46),
        l = i(13),
        d = i(128),
        c = (t = i(58), i(139)),
        h = i(17),
        u = i(95);
    class p {
        constructor(e) {
            this.id = e.id, this.precondition = e.precondition, this._kbOpts = e.kbOpts, this._menuOpts = e.menuOpts, this._description = e.description
        }
        register() {
            if (Array.isArray(this._menuOpts) ? this._menuOpts.forEach(this._registerMenuItem, this) : this._menuOpts && this._registerMenuItem(this._menuOpts), this._kbOpts)
                for (const t of Array.isArray(this._kbOpts) ? this._kbOpts : [this._kbOpts]) {
                    let i = t.kbExpr;
                    this.precondition && (i = i ? l.a.and(i, this.precondition) : this.precondition);
                    var e = {
                        id: this.id,
                        weight: t.weight,
                        args: t.args,
                        when: i,
                        primary: t.primary,
                        secondary: t.secondary,
                        win: t.win,
                        linux: t.linux,
                        mac: t.mac
                    };
                    d.a.registerKeybindingRule(e)
                }
            a.a.registerCommand({
                id: this.id,
                handler: (e, t) => this.runCommand(e, t),
                description: this._description
            })
        }
        _registerMenuItem(e) {
            s.d.appendMenuItem(e.menuId, {
                group: e.group,
                command: {
                    id: this.id,
                    title: e.title,
                    icon: e.icon,
                    precondition: this.precondition
                },
                when: e.when,
                order: e.order
            })
        }
    }
    class g extends p {
        constructor() {
            super(...arguments), this._implementations = []
        }
        addImplementation(e, t, i) {
            return this._implementations.push({
                priority: e,
                name: t,
                implementation: i
            }), this._implementations.sort((e, t) => t.priority - e.priority), {
                dispose: () => {
                    for (let e = 0; e < this._implementations.length; e++)
                        if (this._implementations[e].implementation === i) return void this._implementations.splice(e, 1)
                }
            }
        }
        runCommand(e, t) {
            const i = e.get(u.b);
            i.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);
            for (const r of this._implementations) {
                var n = r.implementation(e, t);
                if (n) return i.trace(`Command '${this.id}' was handled by '${r.name}'.`), "boolean" == typeof n ? void 0 : n
            }
            i.trace(`The Command '${this.id}' was not handled by any implementation.`)
        }
    }
    class f extends p {
        constructor(e, t) {
            super(t), this.command = e
        }
        runCommand(e, t) {
            return this.command.runCommand(e, t)
        }
    }
    class m extends p {
        static bindToContribution(e) {
            return class extends m {
                constructor(e) {
                    super(e), this._callback = e.handler
                }
                runEditorCommand(t, i, n) {
                    e(i) && this._callback(e(i), n)
                }
            }
        }
        runCommand(e, t) {
            const i = e.get(o.a),
                n = i.getFocusedCodeEditor() || i.getActiveCodeEditor();
            if (n) return n.invokeWithinContext(e => {
                if (e.get(l.b).contextMatchesRules(Object(h.o)(this.precondition))) return this.runEditorCommand(e, n, t)
            })
        }
    }
    class v extends m {
        constructor(e) {
            super(v.convertOptions(e)), this.label = e.label, this.alias = e.alias
        }
        static convertOptions(e) {
            let t;

            function i(t) {
                return t.menuId || (t.menuId = s.b.EditorContext), t.title || (t.title = e.label), t.when = l.a.and(e.precondition, t.when), t
            }
            return t = Array.isArray(e.menuOpts) ? e.menuOpts : e.menuOpts ? [e.menuOpts] : [], Array.isArray(e.contextMenuOpts) ? t.push(...e.contextMenuOpts.map(i)) : e.contextMenuOpts && t.push(i(e.contextMenuOpts)), e.menuOpts = t, e
        }
        runEditorCommand(e, t, i) {
            return this.reportTelemetry(e, t), this.run(e, t, i || {})
        }
        reportTelemetry(e, t) {
            e.get(c.a).publicLog2("editorActionInvoked", {
                name: this.label,
                id: this.id
            })
        }
    }
    class b extends v {
        constructor() {
            super(...arguments), this._implementations = []
        }
        addImplementation(e, t) {
            return this._implementations.push([e, t]), this._implementations.sort((e, t) => t[0] - e[0]), {
                dispose: () => {
                    for (let e = 0; e < this._implementations.length; e++)
                        if (this._implementations[e][1] === t) return void this._implementations.splice(e, 1)
                }
            }
        }
        run(e, t, i) {
            for (const r of this._implementations) {
                var n = r[1](e, t, i);
                if (n) return "boolean" == typeof n ? void 0 : n
            }
        }
    }

    function _(e) {
        return x.INSTANCE.registerEditorCommand(e), e
    }

    function w(e) {
        return e = new e, x.INSTANCE.registerEditorAction(e), e
    }

    function y(e) {
        return x.INSTANCE.registerEditorAction(e), e
    }

    function C(e, t) {
        x.INSTANCE.registerEditorContribution(e, t)
    }(i = n = n || {}).getEditorCommand = function(e) {
        return x.INSTANCE.getEditorCommand(e)
    }, i.getEditorActions = function() {
        return x.INSTANCE.getEditorActions()
    }, i.getEditorContributions = function() {
        return x.INSTANCE.getEditorContributions()
    }, i.getSomeEditorContributions = function(e) {
        return x.INSTANCE.getEditorContributions().filter(t => 0 <= e.indexOf(t.id))
    }, i.getDiffEditorContributions = function() {
        return x.INSTANCE.getDiffEditorContributions()
    };
    class x {
        constructor() {
            this.editorContributions = [], this.diffEditorContributions = [], this.editorActions = [], this.editorCommands = Object.create(null)
        }
        registerEditorContribution(e, t) {
            this.editorContributions.push({
                id: e,
                ctor: t
            })
        }
        getEditorContributions() {
            return this.editorContributions.slice(0)
        }
        getDiffEditorContributions() {
            return this.diffEditorContributions.slice(0)
        }
        registerEditorAction(e) {
            e.register(), this.editorActions.push(e)
        }
        getEditorActions() {
            return this.editorActions.slice(0)
        }
        registerEditorCommand(e) {
            e.register(), this.editorCommands[e.id] = e
        }
        getEditorCommand(e) {
            return this.editorCommands[e] || null
        }
    }

    function S(e) {
        return e.register(), e
    }
    x.INSTANCE = new x, t.a.add("editor.contributions", x.INSTANCE);
    const k = S(new g({
        id: "undo",
        precondition: void 0,
        kbOpts: {
            weight: 0,
            primary: 2104
        },
        menuOpts: [{
            menuId: s.b.MenubarEditMenu,
            group: "1_do",
            title: r.a({
                key: "miUndo",
                comment: ["&& denotes a mnemonic"]
            }, "&&Undo"),
            order: 1
        }, {
            menuId: s.b.CommandPalette,
            group: "",
            title: r.a("undo", "Undo"),
            order: 1
        }]
    }));
    S(new f(k, {
        id: "default:undo",
        precondition: void 0
    }));
    const L = S(new g({
        id: "redo",
        precondition: void 0,
        kbOpts: {
            weight: 0,
            primary: 2103,
            secondary: [3128],
            mac: {
                primary: 3128
            }
        },
        menuOpts: [{
            menuId: s.b.MenubarEditMenu,
            group: "1_do",
            title: r.a({
                key: "miRedo",
                comment: ["&& denotes a mnemonic"]
            }, "&&Redo"),
            order: 2
        }, {
            menuId: s.b.CommandPalette,
            group: "",
            title: r.a("redo", "Redo"),
            order: 1
        }]
    }));
    S(new f(L, {
        id: "default:redo",
        precondition: void 0
    }));
    const O = S(new g({
        id: "editor.action.selectAll",
        precondition: void 0,
        kbOpts: {
            weight: 0,
            kbExpr: null,
            primary: 2079
        },
        menuOpts: [{
            menuId: s.b.MenubarSelectionMenu,
            group: "1_basic",
            title: r.a({
                key: "miSelectAll",
                comment: ["&& denotes a mnemonic"]
            }, "&&Select All"),
            order: 1
        }, {
            menuId: s.b.CommandPalette,
            group: "",
            title: r.a("selectAll", "Select All"),
            order: 1
        }]
    }))
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    }));
    var n, r = i(0);
    t = i(13);
    (i = n = n || {}).editorSimpleInput = new t.c("editorSimpleInput", !1, !0), i.editorTextFocus = new t.c("editorTextFocus", !1, r.a("editorTextFocus", "Whether the editor text has focus (cursor is blinking)")), i.focus = new t.c("editorFocus", !1, r.a("editorFocus", "Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")), i.textInputFocus = new t.c("textInputFocus", !1, r.a("textInputFocus", "Whether an editor or a rich text input has focus (cursor is blinking)")), i.readOnly = new t.c("editorReadonly", !1, r.a("editorReadonly", "Whether the editor is read only")), i.inDiffEditor = new t.c("inDiffEditor", !1, r.a("inDiffEditor", "Whether the context is a diff editor")), i.columnSelection = new t.c("editorColumnSelection", !1, r.a("editorColumnSelection", "Whether `editor.columnSelection` is enabled")), i.writable = i.readOnly.toNegated(), i.hasNonEmptySelection = new t.c("editorHasSelection", !1, r.a("editorHasSelection", "Whether the editor has text selected")), i.hasOnlyEmptySelection = i.hasNonEmptySelection.toNegated(), i.hasMultipleSelections = new t.c("editorHasMultipleSelections", !1, r.a("editorHasMultipleSelections", "Whether the editor has multiple selections")), i.hasSingleSelection = i.hasMultipleSelections.toNegated(), i.tabMovesFocus = new t.c("editorTabMovesFocus", !1, r.a("editorTabMovesFocus", "Whether `Tab` will move focus out of the editor")), i.tabDoesNotMoveFocus = i.tabMovesFocus.toNegated(), i.isInWalkThroughSnippet = new t.c("isInEmbeddedEditor", !1, !0), i.canUndo = new t.c("canUndo", !1, !0), i.canRedo = new t.c("canRedo", !1, !0), i.hoverVisible = new t.c("editorHoverVisible", !1, r.a("editorHoverVisible", "Whether the editor hover is visible")), i.inCompositeEditor = new t.c("inCompositeEditor", void 0, r.a("inCompositeEditor", "Whether the editor is part of a larger editor (e.g. notebooks)")), i.notInCompositeEditor = i.inCompositeEditor.toNegated(), i.languageId = new t.c("editorLangId", "", r.a("editorLangId", "The language identifier of the editor")), i.hasCompletionItemProvider = new t.c("editorHasCompletionItemProvider", !1, r.a("editorHasCompletionItemProvider", "Whether the editor has a completion item provider")), i.hasCodeActionsProvider = new t.c("editorHasCodeActionsProvider", !1, r.a("editorHasCodeActionsProvider", "Whether the editor has a code actions provider")), i.hasCodeLensProvider = new t.c("editorHasCodeLensProvider", !1, r.a("editorHasCodeLensProvider", "Whether the editor has a code lens provider")), i.hasDefinitionProvider = new t.c("editorHasDefinitionProvider", !1, r.a("editorHasDefinitionProvider", "Whether the editor has a definition provider")), i.hasDeclarationProvider = new t.c("editorHasDeclarationProvider", !1, r.a("editorHasDeclarationProvider", "Whether the editor has a declaration provider")), i.hasImplementationProvider = new t.c("editorHasImplementationProvider", !1, r.a("editorHasImplementationProvider", "Whether the editor has an implementation provider")), i.hasTypeDefinitionProvider = new t.c("editorHasTypeDefinitionProvider", !1, r.a("editorHasTypeDefinitionProvider", "Whether the editor has a type definition provider")), i.hasHoverProvider = new t.c("editorHasHoverProvider", !1, r.a("editorHasHoverProvider", "Whether the editor has a hover provider")), i.hasDocumentHighlightProvider = new t.c("editorHasDocumentHighlightProvider", !1, r.a("editorHasDocumentHighlightProvider", "Whether the editor has a document highlight provider")), i.hasDocumentSymbolProvider = new t.c("editorHasDocumentSymbolProvider", !1, r.a("editorHasDocumentSymbolProvider", "Whether the editor has a document symbol provider")), i.hasReferenceProvider = new t.c("editorHasReferenceProvider", !1, r.a("editorHasReferenceProvider", "Whether the editor has a reference provider")), i.hasRenameProvider = new t.c("editorHasRenameProvider", !1, r.a("editorHasRenameProvider", "Whether the editor has a rename provider")), i.hasSignatureHelpProvider = new t.c("editorHasSignatureHelpProvider", !1, r.a("editorHasSignatureHelpProvider", "Whether the editor has a signature help provider")), i.hasInlayHintsProvider = new t.c("editorHasInlayHintsProvider", !1, r.a("editorHasInlayHintsProvider", "Whether the editor has an inline hints provider")), i.hasDocumentFormattingProvider = new t.c("editorHasDocumentFormattingProvider", !1, r.a("editorHasDocumentFormattingProvider", "Whether the editor has a document formatting provider")), i.hasDocumentSelectionFormattingProvider = new t.c("editorHasDocumentSelectionFormattingProvider", !1, r.a("editorHasDocumentSelectionFormattingProvider", "Whether the editor has a document selection formatting provider")), i.hasMultipleDocumentFormattingProvider = new t.c("editorHasMultipleDocumentFormattingProvider", !1, r.a("editorHasMultipleDocumentFormattingProvider", "Whether the editor has multiple document formatting providers")), i.hasMultipleDocumentSelectionFormattingProvider = new t.c("editorHasMultipleDocumentSelectionFormattingProvider", !1, r.a("editorHasMultipleDocumentSelectionFormattingProvider", "Whether the editor has multiple document selection formatting providers"))
}, function(e, t) {
    e.exports = require("electron")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return c
    })), i.d(t, "g", (function() {
        return h
    })), i.d(t, "d", (function() {
        return r
    })), i.d(t, "e", (function() {
        return u
    })), i.d(t, "a", (function() {
        return p
    })), i.d(t, "f", (function() {
        return f
    })), i.d(t, "c", (function() {
        return m
    }));
    var n, r, o = i(33),
        s = i(2),
        a = i(4),
        l = i(26),
        d = (t = i(58), i(119));
    const c = Object(l.c)("themeService");

    function h(e) {
        return {
            id: e
        }
    }

    function u(e) {
        switch (e) {
            case d.a.DARK:
                return "vs-dark";
            case d.a.HIGH_CONTRAST:
                return "hc-black";
            default:
                return "vs"
        }
    }(n || (n = {})).isThemeColor = function(e) {
            return e && "object" == typeof e && "string" == typeof e.id
        },
        function(e) {
            e.isThemeIcon = function(e) {
                return e && "object" == typeof e && "string" == typeof e.id && (void 0 === e.color || n.isThemeColor(e.color))
            };
            const t = new RegExp(`^\\$\\((${o.a.iconNameExpression}(?:${o.a.iconModifierExpression})?)\\)$`);
            e.fromString = function(e) {
                if (e = t.exec(e)) {
                    var [, e] = e;
                    return {
                        id: e
                    }
                }
            }, e.modify = function(e, t) {
                let i = e.id;
                return -1 !== (e = i.lastIndexOf("~")) && (i = i.substring(0, e)), t && (i = `${i}~${t}`), {
                    id: i
                }
            }, e.isEqual = function(e, t) {
                return e.id === t.id && (null === (e = e.color) || void 0 === e ? void 0 : e.id) === (null === (t = t.color) || void 0 === t ? void 0 : t.id)
            }, e.asThemeIcon = function(e, t) {
                return {
                    id: e.id,
                    color: t ? h(t) : void 0
                }
            }, e.asClassNameArray = o.a.asClassNameArray, e.asClassName = o.a.asClassName, e.asCSSSelector = o.a.asCSSSelector
        }(r = r || {});
    const p = {
        ThemingContribution: "base.contributions.theming"
    };
    let g = new class {
        constructor() {
            this.themingParticipants = [], this.themingParticipants = [], this.onThemingParticipantAddedEmitter = new s.b
        }
        onColorThemeChange(e) {
            return this.themingParticipants.push(e), this.onThemingParticipantAddedEmitter.fire(e), Object(a.i)(() => {
                var t = this.themingParticipants.indexOf(e);
                this.themingParticipants.splice(t, 1)
            })
        }
        getThemingParticipants() {
            return this.themingParticipants
        }
    };

    function f(e) {
        return g.onColorThemeChange(e)
    }
    t.a.add(p.ThemingContribution, g);
    class m extends a.a {
        constructor(e) {
            super(), this.themeService = e, this.theme = e.getColorTheme(), this._register(this.themeService.onDidColorThemeChange(e => this.onThemeChange(e)))
        }
        onThemeChange(e) {
            this.theme = e, this.updateStyles()
        }
        updateStyles() {}
    }
}, function(e, t) {
    e.exports = function(e) {
        var t = [];
        return t.toString = function() {
            return this.map((function(t) {
                var i = function(e, t) {
                    var i = e[1] || "",
                        n = e[3];
                    return n ? t && "function" == typeof btoa ? (e = function(e) {
                        return "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(e)))) + " */"
                    }(n), t = n.sources.map((function(e) {
                        return "/*# sourceURL=" + n.sourceRoot + e + " */"
                    })), [i].concat(t).concat([e]).join("\n")) : [i].join("\n") : i
                }(t, e);
                return t[2] ? "@media " + t[2] + "{" + i + "}" : i
            })).join("")
        }, t.i = function(e, i) {
            "string" == typeof e && (e = [
                [null, e, ""]
            ]);
            for (var n = {}, r = 0; r < this.length; r++) {
                var o = this[r][0];
                "number" == typeof o && (n[o] = !0)
            }
            for (r = 0; r < e.length; r++) {
                var s = e[r];
                "number" == typeof s[0] && n[s[0]] || (i && !s[2] ? s[2] = i : i && (s[2] = "(" + s[2] + ") and (" + i + ")"), t.push(s))
            }
        }, t
    }
}, function(e, t, i) {
    "use strict";

    function n(e, t) {
        for (var i = [], n = {}, r = 0; r < t.length; r++) {
            var o = (s = t[r])[0],
                s = {
                    id: e + ":" + r,
                    css: s[1],
                    media: s[2],
                    sourceMap: s[3]
                };
            n[o] ? n[o].parts.push(s) : i.push(n[o] = {
                id: o,
                parts: [s]
            })
        }
        return i
    }
    if (i.r(t), i.d(t, "default", (function() {
            return p
        })), t = "undefined" != typeof document, "undefined" != typeof DEBUG && DEBUG && !t) 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 r = {},
        o = t && (document.head || document.getElementsByTagName("head")[0]),
        s = null,
        a = 0,
        l = !1,
        d = function() {},
        c = null,
        h = "data-vue-ssr-id",
        u = "undefined" != typeof navigator && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase());

    function p(e, t, i, o) {
        l = i, c = o || {};
        var s = n(e, t);
        return g(s),
            function(t) {
                for (var i = [], o = 0; o < s.length; o++) {
                    var a = s[o];
                    (l = r[a.id]).refs--, i.push(l)
                }
                t ? g(s = n(e, t)) : s = [];
                var l;
                for (o = 0; o < i.length; o++)
                    if (0 === (l = i[o]).refs) {
                        for (var d = 0; d < l.parts.length; d++) l.parts[d]();
                        delete r[l.id]
                    }
            }
    }

    function g(e) {
        for (var t = 0; t < e.length; t++) {
            var i = e[t],
                n = r[i.id];
            if (n) {
                n.refs++;
                for (var o = 0; o < n.parts.length; o++) n.parts[o](i.parts[o]);
                for (; o < i.parts.length; o++) n.parts.push(m(i.parts[o]));
                n.parts.length > i.parts.length && (n.parts.length = i.parts.length)
            } else {
                var s = [];
                for (o = 0; o < i.parts.length; o++) s.push(m(i.parts[o]));
                r[i.id] = {
                    id: i.id,
                    refs: 1,
                    parts: s
                }
            }
        }
    }

    function f() {
        var e = document.createElement("style");
        return e.type = "text/css", o.appendChild(e), e
    }

    function m(e) {
        var t, i, n, r = document.querySelector("style[" + h + '~="' + e.id + '"]');
        if (r) {
            if (l) return d;
            r.parentNode.removeChild(r)
        }
        return n = u ? (t = a++, r = s = s || f(), i = _.bind(null, r, t, !1), _.bind(null, r, t, !0)) : (r = f(), i = function(e, t) {
                var i = t.css,
                    n = t.media,
                    r = t.sourceMap;
                if (n && e.setAttribute("media", n), c.ssrId && e.setAttribute(h, t.id), r && (i += "\n/*# sourceURL=" + r.sources[0] + " */", i += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(r)))) + " */"), e.styleSheet) e.styleSheet.cssText = i;
                else {
                    for (; e.firstChild;) e.removeChild(e.firstChild);
                    e.appendChild(document.createTextNode(i))
                }
            }.bind(null, r), function() {
                r.parentNode.removeChild(r)
            }), i(e),
            function(t) {
                t ? t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap || i(e = t) : n()
            }
    }
    var v, b = (v = [], function(e, t) {
        return v[e] = t, v.filter(Boolean).join("\n")
    });

    function _(e, t, i, n) {
        i = i ? "" : n.css, e.styleSheet ? e.styleSheet.cssText = b(t, i) : (n = document.createTextNode(i), (i = e.childNodes)[t] && e.removeChild(i[t]), i.length ? e.insertBefore(n, i[t]) : e.appendChild(n))
    }
}, function(e, t, i) {
    "use strict";
    var n, r;
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "a", (function() {
        return o
    })), i.d(t, "c", (function() {
        return a
    })), i.d(t, "d", (function() {
        return l
    })), (r = n = n || {}).serviceIds = new Map, r.DI_TARGET = "$di$target", r.DI_DEPENDENCIES = "$di$dependencies", r.getServiceDependencies = function(e) {
        return e[r.DI_DEPENDENCIES] || []
    };
    const o = a("instantiationService");

    function s(e, t, i, r) {
        t[n.DI_TARGET] === t ? t[n.DI_DEPENDENCIES].push({
            id: e,
            index: i,
            optional: r
        }) : (t[n.DI_DEPENDENCIES] = [{
            id: e,
            index: i,
            optional: r
        }], t[n.DI_TARGET] = t)
    }

    function a(e) {
        if (n.serviceIds.has(e)) return n.serviceIds.get(e);
        const t = function(e, i, n) {
            if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter");
            s(t, e, n, !1)
        };
        return t.toString = () => e, n.serviceIds.set(e, t), t
    }

    function l(e) {
        return function(t, i, n) {
            if (3 !== arguments.length) throw new Error("@optional-decorator can only be used to decorate a parameter");
            s(e, t, n, !0)
        }
    }
}, function(e, t) {
    e.exports = require("vuex")
}, function(e, t, i) {
    "use strict";

    function n(e, t = 0) {
        return e[e.length - (1 + t)]
    }

    function r(e) {
        if (0 === e.length) throw new Error("Invalid tail call");
        return [e.slice(0, e.length - 1), e[e.length - 1]]
    }

    function o(e, t, i = ((e, t) => e === t)) {
        if (e === t) return !0;
        if (!e || !t) return !1;
        if (e.length !== t.length) return !1;
        for (let n = 0, r = e.length; n < r; n++)
            if (!i(e[n], t[n])) return !1;
        return !0
    }

    function s(e, t, i) {
        let n = 0,
            r = e.length - 1;
        for (; n <= r;) {
            var o = (n + r) / 2 | 0,
                s = i(e[o], t);
            if (s < 0) n = 1 + o;
            else {
                if (!(0 < s)) return o;
                r = o - 1
            }
        }
        return -(n + 1)
    }

    function a(e, t) {
        let i = 0,
            n = e.length;
        if (0 === n) return 0;
        for (; i < n;) {
            var r = Math.floor((i + n) / 2);
            t(e[r]) ? n = r : i = r + 1
        }
        return i
    }

    function l(e) {
        return e.filter(e => !!e)
    }

    function d(e) {
        return !Array.isArray(e) || 0 === e.length
    }

    function c(e) {
        return Array.isArray(e) && 0 < e.length
    }

    function h(e, t = (e => e)) {
        const i = new Set;
        return e.filter(e => (e = t(e), !i.has(e) && (i.add(e), !0)))
    }

    function u(e, t) {
        if (-1 !== (t = function(e, t) {
                for (let i = e.length - 1; 0 <= i; i--) {
                    if (t(e[i])) return i
                }
                return -1
            }(e, t))) return e[t]
    }

    function p(e, t) {
        return 0 < e.length ? e[0] : t
    }

    function g(e, t) {
        let i = "number" == typeof t ? e : 0;
        "number" == typeof t ? i = e : (i = 0, t = e);
        const n = [];
        if (i <= t)
            for (let e = i; e < t; e++) n.push(e);
        else
            for (let e = i; e > t; e--) n.push(e);
        return n
    }

    function f(e, t, i) {
        const n = e.slice(0, t);
        return t = e.slice(t), n.concat(i, t)
    }

    function m(e, t) {
        var i = e.indexOf(t); - 1 < i && (e.splice(i, 1), e.unshift(t))
    }

    function v(e, t) {
        var i = e.indexOf(t); - 1 < i && (e.splice(i, 1), e.push(t))
    }

    function b(e) {
        return Array.isArray(e) ? e : [e]
    }

    function _(e, t, i, n) {
        return t = w(e, t), i = e.splice(t, i),
            function(e, t, i) {
                var n = w(e, t),
                    r = (t = e.length, i.length);
                e.length = t + r;
                for (let i = t - 1; i >= n; i--) e[i + r] = e[i];
                for (let t = 0; t < r; t++) e[t + n] = i[t]
            }(e, t, n), i
    }

    function w(e, t) {
        return t < 0 ? Math.max(t + e.length, 0) : Math.min(t, e.length)
    }
    i.d(t, "q", (function() {
        return n
    })), i.d(t, "r", (function() {
        return r
    })), i.d(t, "g", (function() {
        return o
    })), i.d(t, "d", (function() {
        return s
    })), i.d(t, "h", (function() {
        return a
    })), i.d(t, "e", (function() {
        return l
    })), i.d(t, "k", (function() {
        return d
    })), i.d(t, "l", (function() {
        return c
    })), i.d(t, "f", (function() {
        return h
    })), i.d(t, "i", (function() {
        return u
    })), i.d(t, "j", (function() {
        return p
    })), i.d(t, "o", (function() {
        return g
    })), i.d(t, "b", (function() {
        return f
    })), i.d(t, "n", (function() {
        return m
    })), i.d(t, "m", (function() {
        return v
    })), i.d(t, "c", (function() {
        return b
    })), i.d(t, "p", (function() {
        return _
    })), i.d(t, "a", (function() {
        return y
    }));
    class y {
        constructor(e) {
            this.items = e, this.firstIdx = 0, this.lastIdx = this.items.length - 1
        }
        takeWhile(e) {
            let t = this.firstIdx;
            for (; t < this.items.length && e(this.items[t]);) t++;
            var i = t === this.firstIdx ? null : this.items.slice(this.firstIdx, t);
            return this.firstIdx = t, i
        }
        takeFromEndWhile(e) {
            let t = this.lastIdx;
            for (; 0 <= t && e(this.items[t]);) t--;
            var i = t === this.lastIdx ? null : this.items.slice(t + 1, this.lastIdx + 1);
            return this.lastIdx = t, i
        }
        peek() {
            return this.items[this.firstIdx]
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "h", (function() {
        return s
    })), i.d(t, "b", (function() {
        return a
    })), i.d(t, "j", (function() {
        return l
    })), i.d(t, "a", (function() {
        return d
    })), i.d(t, "k", (function() {
        return p
    })), i.d(t, "l", (function() {
        return f
    })), i.d(t, "o", (function() {
        return _
    })), i.d(t, "i", (function() {
        return n
    })), i.d(t, "e", (function() {
        return C
    })), i.d(t, "f", (function() {
        return S
    })), i.d(t, "n", (function() {
        return k
    })), i.d(t, "c", (function() {
        return E
    })), i.d(t, "d", (function() {
        return N
    })), i.d(t, "m", (function() {
        return D
    })), i.d(t, "g", (function() {
        return T
    }));
    var n, r = i(0),
        o = i(9);
    t = i(93);
    const s = 8;
    class a {
        constructor(e) {
            this._values = e
        }
        hasChanged(e) {
            return this._values[e]
        }
    }
    class l {
        constructor() {
            this._values = []
        }
        _read(e) {
            return this._values[e]
        }
        get(e) {
            return this._values[e]
        }
        _write(e, t) {
            this._values[e] = t
        }
    }
    class d {
        constructor() {
            this.stableMinimapLayoutInput = null, this.stableFitMaxMinimapScale = 0, this.stableFitRemainingWidth = 0
        }
    }
    class c {
        constructor(e, t, i, n) {
            this.id = e, this.name = t, this.defaultValue = i, this.schema = n
        }
        compute(e, t, i) {
            return i
        }
    }
    class h {
        constructor(e, t = null) {
            this.schema = void 0, this.id = e, this.name = "_never_", this.defaultValue = void 0, this.deps = t
        }
        validate(e) {
            return this.defaultValue
        }
    }
    class u {
        constructor(e, t, i, n) {
            this.id = e, this.name = t, this.defaultValue = i, this.schema = n
        }
        validate(e) {
            return void 0 === e ? this.defaultValue : e
        }
        compute(e, t, i) {
            return i
        }
    }

    function p(e, t) {
        return void 0 === e ? t : "false" !== e && Boolean(e)
    }
    class g extends u {
        constructor(e, t, i, n) {
            void 0 !== n && (n.type = "boolean", n.default = i), super(e, t, i, n)
        }
        validate(e) {
            return p(e, this.defaultValue)
        }
    }

    function f(e, t, i, n) {
        return void 0 === e ? t : (e = parseInt(e, 10), isNaN(e) ? t : (e = Math.max(i, e), 0 | (e = Math.min(n, e))))
    }
    class m extends u {
        constructor(e, t, i, n, r, o) {
            void 0 !== o && (o.type = "integer", o.default = i, o.minimum = n, o.maximum = r), super(e, t, i, o), this.minimum = n, this.maximum = r
        }
        static clampedInt(e, t, i, n) {
            return f(e, t, i, n)
        }
        validate(e) {
            return m.clampedInt(e, this.defaultValue, this.minimum, this.maximum)
        }
    }
    class v extends u {
        constructor(e, t, i, n, r) {
            void 0 !== r && (r.type = "number", r.default = i), super(e, t, i, r), this.validationFn = n
        }
        static clamp(e, t, i) {
            return e < t ? t : i < e ? i : e
        }
        static float(e, t) {
            return "number" == typeof e ? e : void 0 === e ? t : (e = parseFloat(e), isNaN(e) ? t : e)
        }
        validate(e) {
            return this.validationFn(v.float(e, this.defaultValue))
        }
    }
    class b extends u {
        static string(e, t) {
            return "string" != typeof e ? t : e
        }
        constructor(e, t, i, n) {
            void 0 !== n && (n.type = "string", n.default = i), super(e, t, i, n)
        }
        validate(e) {
            return b.string(e, this.defaultValue)
        }
    }

    function _(e, t, i) {
        return "string" != typeof e || -1 === i.indexOf(e) ? t : e
    }
    class w extends u {
        constructor(e, t, i, n, r) {
            void 0 !== r && (r.type = "string", r.enum = n, r.default = i), super(e, t, i, r), this._allowedValues = n
        }
        validate(e) {
            return _(e, this.defaultValue, this._allowedValues)
        }
    }
    class y extends c {
        constructor(e, t, i, n, r, o, s) {
            void 0 !== s && (s.type = "string", s.enum = r, s.default = n), super(e, t, i, s), this._allowedValues = r, this._convert = o
        }
        validate(e) {
            return "string" != typeof e || -1 === this._allowedValues.indexOf(e) ? this.defaultValue : this._convert(e)
        }
    }(i = n = n || {})[i.Line = 1] = "Line", i[i.Block = 2] = "Block", i[i.Underline = 3] = "Underline", i[i.LineThin = 4] = "LineThin", i[i.BlockOutline = 5] = "BlockOutline", i[i.UnderlineThin = 6] = "UnderlineThin";
    class C extends c {
        constructor() {
            super(44, "fontLigatures", C.OFF, {
                anyOf: [{
                    type: "boolean",
                    description: r.a("fontLigatures", "Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")
                }, {
                    type: "string",
                    description: r.a("fontFeatureSettings", "Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")
                }],
                description: r.a("fontLigaturesGeneral", "Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),
                default: !1
            })
        }
        validate(e) {
            return void 0 === e ? this.defaultValue : "string" == typeof e ? "false" === e ? C.OFF : "true" === e ? C.ON : e : Boolean(e) ? C.ON : C.OFF
        }
    }
    C.OFF = '"liga" off, "calt" off', C.ON = '"liga" on, "calt" on';
    class x extends c {
        constructor() {
            super(46, "fontWeight", E.fontWeight, {
                anyOf: [{
                    type: "number",
                    minimum: x.MINIMUM_VALUE,
                    maximum: x.MAXIMUM_VALUE,
                    errorMessage: r.a("fontWeightErrorMessage", 'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')
                }, {
                    type: "string",
                    pattern: "^(normal|bold|1000|[1-9][0-9]{0,2})$"
                }, {
                    enum: x.SUGGESTION_VALUES
                }],
                default: E.fontWeight,
                description: r.a("fontWeight", 'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')
            })
        }
        validate(e) {
            return "normal" === e || "bold" === e ? e : String(m.clampedInt(e, E.fontWeight, x.MINIMUM_VALUE, x.MAXIMUM_VALUE))
        }
    }
    x.SUGGESTION_VALUES = ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"], x.MINIMUM_VALUE = 1, x.MAXIMUM_VALUE = 1e3;
    class S extends h {
        constructor() {
            super(129, [49, 57, 37, 64, 91, 59, 60, 93, 116, 119, 120, 121, 2])
        }
        compute(e, t, i) {
            return S.computeLayout(t, {
                memory: e.memory,
                outerWidth: e.outerWidth,
                outerHeight: e.outerHeight,
                isDominatedByLongLines: e.isDominatedByLongLines,
                lineHeight: e.fontInfo.lineHeight,
                viewLineCount: e.viewLineCount,
                lineNumbersDigitCount: e.lineNumbersDigitCount,
                typicalHalfwidthCharacterWidth: e.fontInfo.typicalHalfwidthCharacterWidth,
                maxDigitWidth: e.fontInfo.maxDigitWidth,
                pixelRatio: e.pixelRatio
            })
        }
        static computeContainedMinimapLineCount(e) {
            var t = e.height / e.lineHeight,
                i = e.scrollBeyondLastLine ? t - 1 : 0,
                n = (e.viewLineCount + i) / (e.pixelRatio * e.height);
            return {
                typicalViewportLineCount: t,
                extraLinesBeyondLastLine: i,
                desiredRatio: n,
                minimapLineCount: Math.floor(e.viewLineCount / n)
            }
        }
        static _computeMinimapLayout(e, t) {
            var i = e.outerWidth,
                n = e.outerHeight,
                r = e.pixelRatio;
            if (!e.minimap.enabled) return {
                renderMinimap: 0,
                minimapLeft: 0,
                minimapWidth: 0,
                minimapHeightIsEditorHeight: !1,
                minimapIsSampling: !1,
                minimapScale: 1,
                minimapLineHeight: 1,
                minimapCanvasInnerWidth: 0,
                minimapCanvasInnerHeight: Math.floor(r * n),
                minimapCanvasOuterWidth: 0,
                minimapCanvasOuterHeight: n
            };
            var o, a = (o = t.stableMinimapLayoutInput) && e.outerHeight === o.outerHeight && e.lineHeight === o.lineHeight && e.typicalHalfwidthCharacterWidth === o.typicalHalfwidthCharacterWidth && e.pixelRatio === o.pixelRatio && e.scrollBeyondLastLine === o.scrollBeyondLastLine && e.minimap.enabled === o.minimap.enabled && e.minimap.side === o.minimap.side && e.minimap.size === o.minimap.size && e.minimap.showSlider === o.minimap.showSlider && e.minimap.renderCharacters === o.minimap.renderCharacters && e.minimap.maxColumn === o.minimap.maxColumn && e.minimap.scale === o.minimap.scale && e.verticalScrollbarWidth === o.verticalScrollbarWidth && e.isViewportWrapping === o.isViewportWrapping,
                l = e.lineHeight,
                d = e.typicalHalfwidthCharacterWidth,
                c = e.scrollBeyondLastLine,
                h = e.minimap.renderCharacters;
            let u = 2 <= r ? Math.round(2 * e.minimap.scale) : e.minimap.scale;
            var p = e.minimap.maxColumn,
                g = e.minimap.size,
                f = e.minimap.side,
                m = e.verticalScrollbarWidth,
                v = e.viewLineCount,
                b = e.remainingWidth,
                _ = e.isViewportWrapping,
                w = h ? 2 : 3;
            let y = Math.floor(r * n);
            var C = y / r;
            let x = !1,
                k = !1,
                L = w * u,
                O = u / r,
                E = 1;
            if ("fill" === g || "fit" === g) {
                var {
                    typicalViewportLineCount: N,
                    extraLinesBeyondLastLine: o,
                    desiredRatio: c,
                    minimapLineCount: n
                } = S.computeContainedMinimapLineCount({
                    viewLineCount: v,
                    scrollBeyondLastLine: c,
                    height: n,
                    lineHeight: l,
                    pixelRatio: r
                });
                if (1 < v / n) x = !0, k = !0, u = 1, L = 1, O = u / r;
                else {
                    let i = !1,
                        s = u + 1;
                    "fit" === g && (n = Math.ceil((v + o) * L), _ && a && b <= t.stableFitRemainingWidth ? (i = !0, s = t.stableFitMaxMinimapScale) : i = n > y), "fill" !== g && !i || (x = !0, g = u, L = Math.min(l * r, Math.max(1, Math.floor(1 / c))), _ && a && b <= t.stableFitRemainingWidth && (s = t.stableFitMaxMinimapScale), u = Math.min(s, Math.max(1, Math.floor(L / w))), u > g && (E = Math.min(2, u / g)), O = u / r / E, y = Math.ceil(Math.max(N, v + o) * L), _ ? (t.stableMinimapLayoutInput = e, t.stableFitRemainingWidth = b, t.stableFitMaxMinimapScale = u) : (t.stableMinimapLayoutInput = null, t.stableFitRemainingWidth = 0))
                }
            }
            return p = Math.floor(p * O), b = Math.min(p, Math.max(0, Math.floor((b - m - 2) * O / (d + O))) + s), r = (d = Math.floor(r * b)) / r, {
                renderMinimap: h ? 1 : 2,
                minimapLeft: "left" === f ? 0 : i - b - m,
                minimapWidth: b,
                minimapHeightIsEditorHeight: x,
                minimapIsSampling: k,
                minimapScale: u,
                minimapLineHeight: L,
                minimapCanvasInnerWidth: d = Math.floor(d * E),
                minimapCanvasInnerHeight: y,
                minimapCanvasOuterWidth: r,
                minimapCanvasOuterHeight: C
            }
        }
        static computeLayout(e, t) {
            var i = 0 | t.outerWidth,
                n = 0 | t.outerHeight,
                r = 0 | t.lineHeight,
                o = 0 | t.lineNumbersDigitCount,
                s = t.typicalHalfwidthCharacterWidth,
                a = t.maxDigitWidth,
                l = t.pixelRatio,
                c = t.viewLineCount,
                h = "inherit" === (O = e.get(121)) ? e.get(120) : O,
                u = "inherit" === h ? e.get(116) : h,
                p = e.get(119),
                g = e.get(2),
                f = t.isDominatedByLongLines,
                v = e.get(49),
                b = 0 !== e.get(59).renderType,
                _ = e.get(60),
                w = e.get(93),
                y = e.get(64),
                C = e.get(91),
                x = C.verticalScrollbarSize,
                k = C.verticalHasArrows,
                L = C.arrowSize,
                O = C.horizontalScrollbarSize;
            const E = e.get(57);
            let N;
            C = e.get(37), N = "string" == typeof E && /^\d+(\.\d+)?ch$/.test(E) ? (e = parseFloat(E.substr(0, E.length - 2)), m.clampedInt(e * s, 0, 0, 1e3)) : m.clampedInt(E, 0, 0, 1e3), C && (N += 16);
            let D = 0;
            b && (_ = Math.max(o, _), D = Math.round(_ * a));
            let I = 0;
            v && (I = r);
            let T = 0,
                M = T + I,
                P = M + D,
                A = P + N;
            v = i - I - D - N;
            let R = !1,
                F = !1,
                j = -1;
            return 2 !== g && ("inherit" === h && f ? (R = !0, F = !0) : "on" === u || "bounded" === u ? F = !0 : "wordWrapColumn" === u && (j = p)), 0 !== (t = S._computeMinimapLayout({
                outerWidth: i,
                outerHeight: n,
                lineHeight: r,
                typicalHalfwidthCharacterWidth: s,
                pixelRatio: l,
                scrollBeyondLastLine: w,
                minimap: y,
                verticalScrollbarWidth: x,
                viewLineCount: c,
                remainingWidth: v,
                isViewportWrapping: F
            }, t.memory || new d)).renderMinimap && 0 === t.minimapLeft && (T += t.minimapWidth, M += t.minimapWidth, P += t.minimapWidth, A += t.minimapWidth), v -= t.minimapWidth, s = Math.max(1, Math.floor((v - x - 2) / s)), L = k ? L : 0, F && (j = Math.max(1, s), "bounded" === u && (j = Math.min(j, p))), {
                width: i,
                height: n,
                glyphMarginLeft: T,
                glyphMarginWidth: I,
                lineNumbersLeft: M,
                lineNumbersWidth: D,
                decorationsLeft: P,
                decorationsWidth: N,
                contentLeft: A,
                contentWidth: v,
                minimap: t,
                viewportColumn: s,
                isWordWrapMinified: R,
                isViewportWrapping: F,
                wrappingColumn: j,
                verticalScrollbarWidth: x,
                horizontalScrollbarHeight: O,
                overviewRuler: {
                    top: L,
                    width: x,
                    height: n - 2 * L,
                    right: 0
                }
            }
        }
    }

    function k(e) {
        var t = e.get(86);
        return "editable" === t ? e.get(80) : "on" !== t
    }

    function L(e, t) {
        if ("string" != typeof e) return t;
        switch (e) {
            case "hidden":
                return 2;
            case "visible":
                return 3;
            default:
                return 1
        }
    }

    function O(e, t, i) {
        return -1 === (e = i.indexOf(e)) ? t : i[e]
    }
    const E = {
            fontFamily: o.f ? "Menlo, Monaco, 'Courier New', monospace" : o.d ? "'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'" : "Consolas, 'Courier New', monospace",
            fontWeight: "normal",
            fontSize: o.f ? 12 : 14,
            lineHeight: 0,
            letterSpacing: 0
        },
        N = {
            tabSize: 4,
            indentSize: 4,
            insertSpaces: !0,
            detectIndentation: !0,
            trimAutoWhitespace: !0,
            largeFileOptimizations: !0,
            bracketPairColorizationOptions: {
                enabled: !1
            }
        },
        D = [];

    function I(e) {
        return D[e.id] = e
    }
    const T = {
        acceptSuggestionOnCommitCharacter: I(new g(0, "acceptSuggestionOnCommitCharacter", !0, {
            markdownDescription: r.a("acceptSuggestionOnCommitCharacter", "Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")
        })),
        acceptSuggestionOnEnter: I(new w(1, "acceptSuggestionOnEnter", "on", ["on", "smart", "off"], {
            markdownEnumDescriptions: ["", r.a("acceptSuggestionOnEnterSmart", "Only accept a suggestion with `Enter` when it makes a textual change."), ""],
            markdownDescription: r.a("acceptSuggestionOnEnter", "Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")
        })),
        accessibilitySupport: I(new class extends c {
            constructor() {
                super(2, "accessibilitySupport", 0, {
                    type: "string",
                    enum: ["auto", "on", "off"],
                    enumDescriptions: [r.a("accessibilitySupport.auto", "The editor will use platform APIs to detect when a Screen Reader is attached."), r.a("accessibilitySupport.on", "The editor will be permanently optimized for usage with a Screen Reader. Word wrapping will be disabled."), r.a("accessibilitySupport.off", "The editor will never be optimized for usage with a Screen Reader.")],
                    default: "auto",
                    description: r.a("accessibilitySupport", "Controls whether the editor should run in a mode where it is optimized for screen readers. Setting to on will disable word wrapping.")
                })
            }
            validate(e) {
                switch (e) {
                    case "auto":
                        return 0;
                    case "off":
                        return 1;
                    case "on":
                        return 2
                }
                return this.defaultValue
            }
            compute(e, t, i) {
                return 0 === i ? e.accessibilitySupport : i
            }
        }),
        accessibilityPageSize: I(new m(3, "accessibilityPageSize", 10, 1, 1073741824, {
            description: r.a("accessibilityPageSize", "Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.")
        })),
        ariaLabel: I(new b(4, "ariaLabel", r.a("editorViewAccessibleLabel", "Editor content"))),
        autoClosingBrackets: I(new w(5, "autoClosingBrackets", "languageDefined", ["always", "languageDefined", "beforeWhitespace", "never"], {
            enumDescriptions: ["", r.a("editor.autoClosingBrackets.languageDefined", "Use language configurations to determine when to autoclose brackets."), r.a("editor.autoClosingBrackets.beforeWhitespace", "Autoclose brackets only when the cursor is to the left of whitespace."), ""],
            description: r.a("autoClosingBrackets", "Controls whether the editor should automatically close brackets after the user adds an opening bracket.")
        })),
        autoClosingDelete: I(new w(6, "autoClosingDelete", "auto", ["always", "auto", "never"], {
            enumDescriptions: ["", r.a("editor.autoClosingDelete.auto", "Remove adjacent closing quotes or brackets only if they were automatically inserted."), ""],
            description: r.a("autoClosingDelete", "Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")
        })),
        autoClosingOvertype: I(new w(7, "autoClosingOvertype", "auto", ["always", "auto", "never"], {
            enumDescriptions: ["", r.a("editor.autoClosingOvertype.auto", "Type over closing quotes or brackets only if they were automatically inserted."), ""],
            description: r.a("autoClosingOvertype", "Controls whether the editor should type over closing quotes or brackets.")
        })),
        autoClosingQuotes: I(new w(8, "autoClosingQuotes", "languageDefined", ["always", "languageDefined", "beforeWhitespace", "never"], {
            enumDescriptions: ["", r.a("editor.autoClosingQuotes.languageDefined", "Use language configurations to determine when to autoclose quotes."), r.a("editor.autoClosingQuotes.beforeWhitespace", "Autoclose quotes only when the cursor is to the left of whitespace."), ""],
            description: r.a("autoClosingQuotes", "Controls whether the editor should automatically close quotes after the user adds an opening quote.")
        })),
        autoIndent: I(new y(9, "autoIndent", 4, "full", ["none", "keep", "brackets", "advanced", "full"], (function(e) {
            switch (e) {
                case "none":
                    return 0;
                case "keep":
                    return 1;
                case "brackets":
                    return 2;
                case "advanced":
                    return 3;
                case "full":
                    return 4
            }
        }), {
            enumDescriptions: [r.a("editor.autoIndent.none", "The editor will not insert indentation automatically."), r.a("editor.autoIndent.keep", "The editor will keep the current line's indentation."), r.a("editor.autoIndent.brackets", "The editor will keep the current line's indentation and honor language defined brackets."), r.a("editor.autoIndent.advanced", "The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."), r.a("editor.autoIndent.full", "The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],
            description: r.a("autoIndent", "Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")
        })),
        automaticLayout: I(new g(10, "automaticLayout", !1)),
        autoSurround: I(new w(11, "autoSurround", "languageDefined", ["languageDefined", "quotes", "brackets", "never"], {
            enumDescriptions: [r.a("editor.autoSurround.languageDefined", "Use language configurations to determine when to automatically surround selections."), r.a("editor.autoSurround.quotes", "Surround with quotes but not brackets."), r.a("editor.autoSurround.brackets", "Surround with brackets but not quotes."), ""],
            description: r.a("autoSurround", "Controls whether the editor should automatically surround selections when typing quotes or brackets.")
        })),
        bracketPairColorization: I(new class extends c {
            constructor() {
                var e = {
                    enabled: N.bracketPairColorizationOptions.enabled
                };
                super(12, "bracketPairColorization", e, {
                    "editor.bracketPairColorization.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("bracketPairColorization.enabled", "Controls whether bracket pair colorization is enabled or not. Use 'workbench.colorCustomizations' to override the bracket highlight colors.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled)
                } : this.defaultValue
            }
        }),
        bracketPairGuides: I(new class extends c {
            constructor() {
                var e = {
                    bracketPairs: !1,
                    bracketPairsHorizontal: "active",
                    highlightActiveBracketPair: !0,
                    indentation: !0,
                    highlightActiveIndentation: !0
                };
                super(13, "guides", e, {
                    "editor.guides.bracketPairs": {
                        type: ["boolean", "string"],
                        enum: [!0, "active", !1],
                        enumDescriptions: [r.a("editor.guides.bracketPairs.true", "Enables bracket pair guides."), r.a("editor.guides.bracketPairs.active", "Enables bracket pair guides only for the active bracket pair."), r.a("editor.guides.bracketPairs.false", "Disables bracket pair guides.")],
                        default: e.bracketPairs,
                        description: r.a("editor.guides.bracketPairs", "Controls whether bracket pair guides are enabled or not.")
                    },
                    "editor.guides.bracketPairsHorizontal": {
                        type: ["boolean", "string"],
                        enum: [!0, "active", !1],
                        enumDescriptions: [r.a("editor.guides.bracketPairsHorizontal.true", "Enables horizontal guides as addition to vertical bracket pair guides."), r.a("editor.guides.bracketPairsHorizontal.active", "Enables horizontal guides only for the active bracket pair."), r.a("editor.guides.bracketPairsHorizontal.false", "Disables horizontal bracket pair guides.")],
                        default: e.bracketPairsHorizontal,
                        description: r.a("editor.guides.bracketPairsHorizontal", "Controls whether horizontal bracket pair guides are enabled or not.")
                    },
                    "editor.guides.highlightActiveBracketPair": {
                        type: "boolean",
                        default: e.highlightActiveBracketPair,
                        description: r.a("editor.guides.highlightActiveBracketPair", "Controls whether bracket pair guides are enabled or not.")
                    },
                    "editor.guides.indentation": {
                        type: "boolean",
                        default: e.indentation,
                        description: r.a("editor.guides.indentation", "Controls whether the editor should render indent guides.")
                    },
                    "editor.guides.highlightActiveIndentation": {
                        type: "boolean",
                        default: e.highlightActiveIndentation,
                        description: r.a("editor.guides.highlightActiveIndentation", "Controls whether the editor should highlight the active indent guide.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    bracketPairs: O(e.bracketPairs, this.defaultValue.bracketPairs, [!0, !1, "active"]),
                    bracketPairsHorizontal: O(e.bracketPairsHorizontal, this.defaultValue.bracketPairsHorizontal, [!0, !1, "active"]),
                    highlightActiveBracketPair: p(e.highlightActiveBracketPair, this.defaultValue.highlightActiveBracketPair),
                    indentation: p(e.indentation, this.defaultValue.indentation),
                    highlightActiveIndentation: p(e.highlightActiveIndentation, this.defaultValue.highlightActiveIndentation)
                } : this.defaultValue
            }
        }),
        stickyTabStops: I(new g(103, "stickyTabStops", !1, {
            description: r.a("stickyTabStops", "Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")
        })),
        codeLens: I(new g(14, "codeLens", !0, {
            description: r.a("codeLens", "Controls whether the editor shows CodeLens.")
        })),
        codeLensFontFamily: I(new b(15, "codeLensFontFamily", "", {
            description: r.a("codeLensFontFamily", "Controls the font family for CodeLens.")
        })),
        codeLensFontSize: I(new m(16, "codeLensFontSize", 0, 0, 100, {
            type: "number",
            default: 0,
            minimum: 0,
            maximum: 100,
            markdownDescription: r.a("codeLensFontSize", "Controls the font size in pixels for CodeLens. When set to `0`, the 90% of `#editor.fontSize#` is used.")
        })),
        colorDecorators: I(new g(17, "colorDecorators", !0, {
            description: r.a("colorDecorators", "Controls whether the editor should render the inline color decorators and color picker.")
        })),
        columnSelection: I(new g(18, "columnSelection", !1, {
            description: r.a("columnSelection", "Enable that the selection with the mouse and keys is doing column selection.")
        })),
        comments: I(new class extends c {
            constructor() {
                var e = {
                    insertSpace: !0,
                    ignoreEmptyLines: !0
                };
                super(19, "comments", e, {
                    "editor.comments.insertSpace": {
                        type: "boolean",
                        default: e.insertSpace,
                        description: r.a("comments.insertSpace", "Controls whether a space character is inserted when commenting.")
                    },
                    "editor.comments.ignoreEmptyLines": {
                        type: "boolean",
                        default: e.ignoreEmptyLines,
                        description: r.a("comments.ignoreEmptyLines", "Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    insertSpace: p(e.insertSpace, this.defaultValue.insertSpace),
                    ignoreEmptyLines: p(e.ignoreEmptyLines, this.defaultValue.ignoreEmptyLines)
                } : this.defaultValue
            }
        }),
        contextmenu: I(new g(20, "contextmenu", !0)),
        copyWithSyntaxHighlighting: I(new g(21, "copyWithSyntaxHighlighting", !0, {
            description: r.a("copyWithSyntaxHighlighting", "Controls whether syntax highlighting should be copied into the clipboard.")
        })),
        cursorBlinking: I(new y(22, "cursorBlinking", 1, "blink", ["blink", "smooth", "phase", "expand", "solid"], (function(e) {
            switch (e) {
                case "blink":
                    return 1;
                case "smooth":
                    return 2;
                case "phase":
                    return 3;
                case "expand":
                    return 4;
                case "solid":
                    return 5
            }
        }), {
            description: r.a("cursorBlinking", "Control the cursor animation style.")
        })),
        cursorSmoothCaretAnimation: I(new g(23, "cursorSmoothCaretAnimation", !1, {
            description: r.a("cursorSmoothCaretAnimation", "Controls whether the smooth caret animation should be enabled.")
        })),
        cursorStyle: I(new y(24, "cursorStyle", n.Line, "line", ["line", "block", "underline", "line-thin", "block-outline", "underline-thin"], (function(e) {
            switch (e) {
                case "line":
                    return n.Line;
                case "block":
                    return n.Block;
                case "underline":
                    return n.Underline;
                case "line-thin":
                    return n.LineThin;
                case "block-outline":
                    return n.BlockOutline;
                case "underline-thin":
                    return n.UnderlineThin
            }
        }), {
            description: r.a("cursorStyle", "Controls the cursor style.")
        })),
        cursorSurroundingLines: I(new m(25, "cursorSurroundingLines", 0, 0, 1073741824, {
            description: r.a("cursorSurroundingLines", "Controls the minimal number of visible leading and trailing lines surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")
        })),
        cursorSurroundingLinesStyle: I(new w(26, "cursorSurroundingLinesStyle", "default", ["default", "all"], {
            enumDescriptions: [r.a("cursorSurroundingLinesStyle.default", "`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."), r.a("cursorSurroundingLinesStyle.all", "`cursorSurroundingLines` is enforced always.")],
            description: r.a("cursorSurroundingLinesStyle", "Controls when `cursorSurroundingLines` should be enforced.")
        })),
        cursorWidth: I(new m(27, "cursorWidth", 0, 0, 1073741824, {
            markdownDescription: r.a("cursorWidth", "Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")
        })),
        disableLayerHinting: I(new g(28, "disableLayerHinting", !1)),
        disableMonospaceOptimizations: I(new g(29, "disableMonospaceOptimizations", !1)),
        domReadOnly: I(new g(30, "domReadOnly", !1)),
        dragAndDrop: I(new g(31, "dragAndDrop", !0, {
            description: r.a("dragAndDrop", "Controls whether the editor should allow moving selections via drag and drop.")
        })),
        emptySelectionClipboard: I(new class extends g {
            constructor() {
                super(32, "emptySelectionClipboard", !0, {
                    description: r.a("emptySelectionClipboard", "Controls whether copying without a selection copies the current line.")
                })
            }
            compute(e, t, i) {
                return i && e.emptySelectionClipboard
            }
        }),
        extraEditorClassName: I(new b(33, "extraEditorClassName", "")),
        fastScrollSensitivity: I(new v(34, "fastScrollSensitivity", 5, e => e <= 0 ? 5 : e, {
            markdownDescription: r.a("fastScrollSensitivity", "Scrolling speed multiplier when pressing `Alt`.")
        })),
        find: I(new class extends c {
            constructor() {
                var e = {
                    cursorMoveOnType: !0,
                    seedSearchStringFromSelection: "always",
                    autoFindInSelection: "never",
                    globalFindClipboard: !1,
                    addExtraSpaceOnTop: !0,
                    loop: !0
                };
                super(35, "find", e, {
                    "editor.find.cursorMoveOnType": {
                        type: "boolean",
                        default: e.cursorMoveOnType,
                        description: r.a("find.cursorMoveOnType", "Controls whether the cursor should jump to find matches while typing.")
                    },
                    "editor.find.seedSearchStringFromSelection": {
                        type: "string",
                        enum: ["never", "always", "selection"],
                        default: e.seedSearchStringFromSelection,
                        enumDescriptions: [r.a("editor.find.seedSearchStringFromSelection.never", "Never seed search string from the editor selection."), r.a("editor.find.seedSearchStringFromSelection.always", "Always seed search string from the editor selection, including word at cursor position."), r.a("editor.find.seedSearchStringFromSelection.selection", "Only seed search string from the editor selection.")],
                        description: r.a("find.seedSearchStringFromSelection", "Controls whether the search string in the Find Widget is seeded from the editor selection.")
                    },
                    "editor.find.autoFindInSelection": {
                        type: "string",
                        enum: ["never", "always", "multiline"],
                        default: e.autoFindInSelection,
                        enumDescriptions: [r.a("editor.find.autoFindInSelection.never", "Never turn on Find in Selection automatically (default)."), r.a("editor.find.autoFindInSelection.always", "Always turn on Find in Selection automatically."), r.a("editor.find.autoFindInSelection.multiline", "Turn on Find in Selection automatically when multiple lines of content are selected.")],
                        description: r.a("find.autoFindInSelection", "Controls the condition for turning on Find in Selection automatically.")
                    },
                    "editor.find.globalFindClipboard": {
                        type: "boolean",
                        default: e.globalFindClipboard,
                        description: r.a("find.globalFindClipboard", "Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),
                        included: o.f
                    },
                    "editor.find.addExtraSpaceOnTop": {
                        type: "boolean",
                        default: e.addExtraSpaceOnTop,
                        description: r.a("find.addExtraSpaceOnTop", "Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")
                    },
                    "editor.find.loop": {
                        type: "boolean",
                        default: e.loop,
                        description: r.a("find.loop", "Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")
                    }
                })
            }
            validate(e) {
                if (!e || "object" != typeof e) return this.defaultValue;
                var t = e;
                return {
                    cursorMoveOnType: p(t.cursorMoveOnType, this.defaultValue.cursorMoveOnType),
                    seedSearchStringFromSelection: "boolean" == typeof e.seedSearchStringFromSelection ? e.seedSearchStringFromSelection ? "always" : "never" : _(t.seedSearchStringFromSelection, this.defaultValue.seedSearchStringFromSelection, ["never", "always", "selection"]),
                    autoFindInSelection: "boolean" == typeof e.autoFindInSelection ? e.autoFindInSelection ? "always" : "never" : _(t.autoFindInSelection, this.defaultValue.autoFindInSelection, ["never", "always", "multiline"]),
                    globalFindClipboard: p(t.globalFindClipboard, this.defaultValue.globalFindClipboard),
                    addExtraSpaceOnTop: p(t.addExtraSpaceOnTop, this.defaultValue.addExtraSpaceOnTop),
                    loop: p(t.loop, this.defaultValue.loop)
                }
            }
        }),
        fixedOverflowWidgets: I(new g(36, "fixedOverflowWidgets", !1)),
        folding: I(new g(37, "folding", !0, {
            description: r.a("folding", "Controls whether the editor has code folding enabled.")
        })),
        foldingStrategy: I(new w(38, "foldingStrategy", "auto", ["auto", "indentation"], {
            enumDescriptions: [r.a("foldingStrategy.auto", "Use a language-specific folding strategy if available, else the indentation-based one."), r.a("foldingStrategy.indentation", "Use the indentation-based folding strategy.")],
            description: r.a("foldingStrategy", "Controls the strategy for computing folding ranges.")
        })),
        foldingHighlight: I(new g(39, "foldingHighlight", !0, {
            description: r.a("foldingHighlight", "Controls whether the editor should highlight folded ranges.")
        })),
        foldingImportsByDefault: I(new g(40, "foldingImportsByDefault", !1, {
            description: r.a("foldingImportsByDefault", "Controls whether the editor automatically collapses import ranges.")
        })),
        unfoldOnClickAfterEndOfLine: I(new g(41, "unfoldOnClickAfterEndOfLine", !1, {
            description: r.a("unfoldOnClickAfterEndOfLine", "Controls whether clicking on the empty content after a folded line will unfold the line.")
        })),
        fontFamily: I(new b(42, "fontFamily", E.fontFamily, {
            description: r.a("fontFamily", "Controls the font family.")
        })),
        fontInfo: I(new class extends h {
            constructor() {
                super(43)
            }
            compute(e, t, i) {
                return e.fontInfo
            }
        }),
        fontLigatures2: I(new C),
        fontSize: I(new class extends u {
            constructor() {
                super(45, "fontSize", E.fontSize, {
                    type: "number",
                    minimum: 6,
                    maximum: 100,
                    default: E.fontSize,
                    description: r.a("fontSize", "Controls the font size in pixels.")
                })
            }
            validate(e) {
                return 0 === (e = v.float(e, this.defaultValue)) ? E.fontSize : v.clamp(e, 6, 100)
            }
            compute(e, t, i) {
                return e.fontInfo.fontSize
            }
        }),
        fontWeight: I(new x),
        formatOnPaste: I(new g(47, "formatOnPaste", !1, {
            description: r.a("formatOnPaste", "Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")
        })),
        formatOnType: I(new g(48, "formatOnType", !1, {
            description: r.a("formatOnType", "Controls whether the editor should automatically format the line after typing.")
        })),
        glyphMargin: I(new g(49, "glyphMargin", !0, {
            description: r.a("glyphMargin", "Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")
        })),
        gotoLocation: I(new class extends c {
            constructor() {
                var e = {
                        multiple: "peek",
                        multipleDefinitions: "peek",
                        multipleTypeDefinitions: "peek",
                        multipleDeclarations: "peek",
                        multipleImplementations: "peek",
                        multipleReferences: "peek",
                        alternativeDefinitionCommand: "editor.action.goToReferences",
                        alternativeTypeDefinitionCommand: "editor.action.goToReferences",
                        alternativeDeclarationCommand: "editor.action.goToReferences",
                        alternativeImplementationCommand: "",
                        alternativeReferenceCommand: ""
                    },
                    t = {
                        type: "string",
                        enum: ["peek", "gotoAndPeek", "goto"],
                        default: e.multiple,
                        enumDescriptions: [r.a("editor.gotoLocation.multiple.peek", "Show peek view of the results (default)"), r.a("editor.gotoLocation.multiple.gotoAndPeek", "Go to the primary result and show a peek view"), r.a("editor.gotoLocation.multiple.goto", "Go to the primary result and enable peek-less navigation to others")]
                    },
                    i = ["", "editor.action.referenceSearch.trigger", "editor.action.goToReferences", "editor.action.peekImplementation", "editor.action.goToImplementation", "editor.action.peekTypeDefinition", "editor.action.goToTypeDefinition", "editor.action.peekDeclaration", "editor.action.revealDeclaration", "editor.action.peekDefinition", "editor.action.revealDefinitionAside", "editor.action.revealDefinition"];
                super(50, "gotoLocation", e, {
                    "editor.gotoLocation.multiple": {
                        deprecationMessage: r.a("editor.gotoLocation.multiple.deprecated", "This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")
                    },
                    "editor.gotoLocation.multipleDefinitions": Object.assign({
                        description: r.a("editor.editor.gotoLocation.multipleDefinitions", "Controls the behavior the 'Go to Definition'-command when multiple target locations exist.")
                    }, t),
                    "editor.gotoLocation.multipleTypeDefinitions": Object.assign({
                        description: r.a("editor.editor.gotoLocation.multipleTypeDefinitions", "Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.")
                    }, t),
                    "editor.gotoLocation.multipleDeclarations": Object.assign({
                        description: r.a("editor.editor.gotoLocation.multipleDeclarations", "Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.")
                    }, t),
                    "editor.gotoLocation.multipleImplementations": Object.assign({
                        description: r.a("editor.editor.gotoLocation.multipleImplemenattions", "Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.")
                    }, t),
                    "editor.gotoLocation.multipleReferences": Object.assign({
                        description: r.a("editor.editor.gotoLocation.multipleReferences", "Controls the behavior the 'Go to References'-command when multiple target locations exist.")
                    }, t),
                    "editor.gotoLocation.alternativeDefinitionCommand": {
                        type: "string",
                        default: e.alternativeDefinitionCommand,
                        enum: i,
                        description: r.a("alternativeDefinitionCommand", "Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")
                    },
                    "editor.gotoLocation.alternativeTypeDefinitionCommand": {
                        type: "string",
                        default: e.alternativeTypeDefinitionCommand,
                        enum: i,
                        description: r.a("alternativeTypeDefinitionCommand", "Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")
                    },
                    "editor.gotoLocation.alternativeDeclarationCommand": {
                        type: "string",
                        default: e.alternativeDeclarationCommand,
                        enum: i,
                        description: r.a("alternativeDeclarationCommand", "Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")
                    },
                    "editor.gotoLocation.alternativeImplementationCommand": {
                        type: "string",
                        default: e.alternativeImplementationCommand,
                        enum: i,
                        description: r.a("alternativeImplementationCommand", "Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")
                    },
                    "editor.gotoLocation.alternativeReferenceCommand": {
                        type: "string",
                        default: e.alternativeReferenceCommand,
                        enum: i,
                        description: r.a("alternativeReferenceCommand", "Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")
                    }
                })
            }
            validate(e) {
                if (!e || "object" != typeof e) return this.defaultValue;
                var t = e;
                return {
                    multiple: _(t.multiple, this.defaultValue.multiple, ["peek", "gotoAndPeek", "goto"]),
                    multipleDefinitions: null !== (e = t.multipleDefinitions) && void 0 !== e ? e : _(t.multipleDefinitions, "peek", ["peek", "gotoAndPeek", "goto"]),
                    multipleTypeDefinitions: null !== (e = t.multipleTypeDefinitions) && void 0 !== e ? e : _(t.multipleTypeDefinitions, "peek", ["peek", "gotoAndPeek", "goto"]),
                    multipleDeclarations: null !== (e = t.multipleDeclarations) && void 0 !== e ? e : _(t.multipleDeclarations, "peek", ["peek", "gotoAndPeek", "goto"]),
                    multipleImplementations: null !== (e = t.multipleImplementations) && void 0 !== e ? e : _(t.multipleImplementations, "peek", ["peek", "gotoAndPeek", "goto"]),
                    multipleReferences: null !== (e = t.multipleReferences) && void 0 !== e ? e : _(t.multipleReferences, "peek", ["peek", "gotoAndPeek", "goto"]),
                    alternativeDefinitionCommand: b.string(t.alternativeDefinitionCommand, this.defaultValue.alternativeDefinitionCommand),
                    alternativeTypeDefinitionCommand: b.string(t.alternativeTypeDefinitionCommand, this.defaultValue.alternativeTypeDefinitionCommand),
                    alternativeDeclarationCommand: b.string(t.alternativeDeclarationCommand, this.defaultValue.alternativeDeclarationCommand),
                    alternativeImplementationCommand: b.string(t.alternativeImplementationCommand, this.defaultValue.alternativeImplementationCommand),
                    alternativeReferenceCommand: b.string(t.alternativeReferenceCommand, this.defaultValue.alternativeReferenceCommand)
                }
            }
        }),
        hideCursorInOverviewRuler: I(new g(51, "hideCursorInOverviewRuler", !1, {
            description: r.a("hideCursorInOverviewRuler", "Controls whether the cursor should be hidden in the overview ruler.")
        })),
        hover: I(new class extends c {
            constructor() {
                var e = {
                    enabled: !0,
                    delay: 300,
                    sticky: !0,
                    above: !0
                };
                super(52, "hover", e, {
                    "editor.hover.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("hover.enabled", "Controls whether the hover is shown.")
                    },
                    "editor.hover.delay": {
                        type: "number",
                        default: e.delay,
                        description: r.a("hover.delay", "Controls the delay in milliseconds after which the hover is shown.")
                    },
                    "editor.hover.sticky": {
                        type: "boolean",
                        default: e.sticky,
                        description: r.a("hover.sticky", "Controls whether the hover should remain visible when mouse is moved over it.")
                    },
                    "editor.hover.above": {
                        type: "boolean",
                        default: e.above,
                        description: r.a("hover.above", "Prefer showing hovers above the line, if there's space.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled),
                    delay: m.clampedInt(e.delay, this.defaultValue.delay, 0, 1e4),
                    sticky: p(e.sticky, this.defaultValue.sticky),
                    above: p(e.above, this.defaultValue.above)
                } : this.defaultValue
            }
        }),
        inDiffEditor: I(new g(53, "inDiffEditor", !1)),
        letterSpacing: I(new v(55, "letterSpacing", E.letterSpacing, e => v.clamp(e, -5, 20), {
            description: r.a("letterSpacing", "Controls the letter spacing in pixels.")
        })),
        lightbulb: I(new class extends c {
            constructor() {
                var e = {
                    enabled: !0
                };
                super(56, "lightbulb", e, {
                    "editor.lightbulb.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("codeActions", "Enables the code action lightbulb in the editor.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled)
                } : this.defaultValue
            }
        }),
        lineDecorationsWidth: I(new u(57, "lineDecorationsWidth", 10)),
        lineHeight: I(new class extends v {
            constructor() {
                super(58, "lineHeight", E.lineHeight, e => v.clamp(e, 0, 150), {
                    markdownDescription: r.a("lineHeight", "Controls the line height. \n - Use 0 to automatically compute the line height from the font size.\n - Values between 0 and 8 will be used as a multiplier with the font size.\n - Values greater than or equal to 8 will be used as effective values.")
                })
            }
            compute(e, t, i) {
                return e.fontInfo.lineHeight
            }
        }),
        lineNumbers: I(new class extends c {
            constructor() {
                super(59, "lineNumbers", {
                    renderType: 1,
                    renderFn: null
                }, {
                    type: "string",
                    enum: ["off", "on", "relative", "interval"],
                    enumDescriptions: [r.a("lineNumbers.off", "Line numbers are not rendered."), r.a("lineNumbers.on", "Line numbers are rendered as absolute number."), r.a("lineNumbers.relative", "Line numbers are rendered as distance in lines to cursor position."), r.a("lineNumbers.interval", "Line numbers are rendered every 10 lines.")],
                    default: "on",
                    description: r.a("lineNumbers", "Controls the display of line numbers.")
                })
            }
            validate(e) {
                let t = this.defaultValue.renderType,
                    i = this.defaultValue.renderFn;
                return void 0 !== e && ("function" == typeof e ? (t = 4, i = e) : t = "interval" === e ? 3 : "relative" === e ? 2 : "on" === e ? 1 : 0), {
                    renderType: t,
                    renderFn: i
                }
            }
        }),
        lineNumbersMinChars: I(new m(60, "lineNumbersMinChars", 5, 1, 300)),
        linkedEditing: I(new g(61, "linkedEditing", !1, {
            description: r.a("linkedEditing", "Controls whether the editor has linked editing enabled. Depending on the language, related symbols, e.g. HTML tags, are updated while editing.")
        })),
        links: I(new g(62, "links", !0, {
            description: r.a("links", "Controls whether the editor should detect links and make them clickable.")
        })),
        matchBrackets: I(new w(63, "matchBrackets", "always", ["always", "near", "never"], {
            description: r.a("matchBrackets", "Highlight matching brackets.")
        })),
        minimap: I(new class extends c {
            constructor() {
                var e = {
                    enabled: !0,
                    size: "proportional",
                    side: "right",
                    showSlider: "mouseover",
                    renderCharacters: !0,
                    maxColumn: 120,
                    scale: 1
                };
                super(64, "minimap", e, {
                    "editor.minimap.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("minimap.enabled", "Controls whether the minimap is shown.")
                    },
                    "editor.minimap.size": {
                        type: "string",
                        enum: ["proportional", "fill", "fit"],
                        enumDescriptions: [r.a("minimap.size.proportional", "The minimap has the same size as the editor contents (and might scroll)."), r.a("minimap.size.fill", "The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."), r.a("minimap.size.fit", "The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],
                        default: e.size,
                        description: r.a("minimap.size", "Controls the size of the minimap.")
                    },
                    "editor.minimap.side": {
                        type: "string",
                        enum: ["left", "right"],
                        default: e.side,
                        description: r.a("minimap.side", "Controls the side where to render the minimap.")
                    },
                    "editor.minimap.showSlider": {
                        type: "string",
                        enum: ["always", "mouseover"],
                        default: e.showSlider,
                        description: r.a("minimap.showSlider", "Controls when the minimap slider is shown.")
                    },
                    "editor.minimap.scale": {
                        type: "number",
                        default: e.scale,
                        minimum: 1,
                        maximum: 3,
                        enum: [1, 2, 3],
                        description: r.a("minimap.scale", "Scale of content drawn in the minimap: 1, 2 or 3.")
                    },
                    "editor.minimap.renderCharacters": {
                        type: "boolean",
                        default: e.renderCharacters,
                        description: r.a("minimap.renderCharacters", "Render the actual characters on a line as opposed to color blocks.")
                    },
                    "editor.minimap.maxColumn": {
                        type: "number",
                        default: e.maxColumn,
                        description: r.a("minimap.maxColumn", "Limit the width of the minimap to render at most a certain number of columns.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled),
                    size: _(e.size, this.defaultValue.size, ["proportional", "fill", "fit"]),
                    side: _(e.side, this.defaultValue.side, ["right", "left"]),
                    showSlider: _(e.showSlider, this.defaultValue.showSlider, ["always", "mouseover"]),
                    renderCharacters: p(e.renderCharacters, this.defaultValue.renderCharacters),
                    scale: m.clampedInt(e.scale, 1, 1, 3),
                    maxColumn: m.clampedInt(e.maxColumn, this.defaultValue.maxColumn, 1, 1e4)
                } : this.defaultValue
            }
        }),
        mouseStyle: I(new w(65, "mouseStyle", "text", ["text", "default", "copy"])),
        mouseWheelScrollSensitivity: I(new v(66, "mouseWheelScrollSensitivity", 1, e => 0 === e ? 1 : e, {
            markdownDescription: r.a("mouseWheelScrollSensitivity", "A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")
        })),
        mouseWheelZoom: I(new g(67, "mouseWheelZoom", !1, {
            markdownDescription: r.a("mouseWheelZoom", "Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")
        })),
        multiCursorMergeOverlapping: I(new g(68, "multiCursorMergeOverlapping", !0, {
            description: r.a("multiCursorMergeOverlapping", "Merge multiple cursors when they are overlapping.")
        })),
        multiCursorModifier: I(new y(69, "multiCursorModifier", "altKey", "alt", ["ctrlCmd", "alt"], (function(e) {
            return "ctrlCmd" === e ? o.f ? "metaKey" : "ctrlKey" : "altKey"
        }), {
            markdownEnumDescriptions: [r.a("multiCursorModifier.ctrlCmd", "Maps to `Control` on Windows and Linux and to `Command` on macOS."), r.a("multiCursorModifier.alt", "Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],
            markdownDescription: r.a({
                key: "multiCursorModifier",
                comment: ["- `ctrlCmd` refers to a value the setting can take and should not be localized.", "- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]
            }, "The modifier to be used to add multiple cursors with the mouse. The 前往 Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")
        })),
        multiCursorPaste: I(new w(70, "multiCursorPaste", "spread", ["spread", "full"], {
            markdownEnumDescriptions: [r.a("multiCursorPaste.spread", "Each cursor pastes a single line of the text."), r.a("multiCursorPaste.full", "Each cursor pastes the full text.")],
            markdownDescription: r.a("multiCursorPaste", "Controls pasting when the line count of the pasted text matches the cursor count.")
        })),
        occurrencesHighlight: I(new g(71, "occurrencesHighlight", !0, {
            description: r.a("occurrencesHighlight", "Controls whether the editor should highlight semantic symbol occurrences.")
        })),
        overviewRulerBorder: I(new g(72, "overviewRulerBorder", !0, {
            description: r.a("overviewRulerBorder", "Controls whether a border should be drawn around the overview ruler.")
        })),
        overviewRulerLanes: I(new m(73, "overviewRulerLanes", 3, 0, 3)),
        padding: I(new class extends c {
            constructor() {
                super(74, "padding", {
                    top: 0,
                    bottom: 0
                }, {
                    "editor.padding.top": {
                        type: "number",
                        default: 0,
                        minimum: 0,
                        maximum: 1e3,
                        description: r.a("padding.top", "Controls the amount of space between the top edge of the editor and the first line.")
                    },
                    "editor.padding.bottom": {
                        type: "number",
                        default: 0,
                        minimum: 0,
                        maximum: 1e3,
                        description: r.a("padding.bottom", "Controls the amount of space between the bottom edge of the editor and the last line.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    top: m.clampedInt(e.top, 0, 0, 1e3),
                    bottom: m.clampedInt(e.bottom, 0, 0, 1e3)
                } : this.defaultValue
            }
        }),
        parameterHints: I(new class extends c {
            constructor() {
                var e = {
                    enabled: !0,
                    cycle: !1
                };
                super(75, "parameterHints", e, {
                    "editor.parameterHints.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("parameterHints.enabled", "Enables a pop-up that shows parameter documentation and type information as you type.")
                    },
                    "editor.parameterHints.cycle": {
                        type: "boolean",
                        default: e.cycle,
                        description: r.a("parameterHints.cycle", "Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled),
                    cycle: p(e.cycle, this.defaultValue.cycle)
                } : this.defaultValue
            }
        }),
        peekWidgetDefaultFocus: I(new w(76, "peekWidgetDefaultFocus", "tree", ["tree", "editor"], {
            enumDescriptions: [r.a("peekWidgetDefaultFocus.tree", "Focus the tree when opening peek"), r.a("peekWidgetDefaultFocus.editor", "Focus the editor when opening peek")],
            description: r.a("peekWidgetDefaultFocus", "Controls whether to focus the inline editor or the tree in the peek widget.")
        })),
        definitionLinkOpensInPeek: I(new g(77, "definitionLinkOpensInPeek", !1, {
            description: r.a("definitionLinkOpensInPeek", "Controls whether the 前往 Definition mouse gesture always opens the peek widget.")
        })),
        quickSuggestions: I(new class extends c {
            constructor() {
                var e = {
                    other: !0,
                    comments: !1,
                    strings: !1
                };
                super(78, "quickSuggestions", e, {
                    anyOf: [{
                        type: "boolean"
                    }, {
                        type: "object",
                        properties: {
                            strings: {
                                type: "boolean",
                                default: e.strings,
                                description: r.a("quickSuggestions.strings", "Enable quick suggestions inside strings.")
                            },
                            comments: {
                                type: "boolean",
                                default: e.comments,
                                description: r.a("quickSuggestions.comments", "Enable quick suggestions inside comments.")
                            },
                            other: {
                                type: "boolean",
                                default: e.other,
                                description: r.a("quickSuggestions.other", "Enable quick suggestions outside of strings and comments.")
                            }
                        }
                    }],
                    default: e,
                    description: r.a("quickSuggestions", "Controls whether suggestions should automatically show up while typing.")
                }), this.defaultValue = e
            }
            validate(e) {
                return "boolean" == typeof e ? e : e && "object" == typeof e ? !!((e = {
                    other: p((e = e).other, this.defaultValue.other),
                    comments: p(e.comments, this.defaultValue.comments),
                    strings: p(e.strings, this.defaultValue.strings)
                }).other && e.comments && e.strings) || !!(e.other || e.comments || e.strings) && e : this.defaultValue
            }
        }),
        quickSuggestionsDelay: I(new m(79, "quickSuggestionsDelay", 10, 0, 1073741824, {
            description: r.a("quickSuggestionsDelay", "Controls the delay in milliseconds after which quick suggestions will show up.")
        })),
        readOnly: I(new g(80, "readOnly", !1)),
        renameOnType: I(new g(81, "renameOnType", !1, {
            description: r.a("renameOnType", "Controls whether the editor auto renames on type."),
            markdownDeprecationMessage: r.a("renameOnTypeDeprecate", "Deprecated, use `editor.linkedEditing` instead.")
        })),
        renderControlCharacters: I(new g(82, "renderControlCharacters", !0, {
            description: r.a("renderControlCharacters", "Controls whether the editor should render control characters."),
            restricted: !0
        })),
        renderFinalNewline: I(new g(83, "renderFinalNewline", !0, {
            description: r.a("renderFinalNewline", "Render last line number when the file ends with a newline.")
        })),
        renderLineHighlight: I(new w(84, "renderLineHighlight", "line", ["none", "gutter", "line", "all"], {
            enumDescriptions: ["", "", "", r.a("renderLineHighlight.all", "Highlights both the gutter and the current line.")],
            description: r.a("renderLineHighlight", "Controls how the editor should render the current line highlight.")
        })),
        renderLineHighlightOnlyWhenFocus: I(new g(85, "renderLineHighlightOnlyWhenFocus", !1, {
            description: r.a("renderLineHighlightOnlyWhenFocus", "Controls if the editor should render the current line highlight only when the editor is focused.")
        })),
        renderValidationDecorations: I(new w(86, "renderValidationDecorations", "editable", ["editable", "on", "off"])),
        renderWhitespace: I(new w(87, "renderWhitespace", "selection", ["none", "boundary", "selection", "trailing", "all"], {
            enumDescriptions: ["", r.a("renderWhitespace.boundary", "Render whitespace characters except for single spaces between words."), r.a("renderWhitespace.selection", "Render whitespace characters only on selected text."), r.a("renderWhitespace.trailing", "Render only trailing whitespace characters."), ""],
            description: r.a("renderWhitespace", "Controls how the editor should render whitespace characters.")
        })),
        revealHorizontalRightPadding: I(new m(88, "revealHorizontalRightPadding", 30, 0, 1e3)),
        roundedSelection: I(new g(89, "roundedSelection", !0, {
            description: r.a("roundedSelection", "Controls whether selections should have rounded corners.")
        })),
        rulers: I(new class extends c {
            constructor() {
                var e = [],
                    t = {
                        type: "number",
                        description: r.a("rulers.size", "Number of monospace characters at which this editor ruler will render.")
                    };
                super(90, "rulers", e, {
                    type: "array",
                    items: {
                        anyOf: [t, {
                            type: ["object"],
                            properties: {
                                column: t,
                                color: {
                                    type: "string",
                                    description: r.a("rulers.color", "Color of this editor ruler."),
                                    format: "color-hex"
                                }
                            }
                        }]
                    },
                    default: e,
                    description: r.a("rulers", "Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")
                })
            }
            validate(e) {
                if (Array.isArray(e)) {
                    let i = [];
                    for (var t of e) "number" == typeof t ? i.push({
                        column: m.clampedInt(t, 0, 0, 1e4),
                        color: null
                    }) : t && "object" == typeof t && (t = t, i.push({
                        column: m.clampedInt(t.column, 0, 0, 1e4),
                        color: t.color
                    }));
                    return i.sort((e, t) => e.column - t.column), i
                }
                return this.defaultValue
            }
        }),
        scrollbar: I(new class extends c {
            constructor() {
                var e = {
                    vertical: 1,
                    horizontal: 1,
                    arrowSize: 11,
                    useShadows: !0,
                    verticalHasArrows: !1,
                    horizontalHasArrows: !1,
                    horizontalScrollbarSize: 12,
                    horizontalSliderSize: 12,
                    verticalScrollbarSize: 14,
                    verticalSliderSize: 14,
                    handleMouseWheel: !0,
                    alwaysConsumeMouseWheel: !0,
                    scrollByPage: !1
                };
                super(91, "scrollbar", e, {
                    "editor.scrollbar.vertical": {
                        type: "string",
                        enum: ["auto", "visible", "hidden"],
                        enumDescriptions: [r.a("scrollbar.vertical.auto", "The vertical scrollbar will be visible only when necessary."), r.a("scrollbar.vertical.visible", "The vertical scrollbar will always be visible."), r.a("scrollbar.vertical.fit", "The vertical scrollbar will always be hidden.")],
                        default: "auto",
                        description: r.a("scrollbar.vertical", "Controls the visibility of the vertical scrollbar.")
                    },
                    "editor.scrollbar.horizontal": {
                        type: "string",
                        enum: ["auto", "visible", "hidden"],
                        enumDescriptions: [r.a("scrollbar.horizontal.auto", "The horizontal scrollbar will be visible only when necessary."), r.a("scrollbar.horizontal.visible", "The horizontal scrollbar will always be visible."), r.a("scrollbar.horizontal.fit", "The horizontal scrollbar will always be hidden.")],
                        default: "auto",
                        description: r.a("scrollbar.horizontal", "Controls the visibility of the horizontal scrollbar.")
                    },
                    "editor.scrollbar.verticalScrollbarSize": {
                        type: "number",
                        default: e.verticalScrollbarSize,
                        description: r.a("scrollbar.verticalScrollbarSize", "The width of the vertical scrollbar.")
                    },
                    "editor.scrollbar.horizontalScrollbarSize": {
                        type: "number",
                        default: e.horizontalScrollbarSize,
                        description: r.a("scrollbar.horizontalScrollbarSize", "The height of the horizontal scrollbar.")
                    },
                    "editor.scrollbar.scrollByPage": {
                        type: "boolean",
                        default: e.scrollByPage,
                        description: r.a("scrollbar.scrollByPage", "Controls whether clicks scroll by page or jump to click position.")
                    }
                })
            }
            validate(e) {
                if (!e || "object" != typeof e) return this.defaultValue;
                var t = e,
                    i = m.clampedInt(t.horizontalScrollbarSize, this.defaultValue.horizontalScrollbarSize, 0, 1e3);
                e = m.clampedInt(t.verticalScrollbarSize, this.defaultValue.verticalScrollbarSize, 0, 1e3);
                return {
                    arrowSize: m.clampedInt(t.arrowSize, this.defaultValue.arrowSize, 0, 1e3),
                    vertical: L(t.vertical, this.defaultValue.vertical),
                    horizontal: L(t.horizontal, this.defaultValue.horizontal),
                    useShadows: p(t.useShadows, this.defaultValue.useShadows),
                    verticalHasArrows: p(t.verticalHasArrows, this.defaultValue.verticalHasArrows),
                    horizontalHasArrows: p(t.horizontalHasArrows, this.defaultValue.horizontalHasArrows),
                    handleMouseWheel: p(t.handleMouseWheel, this.defaultValue.handleMouseWheel),
                    alwaysConsumeMouseWheel: p(t.alwaysConsumeMouseWheel, this.defaultValue.alwaysConsumeMouseWheel),
                    horizontalScrollbarSize: i,
                    horizontalSliderSize: m.clampedInt(t.horizontalSliderSize, i, 0, 1e3),
                    verticalScrollbarSize: e,
                    verticalSliderSize: m.clampedInt(t.verticalSliderSize, e, 0, 1e3),
                    scrollByPage: p(t.scrollByPage, this.defaultValue.scrollByPage)
                }
            }
        }),
        scrollBeyondLastColumn: I(new m(92, "scrollBeyondLastColumn", 5, 0, 1073741824, {
            description: r.a("scrollBeyondLastColumn", "Controls the number of extra characters beyond which the editor will scroll horizontally.")
        })),
        scrollBeyondLastLine: I(new g(93, "scrollBeyondLastLine", !0, {
            description: r.a("scrollBeyondLastLine", "Controls whether the editor will scroll beyond the last line.")
        })),
        scrollPredominantAxis: I(new g(94, "scrollPredominantAxis", !0, {
            description: r.a("scrollPredominantAxis", "Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")
        })),
        selectionClipboard: I(new g(95, "selectionClipboard", !0, {
            description: r.a("selectionClipboard", "Controls whether the Linux primary clipboard should be supported."),
            included: o.d
        })),
        selectionHighlight: I(new g(96, "selectionHighlight", !0, {
            description: r.a("selectionHighlight", "Controls whether the editor should highlight matches similar to the selection.")
        })),
        selectOnLineNumbers: I(new g(97, "selectOnLineNumbers", !0)),
        showFoldingControls: I(new w(98, "showFoldingControls", "mouseover", ["always", "mouseover"], {
            enumDescriptions: [r.a("showFoldingControls.always", "Always show the folding controls."), r.a("showFoldingControls.mouseover", "Only show the folding controls when the mouse is over the gutter.")],
            description: r.a("showFoldingControls", "Controls when the folding controls on the gutter are shown.")
        })),
        showUnused: I(new g(99, "showUnused", !0, {
            description: r.a("showUnused", "Controls fading out of unused code.")
        })),
        showDeprecated: I(new g(124, "showDeprecated", !0, {
            description: r.a("showDeprecated", "Controls strikethrough deprecated variables.")
        })),
        inlayHints: I(new class extends c {
            constructor() {
                var e = {
                    enabled: !0,
                    fontSize: 0,
                    fontFamily: ""
                };
                super(125, "inlayHints", e, {
                    "editor.inlayHints.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("inlayHints.enable", "Enables the inlay hints in the editor.")
                    },
                    "editor.inlayHints.fontSize": {
                        type: "number",
                        default: e.fontSize,
                        markdownDescription: r.a("inlayHints.fontSize", "Controls font size of inlay hints in the editor. A default of 90% of `#editor.fontSize#` is used when the configured value is less than `5` or greater than the editor font size.")
                    },
                    "editor.inlayHints.fontFamily": {
                        type: "string",
                        default: e.fontFamily,
                        markdownDescription: r.a("inlayHints.fontFamily", "Controls font family of inlay hints in the editor. When set to empty, the `#editor.fontFamily#` is used.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled),
                    fontSize: m.clampedInt(e.fontSize, this.defaultValue.fontSize, 0, 100),
                    fontFamily: b.string(e.fontFamily, this.defaultValue.fontFamily)
                } : this.defaultValue
            }
        }),
        snippetSuggestions: I(new w(100, "snippetSuggestions", "inline", ["top", "bottom", "inline", "none"], {
            enumDescriptions: [r.a("snippetSuggestions.top", "Show snippet suggestions on top of other suggestions."), r.a("snippetSuggestions.bottom", "Show snippet suggestions below other suggestions."), r.a("snippetSuggestions.inline", "Show snippets suggestions with other suggestions."), r.a("snippetSuggestions.none", "Do not show snippet suggestions.")],
            description: r.a("snippetSuggestions", "Controls whether snippets are shown with other suggestions and how they are sorted.")
        })),
        smartSelect: I(new class extends c {
            constructor() {
                super(101, "smartSelect", {
                    selectLeadingAndTrailingWhitespace: !0
                }, {
                    "editor.smartSelect.selectLeadingAndTrailingWhitespace": {
                        description: r.a("selectLeadingAndTrailingWhitespace", "Whether leading and trailing whitespace should always be selected."),
                        default: !0,
                        type: "boolean"
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    selectLeadingAndTrailingWhitespace: p(e.selectLeadingAndTrailingWhitespace, this.defaultValue.selectLeadingAndTrailingWhitespace)
                } : this.defaultValue
            }
        }),
        smoothScrolling: I(new g(102, "smoothScrolling", !1, {
            description: r.a("smoothScrolling", "Controls whether the editor will scroll using an animation.")
        })),
        stopRenderingLineAfter: I(new m(104, "stopRenderingLineAfter", 1e4, -1, 1073741824)),
        suggest: I(new class extends c {
            constructor() {
                var e = {
                    insertMode: "insert",
                    filterGraceful: !0,
                    snippetsPreventQuickSuggestions: !0,
                    localityBonus: !1,
                    shareSuggestSelections: !1,
                    showIcons: !0,
                    showStatusBar: !1,
                    preview: !1,
                    previewMode: "subwordSmart",
                    showInlineDetails: !0,
                    showMethods: !0,
                    showFunctions: !0,
                    showConstructors: !0,
                    showDeprecated: !0,
                    showFields: !0,
                    showVariables: !0,
                    showClasses: !0,
                    showStructs: !0,
                    showInterfaces: !0,
                    showModules: !0,
                    showProperties: !0,
                    showEvents: !0,
                    showOperators: !0,
                    showUnits: !0,
                    showValues: !0,
                    showConstants: !0,
                    showEnums: !0,
                    showEnumMembers: !0,
                    showKeywords: !0,
                    showWords: !0,
                    showColors: !0,
                    showFiles: !0,
                    showReferences: !0,
                    showFolders: !0,
                    showTypeParameters: !0,
                    showSnippets: !0,
                    showUsers: !0,
                    showIssues: !0
                };
                super(105, "suggest", e, {
                    "editor.suggest.insertMode": {
                        type: "string",
                        enum: ["insert", "replace"],
                        enumDescriptions: [r.a("suggest.insertMode.insert", "Insert suggestion without overwriting text right of the cursor."), r.a("suggest.insertMode.replace", "Insert suggestion and overwrite text right of the cursor.")],
                        default: e.insertMode,
                        description: r.a("suggest.insertMode", "Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")
                    },
                    "editor.suggest.filterGraceful": {
                        type: "boolean",
                        default: e.filterGraceful,
                        description: r.a("suggest.filterGraceful", "Controls whether filtering and sorting suggestions accounts for small typos.")
                    },
                    "editor.suggest.localityBonus": {
                        type: "boolean",
                        default: e.localityBonus,
                        description: r.a("suggest.localityBonus", "Controls whether sorting favors words that appear close to the cursor.")
                    },
                    "editor.suggest.shareSuggestSelections": {
                        type: "boolean",
                        default: e.shareSuggestSelections,
                        markdownDescription: r.a("suggest.shareSuggestSelections", "Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")
                    },
                    "editor.suggest.snippetsPreventQuickSuggestions": {
                        type: "boolean",
                        default: e.snippetsPreventQuickSuggestions,
                        description: r.a("suggest.snippetsPreventQuickSuggestions", "Controls whether an active snippet prevents quick suggestions.")
                    },
                    "editor.suggest.showIcons": {
                        type: "boolean",
                        default: e.showIcons,
                        description: r.a("suggest.showIcons", "Controls whether to show or hide icons in suggestions.")
                    },
                    "editor.suggest.showStatusBar": {
                        type: "boolean",
                        default: e.showStatusBar,
                        description: r.a("suggest.showStatusBar", "Controls the visibility of the status bar at the bottom of the suggest widget.")
                    },
                    "editor.suggest.preview": {
                        type: "boolean",
                        default: e.preview,
                        description: r.a("suggest.preview", "Controls whether to preview the suggestion outcome in the editor.")
                    },
                    "editor.suggest.showInlineDetails": {
                        type: "boolean",
                        default: e.showInlineDetails,
                        description: r.a("suggest.showInlineDetails", "Controls whether suggest details show inline with the label or only in the details widget")
                    },
                    "editor.suggest.maxVisibleSuggestions": {
                        type: "number",
                        deprecationMessage: r.a("suggest.maxVisibleSuggestions.dep", "This setting is deprecated. The suggest widget can now be resized.")
                    },
                    "editor.suggest.filteredTypes": {
                        type: "object",
                        deprecationMessage: r.a("deprecated", "This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")
                    },
                    "editor.suggest.showMethods": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showMethods", "When enabled IntelliSense shows `method`-suggestions.")
                    },
                    "editor.suggest.showFunctions": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showFunctions", "When enabled IntelliSense shows `function`-suggestions.")
                    },
                    "editor.suggest.showConstructors": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showConstructors", "When enabled IntelliSense shows `constructor`-suggestions.")
                    },
                    "editor.suggest.showDeprecated": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showDeprecated", "When enabled IntelliSense shows `deprecated`-suggestions.")
                    },
                    "editor.suggest.showFields": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showFields", "When enabled IntelliSense shows `field`-suggestions.")
                    },
                    "editor.suggest.showVariables": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showVariables", "When enabled IntelliSense shows `variable`-suggestions.")
                    },
                    "editor.suggest.showClasses": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showClasss", "When enabled IntelliSense shows `class`-suggestions.")
                    },
                    "editor.suggest.showStructs": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showStructs", "When enabled IntelliSense shows `struct`-suggestions.")
                    },
                    "editor.suggest.showInterfaces": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showInterfaces", "When enabled IntelliSense shows `interface`-suggestions.")
                    },
                    "editor.suggest.showModules": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showModules", "When enabled IntelliSense shows `module`-suggestions.")
                    },
                    "editor.suggest.showProperties": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showPropertys", "When enabled IntelliSense shows `property`-suggestions.")
                    },
                    "editor.suggest.showEvents": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showEvents", "When enabled IntelliSense shows `event`-suggestions.")
                    },
                    "editor.suggest.showOperators": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showOperators", "When enabled IntelliSense shows `operator`-suggestions.")
                    },
                    "editor.suggest.showUnits": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showUnits", "When enabled IntelliSense shows `unit`-suggestions.")
                    },
                    "editor.suggest.showValues": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showValues", "When enabled IntelliSense shows `value`-suggestions.")
                    },
                    "editor.suggest.showConstants": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showConstants", "When enabled IntelliSense shows `constant`-suggestions.")
                    },
                    "editor.suggest.showEnums": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showEnums", "When enabled IntelliSense shows `enum`-suggestions.")
                    },
                    "editor.suggest.showEnumMembers": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showEnumMembers", "When enabled IntelliSense shows `enumMember`-suggestions.")
                    },
                    "editor.suggest.showKeywords": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showKeywords", "When enabled IntelliSense shows `keyword`-suggestions.")
                    },
                    "editor.suggest.showWords": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showTexts", "When enabled IntelliSense shows `text`-suggestions.")
                    },
                    "editor.suggest.showColors": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showColors", "When enabled IntelliSense shows `color`-suggestions.")
                    },
                    "editor.suggest.showFiles": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showFiles", "When enabled IntelliSense shows `file`-suggestions.")
                    },
                    "editor.suggest.showReferences": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showReferences", "When enabled IntelliSense shows `reference`-suggestions.")
                    },
                    "editor.suggest.showCustomcolors": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showCustomcolors", "When enabled IntelliSense shows `customcolor`-suggestions.")
                    },
                    "editor.suggest.showFolders": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showFolders", "When enabled IntelliSense shows `folder`-suggestions.")
                    },
                    "editor.suggest.showTypeParameters": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showTypeParameters", "When enabled IntelliSense shows `typeParameter`-suggestions.")
                    },
                    "editor.suggest.showSnippets": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showSnippets", "When enabled IntelliSense shows `snippet`-suggestions.")
                    },
                    "editor.suggest.showUsers": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showUsers", "When enabled IntelliSense shows `user`-suggestions.")
                    },
                    "editor.suggest.showIssues": {
                        type: "boolean",
                        default: !0,
                        markdownDescription: r.a("editor.suggest.showIssues", "When enabled IntelliSense shows `issues`-suggestions.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    insertMode: _(e.insertMode, this.defaultValue.insertMode, ["insert", "replace"]),
                    filterGraceful: p(e.filterGraceful, this.defaultValue.filterGraceful),
                    snippetsPreventQuickSuggestions: p(e.snippetsPreventQuickSuggestions, this.defaultValue.filterGraceful),
                    localityBonus: p(e.localityBonus, this.defaultValue.localityBonus),
                    shareSuggestSelections: p(e.shareSuggestSelections, this.defaultValue.shareSuggestSelections),
                    showIcons: p(e.showIcons, this.defaultValue.showIcons),
                    showStatusBar: p(e.showStatusBar, this.defaultValue.showStatusBar),
                    preview: p(e.preview, this.defaultValue.preview),
                    previewMode: _(e.previewMode, this.defaultValue.previewMode, ["prefix", "subword", "subwordSmart"]),
                    showInlineDetails: p(e.showInlineDetails, this.defaultValue.showInlineDetails),
                    showMethods: p(e.showMethods, this.defaultValue.showMethods),
                    showFunctions: p(e.showFunctions, this.defaultValue.showFunctions),
                    showConstructors: p(e.showConstructors, this.defaultValue.showConstructors),
                    showDeprecated: p(e.showDeprecated, this.defaultValue.showDeprecated),
                    showFields: p(e.showFields, this.defaultValue.showFields),
                    showVariables: p(e.showVariables, this.defaultValue.showVariables),
                    showClasses: p(e.showClasses, this.defaultValue.showClasses),
                    showStructs: p(e.showStructs, this.defaultValue.showStructs),
                    showInterfaces: p(e.showInterfaces, this.defaultValue.showInterfaces),
                    showModules: p(e.showModules, this.defaultValue.showModules),
                    showProperties: p(e.showProperties, this.defaultValue.showProperties),
                    showEvents: p(e.showEvents, this.defaultValue.showEvents),
                    showOperators: p(e.showOperators, this.defaultValue.showOperators),
                    showUnits: p(e.showUnits, this.defaultValue.showUnits),
                    showValues: p(e.showValues, this.defaultValue.showValues),
                    showConstants: p(e.showConstants, this.defaultValue.showConstants),
                    showEnums: p(e.showEnums, this.defaultValue.showEnums),
                    showEnumMembers: p(e.showEnumMembers, this.defaultValue.showEnumMembers),
                    showKeywords: p(e.showKeywords, this.defaultValue.showKeywords),
                    showWords: p(e.showWords, this.defaultValue.showWords),
                    showColors: p(e.showColors, this.defaultValue.showColors),
                    showFiles: p(e.showFiles, this.defaultValue.showFiles),
                    showReferences: p(e.showReferences, this.defaultValue.showReferences),
                    showFolders: p(e.showFolders, this.defaultValue.showFolders),
                    showTypeParameters: p(e.showTypeParameters, this.defaultValue.showTypeParameters),
                    showSnippets: p(e.showSnippets, this.defaultValue.showSnippets),
                    showUsers: p(e.showUsers, this.defaultValue.showUsers),
                    showIssues: p(e.showIssues, this.defaultValue.showIssues)
                } : this.defaultValue
            }
        }),
        inlineSuggest: I(new class extends c {
            constructor() {
                var e = {
                    enabled: !0,
                    mode: "subwordSmart"
                };
                super(54, "inlineSuggest", e, {
                    "editor.inlineSuggest.enabled": {
                        type: "boolean",
                        default: e.enabled,
                        description: r.a("inlineSuggest.enabled", "Controls whether to automatically show inline suggestions in the editor.")
                    }
                })
            }
            validate(e) {
                return e && "object" == typeof e ? {
                    enabled: p(e.enabled, this.defaultValue.enabled),
                    mode: _(e.mode, this.defaultValue.mode, ["prefix", "subword", "subwordSmart"])
                } : this.defaultValue
            }
        }),
        suggestFontSize: I(new m(106, "suggestFontSize", 0, 0, 1e3, {
            markdownDescription: r.a("suggestFontSize", "Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.")
        })),
        suggestLineHeight: I(new m(107, "suggestLineHeight", 0, 0, 1e3, {
            markdownDescription: r.a("suggestLineHeight", "Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used. The minimum value is 8.")
        })),
        suggestOnTriggerCharacters: I(new g(108, "suggestOnTriggerCharacters", !0, {
            description: r.a("suggestOnTriggerCharacters", "Controls whether suggestions should automatically show up when typing trigger characters.")
        })),
        suggestSelection: I(new w(109, "suggestSelection", "recentlyUsed", ["first", "recentlyUsed", "recentlyUsedByPrefix"], {
            markdownEnumDescriptions: [r.a("suggestSelection.first", "Always select the first suggestion."), r.a("suggestSelection.recentlyUsed", "Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."), r.a("suggestSelection.recentlyUsedByPrefix", "Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],
            description: r.a("suggestSelection", "Controls how suggestions are pre-selected when showing the suggest list.")
        })),
        tabCompletion: I(new w(110, "tabCompletion", "off", ["on", "off", "onlySnippets"], {
            enumDescriptions: [r.a("tabCompletion.on", "Tab complete will insert the best matching suggestion when pressing tab."), r.a("tabCompletion.off", "Disable tab completions."), r.a("tabCompletion.onlySnippets", "Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],
            description: r.a("tabCompletion", "Enables tab completions.")
        })),
        tabIndex: I(new m(111, "tabIndex", 0, -1, 1073741824)),
        unusualLineTerminators: I(new w(112, "unusualLineTerminators", "prompt", ["auto", "off", "prompt"], {
            enumDescriptions: [r.a("unusualLineTerminators.auto", "Unusual line terminators are automatically removed."), r.a("unusualLineTerminators.off", "Unusual line terminators are ignored."), r.a("unusualLineTerminators.prompt", "Unusual line terminators prompt to be removed.")],
            description: r.a("unusualLineTerminators", "Remove unusual line terminators that might cause problems.")
        })),
        useShadowDOM: I(new g(113, "useShadowDOM", !0)),
        useTabStops: I(new g(114, "useTabStops", !0, {
            description: r.a("useTabStops", "Inserting and deleting whitespace follows tab stops.")
        })),
        wordSeparators: I(new b(115, "wordSeparators", t.b, {
            description: r.a("wordSeparators", "Characters that will be used as word separators when doing word related navigations or operations.")
        })),
        wordWrap: I(new w(116, "wordWrap", "off", ["off", "on", "wordWrapColumn", "bounded"], {
            markdownEnumDescriptions: [r.a("wordWrap.off", "Lines will never wrap."), r.a("wordWrap.on", "Lines will wrap at the viewport width."), r.a({
                key: "wordWrap.wordWrapColumn",
                comment: ["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]
            }, "Lines will wrap at `#editor.wordWrapColumn#`."), r.a({
                key: "wordWrap.bounded",
                comment: ["- viewport means the edge of the visible window size.", "- `editor.wordWrapColumn` refers to a different setting and should not be localized."]
            }, "Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],
            description: r.a({
                key: "wordWrap",
                comment: ["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.", "- `editor.wordWrapColumn` refers to a different setting and should not be localized."]
            }, "Controls how lines should wrap.")
        })),
        wordWrapBreakAfterCharacters: I(new b(117, "wordWrapBreakAfterCharacters", " \t})]?|/&.,;¢°′″‰℃、。｡､￠，．：；？！％・･ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ｧｨｩｪｫｬｭｮｯｰ”〉》」』】〕）］｝｣")),
        wordWrapBreakBeforeCharacters: I(new b(118, "wordWrapBreakBeforeCharacters", "([{‘“〈《「『【〔（［｛｢£¥＄￡￥+＋")),
        wordWrapColumn: I(new m(119, "wordWrapColumn", 80, 1, 1073741824, {
            markdownDescription: r.a({
                key: "wordWrapColumn",
                comment: ["- `editor.wordWrap` refers to a different setting and should not be localized.", "- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]
            }, "Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")
        })),
        wordWrapOverride1: I(new w(120, "wordWrapOverride1", "inherit", ["off", "on", "inherit"])),
        wordWrapOverride2: I(new w(121, "wordWrapOverride2", "inherit", ["off", "on", "inherit"])),
        wrappingIndent: I(new y(122, "wrappingIndent", 1, "same", ["none", "same", "indent", "deepIndent"], (function(e) {
            switch (e) {
                case "none":
                    return 0;
                case "same":
                    return 1;
                case "indent":
                    return 2;
                case "deepIndent":
                    return 3
            }
        }), {
            enumDescriptions: [r.a("wrappingIndent.none", "No indentation. Wrapped lines begin at column 1."), r.a("wrappingIndent.same", "Wrapped lines get the same indentation as the parent."), r.a("wrappingIndent.indent", "Wrapped lines get +1 indentation toward the parent."), r.a("wrappingIndent.deepIndent", "Wrapped lines get +2 indentation toward the parent.")],
            description: r.a("wrappingIndent", "Controls the indentation of wrapped lines.")
        })),
        wrappingStrategy: I(new w(123, "wrappingStrategy", "simple", ["simple", "advanced"], {
            enumDescriptions: [r.a("wrappingStrategy.simple", "Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."), r.a("wrappingStrategy.advanced", "Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],
            description: r.a("wrappingStrategy", "Controls the algorithm that computes wrapping points.")
        })),
        editorClassName: I(new class extends h {
            constructor() {
                super(126, [65, 33])
            }
            compute(e, t, i) {
                const n = ["monaco-editor"];
                return t.get(33) && n.push(t.get(33)), e.extraEditorClassName && n.push(e.extraEditorClassName), "default" === t.get(65) ? n.push("mouse-default") : "copy" === t.get(65) && n.push("mouse-copy"), t.get(99) && n.push("showUnused"), t.get(124) && n.push("showDeprecated"), n.join(" ")
            }
        }),
        pixelRatio: I(new class extends h {
            constructor() {
                super(127)
            }
            compute(e, t, i) {
                return e.pixelRatio
            }
        }),
        tabFocusMode: I(new class extends h {
            constructor() {
                super(128, [80])
            }
            compute(e, t, i) {
                return !!t.get(80) || e.tabFocusMode
            }
        }),
        layoutInfo: I(new S),
        wrappingInfo: I(new class extends h {
            constructor() {
                super(130, [129])
            }
            compute(e, t, i) {
                return t = t.get(129), {
                    isDominatedByLongLines: e.isDominatedByLongLines,
                    isWordWrapMinified: t.isWordWrapMinified,
                    isViewportWrapping: t.isViewportWrapping,
                    wrappingColumn: t.wrappingColumn
                }
            }
        })
    }
}, function(e, t, i) {
    "use strict";

    function n(e, t, i, n, r, o, s, a) {
        var l, d, c = "function" == typeof e ? e.options : e;
        return t && (c.render = t, c.staticRenderFns = i, c._compiled = !0), n && (c.functional = !0), o && (c._scopeId = "data-v-" + o), s ? (l = function(e) {
            (e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), r && r.call(this, e), e && e._registeredComponents && e._registeredComponents.add(s)
        }, c._ssrRegister = l) : r && (l = a ? function() {
            r.call(this, (c.functional ? this.parent : this).$root.$options.shadowRoot)
        } : r), l && (c.functional ? (c._injectStyles = l, d = c.render, c.render = function(e, t) {
            return l.call(t), d(e, t)
        }) : (a = c.beforeCreate, c.beforeCreate = a ? [].concat(a, l) : [l])), {
            exports: e,
            options: c
        }
    }
    i.d(t, "a", (function() {
        return n
    }))
}, function(e, t, i) {
    "use strict";
    i.d(t, "f", (function() {
        return r
    })), i.d(t, "g", (function() {
        return o
    })), i.d(t, "h", (function() {
        return s
    })), i.d(t, "e", (function() {
        return l
    })), i.d(t, "b", (function() {
        return d
    })), i.d(t, "c", (function() {
        return c
    })), i.d(t, "d", (function() {
        return h
    })), i.d(t, "a", (function() {
        return u
    }));
    const n = new class {
        constructor() {
            this.listeners = [], this.unexpectedErrorHandler = function(e) {
                setTimeout(() => {
                    if (e.stack) throw new Error(e.message + "\n\n" + e.stack);
                    throw e
                }, 0)
            }
        }
        emit(e) {
            this.listeners.forEach(t => {
                t(e)
            })
        }
        onUnexpectedError(e) {
            this.unexpectedErrorHandler(e), this.emit(e)
        }
        onUnexpectedExternalError(e) {
            this.unexpectedErrorHandler(e)
        }
    };

    function r(e) {
        l(e) || n.onUnexpectedError(e)
    }

    function o(e) {
        l(e) || n.onUnexpectedExternalError(e)
    }

    function s(e) {
        if (e instanceof Error) {
            var {
                name: t,
                message: i
            } = e;
            return {
                $isError: !0,
                name: t,
                message: i,
                stack: e.stacktrace || e.stack
            }
        }
        return e
    }
    const a = "Canceled";

    function l(e) {
        return e instanceof Error && e.name === a && e.message === a
    }

    function d() {
        const e = new Error(a);
        return e.name = e.message, e
    }

    function c(e) {
        return e ? new Error("Illegal argument: " + e) : new Error("Illegal argument")
    }

    function h(e) {
        return e ? new Error("Illegal state: " + e) : new Error("Illegal state")
    }
    class u extends Error {
        constructor(e) {
            super("NotSupported"), e && (this.message = e)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "j", (function() {
        return l
    })), i.d(t, "h", (function() {
        return d
    })), i.d(t, "a", (function() {
        return h
    })), i.d(t, "f", (function() {
        return u
    })), i.d(t, "k", (function() {
        return p
    })), i.d(t, "i", (function() {
        return g
    })), i.d(t, "g", (function() {
        return f
    })), i.d(t, "c", (function() {
        return m
    })), i.d(t, "e", (function() {
        return v
    })), i.d(t, "b", (function() {
        return _
    })), i.d(t, "d", (function() {
        return n
    }));
    var n, r = i(51),
        o = i(31),
        s = i(4),
        a = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };

    function l(e) {
        return !!e && "function" == typeof e.then
    }

    function d(e) {
        const t = new r.b,
            i = e(t.token),
            n = new Promise((e, n) => {
                const r = t.token.onCancellationRequested(() => {
                    r.dispose(), t.dispose(), n(Object(o.b)())
                });
                Promise.resolve(i).then(i => {
                    r.dispose(), t.dispose(), e(i)
                }, e => {
                    r.dispose(), t.dispose(), n(e)
                })
            });
        return new class {
            cancel() {
                t.cancel()
            }
            then(e, t) {
                return n.then(e, t)
            } catch (e) {
                return this.then(void 0, e)
            } finally(e) {
                return n.finally(e)
            }
        }
    }
    class c {
        constructor() {
            this.activePromise = null, this.queuedPromise = null, this.queuedPromiseFactory = null
        }
        queue(e) {
            if (this.activePromise) {
                if (this.queuedPromiseFactory = e, !this.queuedPromise) {
                    const e = () => {
                        this.queuedPromise = null;
                        var e = this.queue(this.queuedPromiseFactory);
                        return this.queuedPromiseFactory = null, e
                    };
                    this.queuedPromise = new Promise(t => {
                        this.activePromise.then(e, e).then(t)
                    })
                }
                return new Promise((e, t) => {
                    this.queuedPromise.then(e, t)
                })
            }
            return this.activePromise = e(), new Promise((e, t) => {
                this.activePromise.then(t => {
                    this.activePromise = null, e(t)
                }, e => {
                    this.activePromise = null, t(e)
                })
            })
        }
    }
    class h {
        constructor(e) {
            this.defaultDelay = e, this.timeout = null, this.completionPromise = null, this.doResolve = null, this.doReject = null, this.task = null
        }
        trigger(e, t = this.defaultDelay) {
            return this.task = e, this.cancelTimeout(), this.completionPromise || (this.completionPromise = new Promise((e, t) => {
                this.doResolve = e, this.doReject = t
            }).then(() => {
                if (this.completionPromise = null, this.doResolve = null, this.task) {
                    const e = this.task;
                    return this.task = null, e()
                }
            })), this.timeout = setTimeout(() => {
                this.timeout = null, this.doResolve && this.doResolve(null)
            }, t), this.completionPromise
        }
        isTriggered() {
            return null !== this.timeout
        }
        cancel() {
            this.cancelTimeout(), this.completionPromise && (this.doReject && this.doReject(Object(o.b)()), this.completionPromise = null)
        }
        cancelTimeout() {
            null !== this.timeout && (clearTimeout(this.timeout), this.timeout = null)
        }
        dispose() {
            this.cancel()
        }
    }
    class u {
        constructor(e) {
            this.delayer = new h(e), this.throttler = new c
        }
        trigger(e, t) {
            return this.delayer.trigger(() => this.throttler.queue(e), t)
        }
        dispose() {
            this.delayer.dispose()
        }
    }

    function p(e, t) {
        return t ? new Promise((i, n) => {
            const r = setTimeout(() => {
                    s.dispose(), i()
                }, e),
                s = t.onCancellationRequested(() => {
                    clearTimeout(r), s.dispose(), n(Object(o.b)())
                })
        }) : d(t => p(e, t))
    }

    function g(e, t = 0) {
        const i = setTimeout(e, t);
        return Object(s.i)(() => clearTimeout(i))
    }
    class f {
        constructor(e, t) {
            this._token = -1, "function" == typeof e && "number" == typeof t && this.setIfNotSet(e, t)
        }
        dispose() {
            this.cancel()
        }
        cancel() {
            -1 !== this._token && (clearTimeout(this._token), this._token = -1)
        }
        cancelAndSet(e, t) {
            this.cancel(), this._token = setTimeout(() => {
                this._token = -1, e()
            }, t)
        }
        setIfNotSet(e, t) {
            -1 === this._token && (this._token = setTimeout(() => {
                this._token = -1, e()
            }, t))
        }
    }
    class m {
        constructor() {
            this._token = -1
        }
        dispose() {
            this.cancel()
        }
        cancel() {
            -1 !== this._token && (clearInterval(this._token), this._token = -1)
        }
        cancelAndSet(e, t) {
            this.cancel(), this._token = setInterval(() => {
                e()
            }, t)
        }
    }
    class v {
        constructor(e, t) {
            this.timeoutToken = -1, this.runner = e, this.timeout = t, this.timeoutHandler = this.onTimeout.bind(this)
        }
        dispose() {
            this.cancel(), this.runner = null
        }
        cancel() {
            this.isScheduled() && (clearTimeout(this.timeoutToken), this.timeoutToken = -1)
        }
        schedule(e = this.timeout) {
            this.cancel(), this.timeoutToken = setTimeout(this.timeoutHandler, e)
        }
        get delay() {
            return this.timeout
        }
        set delay(e) {
            this.timeout = e
        }
        isScheduled() {
            return -1 !== this.timeoutToken
        }
        onTimeout() {
            this.timeoutToken = -1, this.runner && this.doRun()
        }
        doRun() {
            this.runner && this.runner()
        }
    }
    let b;
    b = "function" != typeof requestIdleCallback || "function" != typeof cancelIdleCallback ? e => {
        const t = setTimeout(() => {
            const t = Date.now() + 15;
            e(Object.freeze({
                didTimeout: !0,
                timeRemaining: () => Math.max(0, t - Date.now())
            }))
        });
        let i = !1;
        return {
            dispose() {
                i || (i = !0, clearTimeout(t))
            }
        }
    } : (e, t) => {
        const i = requestIdleCallback(e, "number" == typeof t ? {
            timeout: t
        } : void 0);
        let n = !1;
        return {
            dispose() {
                n || (n = !0, cancelIdleCallback(i))
            }
        }
    };
    class _ {
        constructor(e) {
            this._didRun = !1, this._executor = () => {
                try {
                    this._value = e()
                } catch (e) {
                    this._error = e
                } finally {
                    this._didRun = !0
                }
            }, this._handle = b(() => this._executor())
        }
        dispose() {
            this._handle.dispose()
        }
        get value() {
            if (this._didRun || (this._handle.dispose(), this._executor()), this._error) throw this._error;
            return this._value
        }
        get isInitialized() {
            return this._didRun
        }
    }(i = n = n || {}).settled = function(e) {
        return a(this, void 0, void 0, (function*() {
            let t = void 0;
            var i = yield Promise.all(e.map(e => e.then(e => e, e => {
                t = t || e
            })));
            if (void 0 !== t) throw t;
            return i
        }))
    }, i.withAsyncBody = function(e) {
        return new Promise((t, i) => a(this, void 0, void 0, (function*() {
            try {
                yield e(t, i)
            } catch (e) {
                i(e)
            }
        })))
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "d", (function() {
        return s
    })), i.d(t, "e", (function() {
        return a
    })), i.d(t, "c", (function() {
        return l
    })), i.d(t, "b", (function() {
        return d
    })), i.d(t, "a", (function() {
        return n
    }));
    var n, r = i(2);
    const o = new class {
            constructor() {
                this._icons = new Map, this._onDidRegister = new r.b
            }
            add(e) {
                const t = this._icons.get(e.id);
                t ? e.description ? t.description = e.description : console.error("Duplicate registration of codicon " + e.id) : (this._icons.set(e.id, e), this._onDidRegister.fire(e))
            }
            get(e) {
                return this._icons.get(e)
            }
            get all() {
                return this._icons.values()
            }
            get onDidRegister() {
                return this._onDidRegister.event
            }
        },
        s = o;

    function a(e, t) {
        return new d(e, t)
    }

    function l(e) {
        return e ? e.replace(/\$\((.*?)\)/g, (e, t) => ` ${t} `).trim() : ""
    }
    class d {
        constructor(e, t, i) {
            this.id = e, this.definition = t, this.description = i, o.add(this)
        }
        get classNames() {
            return "codicon codicon-" + this.id
        }
        get classNamesArray() {
            return ["codicon", "codicon-" + this.id]
        }
        get cssSelector() {
            return ".codicon.codicon-" + this.id
        }
    }! function(e) {
        e.iconNameSegment = "[A-Za-z0-9]+", e.iconNameExpression = "[A-Za-z0-9\\-]+", e.iconModifierExpression = "~[A-Za-z]+";
        const t = new RegExp(`^(${e.iconNameExpression})(${e.iconModifierExpression})?$`);

        function i(e) {
            if (e instanceof d) return ["codicon", "codicon-" + e.id];
            if (!(e = t.exec(e.id))) return i(d.error);
            let [, n, r] = e;
            const o = ["codicon", "codicon-" + n];
            return r && o.push("codicon-modifier-" + r.substr(1)), o
        }
        e.asClassNameArray = i, e.asClassName = function(e) {
            return i(e).join(" ")
        }, e.asCSSSelector = function(e) {
            return "." + i(e).join(".")
        }
    }(n = n || {}), (i = d = d || {}).add = new i("add", {
        fontCharacter: "\\ea60"
    }), i.plus = new i("plus", i.add.definition), i.gistNew = new i("gist-new", i.add.definition), i.repoCreate = new i("repo-create", i.add.definition), i.lightbulb = new i("lightbulb", {
        fontCharacter: "\\ea61"
    }), i.lightBulb = new i("light-bulb", {
        fontCharacter: "\\ea61"
    }), i.repo = new i("repo", {
        fontCharacter: "\\ea62"
    }), i.repoDelete = new i("repo-delete", {
        fontCharacter: "\\ea62"
    }), i.gistFork = new i("gist-fork", {
        fontCharacter: "\\ea63"
    }), i.repoForked = new i("repo-forked", {
        fontCharacter: "\\ea63"
    }), i.gitPullRequest = new i("git-pull-request", {
        fontCharacter: "\\ea64"
    }), i.gitPullRequestAbandoned = new i("git-pull-request-abandoned", {
        fontCharacter: "\\ea64"
    }), i.recordKeys = new i("record-keys", {
        fontCharacter: "\\ea65"
    }), i.keyboard = new i("keyboard", {
        fontCharacter: "\\ea65"
    }), i.tag = new i("tag", {
        fontCharacter: "\\ea66"
    }), i.tagAdd = new i("tag-add", {
        fontCharacter: "\\ea66"
    }), i.tagRemove = new i("tag-remove", {
        fontCharacter: "\\ea66"
    }), i.person = new i("person", {
        fontCharacter: "\\ea67"
    }), i.personFollow = new i("person-follow", {
        fontCharacter: "\\ea67"
    }), i.personOutline = new i("person-outline", {
        fontCharacter: "\\ea67"
    }), i.personFilled = new i("person-filled", {
        fontCharacter: "\\ea67"
    }), i.gitBranch = new i("git-branch", {
        fontCharacter: "\\ea68"
    }), i.gitBranchCreate = new i("git-branch-create", {
        fontCharacter: "\\ea68"
    }), i.gitBranchDelete = new i("git-branch-delete", {
        fontCharacter: "\\ea68"
    }), i.sourceControl = new i("source-control", {
        fontCharacter: "\\ea68"
    }), i.mirror = new i("mirror", {
        fontCharacter: "\\ea69"
    }), i.mirrorPublic = new i("mirror-public", {
        fontCharacter: "\\ea69"
    }), i.star = new i("star", {
        fontCharacter: "\\ea6a"
    }), i.starAdd = new i("star-add", {
        fontCharacter: "\\ea6a"
    }), i.starDelete = new i("star-delete", {
        fontCharacter: "\\ea6a"
    }), i.starEmpty = new i("star-empty", {
        fontCharacter: "\\ea6a"
    }), i.comment = new i("comment", {
        fontCharacter: "\\ea6b"
    }), i.commentAdd = new i("comment-add", {
        fontCharacter: "\\ea6b"
    }), i.alert = new i("alert", {
        fontCharacter: "\\ea6c"
    }), i.warning = new i("warning", {
        fontCharacter: "\\ea6c"
    }), i.search = new i("search", {
        fontCharacter: "\\ea6d"
    }), i.searchSave = new i("search-save", {
        fontCharacter: "\\ea6d"
    }), i.logOut = new i("log-out", {
        fontCharacter: "\\ea6e"
    }), i.signOut = new i("sign-out", {
        fontCharacter: "\\ea6e"
    }), i.logIn = new i("log-in", {
        fontCharacter: "\\ea6f"
    }), i.signIn = new i("sign-in", {
        fontCharacter: "\\ea6f"
    }), i.eye = new i("eye", {
        fontCharacter: "\\ea70"
    }), i.eyeUnwatch = new i("eye-unwatch", {
        fontCharacter: "\\ea70"
    }), i.eyeWatch = new i("eye-watch", {
        fontCharacter: "\\ea70"
    }), i.circleFilled = new i("circle-filled", {
        fontCharacter: "\\ea71"
    }), i.primitiveDot = new i("primitive-dot", {
        fontCharacter: "\\ea71"
    }), i.closeDirty = new i("close-dirty", {
        fontCharacter: "\\ea71"
    }), i.debugBreakpoint = new i("debug-breakpoint", {
        fontCharacter: "\\ea71"
    }), i.debugBreakpointDisabled = new i("debug-breakpoint-disabled", {
        fontCharacter: "\\ea71"
    }), i.debugHint = new i("debug-hint", {
        fontCharacter: "\\ea71"
    }), i.primitiveSquare = new i("primitive-square", {
        fontCharacter: "\\ea72"
    }), i.edit = new i("编辑", {
        fontCharacter: "\\ea73"
    }), i.pencil = new i("pencil", {
        fontCharacter: "\\ea73"
    }), i.info = new i("info", {
        fontCharacter: "\\ea74"
    }), i.issueOpened = new i("issue-opened", {
        fontCharacter: "\\ea74"
    }), i.gistPrivate = new i("gist-private", {
        fontCharacter: "\\ea75"
    }), i.gitForkPrivate = new i("git-fork-private", {
        fontCharacter: "\\ea75"
    }), i.lock = new i("lock", {
        fontCharacter: "\\ea75"
    }), i.mirrorPrivate = new i("mirror-private", {
        fontCharacter: "\\ea75"
    }), i.close = new i("close", {
        fontCharacter: "\\ea76"
    }), i.removeClose = new i("remove-close", {
        fontCharacter: "\\ea76"
    }), i.x = new i("x", {
        fontCharacter: "\\ea76"
    }), i.repoSync = new i("repo-sync", {
        fontCharacter: "\\ea77"
    }), i.sync = new i("sync", {
        fontCharacter: "\\ea77"
    }), i.clone = new i("clone", {
        fontCharacter: "\\ea78"
    }), i.desktopDownload = new i("desktop-download", {
        fontCharacter: "\\ea78"
    }), i.beaker = new i("beaker", {
        fontCharacter: "\\ea79"
    }), i.microscope = new i("microscope", {
        fontCharacter: "\\ea79"
    }), i.vm = new i("vm", {
        fontCharacter: "\\ea7a"
    }), i.deviceDesktop = new i("device-desktop", {
        fontCharacter: "\\ea7a"
    }), i.file = new i("file", {
        fontCharacter: "\\ea7b"
    }), i.fileText = new i("file-text", {
        fontCharacter: "\\ea7b"
    }), i.more = new i("more", {
        fontCharacter: "\\ea7c"
    }), i.ellipsis = new i("ellipsis", {
        fontCharacter: "\\ea7c"
    }), i.kebabHorizontal = new i("kebab-horizontal", {
        fontCharacter: "\\ea7c"
    }), i.mailReply = new i("mail-reply", {
        fontCharacter: "\\ea7d"
    }), i.reply = new i("reply", {
        fontCharacter: "\\ea7d"
    }), i.organization = new i("organization", {
        fontCharacter: "\\ea7e"
    }), i.organizationFilled = new i("organization-filled", {
        fontCharacter: "\\ea7e"
    }), i.organizationOutline = new i("organization-outline", {
        fontCharacter: "\\ea7e"
    }), i.newFile = new i("new-file", {
        fontCharacter: "\\ea7f"
    }), i.fileAdd = new i("file-add", {
        fontCharacter: "\\ea7f"
    }), i.newFolder = new i("new-folder", {
        fontCharacter: "\\ea80"
    }), i.fileDirectoryCreate = new i("file-directory-create", {
        fontCharacter: "\\ea80"
    }), i.trash = new i("trash", {
        fontCharacter: "\\ea81"
    }), i.trashcan = new i("trashcan", {
        fontCharacter: "\\ea81"
    }), i.history = new i("history", {
        fontCharacter: "\\ea82"
    }), i.clock = new i("clock", {
        fontCharacter: "\\ea82"
    }), i.folder = new i("folder", {
        fontCharacter: "\\ea83"
    }), i.fileDirectory = new i("file-directory", {
        fontCharacter: "\\ea83"
    }), i.symbolFolder = new i("symbol-folder", {
        fontCharacter: "\\ea83"
    }), i.logoGithub = new i("logo-github", {
        fontCharacter: "\\ea84"
    }), i.markGithub = new i("mark-github", {
        fontCharacter: "\\ea84"
    }), i.github = new i("github", {
        fontCharacter: "\\ea84"
    }), i.terminal = new i("terminal", {
        fontCharacter: "\\ea85"
    }), i.console = new i("console", {
        fontCharacter: "\\ea85"
    }), i.repl = new i("repl", {
        fontCharacter: "\\ea85"
    }), i.zap = new i("zap", {
        fontCharacter: "\\ea86"
    }), i.symbolEvent = new i("symbol-event", {
        fontCharacter: "\\ea86"
    }), i.error = new i("error", {
        fontCharacter: "\\ea87"
    }), i.stop = new i("stop", {
        fontCharacter: "\\ea87"
    }), i.variable = new i("variable", {
        fontCharacter: "\\ea88"
    }), i.symbolVariable = new i("symbol-variable", {
        fontCharacter: "\\ea88"
    }), i.array = new i("array", {
        fontCharacter: "\\ea8a"
    }), i.symbolArray = new i("symbol-array", {
        fontCharacter: "\\ea8a"
    }), i.symbolModule = new i("symbol-module", {
        fontCharacter: "\\ea8b"
    }), i.symbolPackage = new i("symbol-package", {
        fontCharacter: "\\ea8b"
    }), i.symbolNamespace = new i("symbol-namespace", {
        fontCharacter: "\\ea8b"
    }), i.symbolObject = new i("symbol-object", {
        fontCharacter: "\\ea8b"
    }), i.symbolMethod = new i("symbol-method", {
        fontCharacter: "\\ea8c"
    }), i.symbolFunction = new i("symbol-function", {
        fontCharacter: "\\ea8c"
    }), i.symbolConstructor = new i("symbol-constructor", {
        fontCharacter: "\\ea8c"
    }), i.symbolBoolean = new i("symbol-boolean", {
        fontCharacter: "\\ea8f"
    }), i.symbolNull = new i("symbol-null", {
        fontCharacter: "\\ea8f"
    }), i.symbolNumeric = new i("symbol-numeric", {
        fontCharacter: "\\ea90"
    }), i.symbolNumber = new i("symbol-number", {
        fontCharacter: "\\ea90"
    }), i.symbolStructure = new i("symbol-structure", {
        fontCharacter: "\\ea91"
    }), i.symbolStruct = new i("symbol-struct", {
        fontCharacter: "\\ea91"
    }), i.symbolParameter = new i("symbol-parameter", {
        fontCharacter: "\\ea92"
    }), i.symbolTypeParameter = new i("symbol-type-parameter", {
        fontCharacter: "\\ea92"
    }), i.symbolKey = new i("symbol-key", {
        fontCharacter: "\\ea93"
    }), i.symbolText = new i("symbol-text", {
        fontCharacter: "\\ea93"
    }), i.symbolReference = new i("symbol-reference", {
        fontCharacter: "\\ea94"
    }), i.goToFile = new i("go-to-file", {
        fontCharacter: "\\ea94"
    }), i.symbolEnum = new i("symbol-enum", {
        fontCharacter: "\\ea95"
    }), i.symbolValue = new i("symbol-value", {
        fontCharacter: "\\ea95"
    }), i.symbolRuler = new i("symbol-ruler", {
        fontCharacter: "\\ea96"
    }), i.symbolUnit = new i("symbol-unit", {
        fontCharacter: "\\ea96"
    }), i.activateBreakpoints = new i("activate-breakpoints", {
        fontCharacter: "\\ea97"
    }), i.archive = new i("archive", {
        fontCharacter: "\\ea98"
    }), i.arrowBoth = new i("arrow-both", {
        fontCharacter: "\\ea99"
    }), i.arrowDown = new i("arrow-down", {
        fontCharacter: "\\ea9a"
    }), i.arrowLeft = new i("arrow-left", {
        fontCharacter: "\\ea9b"
    }), i.arrowRight = new i("arrow-right", {
        fontCharacter: "\\ea9c"
    }), i.arrowSmallDown = new i("arrow-small-down", {
        fontCharacter: "\\ea9d"
    }), i.arrowSmallLeft = new i("arrow-small-left", {
        fontCharacter: "\\ea9e"
    }), i.arrowSmallRight = new i("arrow-small-right", {
        fontCharacter: "\\ea9f"
    }), i.arrowSmallUp = new i("arrow-small-up", {
        fontCharacter: "\\eaa0"
    }), i.arrowUp = new i("arrow-up", {
        fontCharacter: "\\eaa1"
    }), i.bell = new i("bell", {
        fontCharacter: "\\eaa2"
    }), i.bold = new i("bold", {
        fontCharacter: "\\eaa3"
    }), i.book = new i("book", {
        fontCharacter: "\\eaa4"
    }), i.bookmark = new i("bookmark", {
        fontCharacter: "\\eaa5"
    }), i.debugBreakpointConditionalUnverified = new i("debug-breakpoint-conditional-unverified", {
        fontCharacter: "\\eaa6"
    }), i.debugBreakpointConditional = new i("debug-breakpoint-conditional", {
        fontCharacter: "\\eaa7"
    }), i.debugBreakpointConditionalDisabled = new i("debug-breakpoint-conditional-disabled", {
        fontCharacter: "\\eaa7"
    }), i.debugBreakpointDataUnverified = new i("debug-breakpoint-data-unverified", {
        fontCharacter: "\\eaa8"
    }), i.debugBreakpointData = new i("debug-breakpoint-data", {
        fontCharacter: "\\eaa9"
    }), i.debugBreakpointDataDisabled = new i("debug-breakpoint-data-disabled", {
        fontCharacter: "\\eaa9"
    }), i.debugBreakpointLogUnverified = new i("debug-breakpoint-log-unverified", {
        fontCharacter: "\\eaaa"
    }), i.debugBreakpointLog = new i("debug-breakpoint-log", {
        fontCharacter: "\\eaab"
    }), i.debugBreakpointLogDisabled = new i("debug-breakpoint-log-disabled", {
        fontCharacter: "\\eaab"
    }), i.briefcase = new i("briefcase", {
        fontCharacter: "\\eaac"
    }), i.broadcast = new i("broadcast", {
        fontCharacter: "\\eaad"
    }), i.browser = new i("browser", {
        fontCharacter: "\\eaae"
    }), i.bug = new i("bug", {
        fontCharacter: "\\eaaf"
    }), i.calendar = new i("calendar", {
        fontCharacter: "\\eab0"
    }), i.caseSensitive = new i("case-sensitive", {
        fontCharacter: "\\eab1"
    }), i.check = new i("check", {
        fontCharacter: "\\eab2"
    }), i.checklist = new i("checklist", {
        fontCharacter: "\\eab3"
    }), i.chevronDown = new i("chevron-down", {
        fontCharacter: "\\eab4"
    }), i.dropDownButton = new i("drop-down-button", i.chevronDown.definition), i.chevronLeft = new i("chevron-left", {
        fontCharacter: "\\eab5"
    }), i.chevronRight = new i("chevron-right", {
        fontCharacter: "\\eab6"
    }), i.chevronUp = new i("chevron-up", {
        fontCharacter: "\\eab7"
    }), i.chromeClose = new i("chrome-close", {
        fontCharacter: "\\eab8"
    }), i.chromeMaximize = new i("chrome-maximize", {
        fontCharacter: "\\eab9"
    }), i.chromeMinimize = new i("chrome-minimize", {
        fontCharacter: "\\eaba"
    }), i.chromeRestore = new i("chrome-restore", {
        fontCharacter: "\\eabb"
    }), i.circleOutline = new i("circle-outline", {
        fontCharacter: "\\eabc"
    }), i.debugBreakpointUnverified = new i("debug-breakpoint-unverified", {
        fontCharacter: "\\eabc"
    }), i.circleSlash = new i("circle-slash", {
        fontCharacter: "\\eabd"
    }), i.circuitBoard = new i("circuit-board", {
        fontCharacter: "\\eabe"
    }), i.clearAll = new i("clear-all", {
        fontCharacter: "\\eabf"
    }), i.clippy = new i("clippy", {
        fontCharacter: "\\eac0"
    }), i.closeAll = new i("close-all", {
        fontCharacter: "\\eac1"
    }), i.cloudDownload = new i("cloud-download", {
        fontCharacter: "\\eac2"
    }), i.cloudUpload = new i("cloud-upload", {
        fontCharacter: "\\eac3"
    }), i.code = new i("code", {
        fontCharacter: "\\eac4"
    }), i.collapseAll = new i("collapse-all", {
        fontCharacter: "\\eac5"
    }), i.colorMode = new i("color-mode", {
        fontCharacter: "\\eac6"
    }), i.commentDiscussion = new i("comment-discussion", {
        fontCharacter: "\\eac7"
    }), i.compareChanges = new i("compare-changes", {
        fontCharacter: "\\eafd"
    }), i.creditCard = new i("credit-card", {
        fontCharacter: "\\eac9"
    }), i.dash = new i("dash", {
        fontCharacter: "\\eacc"
    }), i.dashboard = new i("dashboard", {
        fontCharacter: "\\eacd"
    }), i.database = new i("database", {
        fontCharacter: "\\eace"
    }), i.debugContinue = new i("debug-continue", {
        fontCharacter: "\\eacf"
    }), i.debugDisconnect = new i("debug-disconnect", {
        fontCharacter: "\\ead0"
    }), i.debugPause = new i("debug-pause", {
        fontCharacter: "\\ead1"
    }), i.debugRestart = new i("debug-restart", {
        fontCharacter: "\\ead2"
    }), i.debugStart = new i("debug-start", {
        fontCharacter: "\\ead3"
    }), i.debugStepInto = new i("debug-step-into", {
        fontCharacter: "\\ead4"
    }), i.debugStepOut = new i("debug-step-out", {
        fontCharacter: "\\ead5"
    }), i.debugStepOver = new i("debug-step-over", {
        fontCharacter: "\\ead6"
    }), i.debugStop = new i("debug-stop", {
        fontCharacter: "\\ead7"
    }), i.debug = new i("debug", {
        fontCharacter: "\\ead8"
    }), i.deviceCameraVideo = new i("device-camera-video", {
        fontCharacter: "\\ead9"
    }), i.deviceCamera = new i("device-camera", {
        fontCharacter: "\\eada"
    }), i.deviceMobile = new i("device-mobile", {
        fontCharacter: "\\eadb"
    }), i.diffAdded = new i("diff-added", {
        fontCharacter: "\\eadc"
    }), i.diffIgnored = new i("diff-ignored", {
        fontCharacter: "\\eadd"
    }), i.diffModified = new i("diff-modified", {
        fontCharacter: "\\eade"
    }), i.diffRemoved = new i("diff-removed", {
        fontCharacter: "\\eadf"
    }), i.diffRenamed = new i("diff-renamed", {
        fontCharacter: "\\eae0"
    }), i.diff = new i("diff", {
        fontCharacter: "\\eae1"
    }), i.discard = new i("discard", {
        fontCharacter: "\\eae2"
    }), i.editorLayout = new i("editor-layout", {
        fontCharacter: "\\eae3"
    }), i.emptyWindow = new i("empty-window", {
        fontCharacter: "\\eae4"
    }), i.exclude = new i("exclude", {
        fontCharacter: "\\eae5"
    }), i.extensions = new i("extensions", {
        fontCharacter: "\\eae6"
    }), i.eyeClosed = new i("eye-closed", {
        fontCharacter: "\\eae7"
    }), i.fileBinary = new i("file-binary", {
        fontCharacter: "\\eae8"
    }), i.fileCode = new i("file-code", {
        fontCharacter: "\\eae9"
    }), i.fileMedia = new i("file-media", {
        fontCharacter: "\\eaea"
    }), i.filePdf = new i("file-pdf", {
        fontCharacter: "\\eaeb"
    }), i.fileSubmodule = new i("file-submodule", {
        fontCharacter: "\\eaec"
    }), i.fileSymlinkDirectory = new i("file-symlink-directory", {
        fontCharacter: "\\eaed"
    }), i.fileSymlinkFile = new i("file-symlink-file", {
        fontCharacter: "\\eaee"
    }), i.fileZip = new i("file-zip", {
        fontCharacter: "\\eaef"
    }), i.files = new i("files", {
        fontCharacter: "\\eaf0"
    }), i.filter = new i("filter", {
        fontCharacter: "\\eaf1"
    }), i.flame = new i("flame", {
        fontCharacter: "\\eaf2"
    }), i.foldDown = new i("fold-down", {
        fontCharacter: "\\eaf3"
    }), i.foldUp = new i("fold-up", {
        fontCharacter: "\\eaf4"
    }), i.fold = new i("fold", {
        fontCharacter: "\\eaf5"
    }), i.folderActive = new i("folder-active", {
        fontCharacter: "\\eaf6"
    }), i.folderOpened = new i("folder-opened", {
        fontCharacter: "\\eaf7"
    }), i.gear = new i("gear", {
        fontCharacter: "\\eaf8"
    }), i.gift = new i("gift", {
        fontCharacter: "\\eaf9"
    }), i.gistSecret = new i("gist-secret", {
        fontCharacter: "\\eafa"
    }), i.gist = new i("gist", {
        fontCharacter: "\\eafb"
    }), i.gitCommit = new i("git-commit", {
        fontCharacter: "\\eafc"
    }), i.gitCompare = new i("git-compare", {
        fontCharacter: "\\eafd"
    }), i.gitMerge = new i("git-merge", {
        fontCharacter: "\\eafe"
    }), i.githubAction = new i("github-action", {
        fontCharacter: "\\eaff"
    }), i.githubAlt = new i("github-alt", {
        fontCharacter: "\\eb00"
    }), i.globe = new i("globe", {
        fontCharacter: "\\eb01"
    }), i.grabber = new i("grabber", {
        fontCharacter: "\\eb02"
    }), i.graph = new i("graph", {
        fontCharacter: "\\eb03"
    }), i.gripper = new i("gripper", {
        fontCharacter: "\\eb04"
    }), i.heart = new i("heart", {
        fontCharacter: "\\eb05"
    }), i.home = new i("home", {
        fontCharacter: "\\eb06"
    }), i.horizontalRule = new i("horizontal-rule", {
        fontCharacter: "\\eb07"
    }), i.hubot = new i("hubot", {
        fontCharacter: "\\eb08"
    }), i.inbox = new i("inbox", {
        fontCharacter: "\\eb09"
    }), i.issueClosed = new i("issue-closed", {
        fontCharacter: "\\eba4"
    }), i.issueReopened = new i("issue-reopened", {
        fontCharacter: "\\eb0b"
    }), i.issues = new i("issues", {
        fontCharacter: "\\eb0c"
    }), i.italic = new i("italic", {
        fontCharacter: "\\eb0d"
    }), i.jersey = new i("jersey", {
        fontCharacter: "\\eb0e"
    }), i.json = new i("json", {
        fontCharacter: "\\eb0f"
    }), i.kebabVertical = new i("kebab-vertical", {
        fontCharacter: "\\eb10"
    }), i.key = new i("key", {
        fontCharacter: "\\eb11"
    }), i.law = new i("law", {
        fontCharacter: "\\eb12"
    }), i.lightbulbAutofix = new i("lightbulb-autofix", {
        fontCharacter: "\\eb13"
    }), i.linkExternal = new i("link-external", {
        fontCharacter: "\\eb14"
    }), i.link = new i("link", {
        fontCharacter: "\\eb15"
    }), i.listOrdered = new i("list-ordered", {
        fontCharacter: "\\eb16"
    }), i.listUnordered = new i("list-unordered", {
        fontCharacter: "\\eb17"
    }), i.liveShare = new i("live-share", {
        fontCharacter: "\\eb18"
    }), i.loading = new i("loading", {
        fontCharacter: "\\eb19"
    }), i.location = new i("location", {
        fontCharacter: "\\eb1a"
    }), i.mailRead = new i("mail-read", {
        fontCharacter: "\\eb1b"
    }), i.mail = new i("mail", {
        fontCharacter: "\\eb1c"
    }), i.markdown = new i("markdown", {
        fontCharacter: "\\eb1d"
    }), i.megaphone = new i("megaphone", {
        fontCharacter: "\\eb1e"
    }), i.mention = new i("mention", {
        fontCharacter: "\\eb1f"
    }), i.milestone = new i("milestone", {
        fontCharacter: "\\eb20"
    }), i.mortarBoard = new i("mortar-board", {
        fontCharacter: "\\eb21"
    }), i.move = new i("move", {
        fontCharacter: "\\eb22"
    }), i.multipleWindows = new i("multiple-windows", {
        fontCharacter: "\\eb23"
    }), i.mute = new i("mute", {
        fontCharacter: "\\eb24"
    }), i.noNewline = new i("no-newline", {
        fontCharacter: "\\eb25"
    }), i.note = new i("note", {
        fontCharacter: "\\eb26"
    }), i.octoface = new i("octoface", {
        fontCharacter: "\\eb27"
    }), i.openPreview = new i("open-preview", {
        fontCharacter: "\\eb28"
    }), i.package_ = new i("package", {
        fontCharacter: "\\eb29"
    }), i.paintcan = new i("paintcan", {
        fontCharacter: "\\eb2a"
    }), i.pin = new i("pin", {
        fontCharacter: "\\eb2b"
    }), i.play = new i("play", {
        fontCharacter: "\\eb2c"
    }), i.run = new i("run", {
        fontCharacter: "\\eb2c"
    }), i.plug = new i("plug", {
        fontCharacter: "\\eb2d"
    }), i.preserveCase = new i("preserve-case", {
        fontCharacter: "\\eb2e"
    }), i.preview = new i("preview", {
        fontCharacter: "\\eb2f"
    }), i.project = new i("project", {
        fontCharacter: "\\eb30"
    }), i.pulse = new i("pulse", {
        fontCharacter: "\\eb31"
    }), i.question = new i("question", {
        fontCharacter: "\\eb32"
    }), i.quote = new i("quote", {
        fontCharacter: "\\eb33"
    }), i.radioTower = new i("radio-tower", {
        fontCharacter: "\\eb34"
    }), i.reactions = new i("reactions", {
        fontCharacter: "\\eb35"
    }), i.references = new i("references", {
        fontCharacter: "\\eb36"
    }), i.refresh = new i("更新", {
        fontCharacter: "\\eb37"
    }), i.regex = new i("regex", {
        fontCharacter: "\\eb38"
    }), i.remoteExplorer = new i("remote-explorer", {
        fontCharacter: "\\eb39"
    }), i.remote = new i("remote", {
        fontCharacter: "\\eb3a"
    }), i.remove = new i("remove", {
        fontCharacter: "\\eb3b"
    }), i.replaceAll = new i("replace-all", {
        fontCharacter: "\\eb3c"
    }), i.replace = new i("replace", {
        fontCharacter: "\\eb3d"
    }), i.repoClone = new i("repo-clone", {
        fontCharacter: "\\eb3e"
    }), i.repoForcePush = new i("repo-force-push", {
        fontCharacter: "\\eb3f"
    }), i.repoPull = new i("repo-pull", {
        fontCharacter: "\\eb40"
    }), i.repoPush = new i("repo-push", {
        fontCharacter: "\\eb41"
    }), i.report = new i("report", {
        fontCharacter: "\\eb42"
    }), i.requestChanges = new i("request-changes", {
        fontCharacter: "\\eb43"
    }), i.rocket = new i("rocket", {
        fontCharacter: "\\eb44"
    }), i.rootFolderOpened = new i("root-folder-opened", {
        fontCharacter: "\\eb45"
    }), i.rootFolder = new i("root-folder", {
        fontCharacter: "\\eb46"
    }), i.rss = new i("rss", {
        fontCharacter: "\\eb47"
    }), i.ruby = new i("ruby", {
        fontCharacter: "\\eb48"
    }), i.saveAll = new i("save-all", {
        fontCharacter: "\\eb49"
    }), i.saveAs = new i("save-as", {
        fontCharacter: "\\eb4a"
    }), i.save = new i("save", {
        fontCharacter: "\\eb4b"
    }), i.screenFull = new i("screen-full", {
        fontCharacter: "\\eb4c"
    }), i.screenNormal = new i("screen-normal", {
        fontCharacter: "\\eb4d"
    }), i.searchStop = new i("search-stop", {
        fontCharacter: "\\eb4e"
    }), i.server = new i("server", {
        fontCharacter: "\\eb50"
    }), i.settingsGear = new i("settings-gear", {
        fontCharacter: "\\eb51"
    }), i.settings = new i("设置", {
        fontCharacter: "\\eb52"
    }), i.shield = new i("shield", {
        fontCharacter: "\\eb53"
    }), i.smiley = new i("smiley", {
        fontCharacter: "\\eb54"
    }), i.sortPrecedence = new i("sort-precedence", {
        fontCharacter: "\\eb55"
    }), i.splitHorizontal = new i("split-horizontal", {
        fontCharacter: "\\eb56"
    }), i.splitVertical = new i("split-vertical", {
        fontCharacter: "\\eb57"
    }), i.squirrel = new i("squirrel", {
        fontCharacter: "\\eb58"
    }), i.starFull = new i("star-full", {
        fontCharacter: "\\eb59"
    }), i.starHalf = new i("star-half", {
        fontCharacter: "\\eb5a"
    }), i.symbolClass = new i("symbol-class", {
        fontCharacter: "\\eb5b"
    }), i.symbolColor = new i("symbol-color", {
        fontCharacter: "\\eb5c"
    }), i.symbolConstant = new i("symbol-constant", {
        fontCharacter: "\\eb5d"
    }), i.symbolEnumMember = new i("symbol-enum-member", {
        fontCharacter: "\\eb5e"
    }), i.symbolField = new i("symbol-field", {
        fontCharacter: "\\eb5f"
    }), i.symbolFile = new i("symbol-file", {
        fontCharacter: "\\eb60"
    }), i.symbolInterface = new i("symbol-interface", {
        fontCharacter: "\\eb61"
    }), i.symbolKeyword = new i("symbol-keyword", {
        fontCharacter: "\\eb62"
    }), i.symbolMisc = new i("symbol-misc", {
        fontCharacter: "\\eb63"
    }), i.symbolOperator = new i("symbol-operator", {
        fontCharacter: "\\eb64"
    }), i.symbolProperty = new i("symbol-property", {
        fontCharacter: "\\eb65"
    }), i.wrench = new i("wrench", {
        fontCharacter: "\\eb65"
    }), i.wrenchSubaction = new i("wrench-subaction", {
        fontCharacter: "\\eb65"
    }), i.symbolSnippet = new i("symbol-snippet", {
        fontCharacter: "\\eb66"
    }), i.tasklist = new i("tasklist", {
        fontCharacter: "\\eb67"
    }), i.telescope = new i("telescope", {
        fontCharacter: "\\eb68"
    }), i.textSize = new i("text-size", {
        fontCharacter: "\\eb69"
    }), i.threeBars = new i("three-bars", {
        fontCharacter: "\\eb6a"
    }), i.thumbsdown = new i("thumbsdown", {
        fontCharacter: "\\eb6b"
    }), i.thumbsup = new i("thumbsup", {
        fontCharacter: "\\eb6c"
    }), i.tools = new i("tools", {
        fontCharacter: "\\eb6d"
    }), i.triangleDown = new i("triangle-down", {
        fontCharacter: "\\eb6e"
    }), i.triangleLeft = new i("triangle-left", {
        fontCharacter: "\\eb6f"
    }), i.triangleRight = new i("triangle-right", {
        fontCharacter: "\\eb70"
    }), i.triangleUp = new i("triangle-up", {
        fontCharacter: "\\eb71"
    }), i.twitter = new i("twitter", {
        fontCharacter: "\\eb72"
    }), i.unfold = new i("unfold", {
        fontCharacter: "\\eb73"
    }), i.unlock = new i("unlock", {
        fontCharacter: "\\eb74"
    }), i.unmute = new i("unmute", {
        fontCharacter: "\\eb75"
    }), i.unverified = new i("unverified", {
        fontCharacter: "\\eb76"
    }), i.verified = new i("verified", {
        fontCharacter: "\\eb77"
    }), i.versions = new i("versions", {
        fontCharacter: "\\eb78"
    }), i.vmActive = new i("vm-active", {
        fontCharacter: "\\eb79"
    }), i.vmOutline = new i("vm-outline", {
        fontCharacter: "\\eb7a"
    }), i.vmRunning = new i("vm-running", {
        fontCharacter: "\\eb7b"
    }), i.watch = new i("watch", {
        fontCharacter: "\\eb7c"
    }), i.whitespace = new i("whitespace", {
        fontCharacter: "\\eb7d"
    }), i.wholeWord = new i("whole-word", {
        fontCharacter: "\\eb7e"
    }), i.window = new i("window", {
        fontCharacter: "\\eb7f"
    }), i.wordWrap = new i("word-wrap", {
        fontCharacter: "\\eb80"
    }), i.zoomIn = new i("zoom-in", {
        fontCharacter: "\\eb81"
    }), i.zoomOut = new i("zoom-out", {
        fontCharacter: "\\eb82"
    }), i.listFilter = new i("list-filter", {
        fontCharacter: "\\eb83"
    }), i.listFlat = new i("list-flat", {
        fontCharacter: "\\eb84"
    }), i.listSelection = new i("list-selection", {
        fontCharacter: "\\eb85"
    }), i.selection = new i("selection", {
        fontCharacter: "\\eb85"
    }), i.listTree = new i("list-tree", {
        fontCharacter: "\\eb86"
    }), i.debugBreakpointFunctionUnverified = new i("debug-breakpoint-function-unverified", {
        fontCharacter: "\\eb87"
    }), i.debugBreakpointFunction = new i("debug-breakpoint-function", {
        fontCharacter: "\\eb88"
    }), i.debugBreakpointFunctionDisabled = new i("debug-breakpoint-function-disabled", {
        fontCharacter: "\\eb88"
    }), i.debugStackframeActive = new i("debug-stackframe-active", {
        fontCharacter: "\\eb89"
    }), i.debugStackframeDot = new i("debug-stackframe-dot", {
        fontCharacter: "\\eb8a"
    }), i.debugStackframe = new i("debug-stackframe", {
        fontCharacter: "\\eb8b"
    }), i.debugStackframeFocused = new i("debug-stackframe-focused", {
        fontCharacter: "\\eb8b"
    }), i.debugBreakpointUnsupported = new i("debug-breakpoint-unsupported", {
        fontCharacter: "\\eb8c"
    }), i.symbolString = new i("symbol-string", {
        fontCharacter: "\\eb8d"
    }), i.debugReverseContinue = new i("debug-reverse-continue", {
        fontCharacter: "\\eb8e"
    }), i.debugStepBack = new i("debug-step-back", {
        fontCharacter: "\\eb8f"
    }), i.debugRestartFrame = new i("debug-restart-frame", {
        fontCharacter: "\\eb90"
    }), i.callIncoming = new i("call-incoming", {
        fontCharacter: "\\eb92"
    }), i.callOutgoing = new i("call-outgoing", {
        fontCharacter: "\\eb93"
    }), i.menu = new i("menu", {
        fontCharacter: "\\eb94"
    }), i.expandAll = new i("expand-all", {
        fontCharacter: "\\eb95"
    }), i.feedback = new i("feedback", {
        fontCharacter: "\\eb96"
    }), i.groupByRefType = new i("group-by-ref-type", {
        fontCharacter: "\\eb97"
    }), i.ungroupByRefType = new i("ungroup-by-ref-type", {
        fontCharacter: "\\eb98"
    }), i.account = new i("account", {
        fontCharacter: "\\eb99"
    }), i.bellDot = new i("bell-dot", {
        fontCharacter: "\\eb9a"
    }), i.debugConsole = new i("debug-console", {
        fontCharacter: "\\eb9b"
    }), i.library = new i("library", {
        fontCharacter: "\\eb9c"
    }), i.output = new i("output", {
        fontCharacter: "\\eb9d"
    }), i.runAll = new i("run-all", {
        fontCharacter: "\\eb9e"
    }), i.syncIgnored = new i("sync-ignored", {
        fontCharacter: "\\eb9f"
    }), i.pinned = new i("pinned", {
        fontCharacter: "\\eba0"
    }), i.githubInverted = new i("github-inverted", {
        fontCharacter: "\\eba1"
    }), i.debugAlt = new i("debug-alt", {
        fontCharacter: "\\eb91"
    }), i.serverProcess = new i("server-process", {
        fontCharacter: "\\eba2"
    }), i.serverEnvironment = new i("server-environment", {
        fontCharacter: "\\eba3"
    }), i.pass = new i("pass", {
        fontCharacter: "\\eba4"
    }), i.stopCircle = new i("stop-circle", {
        fontCharacter: "\\eba5"
    }), i.playCircle = new i("play-circle", {
        fontCharacter: "\\eba6"
    }), i.record = new i("record", {
        fontCharacter: "\\eba7"
    }), i.debugAltSmall = new i("debug-alt-small", {
        fontCharacter: "\\eba8"
    }), i.vmConnect = new i("vm-connect", {
        fontCharacter: "\\eba9"
    }), i.cloud = new i("cloud", {
        fontCharacter: "\\ebaa"
    }), i.merge = new i("merge", {
        fontCharacter: "\\ebab"
    }), i.exportIcon = new i("export", {
        fontCharacter: "\\ebac"
    }), i.graphLeft = new i("graph-left", {
        fontCharacter: "\\ebad"
    }), i.magnet = new i("magnet", {
        fontCharacter: "\\ebae"
    }), i.notebook = new i("notebook", {
        fontCharacter: "\\ebaf"
    }), i.redo = new i("redo", {
        fontCharacter: "\\ebb0"
    }), i.checkAll = new i("check-all", {
        fontCharacter: "\\ebb1"
    }), i.pinnedDirty = new i("pinned-dirty", {
        fontCharacter: "\\ebb2"
    }), i.passFilled = new i("pass-filled", {
        fontCharacter: "\\ebb3"
    }), i.circleLargeFilled = new i("circle-large-filled", {
        fontCharacter: "\\ebb4"
    }), i.circleLargeOutline = new i("circle-large-outline", {
        fontCharacter: "\\ebb5"
    }), i.combine = new i("combine", {
        fontCharacter: "\\ebb6"
    }), i.gather = new i("gather", {
        fontCharacter: "\\ebb6"
    }), i.table = new i("table", {
        fontCharacter: "\\ebb7"
    }), i.variableGroup = new i("variable-group", {
        fontCharacter: "\\ebb8"
    }), i.typeHierarchy = new i("type-hierarchy", {
        fontCharacter: "\\ebb9"
    }), i.typeHierarchySub = new i("type-hierarchy-sub", {
        fontCharacter: "\\ebba"
    }), i.typeHierarchySuper = new i("type-hierarchy-super", {
        fontCharacter: "\\ebbb"
    }), i.gitPullRequestCreate = new i("git-pull-request-create", {
        fontCharacter: "\\ebbc"
    }), i.runAbove = new i("run-above", {
        fontCharacter: "\\ebbd"
    }), i.runBelow = new i("run-below", {
        fontCharacter: "\\ebbe"
    }), i.notebookTemplate = new i("notebook-template", {
        fontCharacter: "\\ebbf"
    }), i.debugRerun = new i("debug-rerun", {
        fontCharacter: "\\ebc0"
    }), i.workspaceTrusted = new i("workspace-trusted", {
        fontCharacter: "\\ebc1"
    }), i.workspaceUntrusted = new i("workspace-untrusted", {
        fontCharacter: "\\ebc2"
    }), i.workspaceUnspecified = new i("workspace-unspecified", {
        fontCharacter: "\\ebc3"
    }), i.terminalCmd = new i("terminal-cmd", {
        fontCharacter: "\\ebc4"
    }), i.terminalDebian = new i("terminal-debian", {
        fontCharacter: "\\ebc5"
    }), i.terminalLinux = new i("terminal-linux", {
        fontCharacter: "\\ebc6"
    }), i.terminalPowershell = new i("terminal-powershell", {
        fontCharacter: "\\ebc7"
    }), i.terminalTmux = new i("terminal-tmux", {
        fontCharacter: "\\ebc8"
    }), i.terminalUbuntu = new i("terminal-ubuntu", {
        fontCharacter: "\\ebc9"
    }), i.terminalBash = new i("terminal-bash", {
        fontCharacter: "\\ebca"
    }), i.arrowSwap = new i("arrow-swap", {
        fontCharacter: "\\ebcb"
    }), i.copy = new i("copy", {
        fontCharacter: "\\ebcc"
    }), i.personAdd = new i("person-add", {
        fontCharacter: "\\ebcd"
    }), i.filterFilled = new i("filter-filled", {
        fontCharacter: "\\ebce"
    }), i.wand = new i("wand", {
        fontCharacter: "\\ebcf"
    }), i.debugLineByLine = new i("debug-line-by-line", {
        fontCharacter: "\\ebd0"
    }), i.inspect = new i("inspect", {
        fontCharacter: "\\ebd1"
    }), i.layers = new i("layers", {
        fontCharacter: "\\ebd2"
    }), i.layersDot = new i("layers-dot", {
        fontCharacter: "\\ebd3"
    }), i.layersActive = new i("layers-active", {
        fontCharacter: "\\ebd4"
    }), i.compass = new i("compass", {
        fontCharacter: "\\ebd5"
    }), i.compassDot = new i("compass-dot", {
        fontCharacter: "\\ebd6"
    }), i.compassActive = new i("compass-active", {
        fontCharacter: "\\ebd7"
    }), i.azure = new i("azure", {
        fontCharacter: "\\ebd8"
    }), i.issueDraft = new i("issue-draft", {
        fontCharacter: "\\ebd9"
    }), i.gitPullRequestClosed = new i("git-pull-request-closed", {
        fontCharacter: "\\ebda"
    }), i.gitPullRequestDraft = new i("git-pull-request-draft", {
        fontCharacter: "\\ebdb"
    }), i.debugAll = new i("debug-all", {
        fontCharacter: "\\ebdc"
    }), i.debugCoverage = new i("debug-coverage", {
        fontCharacter: "\\ebdd"
    }), i.runErrors = new i("run-errors", {
        fontCharacter: "\\ebde"
    }), i.folderLibrary = new i("folder-library", {
        fontCharacter: "\\ebdf"
    }), i.debugContinueSmall = new i("debug-continue-small", {
        fontCharacter: "\\ebe0"
    }), i.beakerStop = new i("beaker-stop", {
        fontCharacter: "\\ebe1"
    }), i.graphLine = new i("graph-line", {
        fontCharacter: "\\ebe2"
    }), i.graphScatter = new i("graph-scatter", {
        fontCharacter: "\\ebe3"
    }), i.pieChart = new i("pie-chart", {
        fontCharacter: "\\ebe4"
    }), i.bracket = new i("bracket", i.json.definition), i.bracketDot = new i("bracket-dot", {
        fontCharacter: "\\ebe5"
    }), i.bracketError = new i("bracket-error", {
        fontCharacter: "\\ebe6"
    }), i.lockSmall = new i("lock-small", {
        fontCharacter: "\\ebe7"
    }), i.azureDevops = new i("azure-devops", {
        fontCharacter: "\\ebe8"
    }), i.verifiedFilled = new i("verified-filled", {
        fontCharacter: "\\ebe9"
    })
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    }));
    class n {
        constructor(e) {
            this.domNode = e, this._maxWidth = -1, this._width = -1, this._height = -1, this._top = -1, this._left = -1, this._bottom = -1, this._right = -1, this._fontFamily = "", this._fontWeight = "", this._fontSize = -1, this._fontFeatureSettings = "", this._lineHeight = -1, this._letterSpacing = -100, this._className = "", this._display = "", this._position = "", this._visibility = "", this._backgroundColor = "", this._layerHint = !1, this._contain = "none", this._boxShadow = ""
        }
        setMaxWidth(e) {
            this._maxWidth !== e && (this._maxWidth = e, this.domNode.style.maxWidth = this._maxWidth + "px")
        }
        setWidth(e) {
            this._width !== e && (this._width = e, this.domNode.style.width = this._width + "px")
        }
        setHeight(e) {
            this._height !== e && (this._height = e, this.domNode.style.height = this._height + "px")
        }
        setTop(e) {
            this._top !== e && (this._top = e, this.domNode.style.top = this._top + "px")
        }
        unsetTop() {
            -1 !== this._top && (this._top = -1, this.domNode.style.top = "")
        }
        setLeft(e) {
            this._left !== e && (this._left = e, this.domNode.style.left = this._left + "px")
        }
        setBottom(e) {
            this._bottom !== e && (this._bottom = e, this.domNode.style.bottom = this._bottom + "px")
        }
        setRight(e) {
            this._right !== e && (this._right = e, this.domNode.style.right = this._right + "px")
        }
        setFontFamily(e) {
            this._fontFamily !== e && (this._fontFamily = e, this.domNode.style.fontFamily = this._fontFamily)
        }
        setFontWeight(e) {
            this._fontWeight !== e && (this._fontWeight = e, this.domNode.style.fontWeight = this._fontWeight)
        }
        setFontSize(e) {
            this._fontSize !== e && (this._fontSize = e, this.domNode.style.fontSize = this._fontSize + "px")
        }
        setFontFeatureSettings(e) {
            this._fontFeatureSettings !== e && (this._fontFeatureSettings = e, this.domNode.style.fontFeatureSettings = this._fontFeatureSettings)
        }
        setLineHeight(e) {
            this._lineHeight !== e && (this._lineHeight = e, this.domNode.style.lineHeight = this._lineHeight + "px")
        }
        setLetterSpacing(e) {
            this._letterSpacing !== e && (this._letterSpacing = e, this.domNode.style.letterSpacing = this._letterSpacing + "px")
        }
        setClassName(e) {
            this._className !== e && (this._className = e, this.domNode.className = this._className)
        }
        toggleClassName(e, t) {
            this.domNode.classList.toggle(e, t), this._className = this.domNode.className
        }
        setDisplay(e) {
            this._display !== e && (this._display = e, this.domNode.style.display = this._display)
        }
        setPosition(e) {
            this._position !== e && (this._position = e, this.domNode.style.position = this._position)
        }
        setVisibility(e) {
            this._visibility !== e && (this._visibility = e, this.domNode.style.visibility = this._visibility)
        }
        setBackgroundColor(e) {
            this._backgroundColor !== e && (this._backgroundColor = e, this.domNode.style.backgroundColor = this._backgroundColor)
        }
        setLayerHinting(e) {
            this._layerHint !== e && (this._layerHint = e, this.domNode.style.transform = this._layerHint ? "translate3d(0px, 0px, 0px)" : "")
        }
        setBoxShadow(e) {
            this._boxShadow !== e && (this._boxShadow = e, this.domNode.style.boxShadow = e)
        }
        setContain(e) {
            this._contain !== e && (this._contain = e, this.domNode.style.contain = this._contain)
        }
        setAttribute(e, t) {
            this.domNode.setAttribute(e, t)
        }
        removeAttribute(e) {
            this.domNode.removeAttribute(e)
        }
        appendChild(e) {
            this.domNode.appendChild(e.domNode)
        }
        removeChild(e) {
            this.domNode.removeChild(e.domNode)
        }
    }

    function r(e) {
        return new n(e)
    }
}, function(e, t, i) {
    "use strict";
    t.a = {
        put: function(e, t) {
            window.localStorage.setItem(e, JSON.stringify(t))
        },
        get: function(e) {
            var t = window.localStorage.getItem(e);
            if ("" !== t) try {
                return JSON.parse(t)
            } catch (t) {
                console.error("get [".concat(e, "] from cache failed with error:"), t)
            }
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(8);
    class r extends i(5).a {
        constructor(e, t, i, n) {
            super(e, t, i, n), this.selectionStartLineNumber = e, this.selectionStartColumn = t, this.positionLineNumber = i, this.positionColumn = n
        }
        toString() {
            return "[" + this.selectionStartLineNumber + "," + this.selectionStartColumn + " -> " + this.positionLineNumber + "," + this.positionColumn + "]"
        }
        equalsSelection(e) {
            return r.selectionsEqual(this, e)
        }
        static selectionsEqual(e, t) {
            return e.selectionStartLineNumber === t.selectionStartLineNumber && e.selectionStartColumn === t.selectionStartColumn && e.positionLineNumber === t.positionLineNumber && e.positionColumn === t.positionColumn
        }
        getDirection() {
            return this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn ? 0 : 1
        }
        setEndPosition(e, t) {
            return 0 === this.getDirection() ? new r(this.startLineNumber, this.startColumn, e, t) : new r(e, t, this.startLineNumber, this.startColumn)
        }
        getPosition() {
            return new n.a(this.positionLineNumber, this.positionColumn)
        }
        setStartPosition(e, t) {
            return 0 === this.getDirection() ? new r(e, t, this.endLineNumber, this.endColumn) : new r(this.endLineNumber, this.endColumn, e, t)
        }
        static fromPositions(e, t = e) {
            return new r(e.lineNumber, e.column, t.lineNumber, t.column)
        }
        static liftSelection(e) {
            return new r(e.selectionStartLineNumber, e.selectionStartColumn, e.positionLineNumber, e.positionColumn)
        }
        static selectionsArrEqual(e, t) {
            if (e && !t || !e && t) return !1;
            if (!e && !t) return !0;
            if (e.length !== t.length) return !1;
            for (let i = 0, n = e.length; i < n; i++)
                if (!this.selectionsEqual(e[i], t[i])) return !1;
            return !0
        }
        static isISelection(e) {
            return e && "number" == typeof e.selectionStartLineNumber && "number" == typeof e.selectionStartColumn && "number" == typeof e.positionLineNumber && "number" == typeof e.positionColumn
        }
        static createWithDirection(e, t, i, n, o) {
            return 0 === o ? new r(e, t, i, n) : new r(i, n, e, t)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "d", (function() {
        return o
    })), i.d(t, "b", (function() {
        return s
    })), i.d(t, "l", (function() {
        return a
    })), i.d(t, "c", (function() {
        return l
    })), i.d(t, "a", (function() {
        return d
    })), i.d(t, "g", (function() {
        return h
    })), i.d(t, "j", (function() {
        return u
    })), i.d(t, "f", (function() {
        return p
    })), i.d(t, "h", (function() {
        return g
    })), i.d(t, "k", (function() {
        return f
    })), i.d(t, "e", (function() {
        return m
    })), i.d(t, "i", (function() {
        return v
    }));
    var n = i(2);
    class r {
        constructor() {
            this._zoomLevel = 0, this._lastZoomLevelChangeTime = 0, this._onDidChangeZoomLevel = new n.b, this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event, this._zoomFactor = 1
        }
        getZoomLevel() {
            return this._zoomLevel
        }
        getTimeSinceLastZoomLevelChanged() {
            return Date.now() - this._lastZoomLevelChangeTime
        }
        getZoomFactor() {
            return this._zoomFactor
        }
        getPixelRatio() {
            var e = document.createElement("canvas").getContext("2d");
            return (window.devicePixelRatio || 1) / (e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1)
        }
    }

    function o() {
        return r.INSTANCE.getZoomLevel()
    }

    function s() {
        return r.INSTANCE.getTimeSinceLastZoomLevelChanged()
    }

    function a(e) {
        return r.INSTANCE.onDidChangeZoomLevel(e)
    }

    function l() {
        return r.INSTANCE.getZoomFactor()
    }

    function d() {
        return r.INSTANCE.getPixelRatio()
    }
    r.INSTANCE = new r;
    const c = navigator.userAgent,
        h = 0 <= c.indexOf("Firefox"),
        u = 0 <= c.indexOf("AppleWebKit"),
        p = 0 <= c.indexOf("Chrome"),
        g = !p && 0 <= c.indexOf("Safari"),
        f = !p && !g && u,
        m = 0 <= c.indexOf("Android"),
        v = window.matchMedia && window.matchMedia("(display-mode: standalone)").matches
}, function(e, t, i) {
    "use strict";
    t.a = {
        SYSTEM_PROXY: "systemProxy",
        LAST_CLASH_PID: "lastClashPID",
        LAST_USER_EXE_PIDS: "lastUserExePids",
        LAST_LOG_FILE_PATH: "lastLogFilePath",
        AD_IMAGES: "adImages",
        CONNECTION_ORDER_INDEX: "connectionOrderIndex",
        CONNECTION_ORDER_REVERSE: "connectionOrderReverse",
        AUTO_LAUNCH: "autoLaunch",
        GEOIP_URL: "geoipDownloadRawURL",
        GEOIP_TOKEN: "geoipDownloadToken",
        TAP_INFO: "tapInfo",
        PROXY_SHOW_SEC_IDXS: "proxyShowSecIdxs",
        IS_PIN_ENABLED: "isPinEnabled",
        MENU_ITEM_ORDER: "menuItemOrder",
        CURRENT_ROUTE_PATH: "currentRoutePath",
        DETECTED_INTERFACE_NAME: "detectedInterfaceName",
        SYSTEM_PROXY_COMMAND: "systemProxyCommand",
        IS_LIGHTWEIGHT_MODE_CLOSE: "isLightweightModeClose",
        IS_MIXIN: "isProfileMixin",
        LAST_VERSION_CODE: "lastVersionCode",
        ROUTER_HIJACK_MAC_ADDRESSES: "routerHijackMacAddresses",
        DHCP_MAC_ALIAS: "dhcpMacAlias",
        TUN_SETTINGS: "tunSettings",
        IS_TUN: "isTunEnabled"
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return h
    })), i.d(t, "b", (function() {
        return v
    }));
    var n = i(62),
        r = i(9);
    const o = /^\w[\w\d+.-]*$/,
        s = /^\//,
        a = /^\/\//;

    function l(e, t) {
        if (!e.scheme && t) throw new Error(`[UriError]: 跳转方案 is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);
        if (e.scheme && !o.test(e.scheme)) throw new Error("[UriError]: 跳转方案 contains illegal characters.");
        if (e.path)
            if (e.authority) {
                if (!s.test(e.path)) throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')
            } else if (a.test(e.path)) throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')
    }
    const d = "/",
        c = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
    class h {
        constructor(e, t, i, n, r, o = !1) {
            "object" == typeof e ? (this.scheme = e.scheme || "", this.authority = e.authority || "", this.path = e.path || "", this.query = e.query || "", this.fragment = e.fragment || "") : (this.scheme = (e = e) || o ? e : "file", this.authority = t || "", this.path = function(e, t) {
                switch (e) {
                    case "https":
                    case "http":
                    case "file":
                        t ? t[0] !== d && (t = d + t) : t = d
                }
                return t
            }(this.scheme, i || ""), this.query = n || "", this.fragment = r || "", l(this, o))
        }
        static isUri(e) {
            return e instanceof h || !!e && "string" == typeof e.authority && "string" == typeof e.fragment && "string" == typeof e.path && "string" == typeof e.query && "string" == typeof e.scheme && "string" == typeof e.fsPath && "function" == typeof e.with && "function" == typeof e.toString
        }
        get fsPath() {
            return v(this, !1)
        }
        with(e) {
            if (!e) return this;
            let {
                scheme: t,
                authority: i,
                path: n,
                query: r,
                fragment: o
            } = e;
            return void 0 === t ? t = this.scheme : null === t && (t = ""), void 0 === i ? i = this.authority : null === i && (i = ""), void 0 === n ? n = this.path : null === n && (n = ""), void 0 === r ? r = this.query : null === r && (r = ""), void 0 === o ? o = this.fragment : null === o && (o = ""), t === this.scheme && i === this.authority && n === this.path && r === this.query && o === this.fragment ? this : new p(t, i, n, r, o)
        }
        static parse(e, t = !1) {
            return (e = c.exec(e)) ? new p(e[2] || "", w(e[4] || ""), w(e[5] || ""), w(e[7] || ""), w(e[9] || ""), t) : new p("", "", "", "", "")
        }
        static file(e) {
            let t = "";
            var i;
            return (e = r.i ? e.replace(/\\/g, d) : e)[0] === d && e[1] === d && (e = -1 === (i = e.indexOf(d, 2)) ? (t = e.substring(2), d) : (t = e.substring(2, i), e.substring(i) || d)), new p("file", t, e, "", "")
        }
        static from(e) {
            return l(e = new p(e.scheme, e.authority, e.path, e.query, e.fragment), !0), e
        }
        static joinPath(e, ...t) {
            if (!e.path) throw new Error("[UriError]: cannot call joinPath on URI without path");
            let i;
            return i = r.i && "file" === e.scheme ? h.file(n.i.join(v(e, !0), ...t)).path : n.e.join(e.path, ...t), e.with({
                path: i
            })
        }
        toString(e = !1) {
            return b(this, e)
        }
        toJSON() {
            return this
        }
        static revive(e) {
            if (e) {
                if (e instanceof h) return e; {
                    const t = new p(e);
                    return t._formatted = e.external, t._fsPath = e._sep === u ? e.fsPath : null, t
                }
            }
            return e
        }
    }
    const u = r.i ? 1 : void 0;
    class p extends h {
        constructor() {
            super(...arguments), this._formatted = null, this._fsPath = null
        }
        get fsPath() {
            return this._fsPath || (this._fsPath = v(this, !1)), this._fsPath
        }
        toString(e = !1) {
            return e ? b(this, !0) : (this._formatted || (this._formatted = b(this, !1)), this._formatted)
        }
        toJSON() {
            const e = {
                $mid: 1
            };
            return this._fsPath && (e.fsPath = this._fsPath, e._sep = u), this._formatted && (e.external = this._formatted), this.path && (e.path = this.path), this.scheme && (e.scheme = this.scheme), this.authority && (e.authority = this.authority), this.query && (e.query = this.query), this.fragment && (e.fragment = this.fragment), e
        }
    }
    const g = {
        58: "%3A",
        47: "%2F",
        63: "%3F",
        35: "%23",
        91: "%5B",
        93: "%5D",
        64: "%40",
        33: "%21",
        36: "%24",
        38: "%26",
        39: "%27",
        40: "%28",
        41: "%29",
        42: "%2A",
        43: "%2B",
        44: "%2C",
        59: "%3B",
        61: "%3D",
        32: "%20"
    };

    function f(e, t) {
        let i = void 0,
            n = -1;
        for (let o = 0; o < e.length; o++) {
            var r = e.charCodeAt(o);
            97 <= r && r <= 122 || 65 <= r && r <= 90 || 48 <= r && r <= 57 || 45 === r || 46 === r || 95 === r || 126 === r || t && 47 === r ? (-1 !== n && (i += encodeURIComponent(e.substring(n, o)), n = -1), void 0 !== i && (i += e.charAt(o))) : (void 0 === i && (i = e.substr(0, o)), void 0 !== (r = g[r]) ? (-1 !== n && (i += encodeURIComponent(e.substring(n, o)), n = -1), i += r) : -1 === n && (n = o))
        }
        return -1 !== n && (i += encodeURIComponent(e.substring(n))), void 0 !== i ? i : e
    }

    function m(e) {
        let t = void 0;
        for (let n = 0; n < e.length; n++) {
            var i = e.charCodeAt(n);
            35 === i || 63 === i ? (void 0 === t && (t = e.substr(0, n)), t += g[i]) : void 0 !== t && (t += e[n])
        }
        return void 0 !== t ? t : e
    }

    function v(e, t) {
        let i;
        return i = e.authority && 1 < e.path.length && "file" === e.scheme ? `//${e.authority}${e.path}` : 47 === e.path.charCodeAt(0) && (65 <= e.path.charCodeAt(1) && e.path.charCodeAt(1) <= 90 || 97 <= e.path.charCodeAt(1) && e.path.charCodeAt(1) <= 122) && 58 === e.path.charCodeAt(2) ? t ? e.path.substr(1) : e.path[1].toLowerCase() + e.path.substr(2) : e.path, r.i && (i = i.replace(/\//g, "\\")), i
    }

    function b(e, t) {
        const i = t ? m : f;
        let n = "",
            {
                scheme: r,
                authority: o,
                path: s,
                query: a,
                fragment: l
            } = e;
        if (r && (n += r, n += ":"), !o && "file" !== r || (n += d, n += d), o) {
            let e = o.indexOf("@");
            if (-1 !== e) {
                const t = o.substr(0, e);
                o = o.substr(e + 1), e = t.indexOf(":"), -1 === e ? n += i(t, !1) : (n += i(t.substr(0, e), !1), n += ":", n += i(t.substr(e + 1), !1)), n += "@"
            }
            o = o.toLowerCase(), e = o.indexOf(":"), -1 === e ? n += i(o, !1) : (n += i(o.substr(0, e), !1), n += o.substr(e))
        }
        var c;
        return s && (3 <= s.length && 47 === s.charCodeAt(0) && 58 === s.charCodeAt(2) ? 65 <= (c = s.charCodeAt(1)) && c <= 90 && (s = `/${String.fromCharCode(c+32)}:${s.substr(3)}`) : 2 <= s.length && 58 === s.charCodeAt(1) && 65 <= (c = s.charCodeAt(0)) && c <= 90 && (s = `${String.fromCharCode(c+32)}:${s.substr(2)}`), n += i(s, !0)), a && (n += "?", n += i(a, !1)), l && (n += "#", n += t ? l : f(l, !1)), n
    }
    const _ = /(%[0-9A-Za-z][0-9A-Za-z])+/g;

    function w(e) {
        return e.match(_) ? e.replace(_, e => function e(t) {
            try {
                return decodeURIComponent(t)
            } catch (i) {
                return 3 < t.length ? t.substr(0, 3) + e(t.substr(3)) : t
            }
        }(e)) : e
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "k", (function() {
        return y
    })), i.d(t, "c", (function() {
        return C
    })), i.d(t, "a", (function() {
        return x
    })), i.d(t, "j", (function() {
        return S
    })), i.d(t, "h", (function() {
        return k
    })), i.d(t, "g", (function() {
        return L
    })), i.d(t, "d", (function() {
        return O
    })), i.d(t, "i", (function() {
        return E
    })), i.d(t, "f", (function() {
        return N
    })), i.d(t, "b", (function() {
        return I
    })), i.d(t, "e", (function() {
        return T
    }));
    var n = i(52),
        r = i.n(n),
        o = (t = i(18), i.n(t)),
        s = (n = i(10), t = i.n(n), n = i(3), i.n(n)),
        a = i(248),
        l = i(16),
        d = i(12),
        c = (n = (i(249), i(45)), i.n(n)),
        h = i(42),
        u = i(22),
        p = (i(61), i(35)),
        g = i(38),
        f = i(19);

    function m(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function v(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? m(Object(i), !0).forEach((function(t) {
                o()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : m(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    var b, _, w, y = function(e) {
            return new Promise((function(t) {
                return setTimeout(t, e)
            }))
        },
        C = function(e) {
            return Object(a.createHash)("md5").update(e).digest("hex")
        },
        x = function e(t) {
            l.existsSync(t) && (l.readdirSync(t).forEach((function(i, n) {
                i = d.join(t, i), l.lstatSync(i).isDirectory() ? e(i) : l.unlinkSync(i)
            })), l.rmdirSync(t))
        },
        S = (b = t()(s.a.mark((function e(t, i, n) {
            var r;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        r = l.readFileSync(t).toString(), (r = c.a.parseDocument(r)).set(i, n), l.writeFileSync(t, r.toString());
                    case 4:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e, t, i) {
            return b.apply(this, arguments)
        }),
        k = function(e) {
            var t = h.a.state.app.settings.showNotifications;
            void 0 !== t && t && u.ipcRenderer.send("show-notification", v({
                title: e,
                body: 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "",
                silent: !(2 < arguments.length && void 0 !== arguments[2]) || arguments[2]
            }, 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null))
        },
        L = (_ = t()(s.a.mark((function e(t) {
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.next = 2, u.ipcRenderer.invoke("dialog", "showMessageBox", v({
                            title: "Clash for Windows"
                        }, t));
                    case 2:
                        return e.abrupt("return", e.sent);
                    case 3:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e) {
            return _.apply(this, arguments)
        }),
        O = function(e) {
            return JSON.parse(JSON.stringify(e))
        },
        E = function(e) {
            var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 2,
                i = !(2 < arguments.length && void 0 !== arguments[2]) || arguments[2],
                n = ["B", "KB", "MB", "GB", "TB", "EB"],
                r = 0;
            if (e <= Math.pow(1024, 5)) {
                for (; ~~(e / 1024) && r < n.length;) e /= 1024, r++;
                return "".concat(0 === r ? e : e.toFixed(t)).concat(i ? " " : "").concat(n[r])
            }
            for (e = BigInt(e); ~~(BigInt(e) / 1024n) && r < n.length;) e /= 1024n, r++;
            return "".concat(e).concat(i ? " " : "").concat(n[r])
        },
        N = (t()(s.a.mark((function e(t) {
            var i, n, o, a, l;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        i = t.method, n = t.target, a = t.checkTimes, o = void 0 === a ? 10 : a, l = t.ags, a = void 0 === l ? [] : l, l = 0;
                    case 2:
                        return e.next = 5, i.apply(void 0, r()(a));
                    case 5:
                        if (e.t0 = e.sent, e.t1 = n, e.t0 === e.t1) return e.abrupt("return");
                        e.next = 9;
                        break;
                    case 9:
                        return e.next = 11, y(1e3);
                    case 11:
                        if (o <= (l += 1)) return e.abrupt("return");
                        e.next = 14;
                        break;
                    case 14:
                        e.next = 2;
                        break;
                    case 16:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e, t) {
            if (e.length <= t) return e;
            var i = parseInt(t / 2);
            t -= i;
            return e.slice(0, i) + "..." + e.slice(-t)
        }),
        D = null,
        I = (w = t()(s.a.mark((function e() {
            var t;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.next = 2, u.ipcRenderer.invoke("app", "getVersion");
                    case 2:
                        return t = e.sent, null === D && (D = p.a.get(g.a.LAST_VERSION_CODE) || "", p.a.put(g.a.LAST_VERSION_CODE, t)), e.abrupt("return", D !== t);
                    case 5:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function() {
            return w.apply(this, arguments)
        }),
        T = function(e) {
            var t = (o = e || {}).nameServers,
                i = o.fallbackServers,
                n = o.fakeIPFilters,
                r = o.stackType,
                o = (e = void 0 === (e = o.interfaceName) ? "" : e, void 0 === (o = o.isAutoDetectInterface) || o);
            return (r = {
                dns: {
                    enable: !0,
                    "enhanced-mode": "fake-ip",
                    nameserver: void 0 === t ? ["114.114.114.114", "223.5.5.5", "8.8.8.8"] : t,
                    fallback: void 0 === i ? [] : i
                },
                tun: {
                    enable: !0,
                    stack: ["gvisor", "system"][void 0 === r ? 0 : r]
                }
            }).dns["fake-ip-filter"] = void 0 === n ? Object(f.j)() ? ["dns.msftncsi.com", "www.msftncsi.com", "www.msftconnecttest.com"] : Object(f.i)() ? ["apps.apple.com"] : [] : n, o ? r.tun["auto-detect-interface"] = !0 : r["interface-name"] = e, r.tun["auto-route"] = Object(f.j)() || Object(f.i)(), r.tun["dns-hijack"] = Object(f.j)() ? ["198.18.0.2:53"] : Object(f.i)() ? ["1.1.1.1", "114.114.114.114"] : ["1.0.0.1:53"], r
        }
}, function(e, t, i) {
    "use strict";
    i.d(t, "y", (function() {
        return s
    })), i.d(t, "z", (function() {
        return a
    })), i.d(t, "w", (function() {
        return u
    })), i.d(t, "v", (function() {
        return p
    })), i.d(t, "x", (function() {
        return f
    })), i.d(t, "a", (function() {
        return m
    })), i.d(t, "A", (function() {
        return v
    })), i.d(t, "b", (function() {
        return b
    })), i.d(t, "D", (function() {
        return _
    })), i.d(t, "C", (function() {
        return w
    })), i.d(t, "B", (function() {
        return y
    })), i.d(t, "E", (function() {
        return x
    })), i.d(t, "F", (function() {
        return S
    })), i.d(t, "G", (function() {
        return k
    })), i.d(t, "I", (function() {
        return L
    })), i.d(t, "H", (function() {
        return O
    })), i.d(t, "c", (function() {
        return E
    })), i.d(t, "d", (function() {
        return N
    })), i.d(t, "e", (function() {
        return D
    })), i.d(t, "f", (function() {
        return I
    })), i.d(t, "g", (function() {
        return T
    })), i.d(t, "h", (function() {
        return M
    })), i.d(t, "i", (function() {
        return P
    })), i.d(t, "p", (function() {
        return A
    })), i.d(t, "q", (function() {
        return R
    })), i.d(t, "r", (function() {
        return F
    })), i.d(t, "s", (function() {
        return j
    })), i.d(t, "t", (function() {
        return B
    })), i.d(t, "u", (function() {
        return V
    })), i.d(t, "j", (function() {
        return W
    })), i.d(t, "k", (function() {
        return z
    })), i.d(t, "l", (function() {
        return H
    })), i.d(t, "m", (function() {
        return U
    })), i.d(t, "n", (function() {
        return K
    })), i.d(t, "o", (function() {
        return $
    }));
    var n = i(0),
        r = i(11),
        o = i(7);
    t = i(23);
    const s = Object(o.dc)("editor.lineHighlightBackground", {
            dark: null,
            light: null,
            hc: null
        }, n.a("lineHighlight", "Background color for the highlight of line at the cursor position.")),
        a = Object(o.dc)("editor.lineHighlightBorder", {
            dark: "#282828",
            light: "#eeeeee",
            hc: "#f38518"
        }, n.a("lineHighlightBorderBox", "Background color for the border around the line at the cursor position.")),
        l = Object(o.dc)("editor.rangeHighlightBackground", {
            dark: "#ffffff0b",
            light: "#fdff0033",
            hc: null
        }, n.a("rangeHighlight", "Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."), !0),
        d = Object(o.dc)("editor.rangeHighlightBorder", {
            dark: null,
            light: null,
            hc: o.b
        }, n.a("rangeHighlightBorder", "Background color of the border around highlighted ranges."), !0),
        c = Object(o.dc)("editor.symbolHighlightBackground", {
            dark: o.w,
            light: o.w,
            hc: null
        }, n.a("symbolHighlight", "Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."), !0),
        h = Object(o.dc)("editor.symbolHighlightBorder", {
            dark: null,
            light: null,
            hc: o.b
        }, n.a("symbolHighlightBorder", "Background color of the border around highlighted symbols."), !0),
        u = Object(o.dc)("editorCursor.foreground", {
            dark: "#AEAFAD",
            light: r.a.black,
            hc: r.a.white
        }, n.a("caret", "Color of the editor cursor.")),
        p = Object(o.dc)("editorCursor.background", null, n.a("editorCursorBackground", "The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),
        g = Object(o.dc)("editorWhitespace.foreground", {
            dark: "#e3e4e229",
            light: "#33333333",
            hc: "#e3e4e229"
        }, n.a("editorWhitespaces", "Color of whitespace characters in the editor.")),
        f = Object(o.dc)("editorIndentGuide.background", {
            dark: g,
            light: g,
            hc: g
        }, n.a("editorIndentGuides", "Color of the editor indentation guides.")),
        m = Object(o.dc)("editorIndentGuide.activeBackground", {
            dark: g,
            light: g,
            hc: g
        }, n.a("editorActiveIndentGuide", "Color of the active editor indentation guides.")),
        v = Object(o.dc)("editorLineNumber.foreground", {
            dark: "#858585",
            light: "#237893",
            hc: r.a.white
        }, n.a("editorLineNumbers", "Color of editor line numbers."));
    i = Object(o.dc)("editorActiveLineNumber.foreground", {
        dark: "#c6c6c6",
        light: "#0B216F",
        hc: o.b
    }, n.a("editorActiveLineNumber", "Color of editor active line number"), !1, n.a("deprecatedEditorActiveLineNumber", "Id is deprecated. Use 'editorLineNumber.activeForeground' instead."));
    const b = Object(o.dc)("editorLineNumber.activeForeground", {
            dark: i,
            light: i,
            hc: i
        }, n.a("editorActiveLineNumber", "Color of editor active line number")),
        _ = Object(o.dc)("editorRuler.foreground", {
            dark: "#5A5A5A",
            light: r.a.lightgrey,
            hc: r.a.white
        }, n.a("editorRuler", "Color of the editor rulers."));
    Object(o.dc)("editorCodeLens.foreground", {
        dark: "#999999",
        light: "#919191",
        hc: "#999999"
    }, n.a("editorCodeLensForeground", "Foreground color of editor CodeLens")), Object(o.dc)("editorBracketMatch.background", {
        dark: "#0064001a",
        light: "#0064001a",
        hc: "#0064001a"
    }, n.a("editorBracketMatchBackground", "Background color behind matching brackets")), Object(o.dc)("editorBracketMatch.border", {
        dark: "#888",
        light: "#B9B9B9",
        hc: o.h
    }, n.a("editorBracketMatchBorder", "Color for matching brackets boxes"));
    const w = Object(o.dc)("editorOverviewRuler.border", {
            dark: "#7f7f7f4d",
            light: "#7f7f7f4d",
            hc: "#7f7f7f4d"
        }, n.a("editorOverviewRulerBorder", "Color of the overview ruler border.")),
        y = Object(o.dc)("editorOverviewRuler.background", null, n.a("editorOverviewRulerBackground", "Background color of the editor overview ruler. Only used when the minimap is enabled and placed on the right side of the editor.")),
        C = Object(o.dc)("editorGutter.background", {
            dark: o.q,
            light: o.q,
            hc: o.q
        }, n.a("editorGutter", "Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.")),
        x = Object(o.dc)("editorUnnecessaryCode.border", {
            dark: null,
            light: null,
            hc: r.a.fromHex("#fff").transparent(.8)
        }, n.a("unnecessaryCodeBorder", "Border color of unnecessary (unused) source code in the editor.")),
        S = Object(o.dc)("editorUnnecessaryCode.opacity", {
            dark: r.a.fromHex("#000a"),
            light: r.a.fromHex("#0007"),
            hc: null
        }, n.a("unnecessaryCodeOpacity", "Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the  'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out."));
    Object(o.dc)("editorGhostText.border", {
        dark: null,
        light: null,
        hc: r.a.fromHex("#fff").transparent(.8)
    }, n.a("editorGhostTextBorder", "Border color of ghost text in the editor.")), Object(o.dc)("editorGhostText.foreground", {
        dark: r.a.fromHex("#ffffff56"),
        light: r.a.fromHex("#0007"),
        hc: null
    }, n.a("editorGhostTextForeground", "Foreground color of the ghost text in the editor.")), i = new r.a(new r.b(0, 122, 204, .6)), Object(o.dc)("editorOverviewRuler.rangeHighlightForeground", {
        dark: i,
        light: i,
        hc: i
    }, n.a("overviewRulerRangeHighlight", "Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."), !0);
    const k = Object(o.dc)("editorOverviewRuler.errorForeground", {
            dark: new r.a(new r.b(255, 18, 18, .7)),
            light: new r.a(new r.b(255, 18, 18, .7)),
            hc: new r.a(new r.b(255, 50, 50, 1))
        }, n.a("overviewRuleError", "Overview ruler marker color for errors.")),
        L = Object(o.dc)("editorOverviewRuler.warningForeground", {
            dark: o.M,
            light: o.M,
            hc: o.L
        }, n.a("overviewRuleWarning", "Overview ruler marker color for warnings.")),
        O = Object(o.dc)("editorOverviewRuler.infoForeground", {
            dark: o.G,
            light: o.G,
            hc: o.F
        }, n.a("overviewRuleInfo", "Overview ruler marker color for infos.")),
        E = Object(o.dc)("editorBracketHighlight.foreground1", {
            dark: "#FFD700",
            light: "#0431FAFF",
            hc: "#FFD700"
        }, n.a("editorBracketHighlightForeground1", "Foreground color of brackets (1). Requires enabling bracket pair colorization.")),
        N = Object(o.dc)("editorBracketHighlight.foreground2", {
            dark: "#DA70D6",
            light: "#319331FF",
            hc: "#DA70D6"
        }, n.a("editorBracketHighlightForeground2", "Foreground color of brackets (2). Requires enabling bracket pair colorization.")),
        D = Object(o.dc)("editorBracketHighlight.foreground3", {
            dark: "#179FFF",
            light: "#7B3814FF",
            hc: "#87CEFA"
        }, n.a("editorBracketHighlightForeground3", "Foreground color of brackets (3). Requires enabling bracket pair colorization.")),
        I = Object(o.dc)("editorBracketHighlight.foreground4", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketHighlightForeground4", "Foreground color of brackets (4). Requires enabling bracket pair colorization.")),
        T = Object(o.dc)("editorBracketHighlight.foreground5", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketHighlightForeground5", "Foreground color of brackets (5). Requires enabling bracket pair colorization.")),
        M = Object(o.dc)("editorBracketHighlight.foreground6", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketHighlightForeground6", "Foreground color of brackets (6). Requires enabling bracket pair colorization.")),
        P = Object(o.dc)("editorBracketHighlight.unexpectedBracket.foreground", {
            dark: new r.a(new r.b(255, 18, 18, .8)),
            light: new r.a(new r.b(255, 18, 18, .8)),
            hc: new r.a(new r.b(255, 50, 50, 1))
        }, n.a("editorBracketHighlightUnexpectedBracketForeground", "Foreground color of unexpected brackets.")),
        A = Object(o.dc)("editorBracketPairGuide.background1", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.background1", "Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.")),
        R = Object(o.dc)("editorBracketPairGuide.background2", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.background2", "Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.")),
        F = Object(o.dc)("editorBracketPairGuide.background3", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.background3", "Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.")),
        j = Object(o.dc)("editorBracketPairGuide.background4", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.background4", "Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.")),
        B = Object(o.dc)("editorBracketPairGuide.background5", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.background5", "Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.")),
        V = Object(o.dc)("editorBracketPairGuide.background6", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.background6", "Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.")),
        W = Object(o.dc)("editorBracketPairGuide.activeBackground1", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.activeBackground1", "Background color of active bracket pair guides (1). Requires enabling bracket pair guides.")),
        z = Object(o.dc)("editorBracketPairGuide.activeBackground2", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.activeBackground2", "Background color of active bracket pair guides (2). Requires enabling bracket pair guides.")),
        H = Object(o.dc)("editorBracketPairGuide.activeBackground3", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.activeBackground3", "Background color of active bracket pair guides (3). Requires enabling bracket pair guides.")),
        U = Object(o.dc)("editorBracketPairGuide.activeBackground4", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.activeBackground4", "Background color of active bracket pair guides (4). Requires enabling bracket pair guides.")),
        K = Object(o.dc)("editorBracketPairGuide.activeBackground5", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.activeBackground5", "Background color of active bracket pair guides (5). Requires enabling bracket pair guides.")),
        $ = Object(o.dc)("editorBracketPairGuide.activeBackground6", {
            dark: "#00000000",
            light: "#00000000",
            hc: "#00000000"
        }, n.a("editorBracketPairGuide.activeBackground6", "Background color of active bracket pair guides (6). Requires enabling bracket pair guides."));
    Object(t.f)((e, t) => {
        var i = e.getColor(o.q);
        i && t.addRule(`.monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: ${i}; }`), (i = e.getColor(o.A)) && t.addRule(`.monaco-editor, .monaco-editor .inputarea.ime-input { color: ${i}; }`), (i = e.getColor(C)) && t.addRule(`.monaco-editor .margin { background-color: ${i}; }`), (i = e.getColor(l)) && t.addRule(`.monaco-editor .rangeHighlight { background-color: ${i}; }`), (i = e.getColor(d)) && t.addRule(`.monaco-editor .rangeHighlight { border: 1px ${"hc"===e.type?"dotted":"solid"} ${i}; }`), (i = e.getColor(c)) && t.addRule(`.monaco-editor .symbolHighlight { background-color: ${i}; }`), (i = e.getColor(h)) && t.addRule(`.monaco-editor .symbolHighlight { border: 1px ${"hc"===e.type?"dotted":"solid"} ${i}; }`), (e = e.getColor(g)) && (t.addRule(`.monaco-editor .mtkw { color: ${e} !important; }`), t.addRule(`.monaco-editor .mtkz { color: ${e} !important; }`))
    })
}, function(e, t, i) {
    "use strict";
    var n = i(88),
        r = i(27);
    r = i.n(r), i = i(174);
    n.a.use(r.a), t.a = new r.a.Store({
        modules: i.default,
        strict: !1,
        plugins: [function(e) {
            e.subscribe((function(t) {
                ["CHANGE_PROFILES", "CHANGE_PROFILES_INDEX", "CHANGE_PROFILE", "APPEND_PROFILE", "DELETE_PROFILE"].includes(t.type) && e.commit("SAVE_PROFILES")
            }))
        }]
    })
}, function(e, t, i) {
    "use strict";
    var n;
    i.d(t, "a", (function() {
            return n
        })),
        function(e) {
            e.is = function(e) {
                return e && "object" == typeof e && "function" == typeof e[Symbol.iterator]
            };
            const t = Object.freeze([]);
            e.empty = function() {
                return t
            }, e.single = function*(e) {
                yield e
            }, e.from = function(e) {
                return e || t
            }, e.isEmpty = function(e) {
                return !e || !0 === e[Symbol.iterator]().next().done
            }, e.first = function(e) {
                return e[Symbol.iterator]().next().value
            }, e.some = function(e, t) {
                for (const i of e)
                    if (t(i)) return !0;
                return !1
            }, e.find = function(e, t) {
                for (const i of e)
                    if (t(i)) return i
            }, e.filter = function*(e, t) {
                for (const i of e) t(i) && (yield i)
            }, e.map = function*(e, t) {
                let i = 0;
                for (const n of e) yield t(n, i++)
            }, e.concat = function*(...e) {
                for (const t of e)
                    for (const e of t) yield e
            }, e.concatNested = function*(e) {
                for (const t of e)
                    for (const e of t) yield e
            }, e.reduce = function(e, t, i) {
                let n = i;
                for (const i of e) n = t(n, i);
                return n
            }, e.slice = function*(e, t, i = e.length) {
                for (t < 0 && (t += e.length), i < 0 ? i += e.length : i > e.length && (i = e.length); t < i; t++) yield e[t]
            }, e.consume = function(t, i = Number.POSITIVE_INFINITY) {
                const n = [];
                if (0 === i) return [n, t];
                const r = t[Symbol.iterator]();
                for (let t = 0; t < i; t++) {
                    var o = r.next();
                    if (o.done) return [n, e.empty()];
                    n.push(o.value)
                }
                return [n, {
                    [Symbol.iterator]: () => r
                }]
            }, e.equals = function(e, t, i = ((e, t) => e === t)) {
                const n = e[Symbol.iterator](),
                    r = t[Symbol.iterator]();
                for (;;) {
                    var o = n.next(),
                        s = r.next();
                    if (o.done !== s.done) return !1;
                    if (o.done) return !0;
                    if (!i(o.value, s.value)) return !1
                }
            }
        }(n = n || {})
}, function(e, t, i) {
    "use strict";
    i.d(t, "g", (function() {
        return n
    })), i.d(t, "f", (function() {
        return r
    })), i.d(t, "h", (function() {
        return a
    })), i.d(t, "b", (function() {
        return l
    })), i.d(t, "c", (function() {
        return o
    })), i.d(t, "d", (function() {
        return d
    })), i.d(t, "e", (function() {
        return c
    })), i.d(t, "i", (function() {
        return h
    })), i.d(t, "a", (function() {
        return u
    }));
    var n, r, o, s = i(47);
    (i = n = n || {})[i.Left = 1] = "Left", i[i.Center = 2] = "Center", i[i.Right = 4] = "Right", i[i.Full = 7] = "Full", (i = r = r || {})[i.Inline = 1] = "Inline", i[i.Gutter = 2] = "Gutter";
    class a {
        constructor(e) {
            this._textModelResolvedOptionsBrand = void 0, this.tabSize = Math.max(1, 0 | e.tabSize), this.indentSize = 0 | e.tabSize, this.insertSpaces = Boolean(e.insertSpaces), this.defaultEOL = 0 | e.defaultEOL, this.trimAutoWhitespace = Boolean(e.trimAutoWhitespace), this.bracketPairColorizationOptions = e.bracketPairColorizationOptions
        }
        equals(e) {
            return this.tabSize === e.tabSize && this.indentSize === e.indentSize && this.insertSpaces === e.insertSpaces && this.defaultEOL === e.defaultEOL && this.trimAutoWhitespace === e.trimAutoWhitespace && Object(s.c)(this.bracketPairColorizationOptions, e.bracketPairColorizationOptions)
        }
        createChangeEvent(e) {
            return {
                tabSize: this.tabSize !== e.tabSize,
                indentSize: this.indentSize !== e.indentSize,
                insertSpaces: this.insertSpaces !== e.insertSpaces,
                trimAutoWhitespace: this.trimAutoWhitespace !== e.trimAutoWhitespace
            }
        }
    }
    class l {
        constructor(e, t) {
            this._findMatchBrand = void 0, this.range = e, this.matches = t
        }
    }(i = o = o || {})[i.Disabled = 0] = "Disabled", i[i.EnabledForActive = 1] = "EnabledForActive", i[i.Enabled = 2] = "Enabled";
    class d {
        constructor(e, t, i) {
            this.visibleColumn = e, this.className = t, this.horizontalLine = i
        }
    }
    class c {
        constructor(e, t) {
            this.top = e, this.endColumn = t
        }
    }
    class h {
        constructor(e, t, i, n, r, o) {
            this.identifier = e, this.range = t, this.text = i, this.forceMoveMarkers = n, this.isAutoWhitespaceEdit = r, this._isTracked = o
        }
    }
    class u {
        constructor(e, t, i) {
            this.reverseEdits = e, this.changes = t, this.trimAutoWhitespaceLineNumbers = i
        }
    }
}, function(e, t) {
    e.exports = require("yaml")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return l
    })), i.d(t, "a", (function() {
        return d
    }));
    var n = i(2),
        r = i(43),
        o = i(4),
        s = i(79),
        a = i(17);
    i = i(26);
    const l = Object(i.c)("commandService"),
        d = new class {
            constructor() {
                this._commands = new Map, this._onDidRegisterCommand = new n.b, this.onDidRegisterCommand = this._onDidRegisterCommand.event
            }
            registerCommand(e, t) {
                if (!e) throw new Error("invalid command");
                if ("string" == typeof e) {
                    if (!t) throw new Error("invalid command");
                    return this.registerCommand({
                        id: e,
                        handler: t
                    })
                }
                if (e.description) {
                    const t = [];
                    for (var i of e.description.args) t.push(i.constraint);
                    const n = e.handler;
                    e.handler = function(e, ...i) {
                        return Object(a.n)(i, t), n(e, ...i)
                    }
                }
                const {
                    id: n
                } = e;
                let r = this._commands.get(n);
                r || (r = new s.a, this._commands.set(n, r));
                let l = r.unshift(e);
                return e = Object(o.i)(() => {
                    l();
                    const e = this._commands.get(n);
                    null != e && e.isEmpty() && this._commands.delete(n)
                }), this._onDidRegisterCommand.fire(n), e
            }
            registerCommandAlias(e, t) {
                return d.registerCommand(e, (e, ...i) => e.get(l).executeCommand(t, ...i))
            }
            getCommand(e) {
                const t = this._commands.get(e);
                if (t && !t.isEmpty()) return r.a.first(t)
            }
            getCommands() {
                const e = new Map;
                for (const i of this._commands.keys()) {
                    var t = this.getCommand(i);
                    t && e.set(i, t)
                }
                return e
            }
        };
    d.registerCommand("noop", () => {})
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    })), i.d(t, "b", (function() {
        return o
    })), i.d(t, "e", (function() {
        return a
    })), i.d(t, "c", (function() {
        return l
    })), i.d(t, "d", (function() {
        return d
    }));
    var n = i(17);

    function r(e) {
        if (!e || "object" != typeof e) return e;
        if (e instanceof RegExp) return e;
        const t = Array.isArray(e) ? [] : {};
        return Object.keys(e).forEach(i => {
            e[i] && "object" == typeof e[i] ? t[i] = r(e[i]) : t[i] = e[i]
        }), t
    }

    function o(e) {
        if (!e || "object" != typeof e) return e;
        const t = [e];
        for (; 0 < t.length;) {
            const e = t.shift();
            Object.freeze(e);
            for (const n in e) {
                var i;
                s.call(e, n) && ("object" != typeof(i = e[n]) || Object.isFrozen(i) || t.push(i))
            }
        }
        return e
    }
    const s = Object.prototype.hasOwnProperty;

    function a(e, t, i = !0) {
        return Object(n.j)(e) ? (Object(n.j)(t) && Object.keys(t).forEach(r => {
            r in e ? i && (Object(n.j)(e[r]) && Object(n.j)(t[r]) ? a(e[r], t[r], i) : e[r] = t[r]) : e[r] = t[r]
        }), e) : t
    }

    function l(e, t) {
        if (e === t) return !0;
        if (null == e || null == t) return !1;
        if (typeof e != typeof t) return !1;
        if ("object" != typeof e) return !1;
        if (Array.isArray(e) !== Array.isArray(t)) return !1;
        let i, n;
        if (Array.isArray(e)) {
            if (e.length !== t.length) return !1;
            for (i = 0; i < e.length; i++)
                if (!l(e[i], t[i])) return !1
        } else {
            const r = [];
            for (n in e) r.push(n);
            r.sort();
            const o = [];
            for (n in t) o.push(n);
            if (o.sort(), !l(r, o)) return !1;
            for (i = 0; i < r.length; i++)
                if (!l(e[r[i]], t[r[i]])) return !1
        }
        return !0
    }

    function d(e, t, i) {
        return void 0 === (e = t(e)) ? i : e
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "a", (function() {
        return r
    }));
    var n = {
            INIT: Symbol(),
            DEFAULT: Symbol(),
            SYSTEM_PROXY: Symbol()
        },
        r = {
            CONNECTED: Symbol(),
            DISCONNECTED: Symbol()
        }
}, function(e, t, i) {
    "use strict";
    var n, r, o, s, a, l, d, c, h, u, p, g, f, m, v, b, _, w, y, C, x, S, k, L, O, E, N, D, I, T, M, P, A, R, F;
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), i.d(t, "c", (function() {
        return o
    })), i.d(t, "d", (function() {
        return s
    })), i.d(t, "e", (function() {
        return a
    })), i.d(t, "f", (function() {
        return l
    })), i.d(t, "g", (function() {
        return d
    })), i.d(t, "h", (function() {
        return c
    })), i.d(t, "i", (function() {
        return h
    })), i.d(t, "j", (function() {
        return u
    })), i.d(t, "k", (function() {
        return p
    })), i.d(t, "l", (function() {
        return g
    })), i.d(t, "m", (function() {
        return f
    })), i.d(t, "n", (function() {
        return m
    })), i.d(t, "o", (function() {
        return v
    })), i.d(t, "p", (function() {
        return b
    })), i.d(t, "q", (function() {
        return _
    })), i.d(t, "r", (function() {
        return w
    })), i.d(t, "s", (function() {
        return y
    })), i.d(t, "t", (function() {
        return C
    })), i.d(t, "u", (function() {
        return x
    })), i.d(t, "v", (function() {
        return S
    })), i.d(t, "w", (function() {
        return k
    })), i.d(t, "x", (function() {
        return L
    })), i.d(t, "y", (function() {
        return O
    })), i.d(t, "z", (function() {
        return E
    })), i.d(t, "A", (function() {
        return N
    })), i.d(t, "B", (function() {
        return D
    })), i.d(t, "C", (function() {
        return I
    })), i.d(t, "D", (function() {
        return T
    })), i.d(t, "E", (function() {
        return M
    })), i.d(t, "F", (function() {
        return P
    })), i.d(t, "G", (function() {
        return A
    })), i.d(t, "H", (function() {
        return R
    })), i.d(t, "I", (function() {
        return F
    })), (t = n = n || {})[t.Unknown = 0] = "Unknown", t[t.Disabled = 1] = "Disabled", t[t.Enabled = 2] = "Enabled", (t = r = r || {})[t.KeepWhitespace = 1] = "KeepWhitespace", t[t.InsertAsSnippet = 4] = "InsertAsSnippet", (t = o = o || {})[t.Method = 0] = "Method", t[t.Function = 1] = "Function", t[t.Constructor = 2] = "Constructor", t[t.Field = 3] = "Field", t[t.Variable = 4] = "Variable", t[t.Class = 5] = "Class", t[t.Struct = 6] = "Struct", t[t.Interface = 7] = "Interface", t[t.Module = 8] = "Module", t[t.Property = 9] = "Property", t[t.Event = 10] = "Event", t[t.Operator = 11] = "Operator", t[t.Unit = 12] = "Unit", t[t.Value = 13] = "Value", t[t.Constant = 14] = "Constant", t[t.Enum = 15] = "Enum", t[t.EnumMember = 16] = "EnumMember", t[t.Keyword = 17] = "Keyword", t[t.Text = 18] = "文本", t[t.Color = 19] = "Color", t[t.File = 20] = "File", t[t.Reference = 21] = "Reference", t[t.Customcolor = 22] = "Customcolor", t[t.Folder = 23] = "Folder", t[t.TypeParameter = 24] = "TypeParameter", t[t.User = 25] = "User", t[t.Issue = 26] = "Issue", t[t.Snippet = 27] = "Snippet", (s = s || {})[s.Deprecated = 1] = "Deprecated", (t = a = a || {})[t.Invoke = 0] = "Invoke", t[t.TriggerCharacter = 1] = "TriggerCharacter", t[t.TriggerForIncompleteCompletions = 2] = "TriggerForIncompleteCompletions", (t = l = l || {})[t.EXACT = 0] = "EXACT", t[t.ABOVE = 1] = "ABOVE", t[t.BELOW = 2] = "BELOW", (t = d = d || {})[t.NotSet = 0] = "NotSet", t[t.ContentFlush = 1] = "ContentFlush", t[t.RecoverFromMarkers = 2] = "RecoverFromMarkers", t[t.Explicit = 3] = "Explicit", t[t.Paste = 4] = "Paste", t[t.Undo = 5] = "Undo", t[t.Redo = 6] = "Redo", (t = c = c || {})[t.LF = 1] = "LF", t[t.CRLF = 2] = "CRLF", (t = h = h || {})[t.Text = 0] = "文本", t[t.Read = 1] = "Read", t[t.Write = 2] = "Write", (t = u = u || {})[t.None = 0] = "None", t[t.Keep = 1] = "Keep", t[t.Brackets = 2] = "Brackets", t[t.Advanced = 3] = "Advanced", t[t.Full = 4] = "Full", (t = p = p || {})[t.acceptSuggestionOnCommitCharacter = 0] = "acceptSuggestionOnCommitCharacter", t[t.acceptSuggestionOnEnter = 1] = "acceptSuggestionOnEnter", t[t.accessibilitySupport = 2] = "accessibilitySupport", t[t.accessibilityPageSize = 3] = "accessibilityPageSize", t[t.ariaLabel = 4] = "ariaLabel", t[t.autoClosingBrackets = 5] = "autoClosingBrackets", t[t.autoClosingDelete = 6] = "autoClosingDelete", t[t.autoClosingOvertype = 7] = "autoClosingOvertype", t[t.autoClosingQuotes = 8] = "autoClosingQuotes", t[t.autoIndent = 9] = "autoIndent", t[t.automaticLayout = 10] = "automaticLayout", t[t.autoSurround = 11] = "autoSurround", t[t.bracketPairColorization = 12] = "bracketPairColorization", t[t.guides = 13] = "guides", t[t.codeLens = 14] = "codeLens", t[t.codeLensFontFamily = 15] = "codeLensFontFamily", t[t.codeLensFontSize = 16] = "codeLensFontSize", t[t.colorDecorators = 17] = "colorDecorators", t[t.columnSelection = 18] = "columnSelection", t[t.comments = 19] = "comments", t[t.contextmenu = 20] = "contextmenu", t[t.copyWithSyntaxHighlighting = 21] = "copyWithSyntaxHighlighting", t[t.cursorBlinking = 22] = "cursorBlinking", t[t.cursorSmoothCaretAnimation = 23] = "cursorSmoothCaretAnimation", t[t.cursorStyle = 24] = "cursorStyle", t[t.cursorSurroundingLines = 25] = "cursorSurroundingLines", t[t.cursorSurroundingLinesStyle = 26] = "cursorSurroundingLinesStyle", t[t.cursorWidth = 27] = "cursorWidth", t[t.disableLayerHinting = 28] = "disableLayerHinting", t[t.disableMonospaceOptimizations = 29] = "disableMonospaceOptimizations", t[t.domReadOnly = 30] = "domReadOnly", t[t.dragAndDrop = 31] = "dragAndDrop", t[t.emptySelectionClipboard = 32] = "emptySelectionClipboard", t[t.extraEditorClassName = 33] = "extraEditorClassName", t[t.fastScrollSensitivity = 34] = "fastScrollSensitivity", t[t.find = 35] = "find", t[t.fixedOverflowWidgets = 36] = "fixedOverflowWidgets", t[t.folding = 37] = "folding", t[t.foldingStrategy = 38] = "foldingStrategy", t[t.foldingHighlight = 39] = "foldingHighlight", t[t.foldingImportsByDefault = 40] = "foldingImportsByDefault", t[t.unfoldOnClickAfterEndOfLine = 41] = "unfoldOnClickAfterEndOfLine", t[t.fontFamily = 42] = "fontFamily", t[t.fontInfo = 43] = "fontInfo", t[t.fontLigatures = 44] = "fontLigatures", t[t.fontSize = 45] = "fontSize", t[t.fontWeight = 46] = "fontWeight", t[t.formatOnPaste = 47] = "formatOnPaste", t[t.formatOnType = 48] = "formatOnType", t[t.glyphMargin = 49] = "glyphMargin", t[t.gotoLocation = 50] = "gotoLocation", t[t.hideCursorInOverviewRuler = 51] = "hideCursorInOverviewRuler", t[t.hover = 52] = "hover", t[t.inDiffEditor = 53] = "inDiffEditor", t[t.inlineSuggest = 54] = "inlineSuggest", t[t.letterSpacing = 55] = "letterSpacing", t[t.lightbulb = 56] = "lightbulb", t[t.lineDecorationsWidth = 57] = "lineDecorationsWidth", t[t.lineHeight = 58] = "lineHeight", t[t.lineNumbers = 59] = "lineNumbers", t[t.lineNumbersMinChars = 60] = "lineNumbersMinChars", t[t.linkedEditing = 61] = "linkedEditing", t[t.links = 62] = "links", t[t.matchBrackets = 63] = "matchBrackets", t[t.minimap = 64] = "minimap", t[t.mouseStyle = 65] = "mouseStyle", t[t.mouseWheelScrollSensitivity = 66] = "mouseWheelScrollSensitivity", t[t.mouseWheelZoom = 67] = "mouseWheelZoom", t[t.multiCursorMergeOverlapping = 68] = "multiCursorMergeOverlapping", t[t.multiCursorModifier = 69] = "multiCursorModifier", t[t.multiCursorPaste = 70] = "multiCursorPaste", t[t.occurrencesHighlight = 71] = "occurrencesHighlight", t[t.overviewRulerBorder = 72] = "overviewRulerBorder", t[t.overviewRulerLanes = 73] = "overviewRulerLanes", t[t.padding = 74] = "padding", t[t.parameterHints = 75] = "parameterHints", t[t.peekWidgetDefaultFocus = 76] = "peekWidgetDefaultFocus", t[t.definitionLinkOpensInPeek = 77] = "definitionLinkOpensInPeek", t[t.quickSuggestions = 78] = "quickSuggestions", t[t.quickSuggestionsDelay = 79] = "quickSuggestionsDelay", t[t.readOnly = 80] = "readOnly", t[t.renameOnType = 81] = "renameOnType", t[t.renderControlCharacters = 82] = "renderControlCharacters", t[t.renderFinalNewline = 83] = "renderFinalNewline", t[t.renderLineHighlight = 84] = "renderLineHighlight", t[t.renderLineHighlightOnlyWhenFocus = 85] = "renderLineHighlightOnlyWhenFocus", t[t.renderValidationDecorations = 86] = "renderValidationDecorations", t[t.renderWhitespace = 87] = "renderWhitespace", t[t.revealHorizontalRightPadding = 88] = "revealHorizontalRightPadding", t[t.roundedSelection = 89] = "roundedSelection", t[t.rulers = 90] = "rulers", t[t.scrollbar = 91] = "scrollbar", t[t.scrollBeyondLastColumn = 92] = "scrollBeyondLastColumn", t[t.scrollBeyondLastLine = 93] = "scrollBeyondLastLine", t[t.scrollPredominantAxis = 94] = "scrollPredominantAxis", t[t.selectionClipboard = 95] = "selectionClipboard", t[t.selectionHighlight = 96] = "selectionHighlight", t[t.selectOnLineNumbers = 97] = "selectOnLineNumbers", t[t.showFoldingControls = 98] = "showFoldingControls", t[t.showUnused = 99] = "showUnused", t[t.snippetSuggestions = 100] = "snippetSuggestions", t[t.smartSelect = 101] = "smartSelect", t[t.smoothScrolling = 102] = "smoothScrolling", t[t.stickyTabStops = 103] = "stickyTabStops", t[t.stopRenderingLineAfter = 104] = "stopRenderingLineAfter", t[t.suggest = 105] = "suggest", t[t.suggestFontSize = 106] = "suggestFontSize", t[t.suggestLineHeight = 107] = "suggestLineHeight", t[t.suggestOnTriggerCharacters = 108] = "suggestOnTriggerCharacters", t[t.suggestSelection = 109] = "suggestSelection", t[t.tabCompletion = 110] = "tabCompletion", t[t.tabIndex = 111] = "tabIndex", t[t.unusualLineTerminators = 112] = "unusualLineTerminators", t[t.useShadowDOM = 113] = "useShadowDOM", t[t.useTabStops = 114] = "useTabStops", t[t.wordSeparators = 115] = "wordSeparators", t[t.wordWrap = 116] = "wordWrap", t[t.wordWrapBreakAfterCharacters = 117] = "wordWrapBreakAfterCharacters", t[t.wordWrapBreakBeforeCharacters = 118] = "wordWrapBreakBeforeCharacters", t[t.wordWrapColumn = 119] = "wordWrapColumn", t[t.wordWrapOverride1 = 120] = "wordWrapOverride1", t[t.wordWrapOverride2 = 121] = "wordWrapOverride2", t[t.wrappingIndent = 122] = "wrappingIndent", t[t.wrappingStrategy = 123] = "wrappingStrategy", t[t.showDeprecated = 124] = "showDeprecated", t[t.inlayHints = 125] = "inlayHints", t[t.editorClassName = 126] = "editorClassName", t[t.pixelRatio = 127] = "pixelRatio", t[t.tabFocusMode = 128] = "tabFocusMode", t[t.layoutInfo = 129] = "layoutInfo", t[t.wrappingInfo = 130] = "wrappingInfo", (t = g = g || {})[t.TextDefined = 0] = "TextDefined", t[t.LF = 1] = "LF", t[t.CRLF = 2] = "CRLF", (t = f = f || {})[t.LF = 0] = "LF", t[t.CRLF = 1] = "CRLF", (t = m = m || {})[t.None = 0] = "None", t[t.Indent = 1] = "Indent", t[t.IndentOutdent = 2] = "IndentOutdent", t[t.Outdent = 3] = "Outdent", (t = v = v || {})[t.Other = 0] = "Other", t[t.Type = 1] = "类型", t[t.Parameter = 2] = "Parameter", (t = b = b || {})[t.Automatic = 0] = "Automatic", t[t.Explicit = 1] = "Explicit", (t = _ = _ || {})[t.DependsOnKbLayout = -1] = "DependsOnKbLayout", t[t.Unknown = 0] = "Unknown", t[t.Backspace = 1] = "Backspace", t[t.Tab = 2] = "Tab", t[t.Enter = 3] = "Enter", t[t.Shift = 4] = "Shift", t[t.Ctrl = 5] = "Ctrl", t[t.Alt = 6] = "Alt", t[t.PauseBreak = 7] = "PauseBreak", t[t.CapsLock = 8] = "CapsLock", t[t.Escape = 9] = "Escape", t[t.Space = 10] = "Space", t[t.PageUp = 11] = "PageUp", t[t.PageDown = 12] = "PageDown", t[t.End = 13] = "End", t[t.Home = 14] = "Home", t[t.LeftArrow = 15] = "LeftArrow", t[t.UpArrow = 16] = "UpArrow", t[t.RightArrow = 17] = "RightArrow", t[t.DownArrow = 18] = "DownArrow", t[t.Insert = 19] = "Insert", t[t.Delete = 20] = "Delete", t[t.Digit0 = 21] = "Digit0", t[t.Digit1 = 22] = "Digit1", t[t.Digit2 = 23] = "Digit2", t[t.Digit3 = 24] = "Digit3", t[t.Digit4 = 25] = "Digit4", t[t.Digit5 = 26] = "Digit5", t[t.Digit6 = 27] = "Digit6", t[t.Digit7 = 28] = "Digit7", t[t.Digit8 = 29] = "Digit8", t[t.Digit9 = 30] = "Digit9", t[t.KeyA = 31] = "KeyA", t[t.KeyB = 32] = "KeyB", t[t.KeyC = 33] = "KeyC", t[t.KeyD = 34] = "KeyD", t[t.KeyE = 35] = "KeyE", t[t.KeyF = 36] = "KeyF", t[t.KeyG = 37] = "KeyG", t[t.KeyH = 38] = "KeyH", t[t.KeyI = 39] = "KeyI", t[t.KeyJ = 40] = "KeyJ", t[t.KeyK = 41] = "KeyK", t[t.KeyL = 42] = "KeyL", t[t.KeyM = 43] = "KeyM", t[t.KeyN = 44] = "KeyN", t[t.KeyO = 45] = "KeyO", t[t.KeyP = 46] = "KeyP", t[t.KeyQ = 47] = "KeyQ", t[t.KeyR = 48] = "KeyR", t[t.KeyS = 49] = "KeyS", t[t.KeyT = 50] = "KeyT", t[t.KeyU = 51] = "KeyU", t[t.KeyV = 52] = "KeyV", t[t.KeyW = 53] = "KeyW", t[t.KeyX = 54] = "KeyX", t[t.KeyY = 55] = "KeyY", t[t.KeyZ = 56] = "KeyZ", t[t.Meta = 57] = "Meta", t[t.ContextMenu = 58] = "ContextMenu", t[t.F1 = 59] = "F1", t[t.F2 = 60] = "F2", t[t.F3 = 61] = "F3", t[t.F4 = 62] = "F4", t[t.F5 = 63] = "F5", t[t.F6 = 64] = "F6", t[t.F7 = 65] = "F7", t[t.F8 = 66] = "F8", t[t.F9 = 67] = "F9", t[t.F10 = 68] = "F10", t[t.F11 = 69] = "F11", t[t.F12 = 70] = "F12", t[t.F13 = 71] = "F13", t[t.F14 = 72] = "F14", t[t.F15 = 73] = "F15", t[t.F16 = 74] = "F16", t[t.F17 = 75] = "F17", t[t.F18 = 76] = "F18", t[t.F19 = 77] = "F19", t[t.NumLock = 78] = "NumLock", t[t.ScrollLock = 79] = "ScrollLock", t[t.Semicolon = 80] = "Semicolon", t[t.Equal = 81] = "Equal", t[t.Comma = 82] = "Comma", t[t.Minus = 83] = "Minus", t[t.Period = 84] = "Period", t[t.Slash = 85] = "Slash", t[t.Backquote = 86] = "Backquote", t[t.BracketLeft = 87] = "BracketLeft", t[t.Backslash = 88] = "Backslash", t[t.BracketRight = 89] = "BracketRight", t[t.Quote = 90] = "Quote", t[t.OEM_8 = 91] = "OEM_8", t[t.IntlBackslash = 92] = "IntlBackslash", t[t.Numpad0 = 93] = "Numpad0", t[t.Numpad1 = 94] = "Numpad1", t[t.Numpad2 = 95] = "Numpad2", t[t.Numpad3 = 96] = "Numpad3", t[t.Numpad4 = 97] = "Numpad4", t[t.Numpad5 = 98] = "Numpad5", t[t.Numpad6 = 99] = "Numpad6", t[t.Numpad7 = 100] = "Numpad7", t[t.Numpad8 = 101] = "Numpad8", t[t.Numpad9 = 102] = "Numpad9", t[t.NumpadMultiply = 103] = "NumpadMultiply", t[t.NumpadAdd = 104] = "NumpadAdd", t[t.NUMPAD_SEPARATOR = 105] = "NUMPAD_SEPARATOR", t[t.NumpadSubtract = 106] = "NumpadSubtract", t[t.NumpadDecimal = 107] = "NumpadDecimal", t[t.NumpadDivide = 108] = "NumpadDivide", t[t.KEY_IN_COMPOSITION = 109] = "KEY_IN_COMPOSITION", t[t.ABNT_C1 = 110] = "ABNT_C1", t[t.ABNT_C2 = 111] = "ABNT_C2", t[t.AudioVolumeMute = 112] = "AudioVolumeMute", t[t.AudioVolumeUp = 113] = "AudioVolumeUp", t[t.AudioVolumeDown = 114] = "AudioVolumeDown", t[t.BrowserSearch = 115] = "BrowserSearch", t[t.BrowserHome = 116] = "BrowserHome", t[t.BrowserBack = 117] = "BrowserBack", t[t.BrowserForward = 118] = "BrowserForward", t[t.MediaTrackNext = 119] = "MediaTrackNext", t[t.MediaTrackPrevious = 120] = "MediaTrackPrevious", t[t.MediaStop = 121] = "MediaStop", t[t.MediaPlayPause = 122] = "MediaPlayPause", t[t.LaunchMediaPlayer = 123] = "LaunchMediaPlayer", t[t.LaunchMail = 124] = "LaunchMail", t[t.LaunchApp2 = 125] = "LaunchApp2", t[t.MAX_VALUE = 126] = "MAX_VALUE", (t = w = w || {})[t.Hint = 1] = "Hint", t[t.Info = 2] = "Info", t[t.Warning = 4] = "Warning", t[t.Error = 8] = "错误", (t = y = y || {})[t.Unnecessary = 1] = "Unnecessary", t[t.Deprecated = 2] = "Deprecated", (t = C = C || {})[t.Inline = 1] = "Inline", t[t.Gutter = 2] = "Gutter", (t = x = x || {})[t.UNKNOWN = 0] = "UNKNOWN", t[t.TEXTAREA = 1] = "TEXTAREA", t[t.GUTTER_GLYPH_MARGIN = 2] = "GUTTER_GLYPH_MARGIN", t[t.GUTTER_LINE_NUMBERS = 3] = "GUTTER_LINE_NUMBERS", t[t.GUTTER_LINE_DECORATIONS = 4] = "GUTTER_LINE_DECORATIONS", t[t.GUTTER_VIEW_ZONE = 5] = "GUTTER_VIEW_ZONE", t[t.CONTENT_TEXT = 6] = "CONTENT_TEXT", t[t.CONTENT_EMPTY = 7] = "CONTENT_EMPTY", t[t.CONTENT_VIEW_ZONE = 8] = "CONTENT_VIEW_ZONE", t[t.CONTENT_WIDGET = 9] = "CONTENT_WIDGET", t[t.OVERVIEW_RULER = 10] = "OVERVIEW_RULER", t[t.SCROLLBAR = 11] = "SCROLLBAR", t[t.OVERLAY_WIDGET = 12] = "OVERLAY_WIDGET", t[t.OUTSIDE_EDITOR = 13] = "OUTSIDE_EDITOR", (t = S = S || {})[t.TOP_RIGHT_CORNER = 0] = "TOP_RIGHT_CORNER", t[t.BOTTOM_RIGHT_CORNER = 1] = "BOTTOM_RIGHT_CORNER", t[t.TOP_CENTER = 2] = "TOP_CENTER", (t = k = k || {})[t.Left = 1] = "Left", t[t.Center = 2] = "Center", t[t.Right = 4] = "Right", t[t.Full = 7] = "Full", (t = L = L || {})[t.Off = 0] = "Off", t[t.On = 1] = "On", t[t.Relative = 2] = "Relative", t[t.Interval = 3] = "Interval", t[t.Custom = 4] = "自定义", (t = O = O || {})[t.None = 0] = "None", t[t.Text = 1] = "文本", t[t.Blocks = 2] = "Blocks", (t = E = E || {})[t.Smooth = 0] = "Smooth", t[t.Immediate = 1] = "Immediate", (t = N = N || {})[t.Auto = 1] = "Auto", t[t.Hidden = 2] = "Hidden", t[t.Visible = 3] = "Visible", (t = D = D || {})[t.LTR = 0] = "LTR", t[t.RTL = 1] = "RTL", (t = I = I || {})[t.Invoke = 1] = "Invoke", t[t.TriggerCharacter = 2] = "TriggerCharacter", t[t.ContentChange = 3] = "ContentChange", (t = T = T || {})[t.File = 0] = "File", t[t.Module = 1] = "Module", t[t.Namespace = 2] = "Namespace", t[t.Package = 3] = "Package", t[t.Class = 4] = "Class", t[t.Method = 5] = "Method", t[t.Property = 6] = "Property", t[t.Field = 7] = "Field", t[t.Constructor = 8] = "Constructor", t[t.Enum = 9] = "Enum", t[t.Interface = 10] = "Interface", t[t.Function = 11] = "Function", t[t.Variable = 12] = "Variable", t[t.Constant = 13] = "Constant", t[t.String = 14] = "String", t[t.Number = 15] = "Number", t[t.Boolean = 16] = "Boolean", t[t.Array = 17] = "Array", t[t.Object = 18] = "Object", t[t.Key = 19] = "Key", t[t.Null = 20] = "Null", t[t.EnumMember = 21] = "EnumMember", t[t.Struct = 22] = "Struct", t[t.Event = 23] = "Event", t[t.Operator = 24] = "Operator", t[t.TypeParameter = 25] = "TypeParameter", (M = M || {})[M.Deprecated = 1] = "Deprecated", (t = P = P || {})[t.Hidden = 0] = "Hidden", t[t.Blink = 1] = "Blink", t[t.Smooth = 2] = "Smooth", t[t.Phase = 3] = "Phase", t[t.Expand = 4] = "Expand", t[t.Solid = 5] = "Solid", (t = A = A || {})[t.Line = 1] = "Line", t[t.Block = 2] = "Block", t[t.Underline = 3] = "Underline", t[t.LineThin = 4] = "LineThin", t[t.BlockOutline = 5] = "BlockOutline", t[t.UnderlineThin = 6] = "UnderlineThin", (t = R = R || {})[t.AlwaysGrowsWhenTypingAtEdges = 0] = "AlwaysGrowsWhenTypingAtEdges", t[t.NeverGrowsWhenTypingAtEdges = 1] = "NeverGrowsWhenTypingAtEdges", t[t.GrowsOnlyWhenTypingBefore = 2] = "GrowsOnlyWhenTypingBefore", t[t.GrowsOnlyWhenTypingAfter = 3] = "GrowsOnlyWhenTypingAfter", (t = F = F || {})[t.None = 0] = "None", t[t.Same = 1] = "Same", t[t.Indent = 2] = "Indent", t[t.DeepIndent = 3] = "DeepIndent"
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return l
    }));
    var n, r = i(1),
        o = i(28),
        s = i(64),
        a = i(4);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    };
    (i = n = n || {}).Tap = "-monaco-gesturetap", i.Change = "-monaco-gesturechange", i.Start = "-monaco-gesturestart", i.End = "-monaco-gesturesend", i.Contextmenu = "-monaco-gesturecontextmenu";
    class l extends a.a {
        constructor() {
            super(), this.dispatched = !1, this.activeTouches = {}, this.handle = null, this.targets = [], this.ignoreTargets = [], this._lastSetTapCountTime = 0, this._register(r.g(document, "touchstart", e => this.onTouchStart(e), {
                passive: !1
            })), this._register(r.g(document, "touchend", e => this.onTouchEnd(e))), this._register(r.g(document, "touchmove", e => this.onTouchMove(e), {
                passive: !1
            }))
        }
        static addTarget(e) {
            return l.isTouchDevice() ? (l.INSTANCE || (l.INSTANCE = new l), l.INSTANCE.targets.push(e), {
                dispose: () => {
                    l.INSTANCE.targets = l.INSTANCE.targets.filter(t => t !== e)
                }
            }) : a.a.None
        }
        static ignoreTarget(e) {
            return l.isTouchDevice() ? (l.INSTANCE || (l.INSTANCE = new l), l.INSTANCE.ignoreTargets.push(e), {
                dispose: () => {
                    l.INSTANCE.ignoreTargets = l.INSTANCE.ignoreTargets.filter(t => t !== e)
                }
            }) : a.a.None
        }
        static isTouchDevice() {
            return "ontouchstart" in window || 0 < navigator.maxTouchPoints
        }
        dispose() {
            this.handle && (this.handle.dispose(), this.handle = null), super.dispose()
        }
        onTouchStart(e) {
            var t = Date.now();
            this.handle && (this.handle.dispose(), this.handle = null);
            for (let r = 0, o = e.targetTouches.length; r < o; r++) {
                var i = e.targetTouches.item(r);
                this.activeTouches[i.identifier] = {
                    id: i.identifier,
                    initialTarget: i.target,
                    initialTimeStamp: t,
                    initialPageX: i.pageX,
                    initialPageY: i.pageY,
                    rollingTimestamps: [t],
                    rollingPageX: [i.pageX],
                    rollingPageY: [i.pageY]
                };
                let o = this.newGestureEvent(n.Start, i.target);
                o.pageX = i.pageX, o.pageY = i.pageY, this.dispatchEvent(o)
            }
            this.dispatched && (e.preventDefault(), e.stopPropagation(), this.dispatched = !1)
        }
        onTouchEnd(e) {
            var t = Date.now(),
                i = Object.keys(this.activeTouches).length;
            for (let p = 0, g = e.changedTouches.length; p < g; p++) {
                var r, s, a, d, c, h, u = e.changedTouches.item(p);
                if (this.activeTouches.hasOwnProperty(String(u.identifier))) {
                    let e = this.activeTouches[u.identifier],
                        p = Date.now() - e.initialTimeStamp;
                    if (p < l.HOLD_DELAY && Math.abs(e.initialPageX - o.q(e.rollingPageX)) < 30 && Math.abs(e.initialPageY - o.q(e.rollingPageY)) < 30) {
                        let t = this.newGestureEvent(n.Tap, e.initialTarget);
                        t.pageX = o.q(e.rollingPageX), t.pageY = o.q(e.rollingPageY), this.dispatchEvent(t)
                    } else if (p >= l.HOLD_DELAY && Math.abs(e.initialPageX - o.q(e.rollingPageX)) < 30 && Math.abs(e.initialPageY - o.q(e.rollingPageY)) < 30) {
                        let t = this.newGestureEvent(n.Contextmenu, e.initialTarget);
                        t.pageX = o.q(e.rollingPageX), t.pageY = o.q(e.rollingPageY), this.dispatchEvent(t)
                    } else 1 === i && (r = o.q(e.rollingPageX), s = o.q(e.rollingPageY), a = o.q(e.rollingTimestamps) - e.rollingTimestamps[0], d = r - e.rollingPageX[0], c = s - e.rollingPageY[0], h = this.targets.filter(t => e.initialTarget instanceof Node && t.contains(e.initialTarget)), this.inertia(h, t, Math.abs(d) / a, 0 < d ? 1 : -1, r, Math.abs(c) / a, 0 < c ? 1 : -1, s));
                    this.dispatchEvent(this.newGestureEvent(n.End, e.initialTarget)), delete this.activeTouches[u.identifier]
                } else console.warn("move of an UNKNOWN touch", u)
            }
            this.dispatched && (e.preventDefault(), e.stopPropagation(), this.dispatched = !1)
        }
        newGestureEvent(e, t) {
            let i = document.createEvent("CustomEvent");
            return i.initEvent(e, !1, !0), i.initialTarget = t, i.tapCount = 0, i
        }
        dispatchEvent(e) {
            if (e.type === n.Tap) {
                var t = (new Date).getTime();
                let i = 0;
                i = t - this._lastSetTapCountTime > l.CLEAR_TAP_COUNT_TIME ? 1 : 2, this._lastSetTapCountTime = t, e.tapCount = i
            } else e.type !== n.Change && e.type !== n.Contextmenu || (this._lastSetTapCountTime = 0);
            for (let t = 0; t < this.ignoreTargets.length; t++)
                if (e.initialTarget instanceof Node && this.ignoreTargets[t].contains(e.initialTarget)) return;
            this.targets.forEach(t => {
                e.initialTarget instanceof Node && t.contains(e.initialTarget) && (t.dispatchEvent(e), this.dispatched = !0)
            })
        }
        inertia(e, t, i, o, s, a, d, c) {
            this.handle = r.R(() => {
                var r = Date.now();
                let h = r - t,
                    u = 0,
                    p = 0,
                    g = !0;
                i += l.SCROLL_FRICTION * h, a += l.SCROLL_FRICTION * h, 0 < i && (g = !1, u = o * i * h), 0 < a && (g = !1, p = d * a * h);
                let f = this.newGestureEvent(n.Change);
                f.translationX = u, f.translationY = p, e.forEach(e => e.dispatchEvent(f)), g || this.inertia(e, r, i, o, s + u, a, d, c + p)
            })
        }
        onTouchMove(e) {
            var t = Date.now();
            for (let r = 0, s = e.changedTouches.length; r < s; r++) {
                var i = e.changedTouches.item(r);
                if (this.activeTouches.hasOwnProperty(String(i.identifier))) {
                    let e = this.activeTouches[i.identifier],
                        r = this.newGestureEvent(n.Change, e.initialTarget);
                    r.translationX = i.pageX - o.q(e.rollingPageX), r.translationY = i.pageY - o.q(e.rollingPageY), r.pageX = i.pageX, r.pageY = i.pageY, this.dispatchEvent(r), 3 < e.rollingPageX.length && (e.rollingPageX.shift(), e.rollingPageY.shift(), e.rollingTimestamps.shift()), e.rollingPageX.push(i.pageX), e.rollingPageY.push(i.pageY), e.rollingTimestamps.push(t)
                } else console.warn("end of an UNKNOWN touch", i)
            }
            this.dispatched && (e.preventDefault(), e.stopPropagation(), this.dispatched = !1)
        }
    }
    l.SCROLL_FRICTION = -.005, l.HOLD_DELAY = 700, l.CLEAR_TAP_COUNT_TIME = 400, t([s.a], l, "isTouchDevice", null)
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return l
    }));
    var n, r, o = i(2);
    const s = Object.freeze((function(e, t) {
        const i = setTimeout(e.bind(t), 0);
        return {
            dispose() {
                clearTimeout(i)
            }
        }
    }));
    (r = n = n || {}).isCancellationToken = function(e) {
        return e === r.None || e === r.Cancelled || e instanceof a || !(!e || "object" != typeof e) && "boolean" == typeof e.isCancellationRequested && "function" == typeof e.onCancellationRequested
    }, r.None = Object.freeze({
        isCancellationRequested: !1,
        onCancellationRequested: o.c.None
    }), r.Cancelled = Object.freeze({
        isCancellationRequested: !0,
        onCancellationRequested: s
    });
    class a {
        constructor() {
            this._isCancelled = !1, this._emitter = null
        }
        cancel() {
            this._isCancelled || (this._isCancelled = !0, this._emitter && (this._emitter.fire(void 0), this.dispose()))
        }
        get isCancellationRequested() {
            return this._isCancelled
        }
        get onCancellationRequested() {
            return this._isCancelled ? s : (this._emitter || (this._emitter = new o.b), this._emitter.event)
        }
        dispose() {
            this._emitter && (this._emitter.dispose(), this._emitter = null)
        }
    }
    class l {
        constructor(e) {
            this._token = void 0, this._parentListener = void 0, this._parentListener = e && e.onCancellationRequested(this.cancel, this)
        }
        get token() {
            return this._token || (this._token = new a), this._token
        }
        cancel() {
            this._token ? this._token instanceof a && this._token.cancel() : this._token = n.Cancelled
        }
        dispose(e = !1) {
            e && this.cancel(), this._parentListener && this._parentListener.dispose(), this._token ? this._token instanceof a && this._token.dispose() : this._token = n.None
        }
    }
}, function(e, t, i) {
    var n = i(259),
        r = i(260),
        o = i(182),
        s = i(261);
    e.exports = function(e) {
        return n(e) || r(e) || o(e) || s()
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    })), i.d(t, "b", (function() {
        return o
    }));
    var n = i(2);
    class r {
        constructor(e, t, i) {
            const r = e => this.emitter.fire(e);
            this.emitter = new n.b({
                onFirstListenerAdd: () => e.addEventListener(t, r, i),
                onLastListenerRemove: () => e.removeEventListener(t, r, i)
            })
        }
        get event() {
            return this.emitter.event
        }
        dispose() {
            this.emitter.dispose()
        }
    }

    function o(e) {
        return e.preventDefault(), e.stopPropagation(), e
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "c", (function() {
        return n
    })), i.d(t, "b", (function() {
        return s
    })), i.d(t, "a", (function() {
        return l
    }));
    var n, r = i(9),
        o = i(39);
    (i = n = n || {}).inMemory = "inmemory", i.vscode = "vscode", i.internal = "private", i.walkThrough = "walkThrough", i.walkThroughSnippet = "walkThroughSnippet", i.http = "http", i.https = "https", i.file = "file", i.mailto = "mailto", i.untitled = "untitled", i.data = "data", i.command = "command", i.vscodeRemote = "vscode-remote", i.vscodeRemoteResource = "vscode-remote-resource", i.userData = "vscode-userdata", i.vscodeCustomEditor = "vscode-custom-editor", i.vscodeNotebook = "vscode-notebook", i.vscodeNotebookCell = "vscode-notebook-cell", i.vscodeNotebookCellMetadata = "vscode-notebook-cell-metadata", i.vscodeNotebookCellOutput = "vscode-notebook-cell-output", i.vscodeInteractive = "vscode-interactive", i.vscodeInteractiveInput = "vscode-interactive-input", i.vscodeSettings = "vscode-settings", i.vscodeWorkspaceTrust = "vscode-workspace-trust", i.vscodeTerminal = "vscode-terminal", i.webviewPanel = "webview-panel", i.vscodeWebview = "vscode-webview", i.extension = "extension", i.vscodeFileResource = "vscode-file", i.tmp = "tmp";
    const s = new class {
        constructor() {
            this._hosts = Object.create(null), this._ports = Object.create(null), this._connectionTokens = Object.create(null), this._preferredWebSchema = "http", this._delegate = null
        }
        setPreferredWebSchema(e) {
            this._preferredWebSchema = e
        }
        rewrite(e) {
            if (this._delegate) return this._delegate(e);
            var t = e.authority;
            let i = this._hosts[t];
            i && -1 !== i.indexOf(":") && (i = `[${i}]`);
            var s = this._ports[t];
            t = this._connectionTokens[t];
            let a = "path=" + encodeURIComponent(e.path);
            return "string" == typeof t && (a += "&tkn=" + encodeURIComponent(t)), o.a.from({
                scheme: r.h ? this._preferredWebSchema : n.vscodeRemoteResource,
                authority: `${i}:${s}`,
                path: "/vscode-remote-resource",
                query: a
            })
        }
    };
    class a {
        asBrowserUri(e, t) {
            const i = this.toUri(e, t);
            return i.scheme === n.vscodeRemote ? s.rewrite(i) : i.scheme === n.file && (r.g || "function" == typeof r.b.importScripts && r.b.origin === `${n.vscodeFileResource}://${a.FALLBACK_AUTHORITY}`) ? i.with({
                scheme: n.vscodeFileResource,
                authority: i.authority || a.FALLBACK_AUTHORITY,
                query: null,
                fragment: null
            }) : i
        }
        toUri(e, t) {
            return o.a.isUri(e) ? e : o.a.parse(t.toUrl(e))
        }
    }
    a.FALLBACK_AUTHORITY = "vscode-app";
    const l = new a
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return d
    }));
    var n = i(37),
        r = i(92),
        o = i(106),
        s = i(9);
    const a = s.f ? 256 : 2048,
        l = s.f ? 2048 : 256;
    class d {
        constructor(e) {
            this._standardKeyboardEventBrand = !0, this.browserEvent = e, this.target = e.target, this.ctrlKey = e.ctrlKey, this.shiftKey = e.shiftKey, this.altKey = e.altKey, this.metaKey = e.metaKey, this.keyCode = function(e) {
                if (e.charCode) {
                    var t = String.fromCharCode(e.charCode).toUpperCase();
                    return r.d.fromString(t)
                }
                if (3 === (e = e.keyCode)) return 7;
                if (n.g) {
                    if (59 === e) return 80;
                    if (107 === e) return 81;
                    if (109 === e) return 83;
                    if (s.f && 224 === e) return 57
                } else if (n.j) {
                    if (91 === e) return 57;
                    if (s.f && 93 === e) return 57;
                    if (!s.f && 92 === e) return 57
                }
                return r.a[e] || 0
            }(e), this.code = e.code, this.ctrlKey = this.ctrlKey || 5 === this.keyCode, this.altKey = this.altKey || 6 === this.keyCode, this.shiftKey = this.shiftKey || 4 === this.keyCode, this.metaKey = this.metaKey || 57 === this.keyCode, this._asKeybinding = this._computeKeybinding(), this._asRuntimeKeybinding = this._computeRuntimeKeybinding()
        }
        preventDefault() {
            this.browserEvent && this.browserEvent.preventDefault && this.browserEvent.preventDefault()
        }
        stopPropagation() {
            this.browserEvent && this.browserEvent.stopPropagation && this.browserEvent.stopPropagation()
        }
        toKeybinding() {
            return this._asRuntimeKeybinding
        }
        equals(e) {
            return this._asKeybinding === e
        }
        _computeKeybinding() {
            let e = 0;
            5 !== this.keyCode && 4 !== this.keyCode && 6 !== this.keyCode && 57 !== this.keyCode && (e = this.keyCode);
            let t = 0;
            return this.ctrlKey && (t |= a), this.altKey && (t |= 512), this.shiftKey && (t |= 1024), this.metaKey && (t |= l), t |= e, t
        }
        _computeRuntimeKeybinding() {
            let e = 0;
            return 5 !== this.keyCode && 4 !== this.keyCode && 6 !== this.keyCode && 57 !== this.keyCode && (e = this.keyCode), new o.d(this.ctrlKey, this.shiftKey, this.altKey, this.metaKey, e)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return o
    })), i.d(t, "g", (function() {
        return s
    })), i.d(t, "b", (function() {
        return a
    })), i.d(t, "f", (function() {
        return l
    })), i.d(t, "d", (function() {
        return d
    })), i.d(t, "c", (function() {
        return c
    })), i.d(t, "e", (function() {
        return h
    }));
    var n = i(113),
        r = (t = i(26), i(58));
    const o = Object(t.c)("configurationService");

    function s(e, t) {
        var i, n = Object.create(null);
        for (i in e) a(n, i, e[i], t);
        return n
    }

    function a(e, t, i, n) {
        const r = t.split(".");
        var o = r.pop();
        let s = e;
        for (let e = 0; e < r.length; e++) {
            var a = r[e];
            let i = s[a];
            switch (typeof i) {
                case "undefined":
                    i = s[a] = Object.create(null);
                    break;
                case "object":
                    break;
                default:
                    return void n(`Ignoring ${t} as ${r.slice(0,e+1).join(".")} is ${JSON.stringify(i)}`)
            }
            s = i
        }
        if ("object" == typeof s && null !== s) try {
            s[o] = i
        } catch (e) {
            n(`Ignoring ${t} as ${r.join(".")} is ${JSON.stringify(s)}`)
        } else n(`Ignoring ${t} as ${r.join(".")} is ${JSON.stringify(s)}`)
    }

    function l(e, t) {
        ! function e(t, i) {
            const n = i.shift();
            if (0 !== i.length) {
                if (-1 !== Object.keys(t).indexOf(n)) {
                    const r = t[n];
                    "object" != typeof r || Array.isArray(r) || (e(r, i), 0 === Object.keys(r).length && delete t[n])
                }
            } else delete t[n]
        }(e, t.split("."))
    }

    function d(e, t, i) {
        return void 0 === (t = function(e, t) {
            let i = e;
            for (const e of t) {
                if ("object" != typeof i || null === i) return;
                i = i[e]
            }
            return i
        }(e, t.split("."))) ? i : t
    }

    function c() {
        var e = r.a.as(n.a.配置).get配置Properties();
        return Object.keys(e)
    }

    function h() {
        var e, t = Object.create(null),
            i = r.a.as(n.a.配置).get配置Properties();
        for (e in i) {
            a(t, e, i[e].default, e => console.error("Conflict in default settings: " + e))
        }
        return t
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return C
    })), i.d(t, "c", (function() {
        return x
    })), i.d(t, "b", (function() {
        return O
    }));
    var n = i(2),
        r = i(4),
        o = i(6),
        s = i(93),
        a = i(70),
        l = i(96);
    class d {
        constructor(e) {
            var t;
            e.autoClosingPairs ? this._autoClosingPairs = e.autoClosingPairs.map(e => new a.c(e)) : e.brackets ? this._autoClosingPairs = e.brackets.map(e => new a.c({
                open: e[0],
                close: e[1]
            })) : this._autoClosingPairs = [], e.colorizedBracketPairs ? this._colorizedBracketPairs = c(e.colorizedBracketPairs.map(e => [e[0], e[1]])) : e.brackets ? this._colorizedBracketPairs = c(e.brackets.map(e => [e[0], e[1]]).filter(e => !("<" === e[0] && ">" === e[1]))) : this._colorizedBracketPairs = [], e.__electricCharacterSupport && e.__electricCharacterSupport.docComment && (t = e.__electricCharacterSupport.docComment, this._autoClosingPairs.push(new a.c({
                open: t.open,
                close: t.close || ""
            }))), this._autoCloseBefore = "string" == typeof e.autoCloseBefore ? e.autoCloseBefore : d.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED, this._surroundingPairs = e.surroundingPairs || this._autoClosingPairs
        }
        getAutoClosingPairs() {
            return this._autoClosingPairs
        }
        getAutoCloseBeforeSet() {
            return this._autoCloseBefore
        }
        static shouldAutoClosePair(e, t, i) {
            return 0 === t.getTokenCount() || (i = t.findTokenIndexAtOffset(i - 2), i = t.getStandardTokenType(i), e.isOK(i))
        }
        getSurroundingPairs() {
            return this._surroundingPairs
        }
        getColorizedBrackets() {
            return this._colorizedBracketPairs
        }
    }

    function c(e) {
        return e.filter(([e, t]) => "" !== e && "" !== t)
    }
    d.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED = ";:.,=}])> \n\t";
    var h = i(102);
    class u {
        constructor(e) {
            this._richEditBrackets = e
        }
        getElectricCharacters() {
            let e = [];
            if (this._richEditBrackets)
                for (const i of this._richEditBrackets.brackets)
                    for (const n of i.close) {
                        var t = n.charAt(n.length - 1);
                        e.push(t)
                    }
            return e = e.filter((e, t, i) => i.indexOf(e) === t), e
        }
        onElectricCharacter(e, t, i) {
            if (!this._richEditBrackets || 0 === this._richEditBrackets.brackets.length) return null;
            var n = t.findTokenIndexAtOffset(i - 1);
            if (Object(l.b)(t.getStandardTokenType(n))) return null;
            n = this._richEditBrackets.reversedRegex;
            const r = t.getLineContent().substring(0, i - 1) + e;
            return (e = h.a.findPrevBracketInRange(n, 1, r, 0, r.length)) ? (n = r.substring(e.startColumn - 1, e.endColumn - 1).toLowerCase(), this._richEditBrackets.textIsOpenBracket[n] ? null : (e = t.getActualLineContentBefore(e.startColumn - 1), /^\s*$/.test(e) ? {
                matchOpenBracket: n
            } : null)) : null
        }
    }

    function p(e) {
        return e.global && (e.lastIndex = 0), 1
    }
    class g {
        constructor(e) {
            this._indentationRules = e
        }
        shouldIncrease(e) {
            return !!(this._indentationRules && this._indentationRules.increaseIndentPattern && p(this._indentationRules.increaseIndentPattern) && this._indentationRules.increaseIndentPattern.test(e))
        }
        shouldDecrease(e) {
            return !!(this._indentationRules && this._indentationRules.decreaseIndentPattern && p(this._indentationRules.decreaseIndentPattern) && this._indentationRules.decreaseIndentPattern.test(e))
        }
        shouldIndentNextLine(e) {
            return !!(this._indentationRules && this._indentationRules.indentNextLinePattern && p(this._indentationRules.indentNextLinePattern) && this._indentationRules.indentNextLinePattern.test(e))
        }
        shouldIgnore(e) {
            return !!(this._indentationRules && this._indentationRules.unIndentedLinePattern && p(this._indentationRules.unIndentedLinePattern) && this._indentationRules.unIndentedLinePattern.test(e))
        }
        getIndentMetadata(e) {
            let t = 0;
            return this.shouldIncrease(e) && (t += 1), this.shouldDecrease(e) && (t += 2), this.shouldIndentNextLine(e) && (t += 4), this.shouldIgnore(e) && (t += 8), t
        }
    }
    var f = i(31);
    class m {
        constructor(e) {
            (e = e || {}).brackets = e.brackets || [
                ["(", ")"],
                ["{", "}"],
                ["[", "]"]
            ], this._brackets = [], e.brackets.forEach(e => {
                var t = m._createOpenBracketRegExp(e[0]),
                    i = m._createCloseBracketRegExp(e[1]);
                t && i && this._brackets.push({
                    open: e[0],
                    openRegExp: t,
                    close: e[1],
                    closeRegExp: i
                })
            }), this._regExpRules = e.onEnterRules || []
        }
        onEnter(e, t, i, n) {
            if (3 <= e)
                for (let e = 0, r = this._regExpRules.length; e < r; e++) {
                    let r = this._regExpRules[e];
                    if ([{
                            reg: r.beforeText,
                            text: i
                        }, {
                            reg: r.afterText,
                            text: n
                        }, {
                            reg: r.previousLineText,
                            text: t
                        }].every(e => !e.reg || (e.reg.lastIndex = 0, e.reg.test(e.text)))) return r.action
                }
            if (2 <= e && 0 < i.length && 0 < n.length)
                for (let e = 0, t = this._brackets.length; e < t; e++) {
                    let t = this._brackets[e];
                    if (t.openRegExp.test(i) && t.closeRegExp.test(n)) return {
                        indentAction: a.b.IndentOutdent
                    }
                }
            if (2 <= e && 0 < i.length)
                for (let e = 0, t = this._brackets.length; e < t; e++) {
                    if (this._brackets[e].openRegExp.test(i)) return {
                        indentAction: a.b.Indent
                    }
                }
            return null
        }
        static _createOpenBracketRegExp(e) {
            let t = o.t(e);
            return /\B/.test(t.charAt(0)) || (t = "\\b" + t), t += "\\s*$", m._safeRegExp(t)
        }
        static _createCloseBracketRegExp(e) {
            let t = o.t(e);
            return /\B/.test(t.charAt(t.length - 1)) || (t += "\\b"), t = "^\\s*" + t, m._safeRegExp(t)
        }
        static _safeRegExp(e) {
            try {
                return new RegExp(e)
            } catch (e) {
                return Object(f.f)(e), null
            }
        }
    }
    var v = i(26),
        b = i(56),
        _ = i(97),
        w = i(132);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, i = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    class y {
        constructor(e) {
            this.languageId = e
        }
        affects(e) {
            return !this.languageId || this.languageId === e
        }
    }
    const C = Object(v.c)("language配置Service");
    let x = class extends r.a {
        constructor(e, t) {
            super(), this.configurationService = e, this.modeService = t, this.onDidChangeEmitter = this._register(new n.b), this.onDidChange = this.onDidChangeEmitter.event, this.configurations = new Map;
            const i = new Set(Object.values(S));
            this._register(this.configurationService.onDidChange配置(e => {
                var t = e.change.keys.some(e => i.has(e));
                e = e.change.overrides.filter(([, e]) => e.some(e => i.has(e))).map(([e]) => this.modeService.validateLanguageId(e));
                if (t) this.configurations.clear(), this.onDidChangeEmitter.fire(new y(void 0));
                else
                    for (const t of e) t && (this.configurations.delete(t), this.onDidChangeEmitter.fire(new y(t)))
            })), this._register(O.onDidChange(e => {
                this.configurations.delete(e.languageId), this.onDidChangeEmitter.fire(new y(e.languageId))
            }))
        }
        getLanguage配置(e) {
            let t = this.configurations.get(e);
            return t || (t = function(e, t, i) {
                let n = O.getLanguage配置(e);
                if (!n) {
                    if (!(e = i.validateLanguageId(e))) throw new Error("Unexpected languageId");
                    n = new I(e, {})
                }
                return t = function(e, t) {
                    var i = t.getValue(S.brackets, {
                        overrideIdentifier: e
                    });
                    e = t.getValue(S.colorizedBracketPairs, {
                        overrideIdentifier: e
                    });
                    return {
                        brackets: k(i),
                        colorizedBracketPairs: k(e)
                    }
                }(n.languageId, t), t = N([n.underlyingConfig, t]), t = new I(n.languageId, t)
            }(e, this.configurationService, this.modeService), this.configurations.set(e, t)), t
        }
    };
    x = t([i(0, b.a), i(1, _.a)], x);
    const S = {
        brackets: "editor.language.brackets",
        colorizedBracketPairs: "editor.language.colorizedBracketPairs"
    };

    function k(e) {
        if (Array.isArray(e)) return e.map(e => {
            if (Array.isArray(e) && 2 === e.length) return [e[0], e[1]]
        }).filter(e => !!e)
    }
    class L {
        constructor(e) {
            this.languageId = e
        }
    }
    const O = new class {
        constructor() {
            this._entries = new Map, this._onDidChange = new n.b, this.onDidChange = this._onDidChange.event
        }
        register(e, t, i = 0) {
            let n = this._entries.get(e);
            n || (n = new E(e), this._entries.set(e, n));
            const o = n.register(t, i);
            return this._onDidChange.fire(new L(e)), Object(r.i)(() => {
                o.dispose(), this._onDidChange.fire(new L(e))
            })
        }
        getLanguage配置(e) {
            let t = this._entries.get(e);
            return (null == t ? void 0 : t.getResolved配置()) || null
        }
        getIndentationRules(e) {
            return (e = this.getLanguage配置(e)) && e.indentationRules || null
        }
        _getElectricCharacterSupport(e) {
            return (e = this.getLanguage配置(e)) && e.electricCharacter || null
        }
        getElectricCharacters(e) {
            let t = this._getElectricCharacterSupport(e);
            return t ? t.getElectricCharacters() : []
        }
        onElectricCharacter(e, t, i) {
            t = Object(l.a)(t, i - 1);
            let n = this._getElectricCharacterSupport(t.languageId);
            return n ? n.onElectricCharacter(e, t, i - t.firstCharOffset) : null
        }
        getComments(e) {
            return (e = this.getLanguage配置(e)) && e.comments || null
        }
        _getCharacterPairSupport(e) {
            return (e = this.getLanguage配置(e)) && e.characterPair || null
        }
        getAutoClosingPairs(e) {
            const t = this._getCharacterPairSupport(e);
            return new a.a(t ? t.getAutoClosingPairs() : [])
        }
        getAutoCloseBeforeSet(e) {
            let t = this._getCharacterPairSupport(e);
            return t ? t.getAutoCloseBeforeSet() : d.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED
        }
        getSurroundingPairs(e) {
            let t = this._getCharacterPairSupport(e);
            return t ? t.getSurroundingPairs() : []
        }
        shouldAutoClosePair(e, t, i) {
            return t = Object(l.a)(t, i - 1), d.shouldAutoClosePair(e, t, i - t.firstCharOffset)
        }
        getWordDefinition(e) {
            return (e = this.getLanguage配置(e)) ? Object(s.c)(e.wordDefinition || null) : Object(s.c)(null)
        }
        getFoldingRules(e) {
            return (e = this.getLanguage配置(e)) ? e.foldingRules : {}
        }
        getIndentRulesSupport(e) {
            return (e = this.getLanguage配置(e)) && e.indentRulesSupport || null
        }
        getPrecedingValidLine(e, t, i) {
            var n = e.getLanguageIdAtPosition(t, 0);
            if (1 < t) {
                let o, s = -1;
                for (o = t - 1; 1 <= o; o--) {
                    if (e.getLanguageIdAtPosition(o, 0) !== n) return s;
                    var r = e.getLineContent(o);
                    if (!i.shouldIgnore(r) && !/^\s+$/.test(r) && "" !== r) return o;
                    s = o
                }
            }
            return -1
        }
        getInheritIndentForLine(e, t, i, n = !0) {
            if (e < 4) return null;
            const r = this.getIndentRulesSupport(t.getLanguageId());
            if (!r) return null;
            if (i <= 1) return {
                indentation: "",
                action: null
            };
            var s = this.getPrecedingValidLine(t, i, r);
            if (s < 0) return null;
            if (s < 1) return {
                indentation: "",
                action: null
            };
            if (e = t.getLineContent(s), r.shouldIncrease(e) || r.shouldIndentNextLine(e)) return {
                indentation: o.x(e),
                action: a.b.Indent,
                line: s
            };
            if (r.shouldDecrease(e)) return {
                indentation: o.x(e),
                action: null,
                line: s
            };
            if (1 === s) return {
                indentation: o.x(t.getLineContent(s)),
                action: null,
                line: s
            };
            if (i = s - 1, !(3 & (e = r.getIndentMetadata(t.getLineContent(i)))) && 4 & e) {
                let e = 0;
                for (let n = i - 1; 0 < n; n--)
                    if (!r.shouldIndentNextLine(t.getLineContent(n))) {
                        e = n;
                        break
                    } return {
                    indentation: o.x(t.getLineContent(e + 1)),
                    action: null,
                    line: e + 1
                }
            }
            if (n) return {
                indentation: o.x(t.getLineContent(s)),
                action: null,
                line: s
            };
            for (let e = s; 0 < e; e--) {
                var l = t.getLineContent(e);
                if (r.shouldIncrease(l)) return {
                    indentation: o.x(l),
                    action: a.b.Indent,
                    line: e
                };
                if (r.shouldIndentNextLine(l)) {
                    let i = 0;
                    for (let n = e - 1; 0 < n; n--)
                        if (!r.shouldIndentNextLine(t.getLineContent(e))) {
                            i = n;
                            break
                        } return {
                        indentation: o.x(t.getLineContent(i + 1)),
                        action: null,
                        line: i + 1
                    }
                }
                if (r.shouldDecrease(l)) return {
                    indentation: o.x(l),
                    action: null,
                    line: e
                }
            }
            return {
                indentation: o.x(t.getLineContent(1)),
                action: null,
                line: 1
            }
        }
        getGoodIndentForLine(e, t, i, n, r) {
            if (e < 4) return null;
            const s = this.getLanguage配置(i);
            if (!s) return null;
            const l = this.getIndentRulesSupport(i);
            if (!l) return null;
            var d = this.getInheritIndentForLine(e, t, n);
            i = t.getLineContent(n);
            if (d) {
                if (void 0 !== (n = d.line) && (e = s.onEnter(e, "", t.getLineContent(n), ""))) {
                    let s = o.x(t.getLineContent(n));
                    return e.removeText && (s = s.substring(0, s.length - e.removeText)), e.indentAction === a.b.Indent || e.indentAction === a.b.IndentOutdent ? s = r.shiftIndent(s) : e.indentAction === a.b.Outdent && (s = r.unshiftIndent(s)), l.shouldDecrease(i) && (s = r.unshiftIndent(s)), e.appendText && (s += e.appendText), o.x(s)
                }
                return l.shouldDecrease(i) ? d.action === a.b.Indent ? d.indentation : r.unshiftIndent(d.indentation) : d.action === a.b.Indent ? r.shiftIndent(d.indentation) : d.indentation
            }
            return null
        }
        getIndentForEnter(e, t, i, n) {
            if (e < 4) return null;
            t.forceTokenization(i.startLineNumber);
            const r = t.getLineTokens(i.startLineNumber),
                s = Object(l.a)(r, i.startColumn - 1),
                d = s.getLineContent();
            let c, h, u = !1;
            if (c = 0 < s.firstCharOffset && r.getLanguageId(0) !== s.languageId ? (u = !0, d.substr(0, i.startColumn - 1 - s.firstCharOffset)) : r.getLineContent().substring(0, i.startColumn - 1), i.isEmpty()) h = d.substr(i.startColumn - 1 - s.firstCharOffset);
            else {
                h = this.getScopedLineTokens(t, i.endLineNumber, i.endColumn).getLineContent().substr(i.endColumn - 1 - s.firstCharOffset)
            }
            const p = this.getIndentRulesSupport(s.languageId);
            if (!p) return null;
            const g = c;
            var f = o.x(c),
                m = {
                    getLineTokens: e => t.getLineTokens(e),
                    getLanguageId: () => t.getLanguageId(),
                    getLanguageIdAtPosition: (e, i) => t.getLanguageIdAtPosition(e, i),
                    getLineContent: e => e === i.startLineNumber ? g : t.getLineContent(e)
                },
                v = o.x(r.getLineContent());
            if (!(e = this.getInheritIndentForLine(e, m, i.startLineNumber + 1))) return {
                beforeEnter: m = u ? v : f,
                afterEnter: m
            };
            let b = u ? v : e.indentation;
            return e.action === a.b.Indent && (b = n.shiftIndent(b)), p.shouldDecrease(h) && (b = n.unshiftIndent(b)), {
                beforeEnter: u ? v : f,
                afterEnter: b
            }
        }
        getIndentActionForType(e, t, i, n, r) {
            if (e < 4) return null;
            const o = this.getScopedLineTokens(t, i.startLineNumber, i.startColumn);
            if (o.firstCharOffset) return null;
            const s = this.getIndentRulesSupport(o.languageId);
            if (!s) return null;
            const l = o.getLineContent();
            var d = l.substr(0, i.startColumn - 1 - o.firstCharOffset);
            let c;
            if (i.isEmpty()) c = l.substr(i.startColumn - 1 - o.firstCharOffset);
            else {
                c = this.getScopedLineTokens(t, i.endLineNumber, i.endColumn).getLineContent().substr(i.endColumn - 1 - o.firstCharOffset)
            }
            if (s.shouldDecrease(d + c) || !s.shouldDecrease(d + n + c)) return null; {
                if (!(i = this.getInheritIndentForLine(e, t, i.startLineNumber, !1))) return null;
                let n = i.indentation;
                return i.action !== a.b.Indent && (n = r.unshiftIndent(n)), n
            }
        }
        getIndentMetadata(e, t) {
            const i = this.getIndentRulesSupport(e.getLanguageId());
            return !i || t < 1 || t > e.getLineCount() ? null : i.getIndentMetadata(e.getLineContent(t))
        }
        getEnterAction(e, t, i) {
            const n = this.getScopedLineTokens(t, i.startLineNumber, i.startColumn),
                r = this.getLanguage配置(n.languageId);
            if (!r) return null;
            const o = n.getLineContent();
            var s = o.substr(0, i.startColumn - 1 - n.firstCharOffset);
            let l;
            if (i.isEmpty()) l = o.substr(i.startColumn - 1 - n.firstCharOffset);
            else {
                l = this.getScopedLineTokens(t, i.endLineNumber, i.endColumn).getLineContent().substr(i.endColumn - 1 - n.firstCharOffset)
            }
            let d = "";
            if (1 < i.startLineNumber && 0 === n.firstCharOffset) {
                const e = this.getScopedLineTokens(t, i.startLineNumber - 1);
                e.languageId === n.languageId && (d = e.getLineContent())
            }
            if (!(e = r.onEnter(e, d, s, l))) return null;
            s = e.indentAction;
            let c = e.appendText;
            e = e.removeText || 0, c ? s === a.b.Indent && (c = "\t" + c) : c = s === a.b.Indent || s === a.b.IndentOutdent ? "\t" : "";
            let h = this.getIndentationAtPosition(t, i.startLineNumber, i.startColumn);
            return e && (h = h.substring(0, h.length - e)), {
                indentAction: s,
                appendText: c,
                removeText: e,
                indentation: h
            }
        }
        getIndentationAtPosition(e, t, i) {
            t = e.getLineContent(t);
            let n = o.x(t);
            return n.length > i - 1 && (n = n.substring(0, i - 1)), n
        }
        getScopedLineTokens(e, t, i) {
            e.forceTokenization(t);
            var n = e.getLineTokens(t);
            i = void 0 === i ? e.getLineMaxColumn(t) - 1 : i - 1;
            return Object(l.a)(n, i)
        }
    };
    class E {
        constructor(e) {
            this.languageId = e, this._resolved = null, this._entries = [], this._order = 0, this._resolved = null
        }
        register(e, t) {
            const i = new D(e, t, ++this._order);
            return this._entries.push(i), this._resolved = null, Object(r.i)(() => {
                for (let e = 0; e < this._entries.length; e++)
                    if (this._entries[e] === i) {
                        this._entries.splice(e, 1), this._resolved = null;
                        break
                    }
            })
        }
        getResolved配置() {
            var e;
            return this._resolved || (e = this._resolve()) && (this._resolved = new I(this.languageId, e)), this._resolved
        }
        _resolve() {
            return 0 === this._entries.length ? null : (this._entries.sort(D.cmp), N(this._entries.map(e => e.configuration)))
        }
    }

    function N(e) {
        let t = {
            comments: void 0,
            brackets: void 0,
            wordPattern: void 0,
            indentationRules: void 0,
            onEnterRules: void 0,
            autoClosingPairs: void 0,
            surroundingPairs: void 0,
            autoCloseBefore: void 0,
            folding: void 0,
            colorizedBracketPairs: void 0,
            __electricCharacterSupport: void 0
        };
        for (const i of e) t = {
            comments: i.comments || t.comments,
            brackets: i.brackets || t.brackets,
            wordPattern: i.wordPattern || t.wordPattern,
            indentationRules: i.indentationRules || t.indentationRules,
            onEnterRules: i.onEnterRules || t.onEnterRules,
            autoClosingPairs: i.autoClosingPairs || t.autoClosingPairs,
            surroundingPairs: i.surroundingPairs || t.surroundingPairs,
            autoCloseBefore: i.autoCloseBefore || t.autoCloseBefore,
            folding: i.folding || t.folding,
            colorizedBracketPairs: i.colorizedBracketPairs || t.colorizedBracketPairs,
            __electricCharacterSupport: i.__electricCharacterSupport || t.__electricCharacterSupport
        };
        return t
    }
    class D {
        constructor(e, t, i) {
            this.configuration = e, this.priority = t, this.order = i
        }
        static cmp(e, t) {
            return e.priority === t.priority ? e.order - t.order : e.priority - t.priority
        }
    }
    class I {
        constructor(e, t) {
            this.languageId = e, this.underlyingConfig = t, this._brackets = null, this._electricCharacter = null, this._onEnterSupport = this.underlyingConfig.brackets || this.underlyingConfig.indentationRules || this.underlyingConfig.onEnterRules ? new m(this.underlyingConfig) : null, this.comments = I._handleComments(this.underlyingConfig), this.characterPair = new d(this.underlyingConfig), this.wordDefinition = this.underlyingConfig.wordPattern || s.a, this.indentationRules = this.underlyingConfig.indentationRules, this.underlyingConfig.indentationRules ? this.indentRulesSupport = new g(this.underlyingConfig.indentationRules) : this.indentRulesSupport = null, this.foldingRules = this.underlyingConfig.folding || {}
        }
        getWordDefinition() {
            return Object(s.c)(this.wordDefinition)
        }
        get brackets() {
            return !this._brackets && this.underlyingConfig.brackets && (this._brackets = new h.b(this.languageId, this.underlyingConfig.brackets)), this._brackets
        }
        get electricCharacter() {
            return this._electricCharacter || (this._electricCharacter = new u(this.brackets)), this._electricCharacter
        }
        onEnter(e, t, i, n) {
            return this._onEnterSupport ? this._onEnterSupport.onEnter(e, t, i, n) : null
        }
        static _handleComments(e) {
            var t = e.comments;
            if (!t) return null;
            let i = {};
            return t.lineComment && (i.lineCommentToken = t.lineComment), t.blockComment && ([e, t] = t.blockComment, i.blockCommentStartToken = e, i.blockCommentEndToken = t), i
        }
    }
    Object(w.b)(C, x)
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return o
    }));
    var n = i(155),
        r = i(17);
    const o = new class {
        constructor() {
            this.data = new Map
        }
        add(e, t) {
            n.a(r.k(e)), n.a(r.j(t)), n.a(!this.data.has(e), "There is already an extension with this id"), this.data.set(e, t)
        }
        as(e) {
            return this.data.get(e) || null
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return o
    })), i.d(t, "b", (function() {
        return s
    })), i.d(t, "e", (function() {
        return a
    })), i.d(t, "c", (function() {
        return l
    })), i.d(t, "f", (function() {
        return d
    })), i.d(t, "d", (function() {
        return c
    })), i.d(t, "g", (function() {
        return h
    }));
    const n = "undefined" != typeof Buffer;
    let r;
    class o {
        constructor(e) {
            this.buffer = e, this.byteLength = this.buffer.byteLength
        }
        static wrap(e) {
            return n && !Buffer.isBuffer(e) && (e = Buffer.from(e.buffer, e.byteOffset, e.byteLength)), new o(e)
        }
        toString() {
            return n ? this.buffer.toString() : (r = r || new TextDecoder, r.decode(this.buffer))
        }
    }

    function s(e, t) {
        return e[t + 0] << 0 >>> 0 | e[t + 1] << 8 >>> 0
    }

    function a(e, t, i) {
        e[i + 0] = 255 & t, e[i + 1] = 255 & (t >>>= 8)
    }

    function l(e, t) {
        return e[t] * Math.pow(2, 24) + e[t + 1] * Math.pow(2, 16) + e[t + 2] * Math.pow(2, 8) + e[t + 3]
    }

    function d(e, t, i) {
        e[i + 3] = t, e[i + 2] = t >>>= 8, e[i + 1] = t >>>= 8, e[i] = t >>>= 8
    }

    function c(e, t) {
        return e[t]
    }

    function h(e, t, i) {
        e[i] = t
    }
}, function(e, t) {
    e.exports = require("electron-log")
}, function(e, t) {
    e.exports = require("moment")
}, function(e, t, i) {
    "use strict";
    i.d(t, "i", (function() {
        return m
    })), i.d(t, "e", (function() {
        return v
    })), i.d(t, "d", (function() {
        return b
    })), i.d(t, "g", (function() {
        return _
    })), i.d(t, "f", (function() {
        return w
    })), i.d(t, "b", (function() {
        return y
    })), i.d(t, "a", (function() {
        return C
    })), i.d(t, "c", (function() {
        return x
    })), i.d(t, "h", (function() {
        return S
    }));
    var n = i(9);
    let r;
    if (void 0 !== n.b.vscode && void 0 !== n.b.vscode.process) {
        const e = n.b.vscode.process;
        r = {
            get platform() {
                return e.platform
            },
            get arch() {
                return e.arch
            },
            get env() {
                return e.env
            },
            cwd: () => e.cwd(),
            nextTick: e => Object(n.j)(e)
        }
    } else r = "undefined" != typeof process ? {
        get platform() {
            return process.platform
        },
        get arch() {
            return process.arch
        },
        get env() {
            return process.env
        },
        cwd: () => process.env.VSCODE_CWD || process.cwd(),
        nextTick: e => process.nextTick(e)
    } : {
        get platform() {
            return n.i ? "win32" : n.f ? "darwin" : "linux"
        },
        get arch() {},
        nextTick: e => Object(n.j)(e),
        get env() {
            return {}
        },
        cwd: () => "/"
    };
    const o = r.cwd,
        s = r.env;
    i = r.platform;
    const a = 47,
        l = 92;
    class d extends Error {
        constructor(e, t, i) {
            let n;
            "string" == typeof t && 0 === t.indexOf("not ") ? (n = "must not be", t = t.replace(/^not /, "")) : n = "must be";
            var r = -1 !== e.indexOf(".") ? "property" : "argument";
            t = `The "${e}" ${r} ${n} of type ${t}`;
            super(t += ". Received type " + typeof i), this.code = "ERR_INVALID_ARG_TYPE"
        }
    }

    function c(e, t) {
        if ("string" != typeof e) throw new d(t, "string", e)
    }

    function h(e) {
        return e === a || e === l
    }

    function u(e) {
        return e === a
    }

    function p(e) {
        return e >= 65 && e <= 90 || e >= 97 && e <= 122
    }

    function g(e, t, i, n) {
        let r = "",
            o = 0,
            s = -1,
            l = 0,
            d = 0;
        for (let h = 0; h <= e.length; ++h) {
            if (h < e.length) d = e.charCodeAt(h);
            else {
                if (n(d)) break;
                d = a
            }
            if (n(d)) {
                if (s !== h - 1 && 1 !== l)
                    if (2 === l) {
                        if (r.length < 2 || 2 !== o || 46 !== r.charCodeAt(r.length - 1) || 46 !== r.charCodeAt(r.length - 2)) {
                            if (2 < r.length) {
                                var c = r.lastIndexOf(i);
                                o = -1 === c ? (r = "", 0) : (r = r.slice(0, c), r.length - 1 - r.lastIndexOf(i)), s = h, l = 0;
                                continue
                            }
                            if (0 !== r.length) {
                                r = "", o = 0, s = h, l = 0;
                                continue
                            }
                        }
                        t && (r += 0 < r.length ? i + ".." : "..", o = 2)
                    } else 0 < r.length ? r += `${i}${e.slice(s+1,h)}` : r = e.slice(s + 1, h), o = h - s - 1;
                s = h, l = 0
            } else 46 === d && -1 !== l ? ++l : l = -1
        }
        return r
    }

    function f(e, t) {
        if (null === t || "object" != typeof t) throw new d("pathObject", "Object", t);
        var i = t.dir || t.root,
            n = t.base || `${t.name||""}${t.ext||""}`;
        return i ? i === t.root ? `${i}${n}` : `${i}${e}${n}` : n
    }
    const m = {
            resolve(...e) {
                let t = "",
                    i = "",
                    n = !1;
                for (let u = e.length - 1; - 1 <= u; u--) {
                    let g;
                    if (0 <= u) {
                        if (g = e[u], c(g, "path"), 0 === g.length) continue
                    } else 0 === t.length ? g = o() : (g = s["=" + t] || o(), (void 0 === g || g.slice(0, 2).toLowerCase() !== t.toLowerCase() && g.charCodeAt(2) === l) && (g = t + "\\"));
                    var r = g.length;
                    let f = 0,
                        m = "",
                        v = !1;
                    var a = g.charCodeAt(0);
                    if (1 === r) h(a) && (f = 1, v = !0);
                    else if (h(a))
                        if (v = !0, h(g.charCodeAt(1))) {
                            let e = 2,
                                t = e;
                            for (; e < r && !h(g.charCodeAt(e));) e++;
                            if (e < r && e !== t) {
                                var d = g.slice(t, e);
                                for (t = e; e < r && h(g.charCodeAt(e));) e++;
                                if (e < r && e !== t) {
                                    for (t = e; e < r && !h(g.charCodeAt(e));) e++;
                                    e !== r && e === t || (m = `\\\\${d}\\${g.slice(t,e)}`, f = e)
                                }
                            }
                        } else f = 1;
                    else p(a) && 58 === g.charCodeAt(1) && (m = g.slice(0, 2), (f = 2) < r && h(g.charCodeAt(2)) && (v = !0, f = 3));
                    if (0 < m.length)
                        if (0 < t.length) {
                            if (m.toLowerCase() !== t.toLowerCase()) continue
                        } else t = m;
                    if (n) {
                        if (0 < t.length) break
                    } else if (i = `${g.slice(f)}\\${i}`, n = v, v && 0 < t.length) break
                }
                return i = g(i, !n, "\\", h), n ? `${t}\\${i}` : `${t}${i}` || "."
            },
            normalize(e) {
                c(e, "path");
                var t = e.length;
                if (0 === t) return ".";
                let i, n = 0,
                    r = !1;
                var o = e.charCodeAt(0);
                if (1 === t) return u(o) ? "\\" : e;
                if (h(o))
                    if (r = !0, h(e.charCodeAt(1))) {
                        let r = 2,
                            o = r;
                        for (; r < t && !h(e.charCodeAt(r));) r++;
                        if (r < t && r !== o) {
                            var s = e.slice(o, r);
                            for (o = r; r < t && h(e.charCodeAt(r));) r++;
                            if (r < t && r !== o) {
                                for (o = r; r < t && !h(e.charCodeAt(r));) r++;
                                if (r === t) return `\\\\${s}\\${e.slice(o)}\\`;
                                r !== o && (i = `\\\\${s}\\${e.slice(o,r)}`, n = r)
                            }
                        }
                    } else n = 1;
                else p(o) && 58 === e.charCodeAt(1) && (i = e.slice(0, 2), (n = 2) < t && h(e.charCodeAt(2)) && (r = !0, n = 3));
                let a = n < t ? g(e.slice(n), !r, "\\", h) : "";
                return 0 !== a.length || r || (a = "."), 0 < a.length && h(e.charCodeAt(t - 1)) && (a += "\\"), void 0 === i ? r ? "\\" + a : a : r ? `${i}\\${a}` : `${i}${a}`
            },
            isAbsolute(e) {
                c(e, "path");
                var t = e.length;
                if (0 === t) return !1;
                var i = e.charCodeAt(0);
                return h(i) || 2 < t && p(i) && 58 === e.charCodeAt(1) && h(e.charCodeAt(2))
            },
            join(...e) {
                if (0 === e.length) return ".";
                let t, i;
                for (let r = 0; r < e.length; ++r) {
                    var n = e[r];
                    c(n, "path"), 0 < n.length && (void 0 === t ? t = i = n : t += "\\" + n)
                }
                if (void 0 === t) return ".";
                let r = !0,
                    o = 0;
                var s;
                if ("string" == typeof i && h(i.charCodeAt(0)) && (++o, 1 < (s = i.length) && h(i.charCodeAt(1)) && (++o, 2 < s && (h(i.charCodeAt(2)) ? ++o : r = !1))), r) {
                    for (; o < t.length && h(t.charCodeAt(o));) o++;
                    2 <= o && (t = "\\" + t.slice(o))
                }
                return m.normalize(t)
            },
            relative(e, t) {
                if (c(e, "from"), c(t, "to"), e === t) return "";
                const i = m.resolve(e),
                    n = m.resolve(t);
                if (i === n) return "";
                if ((e = i.toLowerCase()) === (t = n.toLowerCase())) return "";
                let r = 0;
                for (; r < e.length && e.charCodeAt(r) === l;) r++;
                let o = e.length;
                for (; o - 1 > r && e.charCodeAt(o - 1) === l;) o--;
                var s = o - r;
                let a = 0;
                for (; a < t.length && t.charCodeAt(a) === l;) a++;
                let d = t.length;
                for (; d - 1 > a && t.charCodeAt(d - 1) === l;) d--;
                var h = d - a,
                    u = s < h ? s : h;
                let p = -1,
                    g = 0;
                for (; g < u; g++) {
                    var f = e.charCodeAt(r + g);
                    if (f !== t.charCodeAt(a + g)) break;
                    f === l && (p = g)
                }
                if (g !== u) {
                    if (-1 === p) return n
                } else {
                    if (u < h) {
                        if (t.charCodeAt(a + g) === l) return n.slice(a + g + 1);
                        if (2 === g) return n.slice(a + g)
                    }
                    u < s && (e.charCodeAt(r + g) === l ? p = g : 2 === g && (p = 3)), -1 === p && (p = 0)
                }
                let v = "";
                for (g = r + p + 1; g <= o; ++g) g !== o && e.charCodeAt(g) !== l || (v += 0 === v.length ? ".." : "\\..");
                return a += p, 0 < v.length ? `${v}${n.slice(a,d)}` : (n.charCodeAt(a) === l && ++a, n.slice(a, d))
            },
            toNamespacedPath(e) {
                if ("string" != typeof e) return e;
                if (0 === e.length) return "";
                const t = m.resolve(e);
                if (t.length <= 2) return e;
                if (t.charCodeAt(0) === l) {
                    if (t.charCodeAt(1) === l) {
                        var i = t.charCodeAt(2);
                        if (63 !== i && 46 !== i) return "\\\\?\\UNC\\" + t.slice(2)
                    }
                } else if (p(t.charCodeAt(0)) && 58 === t.charCodeAt(1) && t.charCodeAt(2) === l) return "\\\\?\\" + t;
                return e
            },
            dirname(e) {
                c(e, "path");
                var t = e.length;
                if (0 === t) return ".";
                let i = -1,
                    n = 0;
                var r = e.charCodeAt(0);
                if (1 === t) return h(r) ? e : ".";
                if (h(r)) {
                    if (i = n = 1, h(e.charCodeAt(1))) {
                        let r = 2,
                            o = r;
                        for (; r < t && !h(e.charCodeAt(r));) r++;
                        if (r < t && r !== o) {
                            for (o = r; r < t && h(e.charCodeAt(r));) r++;
                            if (r < t && r !== o) {
                                for (o = r; r < t && !h(e.charCodeAt(r));) r++;
                                if (r === t) return e;
                                r !== o && (i = n = r + 1)
                            }
                        }
                    }
                } else p(r) && 58 === e.charCodeAt(1) && (i = 2 < t && h(e.charCodeAt(2)) ? 3 : 2, n = i);
                let o = -1,
                    s = !0;
                for (let i = t - 1; i >= n; --i)
                    if (h(e.charCodeAt(i))) {
                        if (!s) {
                            o = i;
                            break
                        }
                    } else s = !1;
                if (-1 === o) {
                    if (-1 === i) return ".";
                    o = i
                }
                return e.slice(0, o)
            },
            basename(e, t) {
                void 0 !== t && c(t, "ext"), c(e, "path");
                let i, n = 0,
                    r = -1,
                    o = !0;
                if (2 <= e.length && p(e.charCodeAt(0)) && 58 === e.charCodeAt(1) && (n = 2), void 0 !== t && 0 < t.length && t.length <= e.length) {
                    if (t === e) return "";
                    let a = t.length - 1,
                        l = -1;
                    for (i = e.length - 1; i >= n; --i) {
                        var s = e.charCodeAt(i);
                        if (h(s)) {
                            if (!o) {
                                n = i + 1;
                                break
                            }
                        } else -1 === l && (o = !1, l = i + 1), 0 <= a && (s === t.charCodeAt(a) ? -1 == --a && (r = i) : (a = -1, r = l))
                    }
                    return n === r ? r = l : -1 === r && (r = e.length), e.slice(n, r)
                }
                for (i = e.length - 1; i >= n; --i)
                    if (h(e.charCodeAt(i))) {
                        if (!o) {
                            n = i + 1;
                            break
                        }
                    } else -1 === r && (o = !1, r = i + 1);
                return -1 === r ? "" : e.slice(n, r)
            },
            extname(e) {
                c(e, "path");
                let t = 0,
                    i = -1,
                    n = 0,
                    r = -1,
                    o = !0,
                    s = 0;
                2 <= e.length && 58 === e.charCodeAt(1) && p(e.charCodeAt(0)) && (t = n = 2);
                for (let l = e.length - 1; l >= t; --l) {
                    var a = e.charCodeAt(l);
                    if (h(a)) {
                        if (o) continue;
                        n = l + 1;
                        break
                    } - 1 === r && (o = !1, r = l + 1), 46 === a ? -1 === i ? i = l : 1 !== s && (s = 1) : -1 !== i && (s = -1)
                }
                return -1 === i || -1 === r || 0 === s || 1 === s && i === r - 1 && i === n + 1 ? "" : e.slice(i, r)
            },
            format: f.bind(null, "\\"),
            parse(e) {
                c(e, "path");
                const t = {
                    root: "",
                    dir: "",
                    base: "",
                    ext: "",
                    name: ""
                };
                if (0 === e.length) return t;
                var i = e.length;
                let n = 0,
                    r = e.charCodeAt(0);
                if (1 === i) return h(r) ? t.root = t.dir = e : t.base = t.name = e, t;
                if (h(r)) {
                    if (n = 1, h(e.charCodeAt(1))) {
                        let t = 2,
                            r = t;
                        for (; t < i && !h(e.charCodeAt(t));) t++;
                        if (t < i && t !== r) {
                            for (r = t; t < i && h(e.charCodeAt(t));) t++;
                            if (t < i && t !== r) {
                                for (r = t; t < i && !h(e.charCodeAt(t));) t++;
                                t === i ? n = t : t !== r && (n = t + 1)
                            }
                        }
                    }
                } else if (p(r) && 58 === e.charCodeAt(1)) {
                    if (i <= 2) return t.root = t.dir = e, t;
                    if (n = 2, h(e.charCodeAt(2))) {
                        if (3 === i) return t.root = t.dir = e, t;
                        n = 3
                    }
                }
                0 < n && (t.root = e.slice(0, n));
                let o = -1,
                    s = n,
                    a = -1,
                    l = !0,
                    d = e.length - 1,
                    u = 0;
                for (; d >= n; --d) {
                    if (r = e.charCodeAt(d), h(r)) {
                        if (l) continue;
                        s = d + 1;
                        break
                    } - 1 === a && (l = !1, a = d + 1), 46 === r ? -1 === o ? o = d : 1 !== u && (u = 1) : -1 !== o && (u = -1)
                }
                return -1 !== a && (-1 === o || 0 === u || 1 === u && o === a - 1 && o === s + 1 ? t.base = t.name = e.slice(s, a) : (t.name = e.slice(s, o), t.base = e.slice(s, a), t.ext = e.slice(o, a))), t.dir = 0 < s && s !== n ? e.slice(0, s - 1) : t.root, t
            },
            sep: "\\",
            delimiter: ";",
            win32: null,
            posix: null
        },
        v = {
            resolve(...e) {
                let t = "",
                    i = !1;
                for (let n = e.length - 1; - 1 <= n && !i; n--) {
                    const r = 0 <= n ? e[n] : o();
                    c(r, "path"), 0 !== r.length && (t = `${r}/${t}`, i = r.charCodeAt(0) === a)
                }
                return t = g(t, !i, "/", u), i ? "/" + t : 0 < t.length ? t : "."
            },
            normalize(e) {
                if (c(e, "path"), 0 === e.length) return ".";
                var t = e.charCodeAt(0) === a,
                    i = e.charCodeAt(e.length - 1) === a;
                return 0 === (e = g(e, !t, "/", u)).length ? t ? "/" : i ? "./" : "." : (i && (e += "/"), t ? "/" + e : e)
            },
            isAbsolute: e => (c(e, "path"), 0 < e.length && e.charCodeAt(0) === a),
            join(...e) {
                if (0 === e.length) return ".";
                let t;
                for (let n = 0; n < e.length; ++n) {
                    var i = e[n];
                    c(i, "path"), 0 < i.length && (void 0 === t ? t = i : t += "/" + i)
                }
                return void 0 === t ? "." : v.normalize(t)
            },
            relative(e, t) {
                if (c(e, "from"), c(t, "to"), e === t) return "";
                if ((e = v.resolve(e)) === (t = v.resolve(t))) return "";
                var i = e.length,
                    n = i - 1,
                    r = t.length - 1,
                    o = n < r ? n : r;
                let s = -1,
                    l = 0;
                for (; l < o; l++) {
                    var d = e.charCodeAt(1 + l);
                    if (d !== t.charCodeAt(1 + l)) break;
                    d === a && (s = l)
                }
                if (l === o)
                    if (o < r) {
                        if (t.charCodeAt(1 + l) === a) return t.slice(1 + l + 1);
                        if (0 === l) return t.slice(1 + l)
                    } else o < n && (e.charCodeAt(1 + l) === a ? s = l : 0 === l && (s = 0));
                let h = "";
                for (l = 1 + s + 1; l <= i; ++l) l !== i && e.charCodeAt(l) !== a || (h += 0 === h.length ? ".." : "/..");
                return `${h}${t.slice(1+s)}`
            },
            toNamespacedPath: e => e,
            dirname(e) {
                if (c(e, "path"), 0 === e.length) return ".";
                var t = e.charCodeAt(0) === a;
                let i = -1,
                    n = !0;
                for (let t = e.length - 1; 1 <= t; --t)
                    if (e.charCodeAt(t) === a) {
                        if (!n) {
                            i = t;
                            break
                        }
                    } else n = !1;
                return -1 === i ? t ? "/" : "." : t && 1 === i ? "//" : e.slice(0, i)
            },
            basename(e, t) {
                void 0 !== t && c(t, "ext"), c(e, "path");
                let i, n = 0,
                    r = -1,
                    o = !0;
                if (void 0 !== t && 0 < t.length && t.length <= e.length) {
                    if (t === e) return "";
                    let l = t.length - 1,
                        d = -1;
                    for (i = e.length - 1; 0 <= i; --i) {
                        var s = e.charCodeAt(i);
                        if (s === a) {
                            if (!o) {
                                n = i + 1;
                                break
                            }
                        } else -1 === d && (o = !1, d = i + 1), 0 <= l && (s === t.charCodeAt(l) ? -1 == --l && (r = i) : (l = -1, r = d))
                    }
                    return n === r ? r = d : -1 === r && (r = e.length), e.slice(n, r)
                }
                for (i = e.length - 1; 0 <= i; --i)
                    if (e.charCodeAt(i) === a) {
                        if (!o) {
                            n = i + 1;
                            break
                        }
                    } else -1 === r && (o = !1, r = i + 1);
                return -1 === r ? "" : e.slice(n, r)
            },
            extname(e) {
                c(e, "path");
                let t = -1,
                    i = 0,
                    n = -1,
                    r = !0,
                    o = 0;
                for (let l = e.length - 1; 0 <= l; --l) {
                    var s = e.charCodeAt(l);
                    if (s === a) {
                        if (r) continue;
                        i = l + 1;
                        break
                    } - 1 === n && (r = !1, n = l + 1), 46 === s ? -1 === t ? t = l : 1 !== o && (o = 1) : -1 !== t && (o = -1)
                }
                return -1 === t || -1 === n || 0 === o || 1 === o && t === n - 1 && t === i + 1 ? "" : e.slice(t, n)
            },
            format: f.bind(null, "/"),
            parse(e) {
                c(e, "path");
                const t = {
                    root: "",
                    dir: "",
                    base: "",
                    ext: "",
                    name: ""
                };
                if (0 === e.length) return t;
                var i = e.charCodeAt(0) === a;
                let n;
                n = i ? (t.root = "/", 1) : 0;
                let r = -1,
                    o = 0,
                    s = -1,
                    l = !0,
                    d = e.length - 1,
                    h = 0;
                for (; d >= n; --d) {
                    var u = e.charCodeAt(d);
                    if (u === a) {
                        if (l) continue;
                        o = d + 1;
                        break
                    } - 1 === s && (l = !1, s = d + 1), 46 === u ? -1 === r ? r = d : 1 !== h && (h = 1) : -1 !== r && (h = -1)
                }
                if (-1 !== s) {
                    const n = 0 === o && i ? 1 : o; - 1 === r || 0 === h || 1 === h && r === s - 1 && r === o + 1 ? t.base = t.name = e.slice(n, s) : (t.name = e.slice(n, r), t.base = e.slice(n, s), t.ext = e.slice(r, s))
                }
                return 0 < o ? t.dir = e.slice(0, o - 1) : i && (t.dir = "/"), t
            },
            sep: "/",
            delimiter: ":",
            win32: null,
            posix: null
        };
    v.win32 = m.win32 = m, v.posix = m.posix = v;
    const b = ("win32" === i ? m : v).normalize,
        _ = ("win32" === i ? m : v).resolve,
        w = ("win32" === i ? m : v).relative,
        y = ("win32" === i ? m : v).dirname,
        C = ("win32" === i ? m : v).basename,
        x = ("win32" === i ? m : v).extname,
        S = ("win32" === i ? m : v).sep
}, function(e, t, i) {
    "use strict";
    i.d(t, "f", (function() {
        return p
    })), i.d(t, "b", (function() {
        return g
    })), i.d(t, "a", (function() {
        return f
    })), i.d(t, "d", (function() {
        return m
    })), i.d(t, "e", (function() {
        return v
    })), i.d(t, "c", (function() {
        return b
    }));
    var n = i(71),
        r = i(33),
        o = i(2),
        s = i(43),
        a = i(4),
        l = i(79),
        d = i(46),
        c = i(13),
        h = i(26),
        u = i(23);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, i = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };

    function p(e) {
        return void 0 !== e.command
    }
    class g {
        constructor(e) {
            this.id = g._idPool++, this._debugName = e
        }
    }
    g._idPool = 0, g.CommandPalette = new g("CommandPalette"), g.EditorContext = new g("EditorContext"), g.SimpleEditorContext = new g("SimpleEditorContext"), g.EditorContextCopy = new g("EditorContextCopy"), g.EditorContextPeek = new g("EditorContextPeek"), g.MenubarEditMenu = new g("MenubarEditMenu"), g.MenubarCopy = new g("MenubarCopy"), g.MenubarGoMenu = new g("MenubarGoMenu"), g.MenubarSelectionMenu = new g("MenubarSelectionMenu"), g.InlineCompletionsActions = new g("InlineCompletionsActions");
    const f = Object(h.c)("menuService"),
        m = new class {
            constructor() {
                this._commands = new Map, this._menuItems = new Map, this._onDidChangeMenu = new o.b, this.onDidChangeMenu = this._onDidChangeMenu.event, this._commandPaletteChangeEvent = {
                    has: e => e === g.CommandPalette
                }
            }
            addCommand(e) {
                return this.addCommands(s.a.single(e))
            }
            addCommands(e) {
                for (const t of e) this._commands.set(t.id, t);
                return this._onDidChangeMenu.fire(this._commandPaletteChangeEvent), Object(a.i)(() => {
                    let t = !1;
                    for (const i of e) t = this._commands.delete(i.id) || t;
                    t && this._onDidChangeMenu.fire(this._commandPaletteChangeEvent)
                })
            }
            getCommand(e) {
                return this._commands.get(e)
            }
            getCommands() {
                const e = new Map;
                return this._commands.forEach((t, i) => e.set(i, t)), e
            }
            appendMenuItem(e, t) {
                return this.appendMenuItems(s.a.single({
                    id: e,
                    item: t
                }))
            }
            appendMenuItems(e) {
                const t = new Set,
                    i = new l.a;
                for (var {
                        id: n,
                        item: r
                    } of e) {
                    let e = this._menuItems.get(n);
                    e || (e = new l.a, this._menuItems.set(n, e)), i.push(e.push(r)), t.add(n)
                }
                return this._onDidChangeMenu.fire(t), Object(a.i)(() => {
                    if (0 < i.size) {
                        for (var e of i) e();
                        this._onDidChangeMenu.fire(t), i.clear()
                    }
                })
            }
            getMenuItems(e) {
                let t;
                return t = this._menuItems.has(e) ? [...this._menuItems.get(e)] : [], e === g.CommandPalette && this._appendImplicitItems(t), t
            }
            _appendImplicitItems(e) {
                const t = new Set;
                for (const i of e) p(i) && (t.add(i.command.id), i.alt && t.add(i.alt.id));
                this._commands.forEach((i, n) => {
                    t.has(n) || e.push({
                        command: i
                    })
                })
            }
        };
    class v extends n.e {
        constructor(e, t, i, n) {
            super("submenuitem." + e.submenu.id, "string" == typeof e.title ? e.title : e.title.value, [], "submenu"), this.item = e, this._menuService = t, this._contextKeyService = i, this._options = n
        }
        get actions() {
            const e = [],
                t = this._menuService.createMenu(this.item.submenu, this._contextKeyService);
            var i, r = t.getActions(this._options);
            for ([, i] of (t.dispose(), r)) 0 < i.length && (e.push(...i), e.push(new n.d));
            return e.length && e.pop(), e
        }
    }
    let b = class e {
        constructor(t, i, n, o, s) {
            var a;
            this._commandService = s, this.id = t.id, this.label = null != n && n.renderShortTitle && t.shortTitle ? "string" == typeof t.shortTitle ? t.shortTitle : t.shortTitle.value : "string" == typeof t.title ? t.title : t.title.value, this.tooltip = null !== (a = "string" == typeof t.tooltip ? t.tooltip : null === (a = t.tooltip) || void 0 === a ? void 0 : a.value) && void 0 !== a ? a : "", this.enabled = !t.precondition || o.contextMatchesRules(t.precondition), this.checked = void 0, t.toggled && (a = t.toggled.condition ? t.toggled : {
                condition: t.toggled
            }, this.checked = o.contextMatchesRules(a.condition), this.checked && a.tooltip && (this.tooltip = "string" == typeof a.tooltip ? a.tooltip : a.tooltip.value), a.title && (this.label = "string" == typeof a.title ? a.title : a.title.value)), this.item = t, this.alt = i ? new e(i, void 0, n, o, s) : void 0, this._options = n, u.d.isThemeIcon(t.icon) && (this.class = r.a.asClassName(t.icon))
        }
        dispose() {}
        run(...e) {
            var t;
            let i = [];
            return null !== (t = this._options) && void 0 !== t && t.arg && (i = [...i, this._options.arg]), null !== (t = this._options) && void 0 !== t && t.shouldForwardArgs && (i = [...i, ...e]), this._commandService.executeCommand(this.id, ...i)
        }
    };
    b = t([i(3, c.b), i(4, d.b)], b)
}, function(e, t, i) {
    "use strict";

    function n(e, t, i) {
        let n = null,
            r = null;
        if ("function" == typeof i.value ? (n = "value", r = i.value, 0 !== r.length && console.warn("Memoize should only be used in functions with zero parameters")) : "function" == typeof i.get && (n = "get", r = i.get), !r) throw new Error("not supported");
        const o = "$memoize$" + t;
        i[n] = function(...e) {
            return this.hasOwnProperty(o) || Object.defineProperty(this, o, {
                configurable: !1,
                enumerable: !1,
                writable: !1,
                value: r.apply(this, e)
            }), this[o]
        }
    }
    i.d(t, "a", (function() {
        return n
    }))
}, function(e, t, i) {
    "use strict";
    var n, r, o = i(6);
    (i = n = n || {})[i.Ignore = 0] = "Ignore", i[i.Info = 1] = "Info", i[i.Warning = 2] = "Warning", i[i.Error = 3] = "错误", (r = n = n || {}).fromValue = function(e) {
        return e ? o.r("error", e) ? r.Error : o.r("warning", e) || o.r("warn", e) ? r.Warning : o.r("info", e) ? r.Info : r.Ignore : r.Ignore
    }, r.toString = function(e) {
        switch (e) {
            case r.Error:
                return "error";
            case r.Warning:
                return "warning";
            case r.Info:
                return "info";
            default:
                return "ignore"
        }
    }, t.a = n
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return s
    })), i.d(t, "b", (function() {
        return a
    }));
    var n = i(37),
        r = i(158),
        o = i(9);
    class s {
        constructor(e) {
            this.timestamp = Date.now(), this.browserEvent = e, this.leftButton = 0 === e.button, this.middleButton = 1 === e.button, this.rightButton = 2 === e.button, this.buttons = e.buttons, this.target = e.target, this.detail = e.detail || 1, "dblclick" === e.type && (this.detail = 2), this.ctrlKey = e.ctrlKey, this.shiftKey = e.shiftKey, this.altKey = e.altKey, this.metaKey = e.metaKey, "number" == typeof e.pageX ? (this.posx = e.pageX, this.posy = e.pageY) : (this.posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft, this.posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop), e = r.a.getPositionOfChildWindowRelativeToAncestorWindow(self, e.view), this.posx -= e.left, this.posy -= e.top
        }
        preventDefault() {
            this.browserEvent.preventDefault()
        }
        stopPropagation() {
            this.browserEvent.stopPropagation()
        }
    }
    class a {
        constructor(e, t = 0, i = 0) {
            this.browserEvent = e || null, this.target = e ? e.target || e.targetNode || e.srcElement : null, this.deltaY = i, this.deltaX = t, e && (t = i = e, void 0 !== i.wheelDeltaY ? this.deltaY = i.wheelDeltaY / 120 : void 0 !== t.VERTICAL_AXIS && t.axis === t.VERTICAL_AXIS ? this.deltaY = -t.detail / 3 : "wheel" === e.type && (e.deltaMode === e.DOM_DELTA_LINE ? n.g && !o.f ? this.deltaY = -e.deltaY / 3 : this.deltaY = -e.deltaY : this.deltaY = -e.deltaY / 40), void 0 !== i.wheelDeltaX ? n.h && o.i ? this.deltaX = -i.wheelDeltaX / 120 : this.deltaX = i.wheelDeltaX / 120 : void 0 !== t.HORIZONTAL_AXIS && t.axis === t.HORIZONTAL_AXIS ? this.deltaX = -e.detail / 3 : "wheel" === e.type && (e.deltaMode === e.DOM_DELTA_LINE ? n.g && !o.f ? this.deltaX = -e.deltaX / 3 : this.deltaX = -e.deltaX : this.deltaX = -e.deltaX / 40), 0 === this.deltaY && 0 === this.deltaX && e.wheelDelta && (this.deltaY = e.wheelDelta / 120))
        }
        preventDefault() {
            this.browserEvent && this.browserEvent.preventDefault()
        }
        stopPropagation() {
            this.browserEvent && this.browserEvent.stopPropagation()
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i = i(26);
    const n = Object(i.c)("codeEditorService")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    })), i.d(t, "d", (function() {
        return o
    })), i.d(t, "c", (function() {
        return s
    })), i.d(t, "b", (function() {
        return a
    }));
    var n = i(36);
    class r {
        constructor(e, t, i = !1) {
            this._range = e, this._text = t, this.insertsAutoWhitespace = i
        }
        getEditOperations(e, t) {
            t.addTrackedEditOperation(this._range, this._text)
        }
        computeCursorState(e, t) {
            return t = t.getInverseEditOperations()[0].range, new n.a(t.endLineNumber, t.endColumn, t.endLineNumber, t.endColumn)
        }
    }
    class o {
        constructor(e, t, i = !1) {
            this._range = e, this._text = t, this.insertsAutoWhitespace = i
        }
        getEditOperations(e, t) {
            t.addTrackedEditOperation(this._range, this._text)
        }
        computeCursorState(e, t) {
            return t = t.getInverseEditOperations()[0].range, new n.a(t.startLineNumber, t.startColumn, t.startLineNumber, t.startColumn)
        }
    }
    class s {
        constructor(e, t, i, n, r = !1) {
            this._range = e, this._text = t, this._columnDeltaOffset = n, this._lineNumberDeltaOffset = i, this.insertsAutoWhitespace = r
        }
        getEditOperations(e, t) {
            t.addTrackedEditOperation(this._range, this._text)
        }
        computeCursorState(e, t) {
            return t = t.getInverseEditOperations()[0].range, new n.a(t.endLineNumber + this._lineNumberDeltaOffset, t.endColumn + this._columnDeltaOffset, t.endLineNumber + this._lineNumberDeltaOffset, t.endColumn + this._columnDeltaOffset)
        }
    }
    class a {
        constructor(e, t, i, n = !1) {
            this._range = e, this._text = t, this._initialSelection = i, this._forceMoveMarkers = n, this._selectionId = null
        }
        getEditOperations(e, t) {
            t.addTrackedEditOperation(this._range, this._text, this._forceMoveMarkers), this._selectionId = t.trackSelection(this._initialSelection)
        }
        computeCursorState(e, t) {
            return t.getTrackedSelection(this._selectionId)
        }
    }
}, function(e, t) {
    e.exports = require("axios")
}, function(e, t, i) {
    "use strict";
    var n;
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "c", (function() {
        return r
    })), i.d(t, "a", (function() {
        return o
    })), (t = n = n || {})[t.None = 0] = "None", t[t.Indent = 1] = "Indent", t[t.IndentOutdent = 2] = "IndentOutdent", t[t.Outdent = 3] = "Outdent";
    class r {
        constructor(e) {
            if (this._standardAutoClosingPairConditionalBrand = void 0, this.open = e.open, this.close = e.close, this._standardTokenMask = 0, Array.isArray(e.notIn))
                for (let t = 0, i = e.notIn.length; t < i; t++) switch (e.notIn[t]) {
                    case "string":
                        this._standardTokenMask |= 2;
                        break;
                    case "comment":
                        this._standardTokenMask |= 1;
                        break;
                    case "regex":
                        this._standardTokenMask |= 4
                }
        }
        isOK(e) {
            return 0 == (this._standardTokenMask & e)
        }
    }
    class o {
        constructor(e) {
            this.autoClosingPairsOpenByStart = new Map, this.autoClosingPairsOpenByEnd = new Map, this.autoClosingPairsCloseByStart = new Map, this.autoClosingPairsCloseByEnd = new Map, this.autoClosingPairsCloseSingleChar = new Map;
            for (const t of e) s(this.autoClosingPairsOpenByStart, t.open.charAt(0), t), s(this.autoClosingPairsOpenByEnd, t.open.charAt(t.open.length - 1), t), s(this.autoClosingPairsCloseByStart, t.close.charAt(0), t), s(this.autoClosingPairsCloseByEnd, t.close.charAt(t.close.length - 1), t), 1 === t.close.length && 1 === t.open.length && s(this.autoClosingPairsCloseSingleChar, t.close, t)
        }
    }

    function s(e, t, i) {
        e.has(t) ? e.get(t).push(i) : e.set(t, [i])
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return s
    })), i.d(t, "b", (function() {
        return a
    })), i.d(t, "d", (function() {
        return l
    })), i.d(t, "e", (function() {
        return d
    })), i.d(t, "c", (function() {
        return c
    }));
    var n = i(2),
        r = (t = i(4), i(0)),
        o = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    class s extends t.a {
        constructor(e, t = "", i = "", r = !0, o) {
            super(), this._onDidChange = this._register(new n.b), this.onDidChange = this._onDidChange.event, this._enabled = !0, this._id = e, this._label = t, this._cssClass = i, this._enabled = r, this._actionCallback = o
        }
        get id() {
            return this._id
        }
        get label() {
            return this._label
        }
        set label(e) {
            this._setLabel(e)
        }
        _setLabel(e) {
            this._label !== e && (this._label = e, this._onDidChange.fire({
                label: e
            }))
        }
        get tooltip() {
            return this._tooltip || ""
        }
        set tooltip(e) {
            this._setTooltip(e)
        }
        _setTooltip(e) {
            this._tooltip !== e && (this._tooltip = e, this._onDidChange.fire({
                tooltip: e
            }))
        }
        get class() {
            return this._cssClass
        }
        set class(e) {
            this._setClass(e)
        }
        _setClass(e) {
            this._cssClass !== e && (this._cssClass = e, this._onDidChange.fire({
                class: e
            }))
        }
        get enabled() {
            return this._enabled
        }
        set enabled(e) {
            this._setEnabled(e)
        }
        _setEnabled(e) {
            this._enabled !== e && (this._enabled = e, this._onDidChange.fire({
                enabled: e
            }))
        }
        get checked() {
            return this._checked
        }
        set checked(e) {
            this._setChecked(e)
        }
        _setChecked(e) {
            this._checked !== e && (this._checked = e, this._onDidChange.fire({
                checked: e
            }))
        }
        run(e, t) {
            return o(this, void 0, void 0, (function*() {
                this._actionCallback && (yield this._actionCallback(e))
            }))
        }
    }
    class a extends t.a {
        constructor() {
            super(...arguments), this._onBeforeRun = this._register(new n.b), this.onBeforeRun = this._onBeforeRun.event, this._onDidRun = this._register(new n.b), this.onDidRun = this._onDidRun.event
        }
        run(e, t) {
            return o(this, void 0, void 0, (function*() {
                if (e.enabled) {
                    this._onBeforeRun.fire({
                        action: e
                    });
                    let i = void 0;
                    try {
                        yield this.runAction(e, t)
                    } catch (e) {
                        i = e
                    }
                    this._onDidRun.fire({
                        action: e,
                        error: i
                    })
                }
            }))
        }
        runAction(e, t) {
            return o(this, void 0, void 0, (function*() {
                yield e.run(t)
            }))
        }
    }
    class l extends s {
        constructor(e) {
            super(l.ID, e, e ? "separator text" : "separator"), this.checked = !1, this.enabled = !1
        }
    }
    l.ID = "vs.actions.separator";
    class d {
        constructor(e, t, i, n) {
            this.tooltip = "", this.enabled = !0, this.checked = !1, this.id = e, this.label = t, this.class = n, this._actions = i
        }
        get actions() {
            return this._actions
        }
        dispose() {}
        run() {
            return o(this, void 0, void 0, (function*() {}))
        }
    }
    class c extends s {
        constructor() {
            super(c.ID, r.a("submenu.empty", "(empty)"), void 0, !1)
        }
    }
    c.ID = "vs.actions.empty"
}, function(e, t, i) {
    "use strict";
    i.d(t, "f", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), i.d(t, "g", (function() {
        return o
    })), i.d(t, "h", (function() {
        return s
    })), i.d(t, "i", (function() {
        return a
    })), i.d(t, "e", (function() {
        return l
    })), i.d(t, "d", (function() {
        return d
    })), i.d(t, "c", (function() {
        return c
    })), i.d(t, "a", (function() {
        return h
    }));
    class n {
        constructor() {
            this.changeType = 1
        }
    }
    class r {
        constructor(e, t, i, n, r) {
            this.ownerId = e, this.lineNumber = t, this.column = i, this.options = n, this.order = r
        }
        static applyInjectedText(e, t) {
            if (!t || 0 === t.length) return e;
            let i = "",
                n = 0;
            for (const r of t) i += e.substring(n, r.column - 1), n = r.column - 1, i += r.options.content;
            return i += e.substring(n), i
        }
        static fromDecorations(e) {
            const t = [];
            for (const i of e) i.options.before && 0 < i.options.before.content.length && t.push(new r(i.ownerId, i.range.startLineNumber, i.range.startColumn, i.options.before, 0)), i.options.after && 0 < i.options.after.content.length && t.push(new r(i.ownerId, i.range.endLineNumber, i.range.endColumn, i.options.after, 1));
            return t.sort((e, t) => e.lineNumber === t.lineNumber ? e.column === t.column ? e.order - t.order : e.column - t.column : e.lineNumber - t.lineNumber), t
        }
    }
    class o {
        constructor(e, t, i) {
            this.changeType = 2, this.lineNumber = e, this.detail = t, this.injectedText = i
        }
    }
    class s {
        constructor(e, t) {
            this.changeType = 3, this.fromLineNumber = e, this.toLineNumber = t
        }
    }
    class a {
        constructor(e, t, i, n) {
            this.changeType = 4, this.injectedTexts = n, this.fromLineNumber = e, this.toLineNumber = t, this.detail = i
        }
    }
    class l {
        constructor() {
            this.changeType = 5
        }
    }
    class d {
        constructor(e, t, i, n) {
            this.changes = e, this.versionId = t, this.isUndoing = i, this.isRedoing = n, this.resultingSelection = null
        }
        containsEvent(e) {
            for (let t = 0, i = this.changes.length; t < i; t++)
                if (this.changes[t].changeType === e) return !0;
            return !1
        }
        static merge(e, t) {
            var i = [].concat(e.changes).concat(t.changes),
                n = t.versionId,
                r = e.isUndoing || t.isUndoing;
            t = e.isRedoing || t.isRedoing;
            return new d(i, n, r, t)
        }
    }
    class c {
        constructor(e) {
            this.changes = e
        }
    }
    class h {
        constructor(e, t) {
            this.rawContentChangedEvent = e, this.contentChangedEvent = t
        }
        merge(e) {
            var t = d.merge(this.rawContentChangedEvent, e.rawContentChangedEvent);
            e = h._mergeChangeEvents(this.contentChangedEvent, e.contentChangedEvent);
            return new h(t, e)
        }
        static _mergeChangeEvents(e, t) {
            return {
                changes: [].concat(e.changes).concat(t.changes),
                eol: t.eol,
                versionId: t.versionId,
                isUndoing: e.isUndoing || t.isUndoing,
                isRedoing: e.isRedoing || t.isRedoing,
                isFlush: e.isFlush || t.isFlush
            }
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "c", (function() {
        return h
    })), i.d(t, "b", (function() {
        return p
    })), i.d(t, "a", (function() {
        return f
    }));
    var n, r, o = i(6);
    class s {
        constructor() {
            this._value = "", this._pos = 0
        }
        reset(e) {
            return this._value = e, this._pos = 0, this
        }
        next() {
            return this._pos += 1, this
        }
        hasNext() {
            return this._pos < this._value.length - 1
        }
        cmp(e) {
            return e.charCodeAt(0) - this._value.charCodeAt(this._pos)
        }
        value() {
            return this._value[this._pos]
        }
    }
    class a {
        constructor(e = !0) {
            this._caseSensitive = e
        }
        reset(e) {
            return this._value = e, this._from = 0, this._to = 0, this.next()
        }
        hasNext() {
            return this._to < this._value.length
        }
        next() {
            this._from = this._to;
            let e = !0;
            for (; this._to < this._value.length; this._to++)
                if (46 === this._value.charCodeAt(this._to)) {
                    if (!e) break;
                    this._from++
                } else e = !1;
            return this
        }
        cmp(e) {
            return (this._caseSensitive ? Object(o.h) : Object(o.i))(e, this._value, 0, e.length, this._from, this._to)
        }
        value() {
            return this._value.substring(this._from, this._to)
        }
    }
    class l {
        constructor(e = !0, t = !0) {
            this._splitOnBackslash = e, this._caseSensitive = t
        }
        reset(e) {
            return this._value = e.replace(/\\$|\/$/, ""), this._from = 0, this._to = 0, this.next()
        }
        hasNext() {
            return this._to < this._value.length
        }
        next() {
            this._from = this._to;
            let e = !0;
            for (; this._to < this._value.length; this._to++) {
                var t = this._value.charCodeAt(this._to);
                if (47 === t || this._splitOnBackslash && 92 === t) {
                    if (!e) break;
                    this._from++
                } else e = !1
            }
            return this
        }
        cmp(e) {
            return (this._caseSensitive ? Object(o.h) : Object(o.i))(e, this._value, 0, e.length, this._from, this._to)
        }
        value() {
            return this._value.substring(this._from, this._to)
        }
    }
    class d {
        constructor(e) {
            this._ignorePathCasing = e, this._states = [], this._stateIdx = 0
        }
        reset(e) {
            return this._value = e, this._states = [], this._value.scheme && this._states.push(1), this._value.authority && this._states.push(2), this._value.path && (this._pathIterator = new l(!1, !this._ignorePathCasing(e)), this._pathIterator.reset(e.path), this._pathIterator.value() && this._states.push(3)), this._value.query && this._states.push(4), this._value.fragment && this._states.push(5), this._stateIdx = 0, this
        }
        next() {
            return 3 === this._states[this._stateIdx] && this._pathIterator.hasNext() ? this._pathIterator.next() : this._stateIdx += 1, this
        }
        hasNext() {
            return 3 === this._states[this._stateIdx] && this._pathIterator.hasNext() || this._stateIdx < this._states.length - 1
        }
        cmp(e) {
            if (1 === this._states[this._stateIdx]) return Object(o.g)(e, this._value.scheme);
            if (2 === this._states[this._stateIdx]) return Object(o.g)(e, this._value.authority);
            if (3 === this._states[this._stateIdx]) return this._pathIterator.cmp(e);
            if (4 === this._states[this._stateIdx]) return Object(o.f)(e, this._value.query);
            if (5 === this._states[this._stateIdx]) return Object(o.f)(e, this._value.fragment);
            throw new Error
        }
        value() {
            if (1 === this._states[this._stateIdx]) return this._value.scheme;
            if (2 === this._states[this._stateIdx]) return this._value.authority;
            if (3 === this._states[this._stateIdx]) return this._pathIterator.value();
            if (4 === this._states[this._stateIdx]) return this._value.query;
            if (5 === this._states[this._stateIdx]) return this._value.fragment;
            throw new Error
        }
    }
    class c {
        constructor() {
            this.height = 1
        }
        rotateLeft() {
            const e = this.right;
            return this.right = e.left, (e.left = this).updateHeight(), e.updateHeight(), e
        }
        rotateRight() {
            const e = this.left;
            return this.left = e.right, (e.right = this).updateHeight(), e.updateHeight(), e
        }
        updateHeight() {
            this.height = 1 + Math.max(this.heightLeft, this.heightRight)
        }
        balanceFactor() {
            return this.heightRight - this.heightLeft
        }
        get heightLeft() {
            var e;
            return null !== (e = null === (e = this.left) || void 0 === e ? void 0 : e.height) && void 0 !== e ? e : 0
        }
        get heightRight() {
            var e;
            return null !== (e = null === (e = this.right) || void 0 === e ? void 0 : e.height) && void 0 !== e ? e : 0
        }
    }
    class h {
        constructor(e) {
            this._iter = e
        }
        static forUris(e = (() => !1)) {
            return new h(new d(e))
        }
        static forStrings() {
            return new h(new s)
        }
        static forConfigKeys() {
            return new h(new a)
        }
        clear() {
            this._root = void 0
        }
        set(e, t) {
            const i = this._iter.reset(e);
            let n;
            this._root || (this._root = new c, this._root.segment = i.value());
            const r = [];
            for (n = this._root;;) {
                var o = i.cmp(n.segment);
                if (0 < o) n.left || (n.left = new c, n.left.segment = i.value()), r.push([-1, n]), n = n.left;
                else if (o < 0) n.right || (n.right = new c, n.right.segment = i.value()), r.push([1, n]), n = n.right;
                else {
                    if (!i.hasNext()) break;
                    i.next(), n.mid || (n.mid = new c, n.mid.segment = i.value()), r.push([0, n]), n = n.mid
                }
            }
            var s = n.value;
            n.value = t, n.key = e;
            for (let e = r.length - 1; 0 <= e; e--) {
                const t = r[e][1];
                if (t.updateHeight(), (l = t.balanceFactor()) < -1 || 1 < l) {
                    var a = r[e][0],
                        l = r[e + 1][0];
                    if (1 === a && 1 === l) r[e][1] = t.rotateLeft();
                    else if (-1 === a && -1 === l) r[e][1] = t.rotateRight();
                    else if (1 === a && -1 === l) t.right = r[e + 1][1] = r[e + 1][1].rotateRight(), r[e][1] = t.rotateLeft();
                    else {
                        if (-1 !== a || 1 !== l) throw new Error;
                        t.left = r[e + 1][1] = r[e + 1][1].rotateLeft(), r[e][1] = t.rotateRight()
                    }
                    if (0 < e) switch (r[e - 1][0]) {
                        case -1:
                            r[e - 1][1].left = r[e][1];
                            break;
                        case 1:
                            r[e - 1][1].right = r[e][1];
                            break;
                        case 0:
                            r[e - 1][1].mid = r[e][1]
                    } else this._root = r[0][1]
                }
            }
            return s
        }
        get(e) {
            return null === (e = this._getNode(e)) || void 0 === e ? void 0 : e.value
        }
        _getNode(e) {
            const t = this._iter.reset(e);
            let i = this._root;
            for (; i;) {
                var n = t.cmp(i.segment);
                if (0 < n) i = i.left;
                else if (n < 0) i = i.right;
                else {
                    if (!t.hasNext()) break;
                    t.next(), i = i.mid
                }
            }
            return i
        }
        has(e) {
            return !(void 0 === (null == (e = this._getNode(e)) ? void 0 : e.value) && void 0 === (null == e ? void 0 : e.mid))
        }
        delete(e) {
            return this._delete(e, !1)
        }
        deleteSuperstr(e) {
            return this._delete(e, !0)
        }
        _delete(e, t) {
            const i = this._iter.reset(e),
                n = [];
            let r = this._root;
            for (; r;) {
                var o = i.cmp(r.segment);
                if (0 < o) n.push([-1, r]), r = r.left;
                else if (o < 0) n.push([1, r]), r = r.right;
                else {
                    if (!i.hasNext()) break;
                    i.next(), n.push([0, r]), r = r.mid
                }
            }
            if (r) {
                if (t ? (r.left = void 0, r.mid = void 0, r.right = void 0, r.height = 1) : (r.key = void 0, r.value = void 0), !r.mid && !r.value)
                    if (r.left && r.right) {
                        var s = this._min(r.right);
                        const {
                            key: e,
                            value: t,
                            segment: i
                        } = s;
                        this._delete(s.key, !1), r.key = e, r.value = t, r.segment = i
                    } else {
                        var a = null !== (s = r.left) && void 0 !== s ? s : r.right;
                        if (0 < n.length) {
                            const [e, t] = n[n.length - 1];
                            switch (e) {
                                case -1:
                                    t.left = a;
                                    break;
                                case 0:
                                    t.mid = a;
                                    break;
                                case 1:
                                    t.right = a
                            }
                        } else this._root = a
                    } for (let e = n.length - 1; 0 <= e; e--) {
                    const t = n[e][1];
                    t.updateHeight();
                    var l = t.balanceFactor();
                    if (1 < l ? (0 <= t.right.balanceFactor() || (t.right = n[e + 1][1] = n[e + 1][1].rotateRight()), n[e][1] = t.rotateLeft()) : l < -1 && (t.left.balanceFactor() <= 0 || (t.left = n[e + 1][1] = n[e + 1][1].rotateLeft()), n[e][1] = t.rotateRight()), 0 < e) switch (n[e - 1][0]) {
                        case -1:
                            n[e - 1][1].left = n[e][1];
                            break;
                        case 1:
                            n[e - 1][1].right = n[e][1];
                            break;
                        case 0:
                            n[e - 1][1].mid = n[e][1]
                    } else this._root = n[0][1]
                }
            }
        }
        _min(e) {
            for (; e.left;) e = e.left;
            return e
        }
        findSubstr(e) {
            const t = this._iter.reset(e);
            let i = this._root,
                n = void 0;
            for (; i;) {
                var r = t.cmp(i.segment);
                if (0 < r) i = i.left;
                else if (r < 0) i = i.right;
                else {
                    if (!t.hasNext()) break;
                    t.next(), n = i.value || n, i = i.mid
                }
            }
            return i && i.value || n
        }
        findSuperstr(e) {
            const t = this._iter.reset(e);
            let i = this._root;
            for (; i;) {
                var n = t.cmp(i.segment);
                if (0 < n) i = i.left;
                else if (n < 0) i = i.right;
                else {
                    if (!t.hasNext()) return i.mid ? this._entries(i.mid) : void 0;
                    t.next(), i = i.mid
                }
            }
        }
        forEach(e) {
            for (var [t, i] of this) e(i, t)
        }*[Symbol.iterator]() {
            yield* this._entries(this._root)
        }* _entries(e) {
            e && (e.left && (yield* this._entries(e.left)), e.value && (yield [e.key, e.value]), e.mid && (yield* this._entries(e.mid)), e.right && (yield* this._entries(e.right)))
        }
    }
    class u {
        constructor(e, t) {
            this.uri = e, this.value = t
        }
    }
    class p {
        constructor(e, t) {
            this[n] = "ResourceMap", e instanceof p ? (this.map = new Map(e.map), this.toKey = null != t ? t : p.defaultToKey) : (this.map = new Map, this.toKey = null != e ? e : p.defaultToKey)
        }
        set(e, t) {
            return this.map.set(this.toKey(e), new u(e, t)), this
        }
        get(e) {
            return null === (e = this.map.get(this.toKey(e))) || void 0 === e ? void 0 : e.value
        }
        has(e) {
            return this.map.has(this.toKey(e))
        }
        get size() {
            return this.map.size
        }
        clear() {
            this.map.clear()
        }
        delete(e) {
            return this.map.delete(this.toKey(e))
        }
        forEach(e, t) {
            for (var [i, n] of (void 0 !== t && (e = e.bind(t)), this.map)) e(n.value, n.uri, this)
        }* values() {
            for (var e of this.map.values()) yield e.value
        }* keys() {
            for (var e of this.map.values()) yield e.uri
        }* entries() {
            for (var e of this.map.values()) yield [e.uri, e.value]
        }*[(n = Symbol.toStringTag, Symbol.iterator)]() {
            for (var [, e] of this.map) yield [e.uri, e.value]
        }
    }
    p.defaultToKey = e => e.toString();
    class g {
        constructor() {
            this[r] = "LinkedMap", this._map = new Map, this._head = void 0, this._tail = void 0, this._size = 0, this._state = 0
        }
        clear() {
            this._map.clear(), this._head = void 0, this._tail = void 0, this._size = 0, this._state++
        }
        isEmpty() {
            return !this._head && !this._tail
        }
        get size() {
            return this._size
        }
        get first() {
            var e;
            return null === (e = this._head) || void 0 === e ? void 0 : e.value
        }
        get last() {
            var e;
            return null === (e = this._tail) || void 0 === e ? void 0 : e.value
        }
        has(e) {
            return this._map.has(e)
        }
        get(e, t = 0) {
            if (e = this._map.get(e)) return 0 !== t && this.touch(e, t), e.value
        }
        set(e, t, i = 0) {
            let n = this._map.get(e);
            if (n) n.value = t, 0 !== i && this.touch(n, i);
            else {
                switch (n = {
                    key: e,
                    value: t,
                    next: void 0,
                    previous: void 0
                }, i) {
                    case 0:
                        this.addItemLast(n);
                        break;
                    case 1:
                        this.addItemFirst(n);
                        break;
                    default:
                        this.addItemLast(n)
                }
                this._map.set(e, n), this._size++
            }
            return this
        }
        delete(e) {
            return !!this.remove(e)
        }
        remove(e) {
            var t = this._map.get(e);
            if (t) return this._map.delete(e), this.removeItem(t), this._size--, t.value
        }
        shift() {
            if (this._head || this._tail) {
                if (!this._head || !this._tail) throw new Error("Invalid list");
                var e = this._head;
                return this._map.delete(e.key), this.removeItem(e), this._size--, e.value
            }
        }
        forEach(e, t) {
            var i = this._state;
            let n = this._head;
            for (; n;) {
                if ((t ? e.bind(t) : e)(n.value, n.key, this), this._state !== i) throw new Error("LinkedMap got modified during iteration.");
                n = n.next
            }
        }
        keys() {
            const e = this,
                t = this._state;
            let i = this._head;
            const n = {
                [Symbol.iterator]: () => n,
                next() {
                    if (e._state !== t) throw new Error("LinkedMap got modified during iteration.");
                    if (i) {
                        var n = {
                            value: i.key,
                            done: !1
                        };
                        return i = i.next, n
                    }
                    return {
                        value: void 0,
                        done: !0
                    }
                }
            };
            return n
        }
        values() {
            const e = this,
                t = this._state;
            let i = this._head;
            const n = {
                [Symbol.iterator]: () => n,
                next() {
                    if (e._state !== t) throw new Error("LinkedMap got modified during iteration.");
                    if (i) {
                        var n = {
                            value: i.value,
                            done: !1
                        };
                        return i = i.next, n
                    }
                    return {
                        value: void 0,
                        done: !0
                    }
                }
            };
            return n
        }
        entries() {
            const e = this,
                t = this._state;
            let i = this._head;
            const n = {
                [Symbol.iterator]: () => n,
                next() {
                    if (e._state !== t) throw new Error("LinkedMap got modified during iteration.");
                    if (i) {
                        var n = {
                            value: [i.key, i.value],
                            done: !1
                        };
                        return i = i.next, n
                    }
                    return {
                        value: void 0,
                        done: !0
                    }
                }
            };
            return n
        } [(r = Symbol.toStringTag, Symbol.iterator)]() {
            return this.entries()
        }
        trimOld(e) {
            if (!(e >= this.size))
                if (0 !== e) {
                    let t = this._head,
                        i = this.size;
                    for (; t && i > e;) this._map.delete(t.key), t = t.next, i--;
                    this._head = t, this._size = i, t && (t.previous = void 0), this._state++
                } else this.clear()
        }
        addItemFirst(e) {
            if (this._head || this._tail) {
                if (!this._head) throw new Error("Invalid list");
                e.next = this._head, this._head.previous = e
            } else this._tail = e;
            this._head = e, this._state++
        }
        addItemLast(e) {
            if (this._head || this._tail) {
                if (!this._tail) throw new Error("Invalid list");
                e.previous = this._tail, this._tail.next = e
            } else this._head = e;
            this._tail = e, this._state++
        }
        removeItem(e) {
            if (e === this._head && e === this._tail) this._head = void 0, this._tail = void 0;
            else if (e === this._head) {
                if (!e.next) throw new Error("Invalid list");
                e.next.previous = void 0, this._head = e.next
            } else if (e === this._tail) {
                if (!e.previous) throw new Error("Invalid list");
                e.previous.next = void 0, this._tail = e.previous
            } else {
                const t = e.next,
                    i = e.previous;
                if (!t || !i) throw new Error("Invalid list");
                t.previous = i, i.next = t
            }
            e.next = void 0, e.previous = void 0, this._state++
        }
        touch(e, t) {
            if (!this._head || !this._tail) throw new Error("Invalid list");
            if (1 === t || 2 === t)
                if (1 === t) {
                    if (e !== this._head) {
                        const t = e.next,
                            i = e.previous;
                        e === this._tail ? (i.next = void 0, this._tail = i) : (t.previous = i, i.next = t), e.previous = void 0, e.next = this._head, this._head.previous = e, this._head = e, this._state++
                    }
                } else if (2 === t && e !== this._tail) {
                const t = e.next,
                    i = e.previous;
                e === this._head ? (t.previous = void 0, this._head = t) : (t.previous = i, i.next = t), e.next = void 0, e.previous = this._tail, this._tail.next = e, this._tail = e, this._state++
            }
        }
        toJSON() {
            const e = [];
            return this.forEach((t, i) => {
                e.push([i, t])
            }), e
        }
        fromJSON(e) {
            for (var [t, i] of (this.clear(), e)) this.set(t, i)
        }
    }
    class f extends g {
        constructor(e, t = 1) {
            super(), this._limit = e, this._ratio = Math.min(Math.max(0, t), 1)
        }
        get limit() {
            return this._limit
        }
        set limit(e) {
            this._limit = e, this.checkTrim()
        }
        get(e, t = 2) {
            return super.get(e, t)
        }
        peek(e) {
            return super.get(e, 0)
        }
        set(e, t) {
            return super.set(e, t, 2), this.checkTrim(), this
        }
        checkTrim() {
            this.size > this._limit && this.trimOld(Math.round(this._limit * this._ratio))
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return d
    }));
    var n = i(14),
        r = i(8),
        o = i(5),
        s = i(6),
        a = i(160);
    class l {
        constructor(e, t, i) {
            this._cursorPositionBrand = void 0, this.lineNumber = e, this.column = t, this.leftoverVisibleColumns = i
        }
    }
    class d {
        static leftPosition(e, t) {
            if (t.column > e.getLineMinColumn(t.lineNumber)) return t.delta(void 0, -s.L(e.getLineContent(t.lineNumber), t.column - 1));
            if (1 < t.lineNumber) {
                var i = t.lineNumber - 1;
                return new r.a(i, e.getLineMaxColumn(i))
            }
            return t
        }
        static leftPositionAtomicSoftTabs(e, t, i) {
            if (t.column <= e.getLineIndentColumn(t.lineNumber)) {
                var n = e.getLineMinColumn(t.lineNumber),
                    o = e.getLineContent(t.lineNumber);
                if (-1 !== (i = a.a.atomicPosition(o, t.column - 1, i, 0)) && n <= i + 1) return new r.a(t.lineNumber, i + 1)
            }
            return this.leftPosition(e, t)
        }
        static left(e, t, i) {
            return i = e.stickyTabStops ? d.leftPositionAtomicSoftTabs(t, i, e.tabSize) : d.leftPosition(t, i), new l(i.lineNumber, i.column, 0)
        }
        static moveLeft(e, t, i, n, r) {
            let o, s;
            return s = i.hasSelection() && !n ? (o = i.selection.startLineNumber, i.selection.startColumn) : (r = i.position.delta(void 0, -(r - 1)), r = t.normalizePosition(d.clipPositionColumn(r, t), 0), o = (r = d.left(e, t, r)).lineNumber, r.column), i.move(n, o, s, 0)
        }
        static clipPositionColumn(e, t) {
            return new r.a(e.lineNumber, d.clipRange(e.column, t.getLineMinColumn(e.lineNumber), t.getLineMaxColumn(e.lineNumber)))
        }
        static clipRange(e, t, i) {
            return e < t ? t : i < e ? i : e
        }
        static rightPosition(e, t, i) {
            return i < e.getLineMaxColumn(t) ? i += s.K(e.getLineContent(t), i - 1) : t < e.getLineCount() && (i = e.getLineMinColumn(t += 1)), new r.a(t, i)
        }
        static rightPositionAtomicSoftTabs(e, t, i, n, o) {
            if (i < e.getLineIndentColumn(t)) {
                var s = e.getLineContent(t);
                if (-1 !== (n = a.a.atomicPosition(s, i - 1, n, 1))) return new r.a(t, n + 1)
            }
            return this.rightPosition(e, t, i)
        }
        static right(e, t, i) {
            return i = e.stickyTabStops ? d.rightPositionAtomicSoftTabs(t, i.lineNumber, i.column, e.tabSize, e.indentSize) : d.rightPosition(t, i.lineNumber, i.column), new l(i.lineNumber, i.column, 0)
        }
        static moveRight(e, t, i, n, r) {
            let o, s;
            return s = i.hasSelection() && !n ? (o = i.selection.endLineNumber, i.selection.endColumn) : (r = i.position.delta(void 0, r - 1), r = t.normalizePosition(d.clipPositionColumn(r, t), 1), o = (r = d.right(e, t, r)).lineNumber, r.column), i.move(n, o, s, 0)
        }
        static vertical(e, t, i, r, o, s, a) {
            var d = n.a.visibleColumnFromColumn(t.getLineContent(i), r, e.tabSize) + o,
                c = t.getLineCount(),
                h = 1 === i && 1 === r,
                u = i === c && r === t.getLineMaxColumn(i);
            u = s < i ? h : u;
            return r = (i = s) < 1 ? (i = 1, a ? t.getLineMinColumn(i) : Math.min(t.getLineMaxColumn(i), r)) : c < i ? (i = c, a ? t.getLineMaxColumn(i) : Math.min(t.getLineMaxColumn(i), r)) : n.a.columnFromVisibleColumn2(e, t, i, d), o = u ? 0 : d - n.a.visibleColumnFromColumn(t.getLineContent(i), r, e.tabSize), new l(i, r, o)
        }
        static down(e, t, i, n, r, o, s) {
            return this.vertical(e, t, i, n, r, i + o, s)
        }
        static moveDown(e, t, i, n, r) {
            let o, s;
            return s = i.hasSelection() && !n ? (o = i.selection.endLineNumber, i.selection.endColumn) : (o = i.position.lineNumber, i.position.column), r = d.down(e, t, o, s, i.leftoverVisibleColumns, r, !0), i.move(n, r.lineNumber, r.column, r.leftoverVisibleColumns)
        }
        static translateDown(e, t, i) {
            var s = i.selection,
                a = d.down(e, t, s.selectionStartLineNumber, s.selectionStartColumn, i.selectionStartLeftoverVisibleColumns, 1, !1);
            i = d.down(e, t, s.positionLineNumber, s.positionColumn, i.leftoverVisibleColumns, 1, !1);
            return new n.f(new o.a(a.lineNumber, a.column, a.lineNumber, a.column), a.leftoverVisibleColumns, new r.a(i.lineNumber, i.column), i.leftoverVisibleColumns)
        }
        static up(e, t, i, n, r, o, s) {
            return this.vertical(e, t, i, n, r, i - o, s)
        }
        static moveUp(e, t, i, n, r) {
            let o, s;
            return s = i.hasSelection() && !n ? (o = i.selection.startLineNumber, i.selection.startColumn) : (o = i.position.lineNumber, i.position.column), r = d.up(e, t, o, s, i.leftoverVisibleColumns, r, !0), i.move(n, r.lineNumber, r.column, r.leftoverVisibleColumns)
        }
        static translateUp(e, t, i) {
            var s = i.selection,
                a = d.up(e, t, s.selectionStartLineNumber, s.selectionStartColumn, i.selectionStartLeftoverVisibleColumns, 1, !1);
            i = d.up(e, t, s.positionLineNumber, s.positionColumn, i.leftoverVisibleColumns, 1, !1);
            return new n.f(new o.a(a.lineNumber, a.column, a.lineNumber, a.column), a.leftoverVisibleColumns, new r.a(i.lineNumber, i.column), i.leftoverVisibleColumns)
        }
        static _isBlankLine(e, t) {
            return 0 === e.getLineFirstNonWhitespaceColumn(t)
        }
        static moveToPrevBlankLine(e, t, i, n) {
            let r = i.position.lineNumber;
            for (; 1 < r && this._isBlankLine(t, r);) r--;
            for (; 1 < r && !this._isBlankLine(t, r);) r--;
            return i.move(n, r, t.getLineMinColumn(r), 0)
        }
        static moveToNextBlankLine(e, t, i, n) {
            var r = t.getLineCount();
            let o = i.position.lineNumber;
            for (; o < r && this._isBlankLine(t, o);) o++;
            for (; o < r && !this._isBlankLine(t, o);) o++;
            return i.move(n, o, t.getLineMinColumn(o), 0)
        }
        static moveToBeginningOfLine(e, t, i, n) {
            var r = i.position.lineNumber,
                o = t.getLineMinColumn(r),
                s = t.getLineFirstNonWhitespaceColumn(r) || o;
            let a;
            return a = (t = i.position.column) === s ? o : s, i.move(n, r, a, 0)
        }
        static moveToEndOfLine(e, t, i, n, r) {
            var o = i.position.lineNumber;
            t = t.getLineMaxColumn(o);
            return i.move(n, o, t, r ? 1073741824 - t : 0)
        }
        static moveToBeginningOfBuffer(e, t, i, n) {
            return i.move(n, 1, 1, 0)
        }
        static moveToEndOfBuffer(e, t, i, n) {
            var r = t.getLineCount();
            t = t.getLineMaxColumn(r);
            return i.move(n, r, t, 0)
        }
    }
}, function(e, t, i) {
    "use strict";

    function n(e) {
        return e < 0 ? 0 : 255 < e ? 255 : 0 | e
    }

    function r(e) {
        return e < 0 ? 0 : 4294967295 < e ? 4294967295 : 0 | e
    }
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "a", (function() {
        return r
    }))
}, function(e, t, i) {
    "use strict";
    i.d(t, "c", (function() {
        return Et
    })), i.d(t, "a", (function() {
        return Nt
    })), i.d(t, "b", (function() {
        return jt
    }));
    var n = i(31),
        r = i(2),
        o = i(4),
        s = i(6),
        a = i(39),
        l = i(29),
        d = i(8),
        c = i(5),
        h = i(36),
        u = i(44),
        p = i(130);
    class g {
        constructor() {
            this.spacesDiff = 0, this.looksLikeAlignment = !1
        }
    }

    function f(e, t, i) {
        var n = Math.min(e.getLineCount(), 1e4);
        let r = 0,
            o = 0,
            s = "",
            a = 0,
            l = [0, 0, 0, 0, 0, 0, 0, 0, 0];
        var d = new g;
        for (let p = 1; p <= n; p++) {
            var c = e.getLineLength(p);
            let n = e.getLineContent(p);
            var h = c <= 65536;
            let g = !1,
                f = 0,
                m = 0,
                v = 0;
            for (let t = 0, i = c; t < i; t++) {
                var u = h ? n.charCodeAt(t) : e.getLineCharCode(p, t);
                if (9 === u) v++;
                else {
                    if (32 !== u) {
                        g = !0, f = t;
                        break
                    }
                    m++
                }
            }
            g && (0 < v ? r++ : 1 < m && o++, function(e, t, i, n, r) {
                let o;
                for (r.spacesDiff = 0, r.looksLikeAlignment = !1, o = 0; o < t && o < n && e.charCodeAt(o) === i.charCodeAt(o); o++);
                let s = 0,
                    a = 0;
                for (let i = o; i < t; i++) 32 === e.charCodeAt(i) ? s++ : a++;
                let l = 0,
                    d = 0;
                for (let e = o; e < n; e++) 32 === i.charCodeAt(e) ? l++ : d++;
                var c, h;
                0 < s && 0 < a || 0 < l && 0 < d || (c = Math.abs(a - d), h = Math.abs(s - l), 0 !== c ? h % c == 0 && (r.spacesDiff = h / c) : 0 < (r.spacesDiff = h) && 0 <= l - 1 && l - 1 < e.length && l < i.length && 32 !== i.charCodeAt(l) && 32 === e.charCodeAt(l - 1) && 44 === e.charCodeAt(e.length - 1) && (r.looksLikeAlignment = !0))
            }(s, a, n, f, d), (!d.looksLikeAlignment || i && t === d.spacesDiff) && ((c = d.spacesDiff) <= 8 && l[c]++, s = n, a = f))
        }
        let p = i;
        r !== o && (p = r < o);
        let f = t;
        if (p) {
            let e = p ? 0 : .1 * n;
            [2, 4, 6, 8, 3, 5, 7].forEach(t => {
                var i = l[t];
                i > e && (e = i, f = t)
            }), 4 === f && 0 < l[4] && 0 < l[2] && l[2] >= l[4] / 2 && (f = 2)
        }
        return {
            insertSpaces: p,
            tabSize: f
        }
    }

    function m(e) {
        return (1 & e.metadata) >>> 0
    }

    function v(e, t) {
        e.metadata = 254 & e.metadata | t << 0
    }

    function b(e) {
        return (2 & e.metadata) >>> 1 == 1
    }

    function _(e, t) {
        e.metadata = 253 & e.metadata | (t ? 1 : 0) << 1
    }

    function w(e) {
        return (4 & e.metadata) >>> 2 == 1
    }

    function y(e, t) {
        e.metadata = 251 & e.metadata | (t ? 1 : 0) << 2
    }

    function C(e, t) {
        e.metadata = 231 & e.metadata | t << 3
    }

    function x(e, t) {
        e.metadata = 223 & e.metadata | (t ? 1 : 0) << 5
    }
    class S {
        constructor(e, t, i) {
            this.metadata = 0, v(((this.parent = this).left = this).right = this, 1), this.start = t, this.end = i, this.delta = 0, this.maxEnd = i, this.id = e, this.ownerId = 0, this.options = null, y(this, !1), C(this, 1), x(this, !1), this.cachedVersionId = 0, this.cachedAbsoluteStart = t, this.cachedAbsoluteEnd = i, this.range = null, _(this, !1)
        }
        reset(e, t, i, n) {
            this.start = t, this.end = i, this.maxEnd = i, this.cachedVersionId = e, this.cachedAbsoluteStart = t, this.cachedAbsoluteEnd = i, this.range = n
        }
        setOptions(e) {
            this.options = e, y(this, "squiggly-error" === (e = this.options.className) || "squiggly-warning" === e || "squiggly-info" === e), C(this, this.options.stickiness), x(this, this.options.collapseOnReplaceEdit)
        }
        setCachedOffsets(e, t, i) {
            this.cachedVersionId !== i && (this.range = null), this.cachedVersionId = i, this.cachedAbsoluteStart = e, this.cachedAbsoluteEnd = t
        }
        detach() {
            this.parent = null, this.left = null, this.right = null
        }
    }
    const k = new S(null, 0, 0);
    k.parent = k, k.left = k, k.right = k, v(k, 0);
    class L {
        constructor() {
            this.root = k, this.requestNormalizeDelta = !1
        }
        intervalSearch(e, t, i, n, r) {
            return this.root === k ? [] : function(e, t, i, n, r, o) {
                let s = e.root,
                    a = 0,
                    l = 0,
                    d = 0,
                    c = [],
                    h = 0;
                for (; s !== k;)
                    if (b(s)) _(s.left, !1), _(s.right, !1), s === s.parent.right && (a -= s.parent.delta), s = s.parent;
                    else {
                        if (!b(s.left)) {
                            if (a + s.maxEnd < t) {
                                _(s, !0);
                                continue
                            }
                            if (s.left !== k) {
                                s = s.left;
                                continue
                            }
                        }
                        if (l = a + s.start, i < l) _(s, !0);
                        else {
                            if (d = a + s.end, t <= d) {
                                s.setCachedOffsets(l, d, o);
                                let e = !0;
                                n && s.ownerId && s.ownerId !== n && (e = !1), r && w(s) && (e = !1), e && (c[h++] = s)
                            }
                            _(s, !0), s.right === k || b(s.right) || (a += s.delta, s = s.right)
                        }
                    } return _(e.root, !1), c
            }(this, e, t, i, n, r)
        }
        search(e, t, i) {
            return this.root === k ? [] : function(e, t, i, n) {
                let r = e.root,
                    o = 0,
                    s = 0,
                    a = 0,
                    l = [],
                    d = 0;
                for (; r !== k;)
                    if (b(r)) _(r.left, !1), _(r.right, !1), r === r.parent.right && (o -= r.parent.delta), r = r.parent;
                    else if (r.left === k || b(r.left)) {
                    s = o + r.start, a = o + r.end, r.setCachedOffsets(s, a, n);
                    let e = !0;
                    t && r.ownerId && r.ownerId !== t && (e = !1), i && w(r) && (e = !1), e && (l[d++] = r), _(r, !0), r.right === k || b(r.right) || (o += r.delta, r = r.right)
                } else r = r.left;
                return _(e.root, !1), l
            }(this, e, t, i)
        }
        collectNodesFromOwner(e) {
            return function(e, t) {
                let i = e.root,
                    n = [],
                    r = 0;
                for (; i !== k;) b(i) ? (_(i.left, !1), _(i.right, !1), i = i.parent) : i.left === k || b(i.left) ? (i.ownerId === t && (n[r++] = i), _(i, !0), i.right === k || b(i.right) || (i = i.right)) : i = i.left;
                return _(e.root, !1), n
            }(this, e)
        }
        collectNodesPostOrder() {
            return function(e) {
                let t = e.root,
                    i = [],
                    n = 0;
                for (; t !== k;) b(t) ? (_(t.left, !1), _(t.right, !1), t = t.parent) : t.left === k || b(t.left) ? t.right === k || b(t.right) ? (i[n++] = t, _(t, !0)) : t = t.right : t = t.left;
                return _(e.root, !1), i
            }(this)
        }
        insert(e) {
            E(this, e), this._normalizeDeltaIfNecessary()
        }
        delete(e) {
            N(this, e), this._normalizeDeltaIfNecessary()
        }
        resolveNode(e, t) {
            const i = e;
            let n = 0;
            for (; e !== this.root;) e === e.parent.right && (n += e.parent.delta), e = e.parent;
            var r = i.start + n,
                o = i.end + n;
            i.setCachedOffsets(r, o, t)
        }
        acceptReplace(e, t, i, n) {
            var r = function(e, t, i) {
                let n = e.root,
                    r = 0,
                    o = 0,
                    s = 0,
                    a = [],
                    l = 0;
                for (; n !== k;)
                    if (b(n)) _(n.left, !1), _(n.right, !1), n === n.parent.right && (r -= n.parent.delta), n = n.parent;
                    else {
                        if (!b(n.left)) {
                            if (r + n.maxEnd < t) {
                                _(n, !0);
                                continue
                            }
                            if (n.left !== k) {
                                n = n.left;
                                continue
                            }
                        }
                        o = r + n.start, i < o ? _(n, !0) : (s = r + n.end, t <= s && (n.setCachedOffsets(o, s, 0), a[l++] = n), _(n, !0), n.right === k || b(n.right) || (r += n.delta, n = n.right))
                    } return _(e.root, !1), a
            }(this, e, e + t);
            for (let e = 0, t = r.length; e < t; e++) N(this, r[e]);
            this._normalizeDeltaIfNecessary(),
                function(e, t, i, n) {
                    let r = e.root,
                        o = 0,
                        s = 0;
                    for (var a = n - (i - t); r !== k;)
                        if (b(r)) _(r.left, !1), _(r.right, !1), r === r.parent.right && (o -= r.parent.delta), P(r), r = r.parent;
                        else {
                            if (!b(r.left)) {
                                if (o + r.maxEnd < t) {
                                    _(r, !0);
                                    continue
                                }
                                if (r.left !== k) {
                                    r = r.left;
                                    continue
                                }
                            }
                            s = o + r.start, i < s ? (r.start += a, r.end += a, r.delta += a, (r.delta < -1073741824 || 1073741824 < r.delta) && (e.requestNormalizeDelta = !0), _(r, !0)) : (_(r, !0), r.right === k || b(r.right) || (o += r.delta, r = r.right))
                        } _(e.root, !1)
                }(this, e, e + t, i), this._normalizeDeltaIfNecessary();
            for (let o = 0, s = r.length; o < s; o++) {
                const s = r[o];
                s.start = s.cachedAbsoluteStart, s.end = s.cachedAbsoluteEnd,
                    function(e, t, i, n, r) {
                        var o = (24 & e.metadata) >>> 3,
                            s = 0 == o || 2 == o,
                            a = 1 == o || 2 == o,
                            l = i - t,
                            d = n,
                            c = Math.min(l, d),
                            h = e.start;
                        let u = !1;
                        o = e.end;
                        let p = !1;
                        t <= h && o <= i && (32 & e.metadata) >>> 5 == 1 && (e.start = t, u = !0, e.end = t, p = !0), n = r ? 1 : 0 < l ? 2 : 0, !u && O(h, s, t, n) && (u = !0), !p && O(o, a, t, n) && (p = !0), 0 < c && !r && (n = d < l ? 2 : 0, !u && O(h, s, t + c, n) && (u = !0), !p && O(o, a, t + c, n) && (p = !0)), r = r ? 1 : 0, !u && O(h, s, i, r) && (e.start = t + d, u = !0), !p && O(o, a, i, r) && (e.end = t + d, p = !0), l = d - l, u || (e.start = Math.max(0, h + l)), p || (e.end = Math.max(0, o + l)), e.start > e.end && (e.end = e.start)
                    }(s, e, e + t, i, n), s.maxEnd = s.end, E(this, s)
            }
            this._normalizeDeltaIfNecessary()
        }
        _normalizeDeltaIfNecessary() {
            this.requestNormalizeDelta && (this.requestNormalizeDelta = !1, function(e) {
                let t = e.root,
                    i = 0;
                for (; t !== k;) t = t.left === k || b(t.left) ? t.right === k || b(t.right) ? (t.start = i + t.start, t.end = i + t.end, t.delta = 0, P(t), _(t, !0), _(t.left, !1), _(t.right, !1), t === t.parent.right && (i -= t.parent.delta), t.parent) : (i += t.delta, t.right) : t.left;
                _(e.root, !1)
            }(this))
        }
    }

    function O(e, t, i, n) {
        return e < i || !(i < e) && 1 !== n && (2 === n || t)
    }

    function E(e, t) {
        if (e.root === k) return t.parent = k, t.left = k, t.right = k, v(t, 0), e.root = t, e.root;
        ! function(e, t) {
            let i = 0,
                n = e.root;
            for (var r = t.start, o = t.end;;)
                if (function(e, t, i, n) {
                        return e !== i ? e - i : t - n
                    }(r, o, n.start + i, n.end + i) < 0) {
                    if (n.left === k) {
                        t.start -= i, t.end -= i, t.maxEnd -= i, n.left = t;
                        break
                    }
                    n = n.left
                } else {
                    if (n.right === k) {
                        t.start -= i + n.delta, t.end -= i + n.delta, t.maxEnd -= i + n.delta, n.right = t;
                        break
                    }
                    i += n.delta, n = n.right
                } t.parent = n, t.left = k, t.right = k, v(t, 1)
        }(e, t), A(t.parent);
        let i = t;
        for (; i !== e.root && 1 === m(i.parent);) {
            var n;
            i.parent === i.parent.parent.left ? 1 === m(n = i.parent.parent.right) ? (v(i.parent, 0), v(n, 0), v(i.parent.parent, 1), i = i.parent.parent) : (i === i.parent.right && (i = i.parent, I(e, i)), v(i.parent, 0), v(i.parent.parent, 1), T(e, i.parent.parent)) : 1 === m(n = i.parent.parent.left) ? (v(i.parent, 0), v(n, 0), v(i.parent.parent, 1), i = i.parent.parent) : (i === i.parent.left && (i = i.parent, T(e, i)), v(i.parent, 0), v(i.parent.parent, 1), I(e, i.parent.parent))
        }
        return v(e.root, 0), t
    }

    function N(e, t) {
        let i, n;
        if (t.left === k ? (i = t.right, n = t, i.delta += t.delta, (i.delta < -1073741824 || 1073741824 < i.delta) && (e.requestNormalizeDelta = !0), i.start += t.delta, i.end += t.delta) : t.right === k ? (i = t.left, n = t) : (n = function(e) {
                for (; e.left !== k;) e = e.left;
                return e
            }(t.right), i = n.right, i.start += n.delta, i.end += n.delta, i.delta += n.delta, (i.delta < -1073741824 || 1073741824 < i.delta) && (e.requestNormalizeDelta = !0), n.start += t.delta, n.end += t.delta, n.delta = t.delta, (n.delta < -1073741824 || 1073741824 < n.delta) && (e.requestNormalizeDelta = !0)), n === e.root) return e.root = i, v(i, 0), t.detach(), D(), P(i), void(e.root.parent = k);
        var r = 1 === m(n);
        if (n === n.parent.left ? n.parent.left = i : n.parent.right = i, n === t ? i.parent = n.parent : (n.parent === t ? i.parent = n : i.parent = n.parent, n.left = t.left, n.right = t.right, n.parent = t.parent, v(n, m(t)), t === e.root ? e.root = n : t === t.parent.left ? t.parent.left = n : t.parent.right = n, n.left !== k && (n.left.parent = n), n.right !== k && (n.right.parent = n)), t.detach(), r) return A(i.parent), n !== t && (A(n), A(n.parent)), void D();
        let o;
        for (A(i), A(i.parent), n !== t && (A(n), A(n.parent)); i !== e.root && 0 === m(i);) i = i === i.parent.left ? (o = i.parent.right, 1 === m(o) && (v(o, 0), v(i.parent, 1), I(e, i.parent), o = i.parent.right), 0 === m(o.left) && 0 === m(o.right) ? (v(o, 1), i.parent) : (0 === m(o.right) && (v(o.left, 0), v(o, 1), T(e, o), o = i.parent.right), v(o, m(i.parent)), v(i.parent, 0), v(o.right, 0), I(e, i.parent), e.root)) : (o = i.parent.left, 1 === m(o) && (v(o, 0), v(i.parent, 1), T(e, i.parent), o = i.parent.left), 0 === m(o.left) && 0 === m(o.right) ? (v(o, 1), i.parent) : (0 === m(o.left) && (v(o.right, 0), v(o, 1), I(e, o), o = i.parent.left), v(o, m(i.parent)), v(i.parent, 0), v(o.left, 0), T(e, i.parent), e.root));
        v(i, 0), D()
    }

    function D() {
        k.parent = k, k.delta = 0, k.start = 0, k.end = 0
    }

    function I(e, t) {
        const i = t.right;
        i.delta += t.delta, (i.delta < -1073741824 || 1073741824 < i.delta) && (e.requestNormalizeDelta = !0), i.start += t.delta, i.end += t.delta, t.right = i.left, i.left !== k && (i.left.parent = t), i.parent = t.parent, t.parent === k ? e.root = i : t === t.parent.left ? t.parent.left = i : t.parent.right = i, (i.left = t).parent = i, P(t), P(i)
    }

    function T(e, t) {
        const i = t.left;
        t.delta -= i.delta, (t.delta < -1073741824 || 1073741824 < t.delta) && (e.requestNormalizeDelta = !0), t.start -= i.delta, t.end -= i.delta, t.left = i.right, i.right !== k && (i.right.parent = t), i.parent = t.parent, t.parent === k ? e.root = i : t === t.parent.right ? t.parent.right = i : t.parent.left = i, (i.right = t).parent = i, P(t), P(i)
    }

    function M(e) {
        let t = e.end;
        var i;
        return e.left === k || (i = e.left.maxEnd) > t && (t = i), e.right === k || (e = e.right.maxEnd + e.delta) > t && (t = e), t
    }

    function P(e) {
        e.maxEnd = M(e)
    }

    function A(e) {
        for (; e !== k;) {
            var t = M(e);
            if (e.maxEnd === t) return;
            e.maxEnd = t, e = e.parent
        }
    }
    class R {
        constructor(e, t) {
            this.piece = e, this.color = t, this.size_left = 0, this.lf_left = 0, ((this.parent = this).left = this).right = this
        }
        next() {
            if (this.right !== F) return j(this.right);
            let e = this;
            for (; e.parent !== F && e.parent.left !== e;) e = e.parent;
            return e.parent === F ? F : e.parent
        }
        prev() {
            if (this.left !== F) return B(this.left);
            let e = this;
            for (; e.parent !== F && e.parent.right !== e;) e = e.parent;
            return e.parent === F ? F : e.parent
        }
        detach() {
            this.parent = null, this.left = null, this.right = null
        }
    }
    const F = new R(null, 0);

    function j(e) {
        for (; e.left !== F;) e = e.left;
        return e
    }

    function B(e) {
        for (; e.right !== F;) e = e.right;
        return e
    }

    function V(e) {
        return e === F ? 0 : e.size_left + e.piece.length + V(e.right)
    }

    function W(e) {
        return e === F ? 0 : e.lf_left + e.piece.lineFeedCnt + W(e.right)
    }

    function z() {
        F.parent = F
    }

    function H(e, t) {
        let i = t.right;
        i.size_left += t.size_left + (t.piece ? t.piece.length : 0), i.lf_left += t.lf_left + (t.piece ? t.piece.lineFeedCnt : 0), t.right = i.left, i.left !== F && (i.left.parent = t), i.parent = t.parent, t.parent === F ? e.root = i : t.parent.left === t ? t.parent.left = i : t.parent.right = i, (i.left = t).parent = i
    }

    function U(e, t) {
        let i = t.left;
        t.left = i.right, i.right !== F && (i.right.parent = t), i.parent = t.parent, t.size_left -= i.size_left + (i.piece ? i.piece.length : 0), t.lf_left -= i.lf_left + (i.piece ? i.piece.lineFeedCnt : 0), t.parent === F ? e.root = i : t === t.parent.right ? t.parent.right = i : t.parent.left = i, (i.right = t).parent = i
    }

    function K(e, t) {
        let i, n;
        if (i = t.left === F ? (n = t, n.right) : t.right === F ? (n = t, n.left) : (n = j(t.right), n.right), n === e.root) return e.root = i, i.color = 0, t.detach(), z(), void(e.root.parent = F);
        var r, o, s, a = 1 === n.color;
        if (n === n.parent.left ? n.parent.left = i : n.parent.right = i, n === t ? (i.parent = n.parent, G(e, i)) : (n.parent === t ? i.parent = n : i.parent = n.parent, G(e, i), n.left = t.left, n.right = t.right, n.parent = t.parent, n.color = t.color, t === e.root ? e.root = n : t === t.parent.left ? t.parent.left = n : t.parent.right = n, n.left !== F && (n.left.parent = n), n.right !== F && (n.right.parent = n), n.size_left = t.size_left, n.lf_left = t.lf_left, G(e, n)), t.detach(), i.parent.left === i && (r = V(i), o = W(i), r === i.parent.size_left && o === i.parent.lf_left || (s = r - i.parent.size_left, t = o - i.parent.lf_left, i.parent.size_left = r, i.parent.lf_left = o, q(e, i.parent, s, t))), G(e, i.parent), a) z();
        else {
            let t;
            for (; i !== e.root && 0 === i.color;) i = i === i.parent.left ? (t = i.parent.right, 1 === t.color && (t.color = 0, i.parent.color = 1, H(e, i.parent), t = i.parent.right), 0 === t.left.color && 0 === t.right.color ? (t.color = 1, i.parent) : (0 === t.right.color && (t.left.color = 0, t.color = 1, U(e, t), t = i.parent.right), t.color = i.parent.color, i.parent.color = 0, t.right.color = 0, H(e, i.parent), e.root)) : (t = i.parent.left, 1 === t.color && (t.color = 0, i.parent.color = 1, U(e, i.parent), t = i.parent.left), 0 === t.left.color && 0 === t.right.color ? (t.color = 1, i.parent) : (0 === t.left.color && (t.right.color = 0, t.color = 1, H(e, t), t = i.parent.left), t.color = i.parent.color, i.parent.color = 0, t.left.color = 0, U(e, i.parent), e.root));
            i.color = 0, z()
        }
    }

    function $(e, t) {
        for (G(e, t); t !== e.root && 1 === t.parent.color;)
            if (t.parent === t.parent.parent.left) {
                const i = t.parent.parent.right;
                1 === i.color ? (t.parent.color = 0, i.color = 0, t.parent.parent.color = 1, t = t.parent.parent) : (t === t.parent.right && H(e, t = t.parent), t.parent.color = 0, t.parent.parent.color = 1, U(e, t.parent.parent))
            } else {
                const i = t.parent.parent.left;
                1 === i.color ? (t.parent.color = 0, i.color = 0, t.parent.parent.color = 1, t = t.parent.parent) : (t === t.parent.left && U(e, t = t.parent), t.parent.color = 0, t.parent.parent.color = 1, H(e, t.parent.parent))
            } e.root.color = 0
    }

    function q(e, t, i, n) {
        for (; t !== e.root && t !== F;) t.parent.left === t && (t.parent.size_left += i, t.parent.lf_left += n), t = t.parent
    }

    function G(e, t) {
        var i, n;
        if (t !== e.root) {
            for (; t !== e.root && t === t.parent.right;) t = t.parent;
            if (t !== e.root)
                for (i = V((t = t.parent).left) - t.size_left, n = W(t.left) - t.lf_left, t.size_left += i, t.lf_left += n; t !== e.root && (0 != i || 0 != n);) t.parent.left === t && (t.parent.size_left += i, t.parent.lf_left += n), t = t.parent
        }
    }
    F.parent = F, F.left = F, F.right = F, F.color = 0;
    var Y = i(89);
    const Z = 65535;

    function X(e) {
        let t;
        return t = new(e[e.length - 1] < 65536 ? Uint16Array : Uint32Array)(e.length), t.set(e, 0), t
    }
    class Q {
        constructor(e, t, i, n, r) {
            this.lineStarts = e, this.cr = t, this.lf = i, this.crlf = n, this.isBasicASCII = r
        }
    }

    function J(e, t = !0) {
        let i = [0],
            n = 1;
        for (let t = 0, o = e.length; t < o; t++) {
            var r = e.charCodeAt(t);
            13 === r ? t + 1 < o && 10 === e.charCodeAt(t + 1) ? (i[n++] = t + 2, t++) : i[n++] = t + 1 : 10 === r && (i[n++] = t + 1)
        }
        return t ? X(i) : i
    }
    class ee {
        constructor(e, t, i, n, r) {
            this.bufferIndex = e, this.start = t, this.end = i, this.lineFeedCnt = n, this.length = r
        }
    }
    class te {
        constructor(e, t) {
            this.buffer = e, this.lineStarts = t
        }
    }
    class ie {
        constructor(e, t) {
            this._pieces = [], this._tree = e, this._BOM = t, this._index = 0, e.root !== F && e.iterate(e.root, e => (e !== F && this._pieces.push(e.piece), !0))
        }
        read() {
            return 0 === this._pieces.length ? 0 === this._index ? (this._index++, this._BOM) : null : this._index > this._pieces.length - 1 ? null : 0 === this._index ? this._BOM + this._tree.getPieceContent(this._pieces[this._index++]) : this._tree.getPieceContent(this._pieces[this._index++])
        }
    }
    class ne {
        constructor(e) {
            this._limit = e, this._cache = []
        }
        get(e) {
            for (let i = this._cache.length - 1; 0 <= i; i--) {
                var t = this._cache[i];
                if (t.nodeStartOffset <= e && t.nodeStartOffset + t.node.piece.length >= e) return t
            }
            return null
        }
        get2(e) {
            for (let i = this._cache.length - 1; 0 <= i; i--) {
                var t = this._cache[i];
                if (t.nodeStartLineNumber && t.nodeStartLineNumber < e && t.nodeStartLineNumber + t.node.piece.lineFeedCnt >= e) return t
            }
            return null
        }
        set(e) {
            this._cache.length >= this._limit && this._cache.shift(), this._cache.push(e)
        }
        validate(e) {
            let t = !1,
                i = this._cache;
            for (let r = 0; r < i.length; r++) {
                var n = i[r];
                (null === n.node.parent || n.nodeStartOffset >= e) && (i[r] = null, t = !0)
            }
            if (t) {
                let e = [];
                for (const t of i) null !== t && e.push(t);
                this._cache = e
            }
        }
    }
    class re {
        constructor(e, t, i) {
            this.create(e, t, i)
        }
        create(e, t, i) {
            this._buffers = [new te("", [0])], this._lastChangeBufferPos = {
                line: 0,
                column: 0
            }, this.root = F, this._lineCnt = 1, this._length = 0, this._EOL = t, this._EOLLength = t.length, this._EOLNormalized = i;
            let n = null;
            for (let t = 0, i = e.length; t < i; t++) {
                var r;
                0 < e[t].buffer.length && (e[t].lineStarts || (e[t].lineStarts = J(e[t].buffer)), r = new ee(t + 1, {
                    line: 0,
                    column: 0
                }, {
                    line: e[t].lineStarts.length - 1,
                    column: e[t].buffer.length - e[t].lineStarts[e[t].lineStarts.length - 1]
                }, e[t].lineStarts.length - 1, e[t].buffer.length), this._buffers.push(e[t]), n = this.rbInsertRight(n, r))
            }
            this._searchCache = new ne(1), this._lastVisitedLine = {
                lineNumber: 0,
                value: ""
            }, this.computeBufferMetadata()
        }
        normalizeEOL(e) {
            var t;
            let i = 65535 - Math.floor(21845),
                n = 2 * i,
                r = "",
                o = 0,
                s = [];
            this.iterate(this.root, t => {
                var a = this.getNodeContent(t),
                    l = a.length;
                return o <= i || o + l < n ? (r += a, o += l, !0) : (t = r.replace(/\r\n|\r|\n/g, e), s.push(new te(t, J(t))), r = a, o = l, !0)
            }), 0 < o && (t = r.replace(/\r\n|\r|\n/g, e), s.push(new te(t, J(t)))), this.create(s, e, !0)
        }
        getEOL() {
            return this._EOL
        }
        setEOL(e) {
            this._EOL = e, this._EOLLength = this._EOL.length, this.normalizeEOL(e)
        }
        createSnapshot(e) {
            return new ie(this, e)
        }
        getOffsetAt(e, t) {
            let i = 0,
                n = this.root;
            for (; n !== F;)
                if (n.left !== F && n.lf_left + 1 >= e) n = n.left;
                else {
                    if (n.lf_left + n.piece.lineFeedCnt + 1 >= e) return i += n.size_left, i + (this.getAccumulatedValue(n, e - n.lf_left - 2) + t - 1);
                    e -= n.lf_left + n.piece.lineFeedCnt, i += n.size_left + n.piece.length, n = n.right
                } return i
        }
        getPositionAt(e) {
            e = Math.floor(e), e = Math.max(0, e);
            let t = this.root,
                i = 0;
            for (var n = e; t !== F;)
                if (0 !== t.size_left && t.size_left >= e) t = t.left;
                else {
                    if (t.size_left + t.piece.length >= e) {
                        var r = this.getIndexOf(t, e - t.size_left);
                        return i += t.lf_left + r.index, 0 !== r.index ? new d.a(i + 1, r.remainder + 1) : (r = this.getOffsetAt(i + 1, 1), new d.a(i + 1, n - r + 1))
                    }
                    if (e -= t.size_left + t.piece.length, i += t.lf_left + t.piece.lineFeedCnt, t.right === F) return r = this.getOffsetAt(i + 1, 1), new d.a(i + 1, n - e - r + 1);
                    t = t.right
                } return new d.a(1, 1)
        }
        getValueInRange(e, t) {
            if (e.startLineNumber === e.endLineNumber && e.startColumn === e.endColumn) return "";
            var i = this.nodeAt2(e.startLineNumber, e.startColumn);
            e = this.nodeAt2(e.endLineNumber, e.endColumn);
            let n = this.getValueInRange2(i, e);
            return !t || t === this._EOL && this._EOLNormalized && t === this.getEOL() && this._EOLNormalized ? n : n.replace(/\r\n|\r|\n/g, t)
        }
        getValueInRange2(e, t) {
            if (e.node === t.node) {
                var i = e.node;
                let n = this._buffers[i.piece.bufferIndex].buffer;
                return i = this.offsetInBuffer(i.piece.bufferIndex, i.piece.start), n.substring(i + e.remainder, i + t.remainder)
            }
            let n = e.node,
                r = this._buffers[n.piece.bufferIndex].buffer;
            i = this.offsetInBuffer(n.piece.bufferIndex, n.piece.start);
            let o = r.substring(i + e.remainder, i + n.piece.length);
            for (n = n.next(); n !== F;) {
                let e = this._buffers[n.piece.bufferIndex].buffer;
                var s = this.offsetInBuffer(n.piece.bufferIndex, n.piece.start);
                if (n === t.node) {
                    o += e.substring(s, s + t.remainder);
                    break
                }
                o += e.substr(s, n.piece.length), n = n.next()
            }
            return o
        }
        getLinesContent() {
            let e = [],
                t = 0,
                i = "",
                n = !1;
            return this.iterate(this.root, r => {
                if (r === F) return !0;
                var o = r.piece;
                let s = o.length;
                if (0 === s) return !0;
                const a = this._buffers[o.bufferIndex].buffer;
                var l = this._buffers[o.bufferIndex].lineStarts,
                    d = (r = o.start.line, o.end.line);
                let c = l[r] + o.start.column;
                if (n && (10 === a.charCodeAt(c) && (c++, s--), e[t++] = i, i = "", n = !1, 0 === s)) return !0;
                if (r === d) return this._EOLNormalized || 13 !== a.charCodeAt(c + s - 1) ? i += a.substr(c, s) : (n = !0, i += a.substr(c, s - 1)), !0;
                i += this._EOLNormalized ? a.substring(c, Math.max(c, l[r + 1] - this._EOLLength)) : a.substring(c, l[r + 1]).replace(/(\r\n|\r|\n)$/, ""), e[t++] = i;
                for (let n = r + 1; n < d; n++) i = this._EOLNormalized ? a.substring(l[n], l[n + 1] - this._EOLLength) : a.substring(l[n], l[n + 1]).replace(/(\r\n|\r|\n)$/, ""), e[t++] = i;
                return this._EOLNormalized || 13 !== a.charCodeAt(l[d] + o.end.column - 1) ? i = a.substr(l[d], o.end.column) : (n = !0, 0 === o.end.column ? t-- : i = a.substr(l[d], o.end.column - 1)), !0
            }), n && (e[t++] = i, i = ""), e[t++] = i, e
        }
        getLength() {
            return this._length
        }
        getLineCount() {
            return this._lineCnt
        }
        getLineContent(e) {
            return this._lastVisitedLine.lineNumber === e || ((this._lastVisitedLine.lineNumber = e) === this._lineCnt ? this._lastVisitedLine.value = this.getLineRawContent(e) : this._EOLNormalized ? this._lastVisitedLine.value = this.getLineRawContent(e, this._EOLLength) : this._lastVisitedLine.value = this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/, "")), this._lastVisitedLine.value
        }
        _getCharCode(e) {
            if (e.remainder === e.node.piece.length) {
                var t = e.node.next();
                if (!t) return 0;
                let i = this._buffers[t.piece.bufferIndex];
                return t = this.offsetInBuffer(t.piece.bufferIndex, t.piece.start), i.buffer.charCodeAt(t)
            } {
                let t = this._buffers[e.node.piece.bufferIndex];
                return e = this.offsetInBuffer(e.node.piece.bufferIndex, e.node.piece.start) + e.remainder, t.buffer.charCodeAt(e)
            }
        }
        getLineCharCode(e, t) {
            return t = this.nodeAt2(e, t + 1), this._getCharCode(t)
        }
        getLineLength(e) {
            return e !== this.getLineCount() ? this.getOffsetAt(e + 1, 1) - this.getOffsetAt(e, 1) - this._EOLLength : (e = this.getOffsetAt(e, 1), this.getLength() - e)
        }
        findMatchesInNode(e, t, i, n, r, o, s, a, l, d, h) {
            let u = this._buffers[e.piece.bufferIndex];
            var p = this.offsetInBuffer(e.piece.bufferIndex, e.piece.start);
            let g = this.offsetInBuffer(e.piece.bufferIndex, r);
            var f, m = this.offsetInBuffer(e.piece.bufferIndex, o),
                v = {
                    line: 0,
                    column: 0
                };
            let b, _;
            t._wordSeparators ? (b = u.buffer.substring(g, m), _ = e => e + g, t.reset(0)) : (b = u.buffer, _ = e => e, t.reset(g));
            do {
                if (f = t.next(b)) {
                    if (_(f.index) >= m) return d;
                    this.positionInBuffer(e, _(f.index) - p, v);
                    var w = this.getLineFeedCnt(e.piece.bufferIndex, r, v),
                        y = v.line === r.line ? v.column - r.column + n : v.column + 1,
                        C = y + f[0].length;
                    if (h[d++] = Object(Y.d)(new c.a(i + w, y, i + w, C), f, a), _(f.index) + f[0].length >= m) return d;
                    if (l <= d) return d
                }
            } while (f);
            return d
        }
        findMatchesLineByLine(e, t, i, n) {
            var r = [];
            let o = 0;
            var s = new Y.b(t.wordSeparators, t.regex);
            let a = this.nodeAt2(e.startLineNumber, e.startColumn);
            if (null === a) return [];
            var l = this.nodeAt2(e.endLineNumber, e.endColumn);
            if (null === l) return [];
            let d = this.positionInBuffer(a.node, a.remainder);
            var c = this.positionInBuffer(l.node, l.remainder);
            if (a.node === l.node) return this.findMatchesInNode(a.node, s, e.startLineNumber, e.startColumn, d, c, t, i, n, o, r), r;
            let h = e.startLineNumber,
                u = a.node;
            for (; u !== l.node;) {
                var p = this.getLineFeedCnt(u.piece.bufferIndex, d, u.piece.end);
                if (1 <= p) {
                    var g = this._buffers[u.piece.bufferIndex].lineStarts,
                        f = this.offsetInBuffer(u.piece.bufferIndex, u.piece.start),
                        m = g[d.line + p];
                    g = h === e.startLineNumber ? e.startColumn : 1;
                    if (o = this.findMatchesInNode(u, s, h, g, d, this.positionInBuffer(u, m - f), t, i, n, o, r), o >= n) return r;
                    h += p
                }
                if (f = h === e.startLineNumber ? e.startColumn - 1 : 0, h === e.endLineNumber) return p = this.getLineContent(h).substring(f, e.endColumn - 1), o = this._findMatchesInLine(t, s, p, e.endLineNumber, f, o, r, i, n), r;
                if (o = this._findMatchesInLine(t, s, this.getLineContent(h).substr(f), h, f, o, r, i, n), o >= n) return r;
                h++, a = this.nodeAt2(h, 1), u = a.node, d = this.positionInBuffer(a.node, a.remainder)
            }
            if (h === e.endLineNumber) {
                var v = h === e.startLineNumber ? e.startColumn - 1 : 0,
                    b = this.getLineContent(h).substring(v, e.endColumn - 1);
                return o = this._findMatchesInLine(t, s, b, e.endLineNumber, v, o, r, i, n), r
            }
            return v = h === e.startLineNumber ? e.startColumn : 1, o = this.findMatchesInNode(l.node, s, h, v, d, c, t, i, n, o, r), r
        }
        _findMatchesInLine(e, t, i, n, r, o, s, a, l) {
            var d, h = e.wordSeparators;
            if (!a && e.simpleSearch) {
                var p = e.simpleSearch,
                    g = p.length,
                    f = i.length;
                let t = -g;
                for (; - 1 !== (t = i.indexOf(p, t + g));)
                    if ((!h || Object(Y.e)(h, i, f, t, g)) && (s[o++] = new u.b(new c.a(n, t + 1 + r, n, t + 1 + g + r), null), l <= o)) return o;
                return o
            }
            t.reset(0);
            do {
                if ((d = t.next(i)) && (s[o++] = Object(Y.d)(new c.a(n, d.index + 1 + r, n, d.index + 1 + d[0].length + r), d, a), l <= o)) return o
            } while (d);
            return o
        }
        insert(e, t, i = !1) {
            if (this._EOLNormalized = this._EOLNormalized && i, this._lastVisitedLine.lineNumber = 0, this._lastVisitedLine.value = "", this.root !== F) {
                var {
                    node: n,
                    remainder: r,
                    nodeStartOffset: o
                } = this.nodeAt(e), s = n.piece, a = s.bufferIndex;
                i = this.positionInBuffer(n, r);
                if (0 === n.piece.bufferIndex && s.end.line === this._lastChangeBufferPos.line && s.end.column === this._lastChangeBufferPos.column && o + s.length === e && t.length < Z) return this.appendToNode(n, t), void this.computeBufferMetadata();
                if (o === e) this.insertContentToNodeLeft(t, n), this._searchCache.validate(e);
                else if (o + n.piece.length > e) {
                    let e = [],
                        o = new ee(s.bufferIndex, i, s.end, this.getLineFeedCnt(s.bufferIndex, i, s.end), this.offsetInBuffer(a, s.end) - this.offsetInBuffer(a, i));
                    this.shouldCheckCRLF() && this.endWithCR(t) && 10 === this.nodeCharCodeAt(n, r) && (a = {
                        line: o.start.line + 1,
                        column: 0
                    }, o = new ee(o.bufferIndex, a, o.end, this.getLineFeedCnt(o.bufferIndex, a, o.end), o.length - 1), t += "\n"), this.shouldCheckCRLF() && this.startWithLF(t) && 13 === this.nodeCharCodeAt(n, r - 1) ? (r = this.positionInBuffer(n, r - 1), this.deleteNodeTail(n, r), t = "\r" + t, 0 === n.piece.length && e.push(n)) : this.deleteNodeTail(n, i);
                    var l = this.createNewPieces(t);
                    0 < o.length && this.rbInsertRight(n, o);
                    let d = n;
                    for (let e = 0; e < l.length; e++) d = this.rbInsertRight(d, l[e]);
                    this.deleteNodes(e)
                } else this.insertContentToNodeRight(t, n)
            } else {
                var d = this.createNewPieces(t);
                let e = this.rbInsertLeft(null, d[0]);
                for (let t = 1; t < d.length; t++) e = this.rbInsertRight(e, d[t])
            }
            this.computeBufferMetadata()
        }
        delete(e, t) {
            if (this._lastVisitedLine.lineNumber = 0, this._lastVisitedLine.value = "", !(t <= 0 || this.root === F)) {
                var i = this.nodeAt(e),
                    n = this.nodeAt(e + t);
                let a = i.node;
                var r = n.node;
                if (a === r) {
                    var o = this.positionInBuffer(a, i.remainder),
                        s = this.positionInBuffer(a, n.remainder);
                    return i.nodeStartOffset !== e ? (i.nodeStartOffset + a.piece.length === e + t ? (this.deleteNodeTail(a, o), this.validateCRLFWithNextNode(a)) : this.shrinkNode(a, o, s), void this.computeBufferMetadata()) : t !== a.piece.length ? (this.deleteNodeHead(a, s), this._searchCache.validate(e), this.validateCRLFWithPrevNode(a), void this.computeBufferMetadata()) : (s = a.next(), K(this, a), this.validateCRLFWithPrevNode(s), void this.computeBufferMetadata())
                }
                let l = [];
                i = this.positionInBuffer(a, i.remainder), this.deleteNodeTail(a, i), this._searchCache.validate(e), 0 === a.piece.length && l.push(a), n = this.positionInBuffer(r, n.remainder), this.deleteNodeHead(r, n), 0 === r.piece.length && l.push(r);
                for (let e = a.next(); e !== F && e !== r; e = e.next()) l.push(e);
                n = 0 === a.piece.length ? a.prev() : a, this.deleteNodes(l), this.validateCRLFWithNextNode(n), this.computeBufferMetadata()
            }
        }
        insertContentToNodeLeft(e, t) {
            let i = [];
            var n, r;
            this.shouldCheckCRLF() && this.endWithCR(e) && this.startWithLF(t) && (n = {
                line: (r = t.piece).start.line + 1,
                column: 0
            }, r = new ee(r.bufferIndex, n, r.end, this.getLineFeedCnt(r.bufferIndex, n, r.end), r.length - 1), t.piece = r, e += "\n", q(this, t, -1, -1), 0 === t.piece.length && i.push(t));
            var o = this.createNewPieces(e);
            let s = this.rbInsertLeft(t, o[o.length - 1]);
            for (let e = o.length - 2; 0 <= e; e--) s = this.rbInsertLeft(s, o[e]);
            this.validateCRLFWithPrevNode(s), this.deleteNodes(i)
        }
        insertContentToNodeRight(e, t) {
            this.adjustCarriageReturnFromNext(e, t) && (e += "\n");
            var i = this.createNewPieces(e);
            let n = t = this.rbInsertRight(t, i[0]);
            for (let e = 1; e < i.length; e++) n = this.rbInsertRight(n, i[e]);
            this.validateCRLFWithPrevNode(t)
        }
        positionInBuffer(e, t, i) {
            var n = e.piece,
                r = (e = e.piece.bufferIndex, this._buffers[e].lineStarts),
                o = r[n.start.line] + n.start.column + t;
            let s = n.start.line,
                a = n.end.line,
                l = 0;
            var d;
            let c = 0;
            for (; s <= a && (l = s + (a - s) / 2 | 0, c = r[l], l !== a);)
                if (d = r[l + 1], o < c) a = l - 1;
                else {
                    if (!(d <= o)) break;
                    s = l + 1
                } return i ? (i.line = l, i.column = o - c, null) : {
                line: l,
                column: o - c
            }
        }
        getLineFeedCnt(e, t, i) {
            if (0 === i.column) return i.line - t.line;
            var n = this._buffers[e].lineStarts;
            if (i.line === n.length - 1) return i.line - t.line;
            var r = n[i.line + 1];
            if ((n = n[i.line] + i.column) + 1 < r) return i.line - t.line;
            return 13 === this._buffers[e].buffer.charCodeAt(n - 1) ? i.line - t.line + 1 : i.line - t.line
        }
        offsetInBuffer(e, t) {
            return this._buffers[e].lineStarts[t.line] + t.column
        }
        deleteNodes(e) {
            for (let t = 0; t < e.length; t++) K(this, e[t])
        }
        createNewPieces(e) {
            if (e.length > Z) {
                let n = [];
                for (; e.length > Z;) {
                    var t = e.charCodeAt(65534);
                    let i;
                    e = 13 === t || 55296 <= t && t <= 56319 ? (i = e.substring(0, 65534), e.substring(65534)) : (i = e.substring(0, Z), e.substring(Z)), t = J(i), n.push(new ee(this._buffers.length, {
                        line: 0,
                        column: 0
                    }, {
                        line: t.length - 1,
                        column: i.length - t[t.length - 1]
                    }, t.length - 1, i.length)), this._buffers.push(new te(i, t))
                }
                var i = J(e);
                return n.push(new ee(this._buffers.length, {
                    line: 0,
                    column: 0
                }, {
                    line: i.length - 1,
                    column: e.length - i[i.length - 1]
                }, i.length - 1, e.length)), this._buffers.push(new te(e, i)), n
            }
            let n = this._buffers[0].buffer.length;
            const r = J(e, !1);
            let o = this._lastChangeBufferPos;
            if (this._buffers[0].lineStarts[this._buffers[0].lineStarts.length - 1] === n && 0 !== n && this.startWithLF(e) && this.endWithCR(this._buffers[0].buffer)) {
                this._lastChangeBufferPos = {
                    line: this._lastChangeBufferPos.line,
                    column: this._lastChangeBufferPos.column + 1
                }, o = this._lastChangeBufferPos;
                for (let e = 0; e < r.length; e++) r[e] += n + 1;
                this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(r.slice(1)), this._buffers[0].buffer += "_" + e, n += 1
            } else {
                if (0 !== n)
                    for (let e = 0; e < r.length; e++) r[e] += n;
                this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(r.slice(1)), this._buffers[0].buffer += e
            }
            var s = this._buffers[0].buffer.length;
            i = {
                line: i = this._buffers[0].lineStarts.length - 1,
                column: s - this._buffers[0].lineStarts[i]
            }, s = new ee(0, o, i, this.getLineFeedCnt(0, o, i), s - n);
            return this._lastChangeBufferPos = i, [s]
        }
        getLineRawContent(e, t = 0) {
            let i = this.root,
                n = "";
            var r = this._searchCache.get2(e);
            if (r) {
                i = r.node;
                var o = this.getAccumulatedValue(i, e - r.nodeStartLineNumber - 1);
                let a = this._buffers[i.piece.bufferIndex].buffer;
                var s = this.offsetInBuffer(i.piece.bufferIndex, i.piece.start);
                if (r.nodeStartLineNumber + i.piece.lineFeedCnt !== e) return r = this.getAccumulatedValue(i, e - r.nodeStartLineNumber), a.substring(s + o, s + r - t);
                n = a.substring(s + o, s + i.piece.length)
            } else {
                let r = 0;
                for (var a = e; i !== F;)
                    if (i.left !== F && i.lf_left >= e - 1) i = i.left;
                    else {
                        if (i.lf_left + i.piece.lineFeedCnt > e - 1) {
                            var l = this.getAccumulatedValue(i, e - i.lf_left - 2),
                                d = this.getAccumulatedValue(i, e - i.lf_left - 1);
                            let n = this._buffers[i.piece.bufferIndex].buffer;
                            var c = this.offsetInBuffer(i.piece.bufferIndex, i.piece.start);
                            return r += i.size_left, this._searchCache.set({
                                node: i,
                                nodeStartOffset: r,
                                nodeStartLineNumber: a - (e - 1 - i.lf_left)
                            }), n.substring(c + l, c + d - t)
                        }
                        if (i.lf_left + i.piece.lineFeedCnt === e - 1) {
                            c = this.getAccumulatedValue(i, e - i.lf_left - 2);
                            let t = this._buffers[i.piece.bufferIndex].buffer;
                            d = this.offsetInBuffer(i.piece.bufferIndex, i.piece.start), n = t.substring(d + c, d + i.piece.length);
                            break
                        }
                        e -= i.lf_left + i.piece.lineFeedCnt, r += i.size_left + i.piece.length, i = i.right
                    }
            }
            for (i = i.next(); i !== F;) {
                let e = this._buffers[i.piece.bufferIndex].buffer;
                if (0 < i.piece.lineFeedCnt) {
                    var h = this.getAccumulatedValue(i, 0),
                        u = this.offsetInBuffer(i.piece.bufferIndex, i.piece.start);
                    return n += e.substring(u, u + h - t), n
                }
                h = this.offsetInBuffer(i.piece.bufferIndex, i.piece.start), n += e.substr(h, i.piece.length), i = i.next()
            }
            return n
        }
        computeBufferMetadata() {
            let e = this.root,
                t = 1,
                i = 0;
            for (; e !== F;) t += e.lf_left + e.piece.lineFeedCnt, i += e.size_left + e.piece.length, e = e.right;
            this._lineCnt = t, this._length = i, this._searchCache.validate(this._length)
        }
        getIndexOf(e, t) {
            var i = e.piece,
                n = this.positionInBuffer(e, t),
                r = n.line - i.start.line;
            return this.offsetInBuffer(i.bufferIndex, i.end) - this.offsetInBuffer(i.bufferIndex, i.start) === t && (i = this.getLineFeedCnt(e.piece.bufferIndex, i.start, n)) !== r ? {
                index: i,
                remainder: 0
            } : {
                index: r,
                remainder: n.column
            }
        }
        getAccumulatedValue(e, t) {
            if (t < 0) return 0;
            var i = e.piece;
            e = this._buffers[i.bufferIndex].lineStarts;
            return (t = i.start.line + t + 1) > i.end.line ? e[i.end.line] + i.end.column - e[i.start.line] - i.start.column : e[t] - e[i.start.line] - i.start.column
        }
        deleteNodeTail(e, t) {
            var i = e.piece,
                n = i.lineFeedCnt,
                r = this.offsetInBuffer(i.bufferIndex, i.end),
                o = t,
                s = this.offsetInBuffer(i.bufferIndex, o);
            n = (t = this.getLineFeedCnt(i.bufferIndex, i.start, o)) - n, s -= r, r = i.length + s;
            e.piece = new ee(i.bufferIndex, i.start, o, t, r), q(this, e, s, n)
        }
        deleteNodeHead(e, t) {
            var i = e.piece,
                n = i.lineFeedCnt,
                r = this.offsetInBuffer(i.bufferIndex, i.start),
                o = t,
                s = this.getLineFeedCnt(i.bufferIndex, o, i.end);
            t = s - n, n = r - this.offsetInBuffer(i.bufferIndex, o), r = i.length + n;
            e.piece = new ee(i.bufferIndex, o, i.end, s, r), q(this, e, n, t)
        }
        shrinkNode(e, t, i) {
            var n = e.piece,
                r = n.start,
                o = n.end,
                s = n.length,
                a = n.lineFeedCnt,
                l = t,
                d = this.getLineFeedCnt(n.bufferIndex, n.start, l);
            r = this.offsetInBuffer(n.bufferIndex, t) - this.offsetInBuffer(n.bufferIndex, r);
            e.piece = new ee(n.bufferIndex, n.start, l, d, r), q(this, e, r - s, d - a), i = new ee(n.bufferIndex, i, o, this.getLineFeedCnt(n.bufferIndex, i, o), this.offsetInBuffer(n.bufferIndex, o) - this.offsetInBuffer(n.bufferIndex, i)), i = this.rbInsertRight(e, i), this.validateCRLFWithPrevNode(i)
        }
        appendToNode(e, t) {
            this.adjustCarriageReturnFromNext(t, e) && (t += "\n");
            var i = this.shouldCheckCRLF() && this.startWithLF(t) && this.endWithCR(e),
                n = this._buffers[0].buffer.length;
            this._buffers[0].buffer += t;
            const r = J(t, !1);
            for (let e = 0; e < r.length; e++) r[e] += n;
            i && (a = this._buffers[0].lineStarts[this._buffers[0].lineStarts.length - 2], this._buffers[0].lineStarts.pop(), this._lastChangeBufferPos = {
                line: this._lastChangeBufferPos.line - 1,
                column: n - a
            }), this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(r.slice(1));
            var o, s = {
                    line: o = this._buffers[0].lineStarts.length - 1,
                    column: this._buffers[0].buffer.length - this._buffers[0].lineStarts[o]
                },
                a = (i = e.piece.length + t.length, e.piece.lineFeedCnt);
            a = (o = this.getLineFeedCnt(0, e.piece.start, s)) - a;
            e.piece = new ee(e.piece.bufferIndex, e.piece.start, s, o, i), this._lastChangeBufferPos = s, q(this, e, t.length, a)
        }
        nodeAt(e) {
            let t = this.root;
            var i = this._searchCache.get(e);
            if (i) return {
                node: i.node,
                nodeStartOffset: i.nodeStartOffset,
                remainder: e - i.nodeStartOffset
            };
            let n = 0;
            for (; t !== F;)
                if (t.size_left > e) t = t.left;
                else {
                    if (t.size_left + t.piece.length >= e) {
                        n += t.size_left;
                        var r = {
                            node: t,
                            remainder: e - t.size_left,
                            nodeStartOffset: n
                        };
                        return this._searchCache.set(r), r
                    }
                    e -= t.size_left + t.piece.length, n += t.size_left + t.piece.length, t = t.right
                } return null
        }
        nodeAt2(e, t) {
            let i = this.root,
                n = 0;
            for (; i !== F;)
                if (i.left !== F && i.lf_left >= e - 1) i = i.left;
                else {
                    if (i.lf_left + i.piece.lineFeedCnt > e - 1) {
                        var r = this.getAccumulatedValue(i, e - i.lf_left - 2),
                            o = this.getAccumulatedValue(i, e - i.lf_left - 1);
                        return n += i.size_left, {
                            node: i,
                            remainder: Math.min(r + t - 1, o),
                            nodeStartOffset: n
                        }
                    }
                    if (i.lf_left + i.piece.lineFeedCnt === e - 1) {
                        if ((o = this.getAccumulatedValue(i, e - i.lf_left - 2)) + t - 1 <= i.piece.length) return {
                            node: i,
                            remainder: o + t - 1,
                            nodeStartOffset: n
                        };
                        t -= i.piece.length - o;
                        break
                    }
                    e -= i.lf_left + i.piece.lineFeedCnt, n += i.size_left + i.piece.length, i = i.right
                } for (i = i.next(); i !== F;) {
                if (0 < i.piece.lineFeedCnt) {
                    var s = this.getAccumulatedValue(i, 0),
                        a = this.offsetOfNode(i);
                    return {
                        node: i,
                        remainder: Math.min(t - 1, s),
                        nodeStartOffset: a
                    }
                }
                if (i.piece.length >= t - 1) return {
                    node: i,
                    remainder: t - 1,
                    nodeStartOffset: a = this.offsetOfNode(i)
                };
                t -= i.piece.length, i = i.next()
            }
            return null
        }
        nodeCharCodeAt(e, t) {
            if (e.piece.lineFeedCnt < 1) return -1;
            let i = this._buffers[e.piece.bufferIndex];
            return t = this.offsetInBuffer(e.piece.bufferIndex, e.piece.start) + t, i.buffer.charCodeAt(t)
        }
        offsetOfNode(e) {
            if (!e) return 0;
            let t = e.size_left;
            for (; e !== this.root;) e.parent.right === e && (t += e.parent.size_left + e.parent.piece.length), e = e.parent;
            return t
        }
        shouldCheckCRLF() {
            return !(this._EOLNormalized && "\n" === this._EOL)
        }
        startWithLF(e) {
            if ("string" == typeof e) return 10 === e.charCodeAt(0);
            if (e === F || 0 === e.piece.lineFeedCnt) return !1;
            var t = e.piece,
                i = this._buffers[t.bufferIndex].lineStarts,
                n = t.start.line;
            e = i[n] + t.start.column;
            return n !== i.length - 1 && !(e + 1 < i[n + 1]) && 10 === this._buffers[t.bufferIndex].buffer.charCodeAt(e)
        }
        endWithCR(e) {
            return "string" == typeof e ? 13 === e.charCodeAt(e.length - 1) : e !== F && 0 !== e.piece.lineFeedCnt && 13 === this.nodeCharCodeAt(e, e.piece.length - 1)
        }
        validateCRLFWithPrevNode(e) {
            var t;
            this.shouldCheckCRLF() && this.startWithLF(e) && (t = e.prev(), this.endWithCR(t) && this.fixCRLF(t, e))
        }
        validateCRLFWithNextNode(e) {
            var t;
            this.shouldCheckCRLF() && this.endWithCR(e) && (t = e.next(), this.startWithLF(t) && this.fixCRLF(e, t))
        }
        fixCRLF(e, t) {
            let i = [];
            var n = this._buffers[e.piece.bufferIndex].lineStarts;
            let r;
            r = 0 === e.piece.end.column ? {
                line: e.piece.end.line - 1,
                column: n[e.piece.end.line] - n[e.piece.end.line - 1] - 1
            } : {
                line: e.piece.end.line,
                column: e.piece.end.column - 1
            };
            var o = e.piece.length - 1,
                s = e.piece.lineFeedCnt - 1;
            e.piece = new ee(e.piece.bufferIndex, e.piece.start, r, s, o), q(this, e, -1, -1), 0 === e.piece.length && i.push(e), n = {
                line: t.piece.start.line + 1,
                column: 0
            }, s = t.piece.length - 1, o = this.getLineFeedCnt(t.piece.bufferIndex, n, t.piece.end), t.piece = new ee(t.piece.bufferIndex, n, t.piece.end, o, s), q(this, t, -1, -1), 0 === t.piece.length && i.push(t), t = this.createNewPieces("\r\n"), this.rbInsertRight(e, t[0]);
            for (let e = 0; e < i.length; e++) K(this, i[e])
        }
        adjustCarriageReturnFromNext(e, t) {
            if (this.shouldCheckCRLF() && this.endWithCR(e)) {
                let r = t.next();
                var i, n;
                if (this.startWithLF(r)) return e += "\n", 1 === r.piece.length ? K(this, r) : (n = {
                    line: (i = r.piece).start.line + 1,
                    column: 0
                }, t = i.length - 1, e = this.getLineFeedCnt(i.bufferIndex, n, i.end), r.piece = new ee(i.bufferIndex, n, i.end, e, t), q(this, r, -1, -1)), !0
            }
            return !1
        }
        iterate(e, t) {
            return e === F ? t(F) : this.iterate(e.left, t) && t(e) && this.iterate(e.right, t)
        }
        getNodeContent(e) {
            if (e === F) return "";
            let t = this._buffers[e.piece.bufferIndex];
            var i = e.piece;
            e = this.offsetInBuffer(i.bufferIndex, i.start), i = this.offsetInBuffer(i.bufferIndex, i.end);
            return t.buffer.substring(e, i)
        }
        getPieceContent(e) {
            let t = this._buffers[e.bufferIndex];
            var i = this.offsetInBuffer(e.bufferIndex, e.start);
            e = this.offsetInBuffer(e.bufferIndex, e.end);
            return t.buffer.substring(i, e)
        }
        rbInsertRight(e, t) {
            let i = new R(t, 1);
            if (i.left = F, i.right = F, i.parent = F, i.size_left = 0, i.lf_left = 0, this.root === F) this.root = i, i.color = 0;
            else if (e.right === F) e.right = i, i.parent = e;
            else {
                let t = j(e.right);
                t.left = i, i.parent = t
            }
            return $(this, i), i
        }
        rbInsertLeft(e, t) {
            let i = new R(t, 1);
            if (i.left = F, i.right = F, i.parent = F, i.size_left = 0, i.lf_left = 0, this.root === F) this.root = i, i.color = 0;
            else if (e.left === F) e.left = i, i.parent = e;
            else {
                let t = B(e.left);
                t.right = i, i.parent = t
            }
            return $(this, i), i
        }
    }
    var oe = i(99),
        se = i(159);
    class ae extends o.a {
        constructor(e, t, i, n, o, s, a) {
            super(), this._onDidChangeContent = this._register(new r.b), this._BOM = t, this._mightContainNonBasicASCII = !s, this._mightContainRTL = n, this._mightContainUnusualLineTerminators = o, this._pieceTree = new re(e, i, a)
        }
        mightContainRTL() {
            return this._mightContainRTL
        }
        mightContainUnusualLineTerminators() {
            return this._mightContainUnusualLineTerminators
        }
        resetMightContainUnusualLineTerminators() {
            this._mightContainUnusualLineTerminators = !1
        }
        mightContainNonBasicASCII() {
            return this._mightContainNonBasicASCII
        }
        getBOM() {
            return this._BOM
        }
        getEOL() {
            return this._pieceTree.getEOL()
        }
        createSnapshot(e) {
            return this._pieceTree.createSnapshot(e ? this._BOM : "")
        }
        getOffsetAt(e, t) {
            return this._pieceTree.getOffsetAt(e, t)
        }
        getPositionAt(e) {
            return this._pieceTree.getPositionAt(e)
        }
        getRangeAt(e, t) {
            return t = e + t, e = this.getPositionAt(e), t = this.getPositionAt(t), new c.a(e.lineNumber, e.column, t.lineNumber, t.column)
        }
        getValueInRange(e, t = 0) {
            return e.isEmpty() ? "" : (t = this._getEndOfLine(t), this._pieceTree.getValueInRange(e, t))
        }
        getValueLengthInRange(e, t = 0) {
            if (e.isEmpty()) return 0;
            if (e.startLineNumber === e.endLineNumber) return e.endColumn - e.startColumn;
            var i = this.getOffsetAt(e.startLineNumber, e.startColumn);
            return this.getOffsetAt(e.endLineNumber, e.endColumn) - i
        }
        getCharacterCountInRange(e, t = 0) {
            if (this._mightContainNonBasicASCII) {
                let a = 0;
                var i = e.startLineNumber,
                    n = e.endLineNumber;
                for (let t = i; t <= n; t++) {
                    const l = this.getLineContent(t);
                    var r = t === i ? e.startColumn - 1 : 0,
                        o = t === n ? e.endColumn - 1 : l.length;
                    for (let e = r; e < o; e++) s.E(l.charCodeAt(e)) ? (a += 1, e += 1) : a += 1
                }
                return a += this._getEndOfLine(t).length * (n - i), a
            }
            return this.getValueLengthInRange(e, t)
        }
        getLength() {
            return this._pieceTree.getLength()
        }
        getLineCount() {
            return this._pieceTree.getLineCount()
        }
        getLinesContent() {
            return this._pieceTree.getLinesContent()
        }
        getLineContent(e) {
            return this._pieceTree.getLineContent(e)
        }
        getLineCharCode(e, t) {
            return this._pieceTree.getLineCharCode(e, t)
        }
        getLineLength(e) {
            return this._pieceTree.getLineLength(e)
        }
        getLineFirstNonWhitespaceColumn(e) {
            return -1 === (e = s.u(this.getLineContent(e))) ? 0 : e + 1
        }
        getLineLastNonWhitespaceColumn(e) {
            return -1 === (e = s.I(this.getLineContent(e))) ? 0 : e + 2
        }
        _getEndOfLine(e) {
            switch (e) {
                case 1:
                    return "\n";
                case 2:
                    return "\r\n";
                case 0:
                    return this.getEOL();
                default:
                    throw new Error("Unknown EOL preference")
            }
        }
        setEOL(e) {
            this._pieceTree.setEOL(e)
        }
        applyEdits(e, t, i) {
            let n = this._mightContainRTL,
                r = this._mightContainUnusualLineTerminators,
                o = this._mightContainNonBasicASCII,
                a = !0,
                l = [];
            for (let t = 0; t < e.length; t++) {
                let i = e[t];
                a && i._isTracked && (a = !1);
                var d, c, h = i.range;
                if (i.text) {
                    let e = !0;
                    o || (e = !s.A(i.text), o = e), !n && e && (n = s.m(i.text)), !r && e && (r = s.n(i.text))
                }
                let u = "",
                    p = 0,
                    g = 0,
                    f = 0;
                i.text && ([p, g, f, d] = Object(oe.f)(i.text), c = this.getEOL(), u = 0 === d || d === ("\r\n" === c ? 2 : 1) ? i.text : i.text.replace(/\r\n|\r|\n/g, c)), l[t] = {
                    sortIndex: t,
                    identifier: i.identifier || null,
                    range: h,
                    rangeOffset: this.getOffsetAt(h.startLineNumber, h.startColumn),
                    rangeLength: this.getValueLengthInRange(h),
                    text: u,
                    eolCount: p,
                    firstLineLength: g,
                    lastLineLength: f,
                    forceMoveMarkers: Boolean(i.forceMoveMarkers),
                    isAutoWhitespaceEdit: i.isAutoWhitespaceEdit || !1
                }
            }
            l.sort(ae._sortOpsAscending);
            let p = !1;
            for (let e = 0, t = l.length - 1; e < t; e++) {
                var g = l[e].range.getEndPosition();
                let t = l[e + 1].range.getStartPosition();
                if (t.isBeforeOrEqual(g)) {
                    if (t.isBefore(g)) throw new Error("Overlapping ranges are not allowed!");
                    p = !0
                }
            }
            a && (l = this._reduceOperations(l));
            var f = i || t ? ae._getInverseEditRanges(l) : [];
            let m = [];
            if (t)
                for (let e = 0; e < l.length; e++) {
                    let t = l[e];
                    var v = f[e];
                    if (t.isAutoWhitespaceEdit && t.range.isEmpty())
                        for (let e = v.startLineNumber; e <= v.endLineNumber; e++) {
                            let i = "";
                            e === v.startLineNumber && (i = this.getLineContent(t.range.startLineNumber), -1 !== s.u(i)) || m.push({
                                lineNumber: e,
                                oldContent: i
                            })
                        }
                }
            let b = null;
            if (i) {
                let e = 0;
                b = [];
                for (let t = 0; t < l.length; t++) {
                    var _ = l[t],
                        w = f[t],
                        y = this.getValueInRange(_.range),
                        C = _.rangeOffset + e;
                    e += _.text.length - y.length, b[t] = {
                        sortIndex: _.sortIndex,
                        identifier: _.identifier,
                        range: w,
                        text: y,
                        textChange: new se.a(_.rangeOffset, y, C, _.text)
                    }
                }
                p || b.sort((e, t) => e.sortIndex - t.sortIndex)
            }
            this._mightContainRTL = n, this._mightContainUnusualLineTerminators = r, this._mightContainNonBasicASCII = o, i = this._doApplyEdits(l);
            let x = null;
            if (t && 0 < m.length) {
                m.sort((e, t) => t.lineNumber - e.lineNumber), x = [];
                for (let e = 0, t = m.length; e < t; e++) {
                    var S, k, L = m[e].lineNumber;
                    0 < e && m[e - 1].lineNumber === L || (S = m[e].oldContent, 0 !== (k = this.getLineContent(L)).length && k !== S && -1 === s.u(k) && x.push(L))
                }
            }
            return this._onDidChangeContent.fire(), new u.a(b, i, x)
        }
        _reduceOperations(e) {
            return e.length < 1e3 ? e : [this._toSingleEditOperation(e)]
        }
        _toSingleEditOperation(e) {
            let t = !1;
            var i = e[0].range,
                n = e[e.length - 1].range,
                r = new c.a(i.startLineNumber, i.startColumn, n.endLineNumber, n.endColumn);
            let o = i.startLineNumber,
                s = i.startColumn;
            const a = [];
            for (let i = 0, n = e.length; i < n; i++) {
                var l = e[i],
                    d = l.range;
                t = t || l.forceMoveMarkers, a.push(this.getValueInRange(new c.a(o, s, d.startLineNumber, d.startColumn))), 0 < l.text.length && a.push(l.text), o = d.endLineNumber, s = d.endColumn
            }
            var h = a.join(""),
                [u, n, i] = Object(oe.f)(h);
            return {
                sortIndex: 0,
                identifier: e[0].identifier,
                range: r,
                rangeOffset: this.getOffsetAt(r.startLineNumber, r.startColumn),
                rangeLength: this.getValueLengthInRange(r, 0),
                text: h,
                eolCount: u,
                firstLineLength: n,
                lastLineLength: i,
                forceMoveMarkers: t,
                isAutoWhitespaceEdit: !1
            }
        }
        _doApplyEdits(e) {
            e.sort(ae._sortOpsDescending);
            let t = [];
            for (let a = 0; a < e.length; a++) {
                var i = e[a],
                    n = i.range.startLineNumber,
                    r = i.range.startColumn,
                    o = i.range.endLineNumber,
                    s = i.range.endColumn;
                n === o && r === s && 0 === i.text.length || (i.text ? (this._pieceTree.delete(i.rangeOffset, i.rangeLength), this._pieceTree.insert(i.rangeOffset, i.text, !0)) : this._pieceTree.delete(i.rangeOffset, i.rangeLength), s = new c.a(n, r, o, s), t.push({
                    range: s,
                    rangeLength: i.rangeLength,
                    text: i.text,
                    rangeOffset: i.rangeOffset,
                    forceMoveMarkers: i.forceMoveMarkers
                }))
            }
            return t
        }
        findMatchesLineByLine(e, t, i, n) {
            return this._pieceTree.findMatchesLineByLine(e, t, i, n)
        }
        static _getInverseEditRanges(e) {
            let t = [],
                i = 0,
                n = 0,
                r = null;
            for (let a = 0, l = e.length; a < l; a++) {
                var o, s = e[a];
                let l, d, h;
                d = r ? r.range.endLineNumber === s.range.startLineNumber ? (l = i, n + (s.range.startColumn - r.range.endColumn)) : (l = i + (s.range.startLineNumber - r.range.endLineNumber), s.range.startColumn) : (l = s.range.startLineNumber, s.range.startColumn), h = 0 < s.text.length ? 1 === (o = s.eolCount + 1) ? new c.a(l, d, l, d + s.firstLineLength) : new c.a(l, d, l + o - 1, s.lastLineLength + 1) : new c.a(l, d, l, d), i = h.endLineNumber, n = h.endColumn, t.push(h), r = s
            }
            return t
        }
        static _sortOpsAscending(e, t) {
            var i = c.a.compareRangesUsingEnds(e.range, t.range);
            return 0 === i ? e.sortIndex - t.sortIndex : i
        }
        static _sortOpsDescending(e, t) {
            var i = c.a.compareRangesUsingEnds(e.range, t.range);
            return 0 === i ? t.sortIndex - e.sortIndex : -i
        }
    }
    class le {
        constructor(e, t, i, n, r, o, s, a, l) {
            this._chunks = e, this._bom = t, this._cr = i, this._lf = n, this._crlf = r, this._containsRTL = o, this._containsUnusualLineTerminators = s, this._isBasicASCII = a, this._normalizeEOL = l
        }
        _getEOL(e) {
            var t = this._cr + this._lf + this._crlf,
                i = this._cr + this._crlf;
            return 0 === t ? 1 === e ? "\n" : "\r\n" : t / 2 < i ? "\r\n" : "\n"
        }
        create(e) {
            var t = this._getEOL(e);
            let i = this._chunks;
            if (this._normalizeEOL && ("\r\n" === t && (0 < this._cr || 0 < this._lf) || "\n" === t && (0 < this._cr || 0 < this._crlf)))
                for (let e = 0, o = i.length; e < o; e++) {
                    var n = i[e].buffer.replace(/\r\n|\r|\n/g, t),
                        r = J(n);
                    i[e] = new te(n, r)
                }
            return {
                textBuffer: e = new ae(i, this._bom, t, this._containsRTL, this._containsUnusualLineTerminators, this._isBasicASCII, this._normalizeEOL),
                disposable: e
            }
        }
    }
    class de {
        constructor() {
            this.chunks = [], this.BOM = "", this._hasPreviousChar = !1, this._previousChar = 0, this._tmpLineStarts = [], this.cr = 0, this.lf = 0, this.crlf = 0, this.containsRTL = !1, this.containsUnusualLineTerminators = !1, this.isBasicASCII = !0
        }
        acceptChunk(e) {
            var t;
            0 !== e.length && (0 === this.chunks.length && s.S(e) && (this.BOM = s.b, e = e.substr(1)), 13 === (t = e.charCodeAt(e.length - 1)) || 55296 <= t && t <= 56319 ? (this._acceptChunk1(e.substr(0, e.length - 1), !1), this._hasPreviousChar = !0) : (this._acceptChunk1(e, !1), this._hasPreviousChar = !1), this._previousChar = t)
        }
        _acceptChunk1(e, t) {
            !t && 0 === e.length || (this._hasPreviousChar ? this._acceptChunk2(String.fromCharCode(this._previousChar) + e) : this._acceptChunk2(e))
        }
        _acceptChunk2(e) {
            var t = function(e, t) {
                e.length = 0;
                let i = 1,
                    n = e[0] = 0,
                    r = 0,
                    o = 0,
                    s = !0;
                for (let l = 0, d = t.length; l < d; l++) {
                    var a = t.charCodeAt(l);
                    13 === a ? l + 1 < d && 10 === t.charCodeAt(l + 1) ? (o++, e[i++] = l + 2, l++) : (n++, e[i++] = l + 1) : 10 === a ? (r++, e[i++] = l + 1) : s && 9 !== a && (a < 32 || 126 < a) && (s = !1)
                }
                var l = new Q(X(e), n, r, o, s);
                return e.length = 0, l
            }(this._tmpLineStarts, e);
            this.chunks.push(new te(e, t.lineStarts)), this.cr += t.cr, this.lf += t.lf, this.crlf += t.crlf, this.isBasicASCII && (this.isBasicASCII = t.isBasicASCII), this.isBasicASCII || this.containsRTL || (this.containsRTL = s.m(e)), this.isBasicASCII || this.containsUnusualLineTerminators || (this.containsUnusualLineTerminators = s.n(e))
        }
        finish(e = !0) {
            return this._finish(), new le(this.chunks, this.BOM, this.cr, this.lf, this.crlf, this.containsRTL, this.containsUnusualLineTerminators, this.isBasicASCII, e)
        }
        _finish() {
            if (0 === this.chunks.length && this._acceptChunk1("", !0), this._hasPreviousChar) {
                this._hasPreviousChar = !1;
                let t = this.chunks[this.chunks.length - 1];
                t.buffer += String.fromCharCode(this._previousChar);
                var e = J(t.buffer);
                t.lineStarts = e, 13 === this._previousChar && this.cr++
            }
        }
    }
    var ce = i(72),
        he = i(28),
        ue = i(85),
        pe = i(15),
        ge = i(83),
        fe = i(90),
        me = i(9);
    class ve {
        constructor() {
            this._beginState = [], this._valid = [], this._len = 0, this._invalidLineStartIndex = 0
        }
        _reset(e) {
            this._beginState = [], this._valid = [], this._len = 0, this._invalidLineStartIndex = 0, e && this._setBeginState(0, e)
        }
        flush(e) {
            this._reset(e)
        }
        get invalidLineStartIndex() {
            return this._invalidLineStartIndex
        }
        _invalidateLine(e) {
            e < this._len && (this._valid[e] = !1), e < this._invalidLineStartIndex && (this._invalidLineStartIndex = e)
        }
        _isValid(e) {
            return e < this._len && this._valid[e]
        }
        getBeginState(e) {
            return e < this._len ? this._beginState[e] : null
        }
        _ensureLine(e) {
            for (; e >= this._len;) this._beginState[this._len] = null, this._valid[this._len] = !1, this._len++
        }
        _deleteLines(e, t) {
            0 !== t && (e + t > this._len && (t = this._len - e), this._beginState.splice(e, t), this._valid.splice(e, t), this._len -= t)
        }
        _insertLines(e, t) {
            if (0 !== t) {
                const i = [],
                    n = [];
                for (let e = 0; e < t; e++) i[e] = null, n[e] = !1;
                this._beginState = he.b(this._beginState, e, i), this._valid = he.b(this._valid, e, n), this._len += t
            }
        }
        _setValid(e, t) {
            this._ensureLine(e), this._valid[e] = t
        }
        _setBeginState(e, t) {
            this._ensureLine(e), this._beginState[e] = t
        }
        setEndState(e, t, i) {
            if (this._setValid(t, !0), this._invalidLineStartIndex = t + 1, t !== e - 1) {
                var n = this.getBeginState(t + 1);
                if (null === n || !i.equals(n)) return this._setBeginState(t + 1, i), void this._invalidateLine(t + 1);
                let r = t + 1;
                for (; r < e && this._isValid(r);) r++;
                this._invalidLineStartIndex = r
            }
        }
        setFakeTokens(e) {
            this._setValid(e, !1)
        }
        applyEdits(e, t) {
            var i = e.endLineNumber - e.startLineNumber;
            for (let n = Math.min(i, t); 0 <= n; n--) this._invalidateLine(e.startLineNumber + n - 1);
            this._acceptDeleteRange(e), this._acceptInsertText(new d.a(e.startLineNumber, e.startColumn), t)
        }
        _acceptDeleteRange(e) {
            e.startLineNumber - 1 >= this._len || this._deleteLines(e.startLineNumber, e.endLineNumber - e.startLineNumber)
        }
        _acceptInsertText(e, t) {
            e.lineNumber - 1 >= this._len || this._insertLines(e.lineNumber, t)
        }
    }
    class be extends o.a {
        constructor(e, t) {
            super(), this._textModel = e, this._languageIdCodec = t, this._isDisposed = !1, this._tokenizationStateStore = new ve, this._tokenizationSupport = null, this._register(pe.A.onDidChange(e => {
                var t = this._textModel.getLanguageId(); - 1 !== e.changedLanguages.indexOf(t) && (this._resetTokenizationState(), this._textModel.clearTokens())
            })), this._register(this._textModel.onDidChangeContentFast(e => {
                if (e.isFlush) this._resetTokenizationState();
                else {
                    for (let n = 0, r = e.changes.length; n < r; n++) {
                        var t = e.changes[n],
                            [i] = Object(oe.f)(t.text);
                        this._tokenizationStateStore.applyEdits(t.range, i)
                    }
                    this._beginBackgroundTokenization()
                }
            })), this._register(this._textModel.onDidChangeAttached(() => {
                this._beginBackgroundTokenization()
            })), this._register(this._textModel.onDidChangeLanguage(() => {
                this._resetTokenizationState(), this._textModel.clearTokens()
            })), this._resetTokenizationState()
        }
        dispose() {
            this._isDisposed = !0, super.dispose()
        }
        _resetTokenizationState() {
            var [e, t] = function(e) {
                var t = e.getLanguageId();
                let i = e.isTooLargeForTokenization() ? null : pe.A.get(t),
                    r = null;
                if (i) try {
                    r = i.getInitialState()
                } catch (e) {
                    Object(n.f)(e), i = null
                }
                return [i, r]
            }(this._textModel);
            this._tokenizationSupport = e, this._tokenizationStateStore.flush(t), this._beginBackgroundTokenization()
        }
        _beginBackgroundTokenization() {
            this._textModel.isAttachedToEditor() && this._hasLinesToTokenize() && me.j(() => {
                this._isDisposed || this._revalidateTokensNow()
            })
        }
        _revalidateTokensNow() {
            var e = this._textModel.getLineCount(),
                t = new oe.b;
            const i = fe.a.create(!1);
            for (; this._hasLinesToTokenize() && !(1 < i.elapsed()) && !(e <= this._tokenizeOneInvalidLine(t)););
            this._beginBackgroundTokenization(), this._textModel.setTokens(t.tokens, !this._hasLinesToTokenize())
        }
        tokenizeViewport(e, t) {
            var i = new oe.b;
            this._tokenizeViewport(i, e, t), this._textModel.setTokens(i.tokens, !this._hasLinesToTokenize())
        }
        reset() {
            this._resetTokenizationState(), this._textModel.clearTokens()
        }
        forceTokenization(e) {
            var t = new oe.b;
            this._updateTokensUntilLine(t, e), this._textModel.setTokens(t.tokens, !this._hasLinesToTokenize())
        }
        isCheapToTokenize(e) {
            if (!this._tokenizationSupport) return !0;
            var t = this._tokenizationStateStore.invalidLineStartIndex + 1;
            return !(t < e) && (e < t || this._textModel.getLineLength(e) < 2048)
        }
        _hasLinesToTokenize() {
            return !!this._tokenizationSupport && this._tokenizationStateStore.invalidLineStartIndex < this._textModel.getLineCount()
        }
        _tokenizeOneInvalidLine(e) {
            if (!this._hasLinesToTokenize()) return this._textModel.getLineCount() + 1;
            var t = this._tokenizationStateStore.invalidLineStartIndex + 1;
            return this._updateTokensUntilLine(e, t), t
        }
        _updateTokensUntilLine(e, t) {
            if (this._tokenizationSupport) {
                var i = this._textModel.getLanguageId(),
                    n = this._textModel.getLineCount(),
                    r = t - 1;
                for (let t = this._tokenizationStateStore.invalidLineStartIndex; t <= r; t++) {
                    var o = this._textModel.getLineContent(t + 1),
                        s = this._tokenizationStateStore.getBeginState(t);
                    s = _e(this._languageIdCodec, i, this._tokenizationSupport, o, !0, s);
                    e.add(t + 1, s.tokens), this._tokenizationStateStore.setEndState(n, t, s.endState), t = this._tokenizationStateStore.invalidLineStartIndex - 1
                }
            }
        }
        _tokenizeViewport(e, t, i) {
            if (this._tokenizationSupport && !(i <= this._tokenizationStateStore.invalidLineStartIndex))
                if (t <= this._tokenizationStateStore.invalidLineStartIndex) this._updateTokensUntilLine(e, i);
                else {
                    let s = this._textModel.getLineFirstNonWhitespaceColumn(t);
                    const a = [];
                    let l = null;
                    for (let e = t - 1; 1 < s && 1 <= e; e--) {
                        var n = this._textModel.getLineFirstNonWhitespaceColumn(e);
                        if (0 !== n && n < s) {
                            if (l = this._tokenizationStateStore.getBeginState(e - 1), l) break;
                            a.push(this._textModel.getLineContent(e)), s = n
                        }
                    }
                    l = l || this._tokenizationSupport.getInitialState();
                    var r = this._textModel.getLanguageId();
                    let d = l;
                    for (let e = a.length - 1; 0 <= e; e--) {
                        d = _e(this._languageIdCodec, r, this._tokenizationSupport, a[e], !1, d).endState
                    }
                    for (let n = t; n <= i; n++) {
                        var o = this._textModel.getLineContent(n);
                        o = _e(this._languageIdCodec, r, this._tokenizationSupport, o, !0, d);
                        e.add(n, o.tokens), this._tokenizationStateStore.setFakeTokens(n - 1), d = o.endState
                    }
                }
        }
    }

    function _e(e, t, i, r, o, s) {
        let a = null;
        if (i) try {
            a = i.tokenize2(r, o, s.clone(), 0)
        } catch (e) {
            Object(n.f)(e)
        }
        return a = a || Object(ge.d)(e.encodeLanguageId(t), r, s, 0), ue.a.convertToEndOffset(a.tokens, r.length), a
    }
    var we = i(93),
        ye = i(57),
        Ce = i(96),
        xe = i(102),
        Se = i(11),
        ke = i(101);
    class Le {
        constructor(e, t, i) {
            this.range = e, this.nestingLevel = t, this.isInvalid = i
        }
    }
    class Oe extends class {
        constructor(e, t, i, n) {
            this.range = e, this.openingBracketRange = t, this.closingBracketRange = i, this.nestingLevel = n
        }
    } {
        constructor(e, t, i, n, r) {
            super(e, t, i, n), this.minVisibleColumnIndentation = r
        }
    }
    class Ee {
        constructor(e, t) {
            this.lineCount = e, this.columnCount = t
        }
        toString() {
            return `${this.lineCount},${this.columnCount}`
        }
    }
    const Ne = Math.pow(2, 26);

    function De(e, t) {
        return e * Ne + t
    }

    function Ie(e) {
        var t = e;
        e = Math.floor(t / Ne);
        return new Ee(e, t = t - e * Ne)
    }

    function Te(e, t) {
        return t < Ne ? e + t : e - e % Ne + t
    }

    function Me(e) {
        return De(e.lineNumber - 1, e.column - 1)
    }

    function Pe(e, t) {
        var i = e,
            n = Math.floor(i / Ne);
        e = i - n * Ne, i = (i = t) - (t = Math.floor(i / Ne)) * Ne;
        return new c.a(n + 1, 1 + e, t + 1, 1 + i)
    }
    class Ae {
        constructor(e, t, i) {
            this.startOffset = e, this.endOffset = t, this.newLength = i
        }
    }
    class Re {
        constructor(e, t) {
            this.documentLength = t, this.nextEditIdx = 0, this.deltaOldToNewLineCount = 0, this.deltaOldToNewColumnCount = 0, this.deltaLineIdxInOld = -1, this.edits = e.map(e => Fe.from(e))
        }
        getOffsetBeforeChange(e) {
            return this.adjustNextEdit(e), this.translateCurToOld(e)
        }
        getDistanceToNextChange(e) {
            this.adjustNextEdit(e);
            var t, i = this.edits[this.nextEditIdx],
                n = i ? this.translateOldToCur(i.offsetObj) : this.documentLength;
            return (i = t = n) - (e = n = e) <= 0 ? 0 : (n = Math.floor(e / Ne), i -= (t = Math.floor(i / Ne)) * Ne, n !== t ? De(t - n, i) : De(0, i - (e - n * Ne)))
        }
        translateOldToCur(e) {
            return e.lineCount === this.deltaLineIdxInOld ? De(e.lineCount + this.deltaOldToNewLineCount, e.columnCount + this.deltaOldToNewColumnCount) : De(e.lineCount + this.deltaOldToNewLineCount, e.columnCount)
        }
        translateCurToOld(e) {
            return (e = Ie(e)).lineCount - this.deltaOldToNewLineCount === this.deltaLineIdxInOld ? De(e.lineCount - this.deltaOldToNewLineCount, e.columnCount - this.deltaOldToNewColumnCount) : De(e.lineCount - this.deltaOldToNewLineCount, e.columnCount)
        }
        adjustNextEdit(e) {
            for (; this.nextEditIdx < this.edits.length;) {
                var t = this.edits[this.nextEditIdx];
                if (!((r = this.translateOldToCur(t.endOffsetAfterObj)) <= e)) break;
                this.nextEditIdx++;
                var i = Ie(r),
                    n = Ie(this.translateOldToCur(t.endOffsetBeforeObj)),
                    r = i.lineCount - n.lineCount;
                this.deltaOldToNewLineCount += r, r = this.deltaLineIdxInOld === t.endOffsetBeforeObj.lineCount ? this.deltaOldToNewColumnCount : 0, n = i.columnCount - n.columnCount, this.deltaOldToNewColumnCount = r + n, this.deltaLineIdxInOld = t.endOffsetBeforeObj.lineCount
            }
        }
    }
    class Fe {
        constructor(e, t, i) {
            this.endOffsetBeforeObj = Ie(t), this.endOffsetAfterObj = Ie(Te(e, i)), this.offsetObj = Ie(e)
        }
        static from(e) {
            return new Fe(e.startOffset, e.endOffset, e.newLength)
        }
    }
    var je = i(144);
    const Be = new Array;
    class Ve {
        constructor(e, t) {
            this.items = e, this.additionalItems = t
        }
        static create(e, t) {
            if (e <= 128 && 0 === t.length) {
                let i = Ve.cache[e];
                return i || (i = new Ve(e, t), Ve.cache[e] = i), i
            }
            return new Ve(e, t)
        }
        static getEmpty() {
            return this.empty
        }
        add(e, t) {
            var i = (t = t.getKey(e)) >> 5;
            if (0 == i) return (e = 1 << t | this.items) === this.items ? this : Ve.create(e, this.additionalItems);
            i--;
            const n = this.additionalItems.slice(0);
            for (; n.length < i;) n.push(0);
            return n[i] |= 1 << (31 & t), Ve.create(this.items, n)
        }
        merge(e) {
            var t = this.items | e.items;
            if (this.additionalItems === Be && e.additionalItems === Be) return t === this.items ? this : t === e.items ? e : Ve.create(t, Be);
            const i = new Array;
            for (let t = 0; t < Math.max(this.additionalItems.length, e.additionalItems.length); t++) {
                var n = this.additionalItems[t] || 0,
                    r = e.additionalItems[t] || 0;
                i.push(n | r)
            }
            return Ve.create(t, i)
        }
        intersects(e) {
            if (0 != (this.items & e.items)) return !0;
            for (let t = 0; t < Math.min(this.additionalItems.length, e.additionalItems.length); t++)
                if (0 != (this.additionalItems[t] & e.additionalItems[t])) return !0;
            return !1
        }
    }
    Ve.cache = new Array(129), Ve.empty = Ve.create(0, Be);
    const We = {
        getKey: e => e
    };
    class ze {
        constructor() {
            this.items = new Map
        }
        getKey(e) {
            let t = this.items.get(e);
            return void 0 === t && (t = this.items.size, this.items.set(e, t)), t
        }
    }
    class He {
        constructor(e) {
            this._length = e
        }
        get length() {
            return this._length
        }
    }
    class Ue extends He {
        constructor(e, t, i, n, r) {
            super(e), this.openingBracket = t, this.child = i, this.closingBracket = n, this.missingOpeningBracketIds = r
        }
        static create(e, t, i) {
            let n = e.length;
            return t && (n = Te(n, t.length)), i && (n = Te(n, i.length)), new Ue(n, e, t, i, t ? t.missingOpeningBracketIds : Ve.getEmpty())
        }
        get kind() {
            return 2
        }
        get listHeight() {
            return 0
        }
        get childrenLength() {
            return 3
        }
        getChild(e) {
            switch (e) {
                case 0:
                    return this.openingBracket;
                case 1:
                    return this.child;
                case 2:
                    return this.closingBracket
            }
            throw new Error("Invalid child index")
        }
        get children() {
            const e = new Array;
            return e.push(this.openingBracket), this.child && e.push(this.child), this.closingBracket && e.push(this.closingBracket), e
        }
        canBeReused(e) {
            return null !== this.closingBracket && !e.intersects(this.missingOpeningBracketIds)
        }
        deepClone() {
            return new Ue(this.length, this.openingBracket.deepClone(), this.child && this.child.deepClone(), this.closingBracket && this.closingBracket.deepClone(), this.missingOpeningBracketIds)
        }
        computeMinIndentation(e, t) {
            return this.child ? this.child.computeMinIndentation(Te(e, this.openingBracket.length), t) : Number.MAX_SAFE_INTEGER
        }
    }
    class Ke extends He {
        constructor(e, t, i) {
            super(e), this.listHeight = t, this._missingOpeningBracketIds = i, this.cachedMinIndentation = -1
        }
        static create23(e, t, i, n = !1) {
            let r = e.length,
                o = e.missingOpeningBracketIds;
            if (e.listHeight !== t.listHeight) throw new Error("Invalid list heights");
            if (r = Te(r, t.length), o = o.merge(t.missingOpeningBracketIds), i) {
                if (e.listHeight !== i.listHeight) throw new Error("Invalid list heights");
                r = Te(r, i.length), o = o.merge(i.missingOpeningBracketIds)
            }
            return new(n ? qe : $e)(r, e.listHeight + 1, e, t, i, o)
        }
        static getEmpty() {
            return new Ye(0, 0, [], Ve.getEmpty())
        }
        get kind() {
            return 4
        }
        get missingOpeningBracketIds() {
            return this._missingOpeningBracketIds
        }
        throwIfImmutable() {}
        makeLastElementMutable() {
            this.throwIfImmutable();
            var e = this.childrenLength;
            if (0 !== e) {
                const i = this.getChild(e - 1);
                var t = 4 === i.kind ? i.toMutable() : i;
                return i !== t && this.setChild(e - 1, t), t
            }
        }
        makeFirstElementMutable() {
            if (this.throwIfImmutable(), 0 !== this.childrenLength) {
                const t = this.getChild(0);
                var e = 4 === t.kind ? t.toMutable() : t;
                return t !== e && this.setChild(0, e), e
            }
        }
        canBeReused(e) {
            if (e.intersects(this.missingOpeningBracketIds)) return !1;
            let t, i = this;
            for (; 4 === i.kind && 0 < (t = i.childrenLength);) i = i.getChild(t - 1);
            return i.canBeReused(e)
        }
        handleChildrenChanged() {
            this.throwIfImmutable();
            var e = this.childrenLength;
            let t = this.getChild(0).length,
                i = this.getChild(0).missingOpeningBracketIds;
            for (let r = 1; r < e; r++) {
                var n = this.getChild(r);
                t = Te(t, n.length), i = i.merge(n.missingOpeningBracketIds)
            }
            this._length = t, this._missingOpeningBracketIds = i, this.cachedMinIndentation = -1
        }
        computeMinIndentation(e, t) {
            if (-1 !== this.cachedMinIndentation) return this.cachedMinIndentation;
            let i = Number.MAX_SAFE_INTEGER,
                n = e;
            for (let e = 0; e < this.childrenLength; e++) {
                const r = this.getChild(e);
                r && (i = Math.min(i, r.computeMinIndentation(n, t)), n = Te(n, r.length))
            }
            return this.cachedMinIndentation = i, i
        }
    }
    class $e extends Ke {
        constructor(e, t, i, n, r, o) {
            super(e, t, o), this._item1 = i, this._item2 = n, this._item3 = r
        }
        get childrenLength() {
            return null !== this._item3 ? 3 : 2
        }
        getChild(e) {
            switch (e) {
                case 0:
                    return this._item1;
                case 1:
                    return this._item2;
                case 2:
                    return this._item3
            }
            throw new Error("Invalid child index")
        }
        setChild(e, t) {
            switch (e) {
                case 0:
                    return void(this._item1 = t);
                case 1:
                    return void(this._item2 = t);
                case 2:
                    return void(this._item3 = t)
            }
            throw new Error("Invalid child index")
        }
        get children() {
            return this._item3 ? [this._item1, this._item2, this._item3] : [this._item1, this._item2]
        }
        get item1() {
            return this._item1
        }
        get item2() {
            return this._item2
        }
        get item3() {
            return this._item3
        }
        deepClone() {
            return new $e(this.length, this.listHeight, this._item1.deepClone(), this._item2.deepClone(), this._item3 ? this._item3.deepClone() : null, this.missingOpeningBracketIds)
        }
        appendChildOfSameHeight(e) {
            if (this._item3) throw new Error("Cannot append to a full (2,3) tree node");
            this.throwIfImmutable(), this._item3 = e, this.handleChildrenChanged()
        }
        unappendChild() {
            if (!this._item3) throw new Error("Cannot remove from a non-full (2,3) tree node");
            this.throwIfImmutable();
            var e = this._item3;
            return this._item3 = null, this.handleChildrenChanged(), e
        }
        prependChildOfSameHeight(e) {
            if (this._item3) throw new Error("Cannot prepend to a full (2,3) tree node");
            this.throwIfImmutable(), this._item3 = this._item2, this._item2 = this._item1, this._item1 = e, this.handleChildrenChanged()
        }
        unprependChild() {
            if (!this._item3) throw new Error("Cannot remove from a non-full (2,3) tree node");
            this.throwIfImmutable();
            var e = this._item1;
            return this._item1 = this._item2, this._item2 = this._item3, this._item3 = null, this.handleChildrenChanged(), e
        }
        toMutable() {
            return this
        }
    }
    class qe extends $e {
        toMutable() {
            return new $e(this.length, this.listHeight, this.item1, this.item2, this.item3, this.missingOpeningBracketIds)
        }
        throwIfImmutable() {
            throw new Error("this instance is immutable")
        }
    }
    class Ge extends Ke {
        constructor(e, t, i, n) {
            super(e, t, n), this._children = i
        }
        get childrenLength() {
            return this._children.length
        }
        getChild(e) {
            return this._children[e]
        }
        setChild(e, t) {
            this._children[e] = t
        }
        get children() {
            return this._children
        }
        deepClone() {
            const e = new Array(this._children.length);
            for (let t = 0; t < this._children.length; t++) e[t] = this._children[t].deepClone();
            return new Ge(this.length, this.listHeight, e, this.missingOpeningBracketIds)
        }
        appendChildOfSameHeight(e) {
            this.throwIfImmutable(), this._children.push(e), this.handleChildrenChanged()
        }
        unappendChild() {
            this.throwIfImmutable();
            var e = this._children.pop();
            return this.handleChildrenChanged(), e
        }
        prependChildOfSameHeight(e) {
            this.throwIfImmutable(), this._children.unshift(e), this.handleChildrenChanged()
        }
        unprependChild() {
            this.throwIfImmutable();
            var e = this._children.shift();
            return this.handleChildrenChanged(), e
        }
        toMutable() {
            return this
        }
    }
    class Ye extends Ge {
        toMutable() {
            return new Ge(this.length, this.listHeight, [...this.children], this.missingOpeningBracketIds)
        }
        throwIfImmutable() {
            throw new Error("this instance is immutable")
        }
    }
    const Ze = [];
    class Xe extends He {
        get listHeight() {
            return 0
        }
        get childrenLength() {
            return 0
        }
        getChild(e) {
            return null
        }
        get children() {
            return Ze
        }
        deepClone() {
            return this
        }
    }
    class Qe extends Xe {
        get kind() {
            return 0
        }
        get missingOpeningBracketIds() {
            return Ve.getEmpty()
        }
        canBeReused(e) {
            return !0
        }
        computeMinIndentation(e, t) {
            var i = (0 === (i = Ie(e)).columnCount ? i.lineCount : i.lineCount + 1) + 1,
                n = (e = Te(e, this.length), Math.floor(e / Ne) + 1);
            let r = Number.MAX_SAFE_INTEGER;
            for (let e = i; e <= n; e++) {
                var o = t.getLineFirstNonWhitespaceColumn(e),
                    s = t.getLineContent(e);
                0 !== o && (o = je.a.visibleColumnFromColumn(s, o, t.getOptions().tabSize), r = Math.min(r, o))
            }
            return r
        }
    }
    class Je extends Xe {
        constructor(e) {
            super(e)
        }
        static create(e) {
            var t = e,
                i = Je.cacheByLength.get(t);
            return i || (e = new Je(e), Je.cacheByLength.set(t, e), e)
        }
        get kind() {
            return 1
        }
        get missingOpeningBracketIds() {
            return Ve.getEmpty()
        }
        canBeReused(e) {
            return !1
        }
        computeMinIndentation(e, t) {
            return Number.MAX_SAFE_INTEGER
        }
    }
    Je.cacheByLength = new Map;
    class et extends Xe {
        constructor(e, t) {
            super(t), this.missingOpeningBracketIds = e
        }
        get kind() {
            return 3
        }
        canBeReused(e) {
            return !e.intersects(this.missingOpeningBracketIds)
        }
        computeMinIndentation(e, t) {
            return Number.MAX_SAFE_INTEGER
        }
    }
    class tt {
        constructor(e, t, i, n, r) {
            this.length = e, this.kind = t, this.bracketId = i, this.bracketIds = n, this.astNode = r
        }
    }
    class it {
        constructor(e, t) {
            this.textModel = e, this.bracketTokens = t, this.reader = new nt(this.textModel, this.bracketTokens), this._offset = 0, this.didPeek = !1, this.peeked = null, this.textBufferLineCount = e.getLineCount(), this.textBufferLastLineLength = e.getLineLength(this.textBufferLineCount)
        }
        get offset() {
            return this._offset
        }
        get length() {
            return De(this.textBufferLineCount, this.textBufferLastLineLength)
        }
        skip(e) {
            this.didPeek = !1, this._offset = Te(this._offset, e), e = Ie(this._offset), this.reader.setPosition(e.lineCount, e.columnCount)
        }
        read() {
            let e;
            return e = this.peeked ? (this.didPeek = !1, this.peeked) : this.reader.read(), e && (this._offset = Te(this._offset, e.length)), e
        }
        peek() {
            return this.didPeek || (this.peeked = this.reader.read(), this.didPeek = !0), this.peeked
        }
    }
    class nt {
        constructor(e, t) {
            this.textModel = e, this.bracketTokens = t, this.lineIdx = 0, this.line = null, this.lineCharOffset = 0, this.lineTokens = null, this.lineTokenOffset = 0, this.peekedToken = null, this.textBufferLineCount = e.getLineCount(), this.textBufferLastLineLength = e.getLineLength(this.textBufferLineCount)
        }
        setPosition(e, t) {
            e === this.lineIdx ? (this.lineCharOffset = t, this.lineTokenOffset = 0 === this.lineCharOffset ? 0 : this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset)) : (this.lineIdx = e, this.lineCharOffset = t, this.line = null), this.peekedToken = null
        }
        read() {
            if (this.peekedToken) {
                var e = this.peekedToken;
                return this.peekedToken = null, this.lineCharOffset += e.length, e
            }
            if (this.lineIdx > this.textBufferLineCount - 1 || this.lineIdx === this.textBufferLineCount - 1 && this.lineCharOffset >= this.textBufferLastLineLength) return null;
            null === this.line && (this.lineTokens = this.textModel.getLineTokens(this.lineIdx + 1), this.line = this.lineTokens.getLineContent(), this.lineTokenOffset = 0 === this.lineCharOffset ? 0 : this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));
            var t = this.lineIdx,
                i = this.lineCharOffset;
            let n = 0;
            for (;;) {
                const e = this.lineTokens;
                var r = e.getCount();
                let d = null;
                if (this.lineTokenOffset < r) {
                    for (var o = e.getMetadata(this.lineTokenOffset); this.lineTokenOffset + 1 < r && o === e.getMetadata(this.lineTokenOffset + 1);) this.lineTokenOffset++;
                    var s = 0 === pe.z.getTokenType(o),
                        a = e.getEndOffset(this.lineTokenOffset);
                    if (s && a !== this.lineCharOffset) {
                        var l = e.getLanguageId(this.lineTokenOffset);
                        s = this.line.substring(this.lineCharOffset, a);
                        const t = this.bracketTokens.getSingleLanguageBracketTokens(l),
                            i = t.regExpGlobal;
                        i && (i.lastIndex = 0, (s = i.exec(s)) && (d = t.getToken(s[0]), d && (this.lineCharOffset += s.index)))
                    }
                    if (n += a - this.lineCharOffset, d) {
                        if (t === this.lineIdx && i === this.lineCharOffset) return this.lineCharOffset += d.length, d;
                        this.peekedToken = d;
                        break
                    }
                    this.lineTokenOffset++, this.lineCharOffset = a
                } else {
                    if (this.lineIdx === this.textBufferLineCount - 1) break;
                    if (this.lineIdx++, this.lineTokens = this.textModel.getLineTokens(this.lineIdx + 1), this.lineTokenOffset = 0, this.line = this.lineTokens.getLineContent(), this.lineCharOffset = 0, n += 33, 1e3 < n) break
                }
                if (1500 < n) break
            }
            var d, c, h = (d = t, h = i, c = this.lineIdx, e = this.lineCharOffset, d !== c ? De(c - d, e) : De(0, e - h));
            return new tt(h, 0, -1, Ve.getEmpty(), new Qe(h))
        }
    }
    class rt {
        constructor(e, t) {
            this.text = e, this._offset = 0, this.idx = 0;
            const i = t.getRegExpStr() ? new RegExp(t.getRegExpStr() + "|\n", "g") : null,
                n = [];
            let r = 0,
                o = 0,
                s = 0,
                a = 0;
            const l = new Array;
            for (let e = 0; e < 60; e++) l.push(new tt(De(0, e), 0, -1, Ve.getEmpty(), new Qe(De(0, e))));
            const d = new Array;
            for (let e = 0; e < 60; e++) d.push(new tt(De(1, e), 0, -1, Ve.getEmpty(), new Qe(De(1, e))));
            if (i)
                for (i.lastIndex = 0; null !== (p = i.exec(e));) {
                    var c, h, u = p.index,
                        p = p[0];
                    if ("\n" === p) r++, o = u + 1;
                    else {
                        if (s !== u) {
                            let e;
                            e = a === r ? (c = u - s) < l.length ? l[c] : (h = De(0, c), new tt(h, 0, -1, Ve.getEmpty(), new Qe(h))) : (h = u - o, 1 == (c = r - a) && h < d.length ? d[h] : (h = De(c, h), new tt(h, 0, -1, Ve.getEmpty(), new Qe(h)))), n.push(e)
                        }
                        n.push(t.getToken(p)), s = u + p.length, a = r
                    }
                }
            var g, f = e.length;
            s !== f && (g = a === r ? De(0, f - s) : De(r - a, f - o), n.push(new tt(g, 0, -1, Ve.getEmpty(), new Qe(g)))), this.length = De(r, f - o), this.tokens = n
        }
        get offset() {
            return this._offset
        }
        read() {
            return this.tokens[this.idx++] || null
        }
        peek() {
            return this.tokens[this.idx] || null
        }
        skip(e) {
            throw new n.a
        }
    }
    class ot {
        constructor(e) {
            this.map = e, this.hasRegExp = !1, this._regExpGlobal = null
        }
        static createFromLanguage(e, t) {
            function i(e, i) {
                return t.getKey(`${e}:::${i}`)
            }
            var n, r, o, s, a = e.characterPair.getColorizedBrackets();
            const l = new Map,
                d = new Set;
            for ([n, r] of a) {
                d.add(n);
                let t = l.get(r);
                var c = i(e.languageId, n);
                t || (t = {
                    openingBrackets: Ve.getEmpty(),
                    first: c
                }, l.set(r, t)), t.openingBrackets = t.openingBrackets.add(c, We)
            }
            const h = new Map;
            for ([o, s] of l) {
                var u = De(0, o.length);
                h.set(o, new tt(u, 2, s.first, s.openingBrackets, Je.create(u)))
            }
            for (const t of d) {
                var p = De(0, t.length),
                    g = i(e.languageId, t);
                h.set(t, new tt(p, 1, g, Ve.getEmpty().add(g, We), Je.create(p)))
            }
            return new ot(h)
        }
        getRegExpStr() {
            if (this.isEmpty) return null; {
                const e = [...this.map.keys()];
                return e.sort(), e.reverse(), e.map(e => function(e) {
                    var t = Object(s.t)(e);
                    return (e = /^[\w ]+$/.test(e)) ? `\\b${t}\\b` : t
                }(e)).join("|")
            }
        }
        get regExpGlobal() {
            var e;
            return this.hasRegExp || (e = this.getRegExpStr(), this._regExpGlobal = e ? new RegExp(e, "g") : null, this.hasRegExp = !0), this._regExpGlobal
        }
        getToken(e) {
            return this.map.get(e)
        }
        get isEmpty() {
            return 0 === this.map.size
        }
    }
    class st {
        constructor(e, t) {
            this.denseKeyProvider = e, this.getLanguage配置 = t, this.languageIdToBracketTokens = new Map
        }
        didLanguageChange(e) {
            const t = this.languageIdToBracketTokens.get(e);
            return !!t && (e = ot.createFromLanguage(this.getLanguage配置(e), this.denseKeyProvider).getRegExpStr(), t.getRegExpStr() !== e)
        }
        getSingleLanguageBracketTokens(e) {
            let t = this.languageIdToBracketTokens.get(e);
            return t || (t = ot.createFromLanguage(this.getLanguage配置(e), this.denseKeyProvider), this.languageIdToBracketTokens.set(e, t)), t
        }
    }

    function at(e, t = !1) {
        if (0 === e.length) return null;
        if (1 === e.length) return e[0];
        let i = e.length;
        for (; 3 < i;) {
            var n = i >> 1;
            for (let o = 0; o < n; o++) {
                var r = o << 1;
                e[o] = Ke.create23(e[r], e[1 + r], 3 + r === i ? e[2 + r] : null, t)
            }
            i = n
        }
        return Ke.create23(e[0], e[1], 3 <= i ? e[2] : null, t)
    }

    function lt(e, t) {
        return Math.abs(e.listHeight - t.listHeight)
    }

    function dt(e, t) {
        return e.listHeight === t.listHeight ? Ke.create23(e, t, null, !1) : e.listHeight > t.listHeight ? function(e, t) {
            let i = e = e.toMutable();
            const n = new Array;
            let r;
            for (;;) {
                if (t.listHeight === i.listHeight) {
                    r = t;
                    break
                }
                if (4 !== i.kind) throw new Error("unexpected");
                n.push(i), i = i.makeLastElementMutable()
            }
            for (let e = n.length - 1; 0 <= e; e--) {
                const t = n[e];
                r ? r = 3 <= t.childrenLength ? Ke.create23(t.unappendChild(), r, null, !1) : void t.appendChildOfSameHeight(r) : t.handleChildrenChanged()
            }
            return r ? Ke.create23(e, r, null, !1) : e
        }(e, t) : function(e, t) {
            let i = e = e.toMutable();
            const n = new Array;
            for (; t.listHeight !== i.listHeight;) {
                if (4 !== i.kind) throw new Error("unexpected");
                n.push(i), i = i.makeFirstElementMutable()
            }
            let r = t;
            for (let e = n.length - 1; 0 <= e; e--) {
                const t = n[e];
                r ? r = 3 <= t.childrenLength ? Ke.create23(r, t.unprependChild(), null, !1) : void t.prependChildOfSameHeight(r) : t.handleChildrenChanged()
            }
            return r ? Ke.create23(r, e, null, !1) : e
        }(t, e)
    }
    class ct {
        constructor(e) {
            this.lastOffset = 0, this.nextNodes = [e], this.offsets = [0], this.idxs = []
        }
        readLongestNodeAt(e, t) {
            if (e < this.lastOffset) throw new Error("Invalid offset");
            for (this.lastOffset = e;;) {
                const o = ut(this.nextNodes);
                if (!o) return;
                var i, n = ut(this.offsets);
                if (e < n) return;
                if (n < e) Te(n, o.length) <= e || -1 === (i = ht(o)) ? this.nextNodeAfterCurrent() : (this.nextNodes.push(o.getChild(i)), this.offsets.push(n), this.idxs.push(i));
                else {
                    if (t(o)) return this.nextNodeAfterCurrent(), o;
                    var r = ht(o);
                    if (-1 === r) return void this.nextNodeAfterCurrent();
                    this.nextNodes.push(o.getChild(r)), this.offsets.push(n), this.idxs.push(r)
                }
            }
        }
        nextNodeAfterCurrent() {
            for (;;) {
                var e = ut(this.offsets),
                    t = ut(this.nextNodes);
                if (this.nextNodes.pop(), this.offsets.pop(), 0 === this.idxs.length) break;
                const n = ut(this.nextNodes);
                var i = ht(n, this.idxs[this.idxs.length - 1]);
                if (-1 !== i) {
                    this.nextNodes.push(n.getChild(i)), this.offsets.push(Te(e, t.length)), this.idxs[this.idxs.length - 1] = i;
                    break
                }
                this.idxs.pop()
            }
        }
    }

    function ht(e, t = -1) {
        for (;;) {
            if (++t >= e.childrenLength) return -1;
            if (e.getChild(t)) return t
        }
    }

    function ut(e) {
        return 0 < e.length ? e[e.length - 1] : void 0
    }

    function pt(e, t, i, n) {
        return new gt(e, t, i, n).parseDocument()
    }
    class gt {
        constructor(e, t, i, n) {
            if (this.tokenizer = e, this.createImmutableLists = n, this._itemsConstructed = 0, this._itemsFromCache = 0, i && n) throw new Error("Not supported");
            this.oldNodeReader = i ? new ct(i) : void 0, this.positionMapper = new Re(t, e.length)
        }
        parseDocument() {
            this._itemsConstructed = 0, this._itemsFromCache = 0;
            let e = this.parseList(Ve.getEmpty());
            return e = e || Ke.getEmpty(), e
        }
        parseList(e) {
            const t = new Array;
            for (;;) {
                const n = this.tokenizer.peek();
                if (!n || 2 === n.kind && n.bracketIds.intersects(e)) break;
                var i = this.parseChild(e);
                4 === i.kind && 0 === i.childrenLength || t.push(i)
            }
            return this.oldNodeReader ? function(e) {
                if (0 === e.length) return null;
                if (1 === e.length) return e[0];
                let t = 0;

                function i() {
                    if (t >= e.length) return null;
                    var i = t,
                        n = e[i].listHeight;
                    for (t++; t < e.length && e[t].listHeight === n;) t++;
                    return 2 <= t - i ? at(0 === i && t === e.length ? e : e.slice(i, t), !1) : e[i]
                }
                let n = i(),
                    r = i();
                if (!r) return n;
                for (let e = i(); e; e = i()) r = lt(n, r) <= lt(r, e) ? (n = dt(n, r), e) : dt(r, e);
                return dt(n, r)
            }(t) : at(t, this.createImmutableLists)
        }
        parseChild(e) {
            if (this.oldNodeReader) {
                const i = this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);
                if (0 !== i) {
                    var t = this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset), t => t.length < i && t.canBeReused(e));
                    if (t) return this._itemsFromCache++, this.tokenizer.skip(t.length), t
                }
            }
            this._itemsConstructed++;
            var i = this.tokenizer.read();
            switch (i.kind) {
                case 2:
                    return new et(i.bracketIds, i.length);
                case 0:
                    return i.astNode;
                case 1:
                    var n = e.merge(i.bracketIds);
                    n = this.parseList(n);
                    const t = this.tokenizer.peek();
                    return t && 2 === t.kind && (t.bracketId === i.bracketId || t.bracketIds.intersects(i.bracketIds)) ? (this.tokenizer.read(), Ue.create(i.astNode, n, t.astNode)) : Ue.create(i.astNode, n, null);
                default:
                    throw new Error("unexpected")
            }
        }
    }
    class ft extends o.a {
        constructor(e, t) {
            super(), this.textModel = e, this.language配置Service = t, this.cache = this._register(new o.d), this.onDidChangeEmitter = new r.b, this.onDidChange = this.onDidChangeEmitter.event, this.bracketsRequested = !1, this._register(e.onDidChangeOptions(e => {
                this.cache.clear(), this.updateCache()
            })), this._register(e.onDidChangeLanguage(e => {
                this.cache.clear(), this.updateCache()
            })), this._register(this.language配置Service.onDidChange(e => {
                var t;
                (!e.languageId || null !== (t = this.cache.value) && void 0 !== t && t.object.didLanguageChange(e.languageId)) && (this.cache.clear(), this.updateCache())
            }))
        }
        get isDocumentSupported() {
            return this.textModel.getValueLength() <= 5e6
        }
        updateCache() {
            if (this.bracketsRequested && this.isDocumentSupported) {
                if (!this.cache.value) {
                    const i = new o.b;
                    this.cache.value = (e = i.add(new mt(this.textModel, e => this.language配置Service.getLanguage配置(e))), t = i, {
                        object: e,
                        dispose: () => null == t ? void 0 : t.dispose()
                    }), i.add(this.cache.value.object.onDidChange(e => this.onDidChangeEmitter.fire(e))), this.onDidChangeEmitter.fire()
                }
            } else this.cache.clear(), this.onDidChangeEmitter.fire();
            var e, t
        }
        handleContentChanged(e) {
            var t;
            null !== (t = this.cache.value) && void 0 !== t && t.object.handleContentChanged(e)
        }
        getBracketPairsInRange(e) {
            var t;
            return this.bracketsRequested = !0, this.updateCache(), (null === (t = this.cache.value) || void 0 === t ? void 0 : t.object.getBracketPairsInRange(e, !1)) || []
        }
        getBracketPairsInRangeWithMinIndentation(e) {
            var t;
            return this.bracketsRequested = !0, this.updateCache(), (null === (t = this.cache.value) || void 0 === t ? void 0 : t.object.getBracketPairsInRange(e, !0)) || []
        }
        getBracketsInRange(e) {
            var t;
            return this.bracketsRequested = !0, this.updateCache(), (null === (t = this.cache.value) || void 0 === t ? void 0 : t.object.getBracketsInRange(e)) || []
        }
    }
    class mt extends o.a {
        constructor(e, t) {
            super(), this.textModel = e, this.getLanguage配置 = t, this.didChangeEmitter = new r.b, this.denseKeyProvider = new ze, this.brackets = new st(this.denseKeyProvider, this.getLanguage配置), this.onDidChange = this.didChangeEmitter.event, this._register(e.onBackgroundTokenizationStateChanged(() => {
                var t;
                2 === e.backgroundTokenizationState && (t = void 0 === this.initialAstWithoutTokens, this.initialAstWithoutTokens = void 0, t || this.didChangeEmitter.fire())
            })), this._register(e.onDidChangeTokens(({
                ranges: e
            }) => {
                e = e.map(e => new Ae(De(e.fromLineNumber - 1, 0), De(e.toLineNumber, 0), De(e.toLineNumber - e.fromLineNumber + 1, 0))), this.astWithTokens = this.parseDocumentFromTextBuffer(e, this.astWithTokens, !1), this.initialAstWithoutTokens || this.didChangeEmitter.fire()
            })), 0 === e.backgroundTokenizationState ? (t = this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()), t = new rt(this.textModel.getValue(), t), this.initialAstWithoutTokens = pt(t, [], void 0, !0), this.astWithTokens = this.initialAstWithoutTokens) : 2 === e.backgroundTokenizationState ? (this.initialAstWithoutTokens = void 0, this.astWithTokens = this.parseDocumentFromTextBuffer([], void 0, !1)) : 1 === e.backgroundTokenizationState && (this.initialAstWithoutTokens = this.parseDocumentFromTextBuffer([], void 0, !0), this.astWithTokens = this.initialAstWithoutTokens)
        }
        didLanguageChange(e) {
            return this.brackets.didLanguageChange(e)
        }
        handleContentChanged(e) {
            e = e.changes.map(e => {
                const t = c.a.lift(e.range);
                return new Ae(Me(t.getStartPosition()), Me(t.getEndPosition()), (e = e.text, De((e = Object(s.Q)(e)).length - 1, e[e.length - 1].length)))
            }).reverse(), this.astWithTokens = this.parseDocumentFromTextBuffer(e, this.astWithTokens, !1), this.initialAstWithoutTokens && (this.initialAstWithoutTokens = this.parseDocumentFromTextBuffer(e, this.initialAstWithoutTokens, !1))
        }
        parseDocumentFromTextBuffer(e, t, i) {
            return pt(new it(this.textModel, this.brackets), e, t, i)
        }
        getBracketsInRange(e) {
            var t = De(e.startLineNumber - 1, e.startColumn - 1),
                i = De(e.endLineNumber - 1, e.endColumn - 1),
                n = new Array;
            return function e(t, i, n, r, o, s, a = 0) {
                if (1 === t.kind) {
                    const e = Pe(i, n);
                    s.push(new Le(e, a - 1, !1))
                } else if (3 === t.kind) {
                    const e = Pe(i, n);
                    s.push(new Le(e, a - 1, !0))
                } else if (4 === t.kind)
                    for (const l of t.children) n = Te(i, l.length), i <= o && r <= n && e(l, i, n, r, o, s, a), i = n;
                else if (2 === t.kind) {
                    a++; {
                        const l = t.openingBracket;
                        n = Te(i, l.length), i <= o && r <= n && e(l, i, n, r, o, s, a), i = n
                    }
                    if (t.child) {
                        const l = t.child;
                        n = Te(i, l.length), i <= o && r <= n && e(l, i, n, r, o, s, a), i = n
                    }
                    if (t.closingBracket) {
                        const l = t.closingBracket;
                        n = Te(i, l.length), i <= o && r <= n && e(l, i, n, r, o, s, a), i = n
                    }
                }
            }(e = this.initialAstWithoutTokens || this.astWithTokens, 0, e.length, t, i, n), n
        }
        getBracketPairsInRange(e, t) {
            var i = new Array,
                n = Me(e.getStartPosition()),
                r = Me(e.getEndPosition());
            e = this.initialAstWithoutTokens || this.astWithTokens, t = new vt(i, t, this.textModel);
            return function e(t, i, n, r, o, s, a = 0) {
                var l;
                if (2 === t.kind) {
                    const e = Te(i, t.openingBracket.length);
                    let r = -1;
                    s.includeMinIndentation && (r = t.computeMinIndentation(i, s.textModel)), s.result.push(new Oe(Pe(i, n), Pe(i, e), t.closingBracket ? Pe(Te(e, (null === (l = t.child) || void 0 === l ? void 0 : l.length) || 0), n) : void 0, a, r)), a++
                }
                let d = i;
                for (const i of t.children) {
                    const t = d;
                    d = Te(d, i.length), t <= o && r <= d && e(i, t, d, r, o, s, a)
                }
            }(e, 0, e.length, n, r, t), i
        }
    }
    class vt {
        constructor(e, t, i) {
            this.result = e, this.includeMinIndentation = t, this.textModel = i
        }
    }
    var bt = i(41),
        _t = i(23);
    class wt extends o.a {
        constructor(e) {
            super(), this.textModel = e, this.colorProvider = new yt, this.onDidChangeEmitter = new r.b, this.onDidChange = this.onDidChangeEmitter.event, this.colorizationOptions = e.getOptions().bracketPairColorizationOptions, this._register(e.onDidChangeOptions(t => {
                this.colorizationOptions = e.getOptions().bracketPairColorizationOptions
            })), this._register(e.bracketPairs.onDidChange(e => {
                this.onDidChangeEmitter.fire()
            }))
        }
        getDecorationsInRange(e, t, i) {
            if (void 0 === t) return [];
            if (!this.colorizationOptions.enabled) return [];
            const n = new Array;
            for (const t of this.textModel.bracketPairs.getBracketsInRange(e)) n.push({
                id: `bracket${t.range.toString()}-${t.nestingLevel}`,
                options: {
                    description: "BracketPairColorization",
                    inlineClassName: this.colorProvider.getInlineClassName(t)
                },
                ownerId: 0,
                range: t.range
            });
            return n
        }
        getAllDecorations(e, t) {
            return void 0 !== e && this.colorizationOptions.enabled ? this.getDecorationsInRange(new c.a(1, 1, this.textModel.getLineCount(), 1), e, t) : []
        }
    }
    class yt {
        constructor() {
            this.unexpectedClosingBracketClassName = "unexpected-closing-bracket"
        }
        getInlineClassName(e) {
            return e.isInvalid ? this.unexpectedClosingBracketClassName : this.getInlineClassNameOfLevel(e.nestingLevel)
        }
        getInlineClassNameOfLevel(e) {
            return "bracket-highlighting-" + e % 30
        }
    }

    function Ct(e, t) {
        return ("string" == typeof e ? function(e) {
            const t = new de;
            return t.acceptChunk(e), t.finish()
        }(e) : e).create(t)
    }
    Object(_t.f)((e, t) => {
        const i = [bt.c, bt.d, bt.e, bt.f, bt.g, bt.h],
            n = new yt;
        t.addRule(`.monaco-editor .${n.unexpectedClosingBracketClassName} { color: ${e.getColor(bt.i)}; }`);
        var r = i.map(t => e.getColor(t)).filter(e => !!e).filter(e => !e.isTransparent());
        for (let e = 0; e < 30; e++) {
            var o = r[e % r.length];
            t.addRule(`.monaco-editor .${n.getInlineClassNameOfLevel(e)} { color: ${o}; }`)
        }
    }), t = i(97), _t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, i = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let xt = 0;
    class St {
        constructor(e) {
            this._source = e, this._eos = !1
        }
        read() {
            if (this._eos) return null;
            let e = [],
                t = 0,
                i = 0;
            for (;;) {
                var n = this._source.read();
                if (null === n) return this._eos = !0, 0 === t ? null : e.join("");
                if (0 < n.length && (e[t++] = n, i += n.length), 65536 <= i) return e.join("")
            }
        }
    }
    const kt = () => {
        throw new Error("Invalid change accessor")
    };
    class Lt {
        constructor() {
            this._searchCanceledBrand = void 0
        }
    }

    function Ot(e) {
        return e instanceof Lt ? null : e
    }
    Lt.INSTANCE = new Lt;
    let Et = class e extends o.a {
        constructor(t, i, n, o = null, l, d, h) {
            super(), this._undoRedoService = l, this._modeService = d, this._language配置Service = h, this._onWillDispose = this._register(new r.b), this.onWillDispose = this._onWillDispose.event, this._onDidChangeDecorations = this._register(new Wt(e => this.handleBeforeFireDecorationsChangedEvent(e))), this.onDidChangeDecorations = this._onDidChangeDecorations.event, this._onDidChangeLanguage = this._register(new r.b), this.onDidChangeLanguage = this._onDidChangeLanguage.event, this._onDidChangeLanguage配置 = this._register(new r.b), this.onDidChangeLanguage配置 = this._onDidChangeLanguage配置.event, this._onDidChangeTokens = this._register(new r.b), this.onDidChangeTokens = this._onDidChangeTokens.event, this._onDidChangeOptions = this._register(new r.b), this.onDidChangeOptions = this._onDidChangeOptions.event, this._onDidChangeAttached = this._register(new r.b), this.onDidChangeAttached = this._onDidChangeAttached.event, this._onDidChangeContentOrInjectedText = this._register(new r.b), this.onDidChangeContentOrInjectedText = this._onDidChangeContentOrInjectedText.event, this._eventEmitter = this._register(new zt), this._backgroundTokenizationState = 0, this._onBackgroundTokenizationStateChanged = this._register(new r.b), this.onBackgroundTokenizationStateChanged = this._onBackgroundTokenizationStateChanged.event, this._register(this._eventEmitter.fastEvent(e => {
                this._onDidChangeContentOrInjectedText.fire(e.rawContentChangedEvent)
            })), xt++, this.id = "$model" + xt, this.isForSimpleWidget = i.isForSimpleWidget, this._associatedResource = null == o ? a.a.parse("inmemory://model/" + xt) : o, this._attachedEditorCount = 0;
            var {
                textBuffer: o,
                disposable: t
            } = Ct(t, i.defaultEOL);
            this._buffer = o, this._bufferDisposable = t, this._options = e.resolveOptions(this._buffer, i), o = this._buffer.getLineCount(), t = this._buffer.getValueLengthInRange(new c.a(1, 1, o, this._buffer.getLineLength(o) + 1), 0), i.largeFileOptimizations ? this._isTooLargeForTokenization = t > e.LARGE_FILE_SIZE_THRESHOLD || o > e.LARGE_FILE_LINE_COUNT_THRESHOLD : this._isTooLargeForTokenization = !1, this._isTooLargeForSyncing = t > e.MODEL_SYNC_LIMIT, this._versionId = 1, this._alternativeVersionId = 1, this._initialUndoRedoSnapshot = null, this._isDisposed = !1, this._isDisposing = !1, this._languageId = n || ge.a, this._languageRegistryListener = this._language配置Service.onDidChange(e => {
                e.affects(this._languageId) && this._onDidChangeLanguage配置.fire({})
            }), this._instanceId = s.P(xt), this._lastDecorationId = 0, this._decorations = Object.create(null), this._decorationsTree = new Tt, this._commandManager = new p.a(this, this._undoRedoService), this._isUndoing = !1, this._isRedoing = !1, this._trimAutoWhitespaceLines = null, this._tokens = new oe.d(this._modeService.languageIdCodec), this._tokens2 = new oe.e(this._modeService.languageIdCodec), this._tokenization = new be(this, this._modeService.languageIdCodec), this._bracketPairColorizer = this._register(new ft(this, this._language配置Service)), this._decorationProvider = this._register(new wt(this)), this._register(this._decorationProvider.onDidChange(() => {
                this._onDidChangeDecorations.beginDeferredEmit(), this._onDidChangeDecorations.fire(), this._onDidChangeDecorations.endDeferredEmit()
            }))
        }
        static resolveOptions(e, t) {
            return t.detectIndentation ? (e = f(e, t.tabSize, t.insertSpaces), new u.h({
                tabSize: e.tabSize,
                indentSize: e.tabSize,
                insertSpaces: e.insertSpaces,
                trimAutoWhitespace: t.trimAutoWhitespace,
                defaultEOL: t.defaultEOL,
                bracketPairColorizationOptions: t.bracketPairColorizationOptions
            })) : new u.h({
                tabSize: t.tabSize,
                indentSize: t.indentSize,
                insertSpaces: t.insertSpaces,
                trimAutoWhitespace: t.trimAutoWhitespace,
                defaultEOL: t.defaultEOL,
                bracketPairColorizationOptions: t.bracketPairColorizationOptions
            })
        }
        onDidChangeContentFast(e) {
            return this._eventEmitter.fastEvent(t => e(t.contentChangedEvent))
        }
        onDidChangeContent(e) {
            return this._eventEmitter.slowEvent(t => e(t.contentChangedEvent))
        }
        get bracketPairs() {
            return this._bracketPairColorizer
        }
        get backgroundTokenizationState() {
            return this._backgroundTokenizationState
        }
        handleTokenizationProgress(e) {
            2 === this._backgroundTokenizationState || this._backgroundTokenizationState !== (e = e ? 2 : 1) && (this._backgroundTokenizationState = e, this._onBackgroundTokenizationStateChanged.fire())
        }
        dispose() {
            this._isDisposing = !0, this._onWillDispose.fire(), this._languageRegistryListener.dispose(), this._tokenization.dispose(), this._isDisposed = !0, super.dispose(), this._bufferDisposable.dispose(), this._isDisposing = !1;
            const e = new ae([], "", "\n", !1, !1, !0, !0);
            e.dispose(), this._buffer = e
        }
        _assertNotDisposed() {
            if (this._isDisposed) throw new Error("Model is disposed!")
        }
        _emitContentChangedEvent(e, t) {
            this._bracketPairColorizer.handleContentChanged(t), this._isDisposing || this._eventEmitter.fire(new ce.a(e, t))
        }
        setValue(e) {
            var t;
            this._assertNotDisposed(), null !== e && (({
                textBuffer: t,
                disposable: e
            } = Ct(e, this._options.defaultEOL)), this._setValueFromTextBuffer(t, e))
        }
        _createContentChanged2(e, t, i, n, r, o, s) {
            return {
                changes: [{
                    range: e,
                    rangeOffset: t,
                    rangeLength: i,
                    text: n
                }],
                eol: this._buffer.getEOL(),
                versionId: this.getVersionId(),
                isUndoing: r,
                isRedoing: o,
                isFlush: s
            }
        }
        _setValueFromTextBuffer(e, t) {
            this._assertNotDisposed();
            var i = this.getFullModelRange(),
                n = this.getValueLengthInRange(i),
                r = this.getLineCount();
            i = this.getLineMaxColumn(r);
            this._buffer = e, this._bufferDisposable.dispose(), this._bufferDisposable = t, this._increaseVersionId(), this._tokens.flush(), this._tokens2.flush(), this._decorations = Object.create(null), this._decorationsTree = new Tt, this._commandManager.clear(), this._trimAutoWhitespaceLines = null, this._emitContentChangedEvent(new ce.d([new ce.f], this._versionId, !1, !1), this._createContentChanged2(new c.a(1, 1, r, i), 0, n, this.getValue(), !1, !1, !0))
        }
        setEOL(e) {
            this._assertNotDisposed();
            var t, i, n = 1 === e ? "\r\n" : "\n";
            this._buffer.getEOL() !== n && (i = this.getFullModelRange(), t = this.getValueLengthInRange(i), e = this.getLineCount(), i = this.getLineMaxColumn(e), this._onBeforeEOLChange(), this._buffer.setEOL(n), this._increaseVersionId(), this._onAfterEOLChange(), this._emitContentChangedEvent(new ce.d([new ce.e], this._versionId, !1, !1), this._createContentChanged2(new c.a(1, 1, e, i), 0, t, this.getValue(), !1, !1, !1)))
        }
        _onBeforeEOLChange() {
            this._decorationsTree.ensureAllNodesHaveRanges(this)
        }
        _onAfterEOLChange() {
            var e = this.getVersionId(),
                t = this._decorationsTree.collectNodesPostOrder();
            for (let o = 0, s = t.length; o < s; o++) {
                const s = t[o];
                var i = s.range,
                    n = s.cachedAbsoluteStart - s.start,
                    r = this._buffer.getOffsetAt(i.startLineNumber, i.startColumn);
                i = this._buffer.getOffsetAt(i.endLineNumber, i.endColumn);
                s.cachedAbsoluteStart = r, s.cachedAbsoluteEnd = i, s.cachedVersionId = e, s.start = r - n, s.end = i - n, P(s)
            }
        }
        onBeforeAttached() {
            this._attachedEditorCount++, 1 === this._attachedEditorCount && this._onDidChangeAttached.fire(void 0)
        }
        onBeforeDetached() {
            this._attachedEditorCount--, 0 === this._attachedEditorCount && this._onDidChangeAttached.fire(void 0)
        }
        isAttachedToEditor() {
            return 0 < this._attachedEditorCount
        }
        getAttachedEditorCount() {
            return this._attachedEditorCount
        }
        isTooLargeForSyncing() {
            return this._isTooLargeForSyncing
        }
        isTooLargeForTokenization() {
            return this._isTooLargeForTokenization
        }
        isDisposed() {
            return this._isDisposed
        }
        isDominatedByLongLines() {
            if (this._assertNotDisposed(), this.isTooLargeForTokenization()) return !1;
            let e = 0,
                t = 0;
            var i = this._buffer.getLineCount();
            for (let r = 1; r <= i; r++) {
                var n = this._buffer.getLineLength(r);
                1e4 <= n ? t += n : e += n
            }
            return t > e
        }
        get uri() {
            return this._associatedResource
        }
        getOptions() {
            return this._assertNotDisposed(), this._options
        }
        getFormattingOptions() {
            return {
                tabSize: this._options.indentSize,
                insertSpaces: this._options.insertSpaces
            }
        }
        updateOptions(e) {
            this._assertNotDisposed();
            var t = (void 0 !== e.tabSize ? e : this._options).tabSize,
                i = (void 0 !== e.indentSize ? e : this._options).indentSize,
                n = (void 0 !== e.insertSpaces ? e : this._options).insertSpaces,
                r = (void 0 !== e.trimAutoWhitespace ? e : this._options).trimAutoWhitespace;
            e = void 0 !== e.bracketColorizationOptions ? e.bracketColorizationOptions : this._options.bracketPairColorizationOptions, r = new u.h({
                tabSize: t,
                indentSize: i,
                insertSpaces: n,
                defaultEOL: this._options.defaultEOL,
                trimAutoWhitespace: r,
                bracketPairColorizationOptions: e
            });
            this._options.equals(r) || (e = this._options.createChangeEvent(r), this._options = r, this._onDidChangeOptions.fire(e))
        }
        detectIndentation(e, t) {
            this._assertNotDisposed(), e = f(this._buffer, t, e), this.updateOptions({
                insertSpaces: e.insertSpaces,
                tabSize: e.tabSize,
                indentSize: e.tabSize
            })
        }
        static _normalizeIndentationFromWhitespace(e, t, i) {
            let n = 0;
            for (let i = 0; i < e.length; i++) "\t" === e.charAt(i) ? n += t : n++;
            let r = "";
            if (!i) {
                var o = Math.floor(n / t);
                n %= t;
                for (let e = 0; e < o; e++) r += "\t"
            }
            for (let e = 0; e < n; e++) r += " ";
            return r
        }
        static normalizeIndentation(t, i, n) {
            let r = s.u(t);
            return -1 === r && (r = t.length), e._normalizeIndentationFromWhitespace(t.substring(0, r), i, n) + t.substring(r)
        }
        normalizeIndentation(t) {
            return this._assertNotDisposed(), e.normalizeIndentation(t, this._options.indentSize, this._options.insertSpaces)
        }
        getVersionId() {
            return this._assertNotDisposed(), this._versionId
        }
        mightContainRTL() {
            return this._buffer.mightContainRTL()
        }
        mightContainUnusualLineTerminators() {
            return this._buffer.mightContainUnusualLineTerminators()
        }
        removeUnusualLineTerminators(e = null) {
            const t = this.findMatches(s.a.source, !1, !0, !1, null, !1, 1073741824);
            this._buffer.resetMightContainUnusualLineTerminators(), this.pushEditOperations(e, t.map(e => ({
                range: e.range,
                text: null
            })), () => null)
        }
        mightContainNonBasicASCII() {
            return this._buffer.mightContainNonBasicASCII()
        }
        getAlternativeVersionId() {
            return this._assertNotDisposed(), this._alternativeVersionId
        }
        getInitialUndoRedoSnapshot() {
            return this._assertNotDisposed(), this._initialUndoRedoSnapshot
        }
        getOffsetAt(e) {
            return this._assertNotDisposed(), e = this._validatePosition(e.lineNumber, e.column, 0), this._buffer.getOffsetAt(e.lineNumber, e.column)
        }
        getPositionAt(e) {
            return this._assertNotDisposed(), e = Math.min(this._buffer.getLength(), Math.max(0, e)), this._buffer.getPositionAt(e)
        }
        _increaseVersionId() {
            this._versionId = this._versionId + 1, this._alternativeVersionId = this._versionId
        }
        _overwriteVersionId(e) {
            this._versionId = e
        }
        _overwriteAlternativeVersionId(e) {
            this._alternativeVersionId = e
        }
        _overwriteInitialUndoRedoSnapshot(e) {
            this._initialUndoRedoSnapshot = e
        }
        getValue(e, t = !1) {
            this._assertNotDisposed();
            var i = this.getFullModelRange();
            e = this.getValueInRange(i, e);
            return t ? this._buffer.getBOM() + e : e
        }
        createSnapshot(e = !1) {
            return new St(this._buffer.createSnapshot(e))
        }
        getValueLength(e, t = !1) {
            this._assertNotDisposed();
            var i = this.getFullModelRange();
            e = this.getValueLengthInRange(i, e);
            return t ? this._buffer.getBOM().length + e : e
        }
        getValueInRange(e, t = 0) {
            return this._assertNotDisposed(), this._buffer.getValueInRange(this.validateRange(e), t)
        }
        getValueLengthInRange(e, t = 0) {
            return this._assertNotDisposed(), this._buffer.getValueLengthInRange(this.validateRange(e), t)
        }
        getCharacterCountInRange(e, t = 0) {
            return this._assertNotDisposed(), this._buffer.getCharacterCountInRange(this.validateRange(e), t)
        }
        getLineCount() {
            return this._assertNotDisposed(), this._buffer.getLineCount()
        }
        getLineContent(e) {
            if (this._assertNotDisposed(), e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            return this._buffer.getLineContent(e)
        }
        getLineLength(e) {
            if (this._assertNotDisposed(), e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            return this._buffer.getLineLength(e)
        }
        getLinesContent() {
            return this._assertNotDisposed(), this._buffer.getLinesContent()
        }
        getEOL() {
            return this._assertNotDisposed(), this._buffer.getEOL()
        }
        getEndOfLineSequence() {
            return this._assertNotDisposed(), "\n" === this._buffer.getEOL() ? 0 : 1
        }
        getLineMinColumn(e) {
            return this._assertNotDisposed(), 1
        }
        getLineMaxColumn(e) {
            if (this._assertNotDisposed(), e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            return this._buffer.getLineLength(e) + 1
        }
        getLineFirstNonWhitespaceColumn(e) {
            if (this._assertNotDisposed(), e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            return this._buffer.getLineFirstNonWhitespaceColumn(e)
        }
        getLineLastNonWhitespaceColumn(e) {
            if (this._assertNotDisposed(), e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            return this._buffer.getLineLastNonWhitespaceColumn(e)
        }
        _validateRangeRelaxedNoAllocations(e) {
            var t = this._buffer.getLineCount(),
                i = e.startLineNumber,
                n = e.startColumn;
            let r = Math.floor("number" != typeof i || isNaN(i) ? 1 : i),
                o = Math.floor("number" != typeof n || isNaN(n) ? 1 : n);
            r < 1 ? (r = 1, o = 1) : r > t ? (r = t, o = this.getLineMaxColumn(r)) : o <= 1 ? o = 1 : o >= (a = this.getLineMaxColumn(r)) && (o = a);
            var s = e.endLineNumber,
                a = e.endColumn;
            let l = Math.floor("number" != typeof s || isNaN(s) ? 1 : s),
                d = Math.floor("number" != typeof a || isNaN(a) ? 1 : a);
            return l < 1 ? (l = 1, d = 1) : l > t ? (l = t, d = this.getLineMaxColumn(l)) : d <= 1 ? d = 1 : d >= (t = this.getLineMaxColumn(l)) && (d = t), i === r && n === o && s === l && a === d && e instanceof c.a && !(e instanceof h.a) ? e : new c.a(r, o, l, d)
        }
        _isValidPosition(e, t, i) {
            return "number" == typeof e && "number" == typeof t && (!isNaN(e) && !isNaN(t) && (!(e < 1 || t < 1) && ((0 | e) === e && (0 | t) === t && (!(this._buffer.getLineCount() < e) && (1 === t || !(this.getLineMaxColumn(e) < t) && (1 !== i || (t = this._buffer.getLineCharCode(e, t - 2), !s.E(t))))))))
        }
        _validatePosition(e, t, i) {
            var n = Math.floor("number" != typeof e || isNaN(e) ? 1 : e);
            e = Math.floor("number" != typeof t || isNaN(t) ? 1 : t), t = this._buffer.getLineCount();
            return n < 1 ? new d.a(1, 1) : t < n ? new d.a(t, this.getLineMaxColumn(t)) : e <= 1 ? new d.a(n, 1) : (t = this.getLineMaxColumn(n)) <= e ? new d.a(n, t) : 1 === i && (i = this._buffer.getLineCharCode(n, e - 2), s.E(i)) ? new d.a(n, e - 1) : new d.a(n, e)
        }
        validatePosition(e) {
            return this._assertNotDisposed(), e instanceof d.a && this._isValidPosition(e.lineNumber, e.column, 1) ? e : this._validatePosition(e.lineNumber, e.column, 1)
        }
        _isValidRange(e, t) {
            var i = e.startLineNumber,
                n = e.startColumn,
                r = e.endLineNumber;
            e = e.endColumn;
            return !!this._isValidPosition(i, n, 0) && (!!this._isValidPosition(r, e, 0) && (1 !== t || (n = 1 < n ? this._buffer.getLineCharCode(i, n - 2) : 0, e = 1 < e && e <= this._buffer.getLineLength(r) ? this._buffer.getLineCharCode(r, e - 2) : 0, n = s.E(n), e = s.E(e), !n && !e)))
        }
        validateRange(e) {
            if (this._assertNotDisposed(), e instanceof c.a && !(e instanceof h.a) && this._isValidRange(e, 1)) return e;
            var t = this._validatePosition(e.startLineNumber, e.startColumn, 0),
                i = this._validatePosition(e.endLineNumber, e.endColumn, 0),
                n = t.lineNumber,
                r = t.column,
                o = i.lineNumber;
            e = i.column, t = 1 < r ? this._buffer.getLineCharCode(n, r - 2) : 0, i = 1 < e && e <= this._buffer.getLineLength(o) ? this._buffer.getLineCharCode(o, e - 2) : 0, t = s.E(t), i = s.E(i);
            return t || i ? n === o && r === e ? new c.a(n, r - 1, o, e - 1) : t && i ? new c.a(n, r - 1, o, e + 1) : t ? new c.a(n, r - 1, o, e) : new c.a(n, r, o, e + 1) : new c.a(n, r, o, e)
        }
        modifyPosition(e, t) {
            return this._assertNotDisposed(), t = this.getOffsetAt(e) + t, this.getPositionAt(Math.min(this._buffer.getLength(), Math.max(0, t)))
        }
        getFullModelRange() {
            this._assertNotDisposed();
            var e = this.getLineCount();
            return new c.a(1, 1, e, this.getLineMaxColumn(e))
        }
        findMatchesLineByLine(e, t, i, n) {
            return this._buffer.findMatchesLineByLine(e, t, i, n)
        }
        findMatches(e, t, i, n, r, o, s = 999) {
            this._assertNotDisposed();
            let a = null;
            null !== t && (t = Array.isArray(t) ? t : [t]).every(e => c.a.isIRange(e)) && (a = t.map(e => this.validateRange(e))), null === a && (a = [this.getFullModelRange()]), a = a.sort((e, t) => e.startLineNumber - t.startLineNumber || e.startColumn - t.startColumn);
            const l = [];
            let d;
            if (l.push(a.reduce((e, t) => c.a.areIntersecting(e, t) ? e.plusRange(t) : (l.push(e), t))), !i && e.indexOf("\n") < 0) {
                const t = new Y.a(e, i, n, r).parseSearchRequest();
                if (!t) return [];
                d = e => this.findMatchesLineByLine(e, t, o, s)
            } else d = t => Y.c.findMatches(this, new Y.a(e, i, n, r), t, o, s);
            return l.map(d).reduce((e, t) => e.concat(t), [])
        }
        findNextMatch(e, t, i, n, r, o) {
            this._assertNotDisposed();
            var s = this.validatePosition(t);
            if (!i && e.indexOf("\n") < 0) {
                var a = new Y.a(e, i, n, r).parseSearchRequest();
                if (!a) return null;
                t = this.getLineCount(), t = new c.a(s.lineNumber, s.column, t, this.getLineMaxColumn(t));
                let l = this.findMatchesLineByLine(t, a, o, 1);
                return Y.c.findNextMatch(this, new Y.a(e, i, n, r), s, o), 0 < l.length ? l[0] : (t = new c.a(1, 1, s.lineNumber, this.getLineMaxColumn(s.lineNumber)), l = this.findMatchesLineByLine(t, a, o, 1), 0 < l.length ? l[0] : null)
            }
            return Y.c.findNextMatch(this, new Y.a(e, i, n, r), s, o)
        }
        findPreviousMatch(e, t, i, n, r, o) {
            return this._assertNotDisposed(), t = this.validatePosition(t), Y.c.findPreviousMatch(this, new Y.a(e, i, n, r), t, o)
        }
        pushStackElement() {
            this._commandManager.pushStackElement()
        }
        popStackElement() {
            this._commandManager.popStackElement()
        }
        pushEOL(e) {
            if (("\n" === this.getEOL() ? 0 : 1) !== e) try {
                this._onDidChangeDecorations.beginDeferredEmit(), this._eventEmitter.beginDeferredEmit(), null === this._initialUndoRedoSnapshot && (this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri)), this._commandManager.pushEOL(e)
            } finally {
                this._eventEmitter.endDeferredEmit(), this._onDidChangeDecorations.endDeferredEmit()
            }
        }
        _validateEditOperation(e) {
            return e instanceof u.i ? e : new u.i(e.identifier || null, this.validateRange(e.range), e.text, e.forceMoveMarkers || !1, e.isAutoWhitespaceEdit || !1, e._isTracked || !1)
        }
        _validateEditOperations(e) {
            const t = [];
            for (let i = 0, n = e.length; i < n; i++) t[i] = this._validateEditOperation(e[i]);
            return t
        }
        pushEditOperations(e, t, i) {
            try {
                return this._onDidChangeDecorations.beginDeferredEmit(), this._eventEmitter.beginDeferredEmit(), this._pushEditOperations(e, this._validateEditOperations(t), i)
            } finally {
                this._eventEmitter.endDeferredEmit(), this._onDidChangeDecorations.endDeferredEmit()
            }
        }
        _pushEditOperations(e, t, i) {
            if (this._options.trimAutoWhitespace && this._trimAutoWhitespaceLines) {
                var n = t.map(e => ({
                    range: this.validateRange(e.range),
                    text: e.text
                }));
                let i = !0;
                if (e)
                    for (let t = 0, a = e.length; t < a; t++) {
                        var r = e[t];
                        let a = !1;
                        for (let e = 0, t = n.length; e < t; e++) {
                            var o = (s = n[e].range).startLineNumber > r.endLineNumber,
                                s = r.startLineNumber > s.endLineNumber;
                            if (!o && !s) {
                                a = !0;
                                break
                            }
                        }
                        if (!a) {
                            i = !1;
                            break
                        }
                    }
                if (i)
                    for (let e = 0, i = this._trimAutoWhitespaceLines.length; e < i; e++) {
                        var a, l = this._trimAutoWhitespaceLines[e],
                            d = this.getLineMaxColumn(l);
                        let i = !0;
                        for (let e = 0, t = n.length; e < t; e++) {
                            let t = n[e].range,
                                r = n[e].text;
                            if (!(l < t.startLineNumber || l > t.endLineNumber || l === t.startLineNumber && t.startColumn === d && t.isEmpty() && r && 0 < r.length && "\n" === r.charAt(0) || l === t.startLineNumber && 1 === t.startColumn && t.isEmpty() && r && 0 < r.length && "\n" === r.charAt(r.length - 1))) {
                                i = !1;
                                break
                            }
                        }
                        i && (a = new c.a(l, 1, l, d), t.push(new u.i(null, a, null, !1, !1, !1)))
                    }
                this._trimAutoWhitespaceLines = null
            }
            return null === this._initialUndoRedoSnapshot && (this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri)), this._commandManager.pushEditOperation(e, t, i)
        }
        _applyUndo(e, t, i, n) {
            e = e.map(e => {
                var t = this.getPositionAt(e.newPosition),
                    i = this.getPositionAt(e.newEnd);
                return {
                    range: new c.a(t.lineNumber, t.column, i.lineNumber, i.column),
                    text: e.oldText
                }
            }), this._applyUndoRedoEdits(e, t, !0, !1, i, n)
        }
        _applyRedo(e, t, i, n) {
            e = e.map(e => {
                var t = this.getPositionAt(e.oldPosition),
                    i = this.getPositionAt(e.oldEnd);
                return {
                    range: new c.a(t.lineNumber, t.column, i.lineNumber, i.column),
                    text: e.newText
                }
            }), this._applyUndoRedoEdits(e, t, !1, !0, i, n)
        }
        _applyUndoRedoEdits(e, t, i, n, r, o) {
            try {
                this._onDidChangeDecorations.beginDeferredEmit(), this._eventEmitter.beginDeferredEmit(), this._isUndoing = i, this._isRedoing = n, this.applyEdits(e, !1), this.setEOL(t), this._overwriteAlternativeVersionId(r)
            } finally {
                this._isUndoing = !1, this._isRedoing = !1, this._eventEmitter.endDeferredEmit(o), this._onDidChangeDecorations.endDeferredEmit()
            }
        }
        applyEdits(e, t = !1) {
            try {
                this._onDidChangeDecorations.beginDeferredEmit(), this._eventEmitter.beginDeferredEmit();
                var i = this._validateEditOperations(e);
                return this._doApplyEdits(i, t)
            } finally {
                this._eventEmitter.endDeferredEmit(), this._onDidChangeDecorations.endDeferredEmit()
            }
        }
        _doApplyEdits(e, t) {
            var i = this._buffer.getLineCount(),
                n = (t = this._buffer.applyEdits(e, this._options.trimAutoWhitespace, t), this._buffer.getLineCount()),
                r = t.changes;
            if (this._trimAutoWhitespaceLines = t.trimAutoWhitespaceLineNumbers, 0 !== r.length) {
                for (let e = 0, t = r.length; e < t; e++) {
                    const t = r[e];
                    var [o, s, a] = Object(oe.f)(t.text);
                    this._tokens.acceptEdit(t.range, o, s), this._tokens2.acceptEdit(t.range, o, s, a, 0 < t.text.length ? t.text.charCodeAt(0) : 0), this._decorationsTree.acceptReplace(t.rangeOffset, t.rangeLength, t.text.length, t.forceMoveMarkers)
                }
                let e = [];
                this._increaseVersionId();
                let t = i;
                for (let i = 0, o = r.length; i < o; i++) {
                    var l = r[i],
                        [c] = Object(oe.f)(l.text);
                    this._onDidChangeDecorations.fire();
                    var h = l.range.startLineNumber,
                        u = l.range.endLineNumber,
                        p = u - h,
                        g = c,
                        f = Math.min(p, g),
                        m = n - t - (l = g - p) + h;
                    c = m + g, c = this._decorationsTree.getInjectedTextInInterval(this, this.getOffsetAt(new d.a(m, 1)), this.getOffsetAt(new d.a(c, this.getLineMaxColumn(c))), 0), c = ce.b.fromDecorations(c);
                    const o = new he.a(c);
                    for (let t = f; 0 <= t; t--) {
                        var v = h + t;
                        const i = m + t;
                        o.takeFromEndWhile(e => e.lineNumber > i);
                        var b = o.takeFromEndWhile(e => e.lineNumber === i);
                        e.push(new ce.g(v, this.getLineContent(i), b))
                    }
                    if (f < p && e.push(new ce.h(h + f + 1, u)), f < g) {
                        const i = new he.a(c);
                        var c, _ = g - f,
                            w = n - t - _ + (c = h + f) + 1;
                        let r = [],
                            o = [];
                        for (let e = 0; e < _; e++) {
                            let t = w + e;
                            o[e] = this.getLineContent(t), i.takeWhile(e => e.lineNumber < t), r[e] = i.takeWhile(e => e.lineNumber === t)
                        }
                        e.push(new ce.i(c + 1, h + g, o, r))
                    }
                    t += l
                }
                this._emitContentChangedEvent(new ce.d(e, this.getVersionId(), this._isUndoing, this._isRedoing), {
                    changes: r,
                    eol: this._buffer.getEOL(),
                    versionId: this.getVersionId(),
                    isUndoing: this._isUndoing,
                    isRedoing: this._isRedoing,
                    isFlush: !1
                })
            }
            return null === t.reverseEdits ? void 0 : t.reverseEdits
        }
        undo() {
            return this._undoRedoService.undo(this.uri)
        }
        canUndo() {
            return this._undoRedoService.canUndo(this.uri)
        }
        redo() {
            return this._undoRedoService.redo(this.uri)
        }
        canRedo() {
            return this._undoRedoService.canRedo(this.uri)
        }
        handleBeforeFireDecorationsChangedEvent(e) {
            if (null !== e && 0 !== e.size) {
                e = [...e].map(e => new ce.g(e, this.getLineContent(e), this._getInjectedTextInLine(e))), this._onDidChangeContentOrInjectedText.fire(new ce.c(e))
            }
        }
        changeDecorations(e, t = 0) {
            this._assertNotDisposed();
            try {
                return this._onDidChangeDecorations.beginDeferredEmit(), this._changeDecorations(t, e)
            } finally {
                this._onDidChangeDecorations.endDeferredEmit()
            }
        }
        _changeDecorations(e, t) {
            let i = {
                    addDecoration: (t, i) => this._deltaDecorationsImpl(e, [], [{
                        range: t,
                        options: i
                    }])[0],
                    changeDecoration: (e, t) => {
                        this._changeDecorationImpl(e, t)
                    },
                    changeDecorationOptions: (e, t) => {
                        this._changeDecorationOptionsImpl(e, Vt(t))
                    },
                    removeDecoration: t => {
                        this._deltaDecorationsImpl(e, [t], [])
                    },
                    deltaDecorations: (t, i) => 0 === t.length && 0 === i.length ? [] : this._deltaDecorationsImpl(e, t, i)
                },
                r = null;
            try {
                r = t(i)
            } catch (t) {
                Object(n.f)(t)
            }
            return i.addDecoration = kt, i.changeDecoration = kt, i.changeDecorationOptions = kt, i.removeDecoration = kt, i.deltaDecorations = kt, r
        }
        deltaDecorations(e, t, i = 0) {
            if (this._assertNotDisposed(), 0 === (e = e || []).length && 0 === t.length) return [];
            try {
                return this._onDidChangeDecorations.beginDeferredEmit(), this._deltaDecorationsImpl(i, e, t)
            } finally {
                this._onDidChangeDecorations.endDeferredEmit()
            }
        }
        _getTrackedRange(e) {
            return this.getDecorationRange(e)
        }
        _setTrackedRange(e, t, i) {
            const n = e ? this._decorations[e] : null;
            if (!n) return t ? this._deltaDecorationsImpl(0, [], [{
                range: t,
                options: Bt[i]
            }])[0] : null;
            if (!t) return this._decorationsTree.delete(n), delete this._decorations[n.id], null;
            var r = this._validateRangeRelaxedNoAllocations(t);
            e = this._buffer.getOffsetAt(r.startLineNumber, r.startColumn), t = this._buffer.getOffsetAt(r.endLineNumber, r.endColumn);
            return this._decorationsTree.delete(n), n.reset(this.getVersionId(), e, t, r), n.setOptions(Bt[i]), this._decorationsTree.insert(n), n.id
        }
        removeAllDecorationsWithOwnerId(e) {
            if (!this._isDisposed) {
                var t = this._decorationsTree.collectNodesFromOwner(e);
                for (let e = 0, n = t.length; e < n; e++) {
                    var i = t[e];
                    this._decorationsTree.delete(i), delete this._decorations[i.id]
                }
            }
        }
        getDecorationOptions(e) {
            return (e = this._decorations[e]) ? e.options : null
        }
        getDecorationRange(e) {
            return (e = this._decorations[e]) ? this._decorationsTree.getNodeRange(this, e) : null
        }
        getLineDecorations(e, t = 0, i = !1) {
            return e < 1 || e > this.getLineCount() ? [] : this.getLinesDecorations(e, e, t, i)
        }
        getLinesDecorations(e, t, i = 0, n = !1) {
            var r = this.getLineCount();
            e = Math.min(r, Math.max(1, e)), r = Math.min(r, Math.max(1, t)), t = this.getLineMaxColumn(r), t = new c.a(e, 1, r, t);
            const o = this._getDecorationsInRange(t, i, n);
            return o.push(...this._decorationProvider.getDecorationsInRange(t, i, n)), o
        }
        getDecorationsInRange(e, t = 0, i = !1) {
            e = this.validateRange(e);
            const n = this._getDecorationsInRange(e, t, i);
            return n.push(...this._decorationProvider.getDecorationsInRange(e, t, i)), n
        }
        getOverviewRulerDecorations(e = 0, t = !1) {
            return this._decorationsTree.getAll(this, e, t, !0)
        }
        getInjectedTextDecorations(e = 0) {
            return this._decorationsTree.getAllInjectedText(this, e)
        }
        _getInjectedTextInLine(e) {
            var t = this._buffer.getOffsetAt(e, 1),
                i = t + this._buffer.getLineLength(e);
            i = this._decorationsTree.getInjectedTextInInterval(this, t, i, 0);
            return ce.b.fromDecorations(i).filter(t => t.lineNumber === e)
        }
        getAllDecorations(e = 0, t = !1) {
            let i = this._decorationsTree.getAll(this, e, t, !1);
            return i = i.concat(this._decorationProvider.getAllDecorations(e, t)), i
        }
        _getDecorationsInRange(e, t, i) {
            var n = this._buffer.getOffsetAt(e.startLineNumber, e.startColumn);
            e = this._buffer.getOffsetAt(e.endLineNumber, e.endColumn);
            return this._decorationsTree.getAllInInterval(this, n, e, t, i)
        }
        getRangeAt(e, t) {
            return this._buffer.getRangeAt(e, t - e)
        }
        _changeDecorationImpl(e, t) {
            const i = this._decorations[e];
            var n, r;
            i && (i.options.after && (n = this.getDecorationRange(e), this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.endLineNumber)), i.options.before && (r = this.getDecorationRange(e), this._onDidChangeDecorations.recordLineAffectedByInjectedText(r.startLineNumber)), e = this._validateRangeRelaxedNoAllocations(t), r = this._buffer.getOffsetAt(e.startLineNumber, e.startColumn), t = this._buffer.getOffsetAt(e.endLineNumber, e.endColumn), this._decorationsTree.delete(i), i.reset(this.getVersionId(), r, t, e), this._decorationsTree.insert(i), this._onDidChangeDecorations.checkAffectedAndFire(i.options), i.options.after && this._onDidChangeDecorations.recordLineAffectedByInjectedText(e.endLineNumber), i.options.before && this._onDidChangeDecorations.recordLineAffectedByInjectedText(e.startLineNumber))
        }
        _changeDecorationOptionsImpl(e, t) {
            const i = this._decorations[e];
            var n, r;
            i && (n = !(!i.options.overviewRuler || !i.options.overviewRuler.color), e = !(!t.overviewRuler || !t.overviewRuler.color), this._onDidChangeDecorations.checkAffectedAndFire(i.options), this._onDidChangeDecorations.checkAffectedAndFire(t), (i.options.after || t.after) && (r = this._decorationsTree.getNodeRange(this, i), this._onDidChangeDecorations.recordLineAffectedByInjectedText(r.endLineNumber)), (i.options.before || t.before) && (r = this._decorationsTree.getNodeRange(this, i), this._onDidChangeDecorations.recordLineAffectedByInjectedText(r.startLineNumber)), n != e ? (this._decorationsTree.delete(i), i.setOptions(t), this._decorationsTree.insert(i)) : i.setOptions(t))
        }
        _deltaDecorationsImpl(e, t, i) {
            var n = this.getVersionId(),
                r = t.length;
            let o = 0;
            var s, a, l, d, c = i.length;
            let h = 0,
                u = new Array(c);
            for (; o < r || h < c;) {
                let p = null;
                if (o < r) {
                    for (; p = this._decorations[t[o++]], !p && o < r;);
                    p && (p.options.after && (d = this._decorationsTree.getNodeRange(this, p), this._onDidChangeDecorations.recordLineAffectedByInjectedText(d.endLineNumber)), p.options.before && (s = this._decorationsTree.getNodeRange(this, p), this._onDidChangeDecorations.recordLineAffectedByInjectedText(s.startLineNumber)), this._decorationsTree.delete(p), this._onDidChangeDecorations.checkAffectedAndFire(p.options))
                }
                h < c ? (p || (a = ++this._lastDecorationId, l = `${this._instanceId};${a}`, p = new S(l, 0, 0), this._decorations[l] = p), d = i[h], s = this._validateRangeRelaxedNoAllocations(d.range), a = Vt(d.options), l = this._buffer.getOffsetAt(s.startLineNumber, s.startColumn), d = this._buffer.getOffsetAt(s.endLineNumber, s.endColumn), p.ownerId = e, p.reset(n, l, d, s), p.setOptions(a), p.options.after && this._onDidChangeDecorations.recordLineAffectedByInjectedText(s.endLineNumber), p.options.before && this._onDidChangeDecorations.recordLineAffectedByInjectedText(s.startLineNumber), this._onDidChangeDecorations.checkAffectedAndFire(a), this._decorationsTree.insert(p), u[h] = p.id, h++) : p && delete this._decorations[p.id]
            }
            return u
        }
        setTokens(e, t = !1) {
            if (0 !== e.length) {
                let t = [];
                for (let r = 0, o = e.length; r < o; r++) {
                    var i = e[r];
                    let o = 0,
                        s = 0,
                        a = !1;
                    for (let e = 0, t = i.tokens.length; e < t; e++) {
                        var n = i.startLineNumber + e;
                        a ? (this._tokens.setTokens(this._languageId, n - 1, this._buffer.getLineLength(n), i.tokens[e], !1), s = n) : this._tokens.setTokens(this._languageId, n - 1, this._buffer.getLineLength(n), i.tokens[e], !0) && (a = !0, o = n, s = n)
                    }
                    a && t.push({
                        fromLineNumber: o,
                        toLineNumber: s
                    })
                }
                0 < t.length && this._emitModelTokensChangedEvent({
                    tokenizationSupportChanged: !1,
                    semanticTokensApplied: !1,
                    ranges: t
                })
            }
            this.handleTokenizationProgress(t)
        }
        setSemanticTokens(e, t) {
            this._tokens2.set(e, t), this._emitModelTokensChangedEvent({
                tokenizationSupportChanged: !1,
                semanticTokensApplied: null !== e,
                ranges: [{
                    fromLineNumber: 1,
                    toLineNumber: this.getLineCount()
                }]
            })
        }
        hasCompleteSemanticTokens() {
            return this._tokens2.isComplete()
        }
        hasSomeSemanticTokens() {
            return !this._tokens2.isEmpty()
        }
        setPartialSemanticTokens(e, t) {
            this.hasCompleteSemanticTokens() || (t = this._tokens2.setPartial(e, t), this._emitModelTokensChangedEvent({
                tokenizationSupportChanged: !1,
                semanticTokensApplied: !0,
                ranges: [{
                    fromLineNumber: t.startLineNumber,
                    toLineNumber: t.endLineNumber
                }]
            }))
        }
        tokenizeViewport(e, t) {
            e = Math.max(1, e), t = Math.min(this._buffer.getLineCount(), t), this._tokenization.tokenizeViewport(e, t)
        }
        clearTokens() {
            this._tokens.flush(), this._emitModelTokensChangedEvent({
                tokenizationSupportChanged: !0,
                semanticTokensApplied: !1,
                ranges: [{
                    fromLineNumber: 1,
                    toLineNumber: this._buffer.getLineCount()
                }]
            })
        }
        _emitModelTokensChangedEvent(e) {
            this._isDisposing || this._onDidChangeTokens.fire(e)
        }
        resetTokenization() {
            this._tokenization.reset()
        }
        forceTokenization(e) {
            if (e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            this._tokenization.forceTokenization(e)
        }
        isCheapToTokenize(e) {
            return this._tokenization.isCheapToTokenize(e)
        }
        tokenizeIfCheap(e) {
            this.isCheapToTokenize(e) && this.forceTokenization(e)
        }
        getLineTokens(e) {
            if (e < 1 || e > this.getLineCount()) throw new Error("Illegal value for lineNumber");
            return this._getLineTokens(e)
        }
        _getLineTokens(e) {
            var t = this.getLineContent(e);
            t = this._tokens.getTokens(this._languageId, e - 1, t);
            return this._tokens2.addSemanticTokens(e, t)
        }
        getLanguageId() {
            return this._languageId
        }
        setMode(e) {
            var t;
            this._languageId !== e && (t = {
                oldLanguage: this._languageId,
                newLanguage: e
            }, this._languageId = e, this._onDidChangeLanguage.fire(t), this._onDidChangeLanguage配置.fire({}))
        }
        getLanguageIdAtPosition(e, t) {
            t = this.validatePosition(new d.a(e, t));
            const i = this.getLineTokens(t.lineNumber);
            return i.getLanguageId(i.findTokenIndexAtOffset(t.column - 1))
        }
        getLanguage配置(e) {
            return this._language配置Service.getLanguage配置(e)
        }
        getWordAtPosition(t) {
            this._assertNotDisposed();
            var i = this.validatePosition(t);
            const n = this.getLineContent(i.lineNumber),
                r = this._getLineTokens(i.lineNumber);
            var o = r.findTokenIndexAtOffset(i.column - 1),
                [s, a] = e._findLanguageBoundaries(r, o);
            if ((a = Object(we.d)(i.column, this.getLanguage配置(r.getLanguageId(o)).getWordDefinition(), n.substring(s, a), s)) && a.startColumn <= t.column && t.column <= a.endColumn) return a;
            if (0 < o && s === i.column - 1) {
                var a, [a, s] = e._findLanguageBoundaries(r, o - 1);
                if ((a = Object(we.d)(i.column, this.getLanguage配置(r.getLanguageId(o - 1)).getWordDefinition(), n.substring(a, s), a)) && a.startColumn <= t.column && t.column <= a.endColumn) return a
            }
            return null
        }
        static _findLanguageBoundaries(e, t) {
            var i = e.getLanguageId(t);
            let n = 0;
            for (let r = t; 0 <= r && e.getLanguageId(r) === i; r--) n = e.getStartOffset(r);
            let r = e.getLineContent().length;
            for (let n = t, o = e.getCount(); n < o && e.getLanguageId(n) === i; n++) r = e.getEndOffset(n);
            return [n, r]
        }
        getWordUntilPosition(e) {
            const t = this.getWordAtPosition(e);
            return t ? {
                word: t.word.substr(0, e.column - t.startColumn),
                startColumn: t.startColumn,
                endColumn: e.column
            } : {
                word: "",
                startColumn: e.column,
                endColumn: e.column
            }
        }
        findMatchingBracketUp(e, t) {
            var i = e.toLowerCase();
            e = this.validatePosition(t);
            let n = this._getLineTokens(e.lineNumber);
            return t = n.getLanguageId(n.findTokenIndexAtOffset(e.column - 1)), (t = this.getLanguage配置(t).brackets) && (i = t.textIsBracket[i]) ? Ot(this._findMatchingBracketUp(i, e, null)) : null
        }
        matchBracket(e) {
            return this._matchBracket(this.validatePosition(e))
        }
        _establishBracketSearchOffsets(e, t, i, n) {
            var r = t.getCount(),
                o = t.getLanguageId(n);
            let s = Math.max(0, e.column - 1 - i.maxBracketLength);
            for (let e = n - 1; 0 <= e; e--) {
                var a = t.getEndOffset(e);
                if (a <= s) break;
                if (Object(Ce.b)(t.getStandardTokenType(e)) || t.getLanguageId(e) !== o) {
                    s = a;
                    break
                }
            }
            let l = Math.min(t.getLineContent().length, e.column - 1 + i.maxBracketLength);
            for (let e = n + 1; e < r; e++) {
                var d = t.getStartOffset(e);
                if (d >= l) break;
                if (Object(Ce.b)(t.getStandardTokenType(e)) || t.getLanguageId(e) !== o) {
                    l = d;
                    break
                }
            }
            return {
                searchStartOffset: s,
                searchEndOffset: l
            }
        }
        _matchBracket(e) {
            var t = e.lineNumber;
            const i = this._getLineTokens(t),
                n = this._buffer.getLineContent(t);
            if ((d = i.findTokenIndexAtOffset(e.column - 1)) < 0) return null;
            var r = this.getLanguage配置(i.getLanguageId(d)).brackets;
            if (r && !Object(Ce.b)(i.getStandardTokenType(d))) {
                let {
                    searchStartOffset: a,
                    searchEndOffset: l
                } = this._establishBracketSearchOffsets(e, i, r, d), c = null;
                for (;;) {
                    var o = xe.a.findNextBracketInRange(r.forwardRegex, t, n, a, l);
                    if (!o) break;
                    if (o.startColumn <= e.column && e.column <= o.endColumn) {
                        var s = n.substring(o.startColumn - 1, o.endColumn - 1).toLowerCase();
                        if (s = this._matchFoundBracket(o, r.textIsBracket[s], r.textIsOpenBracket[s], null)) {
                            if (s instanceof Lt) return null;
                            c = s
                        }
                    }
                    a = o.endColumn - 1
                }
                if (c) return c
            }
            if (0 < d && i.getStartOffset(d) === e.column - 1) {
                var a = d - 1,
                    l = this.getLanguage配置(i.getLanguageId(a)).brackets;
                if (l && !Object(Ce.b)(i.getStandardTokenType(a))) {
                    var d, {
                        searchStartOffset: d,
                        searchEndOffset: a
                    } = this._establishBracketSearchOffsets(e, i, l, a);
                    if ((d = xe.a.findPrevBracketInRange(l.reversedRegex, t, n, d, a)) && d.startColumn <= e.column && e.column <= d.endColumn && (a = n.substring(d.startColumn - 1, d.endColumn - 1).toLowerCase(), a = this._matchFoundBracket(d, l.textIsBracket[a], l.textIsOpenBracket[a], null))) return a instanceof Lt ? null : a
                }
            }
            return null
        }
        _matchFoundBracket(e, t, i, n) {
            return t && (n = i ? this._findMatchingBracketDown(t, e.getEndPosition(), n) : this._findMatchingBracketUp(t, e.getStartPosition(), n)) ? n instanceof Lt ? n : [e, n] : null
        }
        _findMatchingBracketUp(e, t, i) {
            var n = e.languageId;
            const r = e.reversedRegex;
            let o = -1,
                s = 0;
            var a = (t, n, a, l) => {
                for (;;) {
                    if (i && ++s % 100 == 0 && !i()) return Lt.INSTANCE;
                    var d = xe.a.findPrevBracketInRange(r, t, n, a, l);
                    if (!d) break;
                    var c = n.substring(d.startColumn - 1, d.endColumn - 1).toLowerCase();
                    if (e.isOpen(c) ? o++ : e.isClose(c) && o--, 0 === o) return d;
                    l = d.startColumn - 1
                }
                return null
            };
            for (let e = t.lineNumber; 1 <= e; e--) {
                const i = this._getLineTokens(e);
                var l = i.getCount(),
                    d = this._buffer.getLineContent(e);
                let r = l - 1,
                    o = d.length,
                    s = d.length;
                e === t.lineNumber && (r = i.findTokenIndexAtOffset(t.column - 1), o = t.column - 1, s = t.column - 1);
                let u = !0;
                for (; 0 <= r; r--) {
                    var c = i.getLanguageId(r) === n && !Object(Ce.b)(i.getStandardTokenType(r));
                    if (c) u ? o = i.getStartOffset(r) : (o = i.getStartOffset(r), s = i.getEndOffset(r));
                    else if (u && o !== s) {
                        var h = a(e, d, o, s);
                        if (h) return h
                    }
                    u = c
                }
                if (u && o !== s && (l = a(e, d, o, s))) return l
            }
            return null
        }
        _findMatchingBracketDown(e, t, i) {
            var n = e.languageId;
            const r = e.forwardRegex;
            let o = 1,
                s = 0;
            var a = (t, n, a, l) => {
                    for (;;) {
                        if (i && ++s % 100 == 0 && !i()) return Lt.INSTANCE;
                        var d = xe.a.findNextBracketInRange(r, t, n, a, l);
                        if (!d) break;
                        var c = n.substring(d.startColumn - 1, d.endColumn - 1).toLowerCase();
                        if (e.isOpen(c) ? o++ : e.isClose(c) && o--, 0 === o) return d;
                        a = d.endColumn - 1
                    }
                    return null
                },
                l = this.getLineCount();
            for (let e = t.lineNumber; e <= l; e++) {
                const i = this._getLineTokens(e);
                var d = i.getCount(),
                    c = this._buffer.getLineContent(e);
                let r = 0,
                    o = 0,
                    s = 0;
                e === t.lineNumber && (r = i.findTokenIndexAtOffset(t.column - 1), o = t.column - 1, s = t.column - 1);
                let l = !0;
                for (; r < d; r++) {
                    var h = i.getLanguageId(r) === n && !Object(Ce.b)(i.getStandardTokenType(r));
                    if (h) l || (o = i.getStartOffset(r)), s = i.getEndOffset(r);
                    else if (l && o !== s) {
                        var u = a(e, c, o, s);
                        if (u) return u
                    }
                    l = h
                }
                if (l && o !== s) {
                    var p = a(e, c, o, s);
                    if (p) return p
                }
            }
            return null
        }
        findPrevBracket(e) {
            var t = this.validatePosition(e);
            let i = null,
                n = null;
            for (let e = t.lineNumber; 1 <= e; e--) {
                const d = this._getLineTokens(e);
                var r = d.getCount(),
                    o = this._buffer.getLineContent(e);
                let c = r - 1,
                    h = o.length,
                    u = o.length;
                e === t.lineNumber && (c = d.findTokenIndexAtOffset(t.column - 1), h = t.column - 1, u = t.column - 1, i !== (l = d.getLanguageId(c)) && (i = l, n = this.getLanguage配置(i).brackets));
                let p = !0;
                for (; 0 <= c; c--) {
                    var s = d.getLanguageId(c);
                    if (i !== s) {
                        if (n && p && h !== u) {
                            var a = xe.a.findPrevBracketInRange(n.reversedRegex, e, o, h, u);
                            if (a) return this._toFoundBracket(n, a);
                            p = !1
                        }
                        i = s, n = this.getLanguage配置(i).brackets
                    }
                    if (a = !!n && !Object(Ce.b)(d.getStandardTokenType(c))) p ? h = d.getStartOffset(c) : (h = d.getStartOffset(c), u = d.getEndOffset(c));
                    else if (n && p && h !== u && (s = xe.a.findPrevBracketInRange(n.reversedRegex, e, o, h, u))) return this._toFoundBracket(n, s);
                    p = a
                }
                if (n && p && h !== u) {
                    var l = xe.a.findPrevBracketInRange(n.reversedRegex, e, o, h, u);
                    if (l) return this._toFoundBracket(n, l)
                }
            }
            return null
        }
        findNextBracket(e) {
            var t = this.validatePosition(e),
                i = this.getLineCount();
            let n = null,
                r = null;
            for (let e = t.lineNumber; e <= i; e++) {
                const i = this._getLineTokens(e);
                var o = i.getCount(),
                    s = this._buffer.getLineContent(e);
                let c = 0,
                    h = 0,
                    u = 0;
                e === t.lineNumber && (c = i.findTokenIndexAtOffset(t.column - 1), h = t.column - 1, u = t.column - 1, n !== (d = i.getLanguageId(c)) && (n = d, r = this.getLanguage配置(n).brackets));
                let p = !0;
                for (; c < o; c++) {
                    var a = i.getLanguageId(c);
                    if (n !== a) {
                        if (r && p && h !== u) {
                            var l = xe.a.findNextBracketInRange(r.forwardRegex, e, s, h, u);
                            if (l) return this._toFoundBracket(r, l);
                            p = !1
                        }
                        n = a, r = this.getLanguage配置(n).brackets
                    }
                    if (l = !!r && !Object(Ce.b)(i.getStandardTokenType(c))) p || (h = i.getStartOffset(c)), u = i.getEndOffset(c);
                    else if (r && p && h !== u && (a = xe.a.findNextBracketInRange(r.forwardRegex, e, s, h, u))) return this._toFoundBracket(r, a);
                    p = l
                }
                if (r && p && h !== u) {
                    var d = xe.a.findNextBracketInRange(r.forwardRegex, e, s, h, u);
                    if (d) return this._toFoundBracket(r, d)
                }
            }
            return null
        }
        findEnclosingBrackets(e, t) {
            let i;
            if (void 0 === t) i = null;
            else {
                const e = Date.now();
                i = () => Date.now() - e <= t
            }
            var n = this.validatePosition(e),
                r = this.getLineCount();
            const o = new Map;
            let s = [];
            var a = (e, t) => {
                if (!o.has(e)) {
                    let i = [];
                    for (let e = 0, n = t ? t.brackets.length : 0; e < n; e++) i[e] = 0;
                    o.set(e, i)
                }
                s = o.get(e)
            };
            let l = 0;
            var d = (e, t, n, r, o) => {
                for (;;) {
                    if (i && ++l % 100 == 0 && !i()) return Lt.INSTANCE;
                    var a = xe.a.findNextBracketInRange(e.forwardRegex, t, n, r, o);
                    if (!a) break;
                    var d = n.substring(a.startColumn - 1, a.endColumn - 1).toLowerCase();
                    const c = e.textIsBracket[d];
                    if (c && (c.isOpen(d) ? s[c.index]++ : c.isClose(d) && s[c.index]--, -1 === s[c.index])) return this._matchFoundBracket(a, c, !1, i);
                    r = a.endColumn - 1
                }
                return null
            };
            let c = null,
                h = null;
            for (let e = n.lineNumber; e <= r; e++) {
                const t = this._getLineTokens(e);
                var u = t.getCount(),
                    p = this._buffer.getLineContent(e);
                let i = 0,
                    r = 0,
                    o = 0;
                e === n.lineNumber && (i = t.findTokenIndexAtOffset(n.column - 1), r = n.column - 1, o = n.column - 1, c !== (m = t.getLanguageId(i)) && (c = m, h = this.getLanguage配置(c).brackets, a(c, h)));
                let s = !0;
                for (; i < u; i++) {
                    var g = t.getLanguageId(i);
                    if (c !== g) {
                        if (h && s && r !== o) {
                            var f = d(h, e, p, r, o);
                            if (f) return Ot(f);
                            s = !1
                        }
                        c = g, h = this.getLanguage配置(c).brackets, a(c, h)
                    }
                    if (f = !!h && !Object(Ce.b)(t.getStandardTokenType(i))) s || (r = t.getStartOffset(i)), o = t.getEndOffset(i);
                    else if (h && s && r !== o && (g = d(h, e, p, r, o))) return Ot(g);
                    s = f
                }
                if (h && s && r !== o) {
                    var m = d(h, e, p, r, o);
                    if (m) return Ot(m)
                }
            }
            return null
        }
        _toFoundBracket(e, t) {
            if (!t) return null;
            let i = this.getValueInRange(t);
            i = i.toLowerCase();
            var n = e.textIsBracket[i];
            return n ? {
                range: t,
                open: n.open,
                close: n.close,
                isOpen: e.textIsOpenBracket[i]
            } : null
        }
        static computeIndentLevel(e, t) {
            let i = 0,
                n = 0;
            for (var r = e.length; n < r;) {
                var o = e.charCodeAt(n);
                if (32 === o) i++;
                else {
                    if (9 !== o) break;
                    i = i - i % t + t
                }
                n++
            }
            return n === r ? -1 : i
        }
        _computeIndentLevel(t) {
            return e.computeIndentLevel(this._buffer.getLineContent(t + 1), this._options.tabSize)
        }
        getActiveIndentGuide(e, t, i) {
            this._assertNotDisposed();
            const n = this.getLineCount();
            if (e < 1 || e > n) throw new Error("Illegal value for lineNumber");
            var r = this.getLanguage配置(this._languageId).foldingRules,
                o = Boolean(r && r.offSide);
            let s = -2,
                a = -1,
                l = -2,
                d = -1;
            var c = e => {
                if (-1 !== s && (-2 === s || s > e - 1)) {
                    s = -1, a = -1;
                    for (let i = e - 2; 0 <= i; i--) {
                        var t = this._computeIndentLevel(i);
                        if (0 <= t) {
                            s = i, a = t;
                            break
                        }
                    }
                }
                if (-2 === l) {
                    l = -1, d = -1;
                    for (let t = e; t < n; t++) {
                        var i = this._computeIndentLevel(t);
                        if (0 <= i) {
                            l = t, d = i;
                            break
                        }
                    }
                }
            };
            let h = -2,
                u = -1,
                p = -2,
                g = -1;
            var f = e => {
                if (-2 === h) {
                    h = -1, u = -1;
                    for (let i = e - 2; 0 <= i; i--) {
                        var t = this._computeIndentLevel(i);
                        if (0 <= t) {
                            h = i, u = t;
                            break
                        }
                    }
                }
                if (-1 !== p && (-2 === p || p < e - 1)) {
                    p = -1, g = -1;
                    for (let t = e; t < n; t++) {
                        var i = this._computeIndentLevel(t);
                        if (0 <= i) {
                            p = t, g = i;
                            break
                        }
                    }
                }
            };
            let m = 0,
                v = !0,
                b = 0,
                _ = !0,
                w = 0,
                y = 0;
            for (let r = 0; v || _; r++) {
                var C, x = e - r,
                    S = e + r;
                1 < r && (x < 1 || x < t) && (v = !1), 1 < r && (S > n || i < S) && (_ = !1), 5e4 < r && (v = !1, _ = !1);
                let s = -1;
                v && (s = 0 <= (C = this._computeIndentLevel(x - 1)) ? (l = x - 1, d = C, Math.ceil(C / this._options.indentSize)) : (c(x), this._getIndentLevelForWhitespaceLine(o, a, d)));
                let p = -1;
                if (_ && (p = 0 <= (C = this._computeIndentLevel(S - 1)) ? (h = S - 1, u = C, Math.ceil(C / this._options.indentSize)) : (f(S), this._getIndentLevelForWhitespaceLine(o, u, g))), 0 !== r) {
                    if (1 === r) {
                        if (S <= n && 0 <= p && y + 1 === p) {
                            v = !1, m = S, b = S, w = p;
                            continue
                        }
                        if (1 <= x && 0 <= s && s - 1 === y) {
                            _ = !1, m = x, b = x, w = s;
                            continue
                        }
                        if (m = e, b = e, w = y, 0 === w) return {
                            startLineNumber: m,
                            endLineNumber: b,
                            indent: w
                        }
                    }
                    v && (s >= w ? m = x : v = !1), _ && (p >= w ? b = S : _ = !1)
                } else y = s
            }
            return {
                startLineNumber: m,
                endLineNumber: b,
                indent: w
            }
        }
        getLinesBracketGuides(e, t, i, n) {
            var r, o, a, l, d;
            const h = [],
                p = this._bracketPairColorizer.getBracketPairsInRangeWithMinIndentation(new c.a(e, 1, t, this.getLineMaxColumn(t)));
            let g = void 0;
            i && 0 < p.length && (r = e <= i.lineNumber && i.lineNumber <= t ? p.filter(e => e.range.containsPosition(i)) : this._bracketPairColorizer.getBracketPairsInRange(c.a.fromPositions(i)), g = null === (r = Object(he.i)(r, e => e.range.startLineNumber !== e.range.endLineNumber)) || void 0 === r ? void 0 : r.range);
            const f = new he.a(p),
                m = new Array,
                v = new Array,
                b = new Nt;
            for (let i = e; i <= t; i++) {
                let e = new Array;
                0 < v.length && (e = e.concat(v), v.length = 0), h.push(e);
                for (const e of f.takeWhile(e => e.openingBracketRange.startLineNumber <= i) || [])
                    if (e.range.startLineNumber !== e.range.endLineNumber) {
                        var _ = Math.min(this.getVisibleColumnFromPosition(e.openingBracketRange.getStartPosition()), this.getVisibleColumnFromPosition(null !== (y = null === (w = e.closingBracketRange) || void 0 === w ? void 0 : w.getStartPosition()) && void 0 !== y ? y : e.range.getEndPosition()), e.minVisibleColumnIndentation + 1);
                        let t = !1;
                        e.closingBracketRange && s.u(this.getLineContent(e.closingBracketRange.startLineNumber)) < e.closingBracketRange.startColumn - 1 && (t = !0);
                        var w = e.openingBracketRange.getStartPosition(),
                            y = null !== (y = null === (y = e.closingBracketRange) || void 0 === y ? void 0 : y.getStartPosition()) && void 0 !== y ? y : e.range.getEndPosition();
                        void 0 === e.closingBracketRange ? m[e.nestingLevel] = null : m[e.nestingLevel] = {
                            nestingLevel: e.nestingLevel,
                            guideVisibleColumn: _,
                            start: w,
                            visibleStartColumn: this.getVisibleColumnFromPosition(w),
                            end: y,
                            visibleEndColumn: this.getVisibleColumnFromPosition(y),
                            bracketPair: e,
                            renderHorizontalEndLineAtTheBottom: t
                        }
                    } for (const t of m) t && (o = g && t.bracketPair.range.equalsRange(g), a = b.getInlineClassNameOfLevel(t.nestingLevel) + (n.highlightActive && o ? " " + b.activeClassName : ""), (o && n.horizontalGuides !== u.c.Disabled || n.includeInactive && n.horizontalGuides === u.c.Enabled) && (t.start.lineNumber === i && t.guideVisibleColumn < t.visibleStartColumn && e.push(new u.d(t.guideVisibleColumn, a, new u.e(!1, t.start.column))), t.end.lineNumber === i + 1 && t.guideVisibleColumn < t.visibleEndColumn && v.push(new u.d(t.guideVisibleColumn, a, new u.e(!t.renderHorizontalEndLineAtTheBottom, t.end.column)))));
                let t = Number.MAX_SAFE_INTEGER;
                for (let r = m.length - 1; 0 <= r; r--) {
                    const o = m[r];
                    o && (l = n.highlightActive && g && o.bracketPair.range.equalsRange(g), d = b.getInlineClassNameOfLevel(o.nestingLevel) + (l ? " " + b.activeClassName : ""), (l || n.includeInactive) && o.renderHorizontalEndLineAtTheBottom && o.end.lineNumber === i + 1 && v.push(new u.d(o.guideVisibleColumn, d, null)), o.end.lineNumber <= i || o.start.lineNumber >= i || o.guideVisibleColumn >= t && !l || (t = o.guideVisibleColumn, (l || n.includeInactive) && e.push(new u.d(o.guideVisibleColumn, d, null))))
                }
                e.sort((e, t) => e.visibleColumn - t.visibleColumn)
            }
            return h
        }
        getVisibleColumnFromPosition(e) {
            return je.a.visibleColumnFromColumn(this.getLineContent(e.lineNumber), e.column, this._options.tabSize) + 1
        }
        getLinesIndentGuides(e, t) {
            this._assertNotDisposed();
            var i = this.getLineCount();
            if (e < 1 || i < e) throw new Error("Illegal value for startLineNumber");
            if (t < 1 || i < t) throw new Error("Illegal value for endLineNumber");
            var n = this.getLanguage配置(this._languageId).foldingRules,
                r = Boolean(n && n.offSide);
            let o = new Array(t - e + 1),
                s = -2,
                a = -1,
                l = -2,
                d = -1;
            for (let n = e; n <= t; n++) {
                var c = n - e,
                    h = this._computeIndentLevel(n - 1);
                if (0 <= h) s = n - 1, a = h, o[c] = Math.ceil(h / this._options.indentSize);
                else {
                    if (-2 === s) {
                        s = -1, a = -1;
                        for (let e = n - 2; 0 <= e; e--) {
                            var u = this._computeIndentLevel(e);
                            if (0 <= u) {
                                s = e, a = u;
                                break
                            }
                        }
                    }
                    if (-1 !== l && (-2 === l || l < n - 1)) {
                        l = -1, d = -1;
                        for (let e = n; e < i; e++) {
                            var p = this._computeIndentLevel(e);
                            if (0 <= p) {
                                l = e, d = p;
                                break
                            }
                        }
                    }
                    o[c] = this._getIndentLevelForWhitespaceLine(r, a, d)
                }
            }
            return o
        }
        _getIndentLevelForWhitespaceLine(e, t, i) {
            return -1 === t || -1 === i ? 0 : t < i ? 1 + Math.floor(t / this._options.indentSize) : t === i || e ? Math.ceil(i / this._options.indentSize) : 1 + Math.floor(i / this._options.indentSize)
        }
        normalizePosition(e, t) {
            return e
        }
        getLineIndentColumn(e) {
            return function(e) {
                let t = 0;
                for (const i of e) {
                    if (" " !== i && "\t" !== i) break;
                    t++
                }
                return t
            }(this.getLineContent(e)) + 1
        }
    };
    Et.MODEL_SYNC_LIMIT = 52428800, Et.LARGE_FILE_SIZE_THRESHOLD = 20971520, Et.LARGE_FILE_LINE_COUNT_THRESHOLD = 3e5, Et.DEFAULT_CREATION_OPTIONS = {
        isForSimpleWidget: !1,
        tabSize: l.d.tabSize,
        indentSize: l.d.indentSize,
        insertSpaces: l.d.insertSpaces,
        detectIndentation: !1,
        defaultEOL: 1,
        trimAutoWhitespace: l.d.trimAutoWhitespace,
        largeFileOptimizations: l.d.largeFileOptimizations,
        bracketPairColorizationOptions: l.d.bracketPairColorizationOptions
    }, Et = _t([i(4, ke.a), i(5, t.a), i(6, ye.a)], Et);
    class Nt {
        constructor() {
            this.activeClassName = "indent-active"
        }
        getInlineClassNameOfLevel(e) {
            return "bracket-indent-guide lvl-" + e % 30
        }
    }

    function Dt(e) {
        return !(!e.options.overviewRuler || !e.options.overviewRuler.color)
    }

    function It(e) {
        return e.options.after || e.options.before
    }
    class Tt {
        constructor() {
            this._decorationsTree0 = new L, this._decorationsTree1 = new L, this._injectedTextDecorationsTree = new L
        }
        ensureAllNodesHaveRanges(e) {
            this.getAll(e, 0, !1, !1)
        }
        _ensureNodesHaveRanges(e, t) {
            for (const i of t) null === i.range && (i.range = e.getRangeAt(i.cachedAbsoluteStart, i.cachedAbsoluteEnd));
            return t
        }
        getAllInInterval(e, t, i, n, r) {
            var o = e.getVersionId();
            o = this._intervalSearch(t, i, n, r, o);
            return this._ensureNodesHaveRanges(e, o)
        }
        _intervalSearch(e, t, i, n, r) {
            const o = this._decorationsTree0.intervalSearch(e, t, i, n, r);
            var s = this._decorationsTree1.intervalSearch(e, t, i, n, r);
            r = this._injectedTextDecorationsTree.intervalSearch(e, t, i, n, r);
            return o.concat(s).concat(r)
        }
        getInjectedTextInInterval(e, t, i, n) {
            var r = e.getVersionId();
            r = this._injectedTextDecorationsTree.intervalSearch(t, i, n, !1, r);
            return this._ensureNodesHaveRanges(e, r).filter(e => e.options.showIfCollapsed || !e.range.isEmpty())
        }
        getAllInjectedText(e, t) {
            var i = e.getVersionId();
            i = this._injectedTextDecorationsTree.search(t, !1, i);
            return this._ensureNodesHaveRanges(e, i).filter(e => e.options.showIfCollapsed || !e.range.isEmpty())
        }
        getAll(e, t, i, n) {
            var r = e.getVersionId();
            r = this._search(t, i, n, r);
            return this._ensureNodesHaveRanges(e, r)
        }
        _search(e, t, i, n) {
            if (i) return this._decorationsTree1.search(e, t, n); {
                const r = this._decorationsTree0.search(e, t, n);
                return i = this._decorationsTree1.search(e, t, n), n = this._injectedTextDecorationsTree.search(e, t, n), r.concat(i).concat(n)
            }
        }
        collectNodesFromOwner(e) {
            const t = this._decorationsTree0.collectNodesFromOwner(e);
            var i = this._decorationsTree1.collectNodesFromOwner(e);
            e = this._injectedTextDecorationsTree.collectNodesFromOwner(e);
            return t.concat(i).concat(e)
        }
        collectNodesPostOrder() {
            const e = this._decorationsTree0.collectNodesPostOrder();
            var t = this._decorationsTree1.collectNodesPostOrder(),
                i = this._injectedTextDecorationsTree.collectNodesPostOrder();
            return e.concat(t).concat(i)
        }
        insert(e) {
            (It(e) ? this._injectedTextDecorationsTree : Dt(e) ? this._decorationsTree1 : this._decorationsTree0).insert(e)
        }
        delete(e) {
            (It(e) ? this._injectedTextDecorationsTree : Dt(e) ? this._decorationsTree1 : this._decorationsTree0).delete(e)
        }
        getNodeRange(e, t) {
            var i = e.getVersionId();
            return t.cachedVersionId !== i && this._resolveNode(t, i), null === t.range && (t.range = e.getRangeAt(t.cachedAbsoluteStart, t.cachedAbsoluteEnd)), t.range
        }
        _resolveNode(e, t) {
            (It(e) ? this._injectedTextDecorationsTree : Dt(e) ? this._decorationsTree1 : this._decorationsTree0).resolveNode(e, t)
        }
        acceptReplace(e, t, i, n) {
            this._decorationsTree0.acceptReplace(e, t, i, n), this._decorationsTree1.acceptReplace(e, t, i, n), this._injectedTextDecorationsTree.acceptReplace(e, t, i, n)
        }
    }

    function Mt(e) {
        return e.replace(/[^a-z0-9\-_]/gi, " ")
    }
    class Pt {
        constructor(e) {
            this.color = e.color || "", this.darkColor = e.darkColor || ""
        }
    }
    class At extends Pt {
        constructor(e) {
            super(e), this._resolvedColor = null, this.position = "number" == typeof e.position ? e.position : u.g.Center
        }
        getColor(e) {
            return this._resolvedColor || ("light" !== e.type && this.darkColor ? this._resolvedColor = this._resolveColor(this.darkColor, e) : this._resolvedColor = this._resolveColor(this.color, e)), this._resolvedColor
        }
        invalidateCachedColor() {
            this._resolvedColor = null
        }
        _resolveColor(e, t) {
            if ("string" == typeof e) return e;
            let i = e ? t.getColor(e.id) : null;
            return i ? i.toString() : ""
        }
    }
    class Rt extends Pt {
        constructor(e) {
            super(e), this.position = e.position
        }
        getColor(e) {
            return this._resolvedColor || ("light" !== e.type && this.darkColor ? this._resolvedColor = this._resolveColor(this.darkColor, e) : this._resolvedColor = this._resolveColor(this.color, e)), this._resolvedColor
        }
        invalidateCachedColor() {
            this._resolvedColor = void 0
        }
        _resolveColor(e, t) {
            return "string" == typeof e ? Se.a.fromHex(e) : t.getColor(e.id)
        }
    }
    class Ft {
        constructor(e) {
            this.content = e.content || "", this.inlineClassName = e.inlineClassName || null, this.inlineClassNameAffectsLetterSpacing = e.inlineClassNameAffectsLetterSpacing || !1
        }
        static from(e) {
            return e instanceof Ft ? e : new Ft(e)
        }
    }
    class jt {
        constructor(e) {
            this.description = e.description, this.stickiness = e.stickiness || 0, this.zIndex = e.zIndex || 0, this.className = e.className ? Mt(e.className) : null, this.hoverMessage = e.hoverMessage || null, this.glyphMarginHoverMessage = e.glyphMarginHoverMessage || null, this.isWholeLine = e.isWholeLine || !1, this.showIfCollapsed = e.showIfCollapsed || !1, this.collapseOnReplaceEdit = e.collapseOnReplaceEdit || !1, this.overviewRuler = e.overviewRuler ? new At(e.overviewRuler) : null, this.minimap = e.minimap ? new Rt(e.minimap) : null, this.glyphMarginClassName = e.glyphMarginClassName ? Mt(e.glyphMarginClassName) : null, this.linesDecorationsClassName = e.linesDecorationsClassName ? Mt(e.linesDecorationsClassName) : null, this.firstLineDecorationClassName = e.firstLineDecorationClassName ? Mt(e.firstLineDecorationClassName) : null, this.marginClassName = e.marginClassName ? Mt(e.marginClassName) : null, this.inlineClassName = e.inlineClassName ? Mt(e.inlineClassName) : null, this.inlineClassNameAffectsLetterSpacing = e.inlineClassNameAffectsLetterSpacing || !1, this.beforeContentClassName = e.beforeContentClassName ? Mt(e.beforeContentClassName) : null, this.afterContentClassName = e.afterContentClassName ? Mt(e.afterContentClassName) : null, this.after = e.after ? Ft.from(e.after) : null, this.before = e.before ? Ft.from(e.before) : null
        }
        static register(e) {
            return new jt(e)
        }
        static createDynamic(e) {
            return new jt(e)
        }
    }
    jt.EMPTY = jt.register({
        description: "empty"
    });
    const Bt = [jt.register({
        description: "tracked-range-always-grows-when-typing-at-edges",
        stickiness: 0
    }), jt.register({
        description: "tracked-range-never-grows-when-typing-at-edges",
        stickiness: 1
    }), jt.register({
        description: "tracked-range-grows-only-when-typing-before",
        stickiness: 2
    }), jt.register({
        description: "tracked-range-grows-only-when-typing-after",
        stickiness: 3
    })];

    function Vt(e) {
        return e instanceof jt ? e : jt.createDynamic(e)
    }
    class Wt extends o.a {
        constructor(e) {
            super(), this.handleBeforeFire = e, this._actual = this._register(new r.b), this.event = this._actual.event, this._affectedInjectedTextLines = null, this._deferredCnt = 0, this._shouldFire = !1, this._affectsMinimap = !1, this._affectsOverviewRuler = !1
        }
        beginDeferredEmit() {
            this._deferredCnt++
        }
        endDeferredEmit() {
            var e;
            this._deferredCnt--, 0 === this._deferredCnt && (this._shouldFire && (this.handleBeforeFire(this._affectedInjectedTextLines), e = {
                affectsMinimap: this._affectsMinimap,
                affectsOverviewRuler: this._affectsOverviewRuler
            }, this._shouldFire = !1, this._affectsMinimap = !1, this._affectsOverviewRuler = !1, this._actual.fire(e)), null !== (e = this._affectedInjectedTextLines) && void 0 !== e && e.clear(), this._affectedInjectedTextLines = null)
        }
        recordLineAffectedByInjectedText(e) {
            this._affectedInjectedTextLines || (this._affectedInjectedTextLines = new Set), this._affectedInjectedTextLines.add(e)
        }
        checkAffectedAndFire(e) {
            this._affectsMinimap || (this._affectsMinimap = !(!e.minimap || !e.minimap.position)), this._affectsOverviewRuler || (this._affectsOverviewRuler = !(!e.overviewRuler || !e.overviewRuler.color)), this._shouldFire = !0
        }
        fire() {
            this._affectsMinimap = !0, this._affectsOverviewRuler = !0, this._shouldFire = !0
        }
    }
    class zt extends o.a {
        constructor() {
            super(), this._fastEmitter = this._register(new r.b), this.fastEvent = this._fastEmitter.event, this._slowEmitter = this._register(new r.b), this.slowEvent = this._slowEmitter.event, this._deferredCnt = 0, this._deferredEvent = null
        }
        beginDeferredEmit() {
            this._deferredCnt++
        }
        endDeferredEmit(e = null) {
            this._deferredCnt--, 0 === this._deferredCnt && null !== this._deferredEvent && (this._deferredEvent.rawContentChangedEvent.resultingSelection = e, e = this._deferredEvent, this._deferredEvent = null, this._fastEmitter.fire(e), this._slowEmitter.fire(e))
        }
        fire(e) {
            0 < this._deferredCnt ? this._deferredEvent ? this._deferredEvent = this._deferredEvent.merge(e) : this._deferredEvent = e : (this._fastEmitter.fire(e), this._slowEmitter.fire(e))
        }
    }
}, function(e, t) {
    e.exports = require("child_process")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), i = i(26);
    const n = Object(i.c)("modelService");

    function r(e) {
        return !e.isTooLargeForSyncing() && !e.isForSimpleWidget
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    class n {
        constructor(e) {
            this.element = e, this.next = n.Undefined, this.prev = n.Undefined
        }
    }
    n.Undefined = new n(void 0);
    class r {
        constructor() {
            this._first = n.Undefined, this._last = n.Undefined, this._size = 0
        }
        get size() {
            return this._size
        }
        isEmpty() {
            return this._first === n.Undefined
        }
        clear() {
            let e = this._first;
            for (; e !== n.Undefined;) {
                var t = e.next;
                e.prev = n.Undefined, e.next = n.Undefined, e = t
            }
            this._first = n.Undefined, this._last = n.Undefined, this._size = 0
        }
        unshift(e) {
            return this._insert(e, !1)
        }
        push(e) {
            return this._insert(e, !0)
        }
        _insert(e, t) {
            const i = new n(e);
            if (this._first === n.Undefined) this._first = i, this._last = i;
            else if (t) {
                const e = this._last;
                this._last = i, i.prev = e, e.next = i
            } else {
                const e = this._first;
                this._first = i, i.next = e, e.prev = i
            }
            this._size += 1;
            let r = !1;
            return () => {
                r || (r = !0, this._remove(i))
            }
        }
        shift() {
            if (this._first !== n.Undefined) {
                var e = this._first.element;
                return this._remove(this._first), e
            }
        }
        pop() {
            if (this._last !== n.Undefined) {
                var e = this._last.element;
                return this._remove(this._last), e
            }
        }
        _remove(e) {
            if (e.prev !== n.Undefined && e.next !== n.Undefined) {
                const t = e.prev;
                t.next = e.next, e.next.prev = t
            } else e.prev === n.Undefined && e.next === n.Undefined ? (this._first = n.Undefined, this._last = n.Undefined) : e.next === n.Undefined ? (this._last = this._last.prev, this._last.next = n.Undefined) : e.prev === n.Undefined && (this._first = this._first.next, this._first.prev = n.Undefined);
            --this._size
        }*[Symbol.iterator]() {
            let e = this._first;
            for (; e !== n.Undefined;) yield e.element, e = e.next
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), t = i(65), i = i(26), t.a;
    const n = Object(i.c)("notificationService");
    class r {}
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i = i(26);
    const n = Object(i.c)("keybindingService")
}, function(e, t) {
    e.exports = require("lodash")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return r
    })), i.d(t, "a", (function() {
        return o
    })), i.d(t, "c", (function() {
        return s
    })), i.d(t, "d", (function() {
        return a
    }));
    var n = i(86);
    const r = new class {
            clone() {
                return this
            }
            equals(e) {
                return this === e
            }
        },
        o = "vs.editor.nullMode";

    function s(e, t, i, r) {
        return new n.b([new n.a(r, "", e)], i)
    }

    function a(e, t, i, o) {
        let s = new Uint32Array(2);
        return s[0] = o, s[1] = (e << 0 | 16384 | 2 << 23) >>> 0, new n.c(s, null === i ? r : i)
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return a
    }));
    var n = i(1),
        r = i(55),
        o = i(66),
        s = i(50);
    class a extends i(4).a {
        onclick(e, t) {
            this._register(n.g(e, n.d.CLICK, e => t(new o.a(e))))
        }
        onmousedown(e, t) {
            this._register(n.g(e, n.d.MOUSE_DOWN, e => t(new o.a(e))))
        }
        onmouseover(e, t) {
            this._register(n.g(e, n.d.MOUSE_OVER, e => t(new o.a(e))))
        }
        onnonbubblingmouseout(e, t) {
            this._register(n.h(e, e => t(new o.a(e))))
        }
        onkeydown(e, t) {
            this._register(n.g(e, n.d.KEY_DOWN, e => t(new r.a(e))))
        }
        onkeyup(e, t) {
            this._register(n.g(e, n.d.KEY_UP, e => t(new r.a(e))))
        }
        oninput(e, t) {
            this._register(n.g(e, n.d.INPUT, t))
        }
        onblur(e, t) {
            this._register(n.g(e, n.d.BLUR, t))
        }
        onfocus(e, t) {
            this._register(n.g(e, n.d.FOCUS, t))
        }
        ignoreGesture(e) {
            s.b.ignoreTarget(e)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(15);
    class r {
        constructor(e, t, i) {
            this._lineTokensBrand = void 0, this._tokens = e, this._tokensCount = this._tokens.length >>> 1, this._text = t, this._languageIdCodec = i
        }
        static createEmpty(e, t) {
            var i = r.defaultTokenMetadata;
            const n = new Uint32Array(2);
            return n[0] = e.length, n[1] = i, new r(n, e, t)
        }
        equals(e) {
            return e instanceof r && this.slicedEquals(e, 0, this._tokensCount)
        }
        slicedEquals(e, t, i) {
            if (this._text !== e._text) return !1;
            if (this._tokensCount !== e._tokensCount) return !1;
            var n = (t = t << 1) + (i << 1);
            for (let i = t; i < n; i++)
                if (this._tokens[i] !== e._tokens[i]) return !1;
            return !0
        }
        getLineContent() {
            return this._text
        }
        getCount() {
            return this._tokensCount
        }
        getStartOffset(e) {
            return 0 < e ? this._tokens[e - 1 << 1] : 0
        }
        getMetadata(e) {
            return this._tokens[1 + (e << 1)]
        }
        getLanguageId(e) {
            return e = this._tokens[1 + (e << 1)], e = n.z.getLanguageId(e), this._languageIdCodec.decodeLanguageId(e)
        }
        getStandardTokenType(e) {
            return e = this._tokens[1 + (e << 1)], n.z.getTokenType(e)
        }
        getForeground(e) {
            return e = this._tokens[1 + (e << 1)], n.z.getForeground(e)
        }
        getClassName(e) {
            return e = this._tokens[1 + (e << 1)], n.z.getClassNameFromMetadata(e)
        }
        getInlineStyle(e, t) {
            return e = this._tokens[1 + (e << 1)], n.z.getInlineStyleFromMetadata(e, t)
        }
        getEndOffset(e) {
            return this._tokens[e << 1]
        }
        findTokenIndexAtOffset(e) {
            return r.findIndexInTokensArray(this._tokens, e)
        }
        inflate() {
            return this
        }
        sliceAndInflate(e, t, i) {
            return new o(this, e, t, i)
        }
        static convertToEndOffset(e, t) {
            var i = (e.length >>> 1) - 1;
            for (let t = 0; t < i; t++) e[t << 1] = e[t + 1 << 1];
            e[i << 1] = t
        }
        static findIndexInTokensArray(e, t) {
            if (e.length <= 2) return 0;
            let i = 0,
                n = (e.length >>> 1) - 1;
            for (; i < n;) {
                var r = i + Math.floor((n - i) / 2),
                    o = e[r << 1];
                if (o === t) return r + 1;
                o < t ? i = r + 1 : t < o && (n = r)
            }
            return i
        }
        withInserted(e) {
            if (0 === e.length) return this;
            let t = 0,
                i = 0,
                n = "";
            const o = new Array;
            let s = 0;
            for (;;) {
                var a = t < this._tokensCount ? this._tokens[t << 1] : -1,
                    l = i < e.length ? e[i] : null;
                if (-1 !== a && (null === l || a <= l.offset)) {
                    n += this._text.substring(s, a);
                    var d = this._tokens[1 + (t << 1)];
                    o.push(n.length, d), t++, s = a
                } else {
                    if (!l) break;
                    l.offset > s && (n += this._text.substring(s, l.offset), a = this._tokens[1 + (t << 1)], o.push(n.length, a), s = l.offset), n += l.text, o.push(n.length, l.tokenMetadata), i++
                }
            }
            return new r(new Uint32Array(o), n, this._languageIdCodec)
        }
    }
    r.defaultTokenMetadata = 16793600;
    class o {
        constructor(e, t, i, n) {
            this._source = e, this._startOffset = t, this._endOffset = i, this._deltaOffset = n, this._firstTokenIndex = e.findTokenIndexAtOffset(t), this._tokensCount = 0;
            for (let t = this._firstTokenIndex, n = e.getCount(); t < n && !(i <= e.getStartOffset(t)); t++) this._tokensCount++
        }
        equals(e) {
            return e instanceof o && this._startOffset === e._startOffset && this._endOffset === e._endOffset && this._deltaOffset === e._deltaOffset && this._source.slicedEquals(e._source, this._firstTokenIndex, this._tokensCount)
        }
        getCount() {
            return this._tokensCount
        }
        getForeground(e) {
            return this._source.getForeground(this._firstTokenIndex + e)
        }
        getEndOffset(e) {
            return e = this._source.getEndOffset(this._firstTokenIndex + e), Math.min(this._endOffset, e) - this._startOffset + this._deltaOffset
        }
        getClassName(e) {
            return this._source.getClassName(this._firstTokenIndex + e)
        }
        getInlineStyle(e, t) {
            return this._source.getInlineStyle(this._firstTokenIndex + e, t)
        }
        findTokenIndexAtOffset(e) {
            return this._source.findTokenIndexAtOffset(e + this._startOffset - this._deltaOffset) - this._firstTokenIndex
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), i.d(t, "c", (function() {
        return o
    }));
    class n {
        constructor(e, t, i) {
            this._tokenBrand = void 0, this.offset = 0 | e, this.type = t, this.language = i
        }
        toString() {
            return "(" + this.offset + ", " + this.type + ")"
        }
    }
    class r {
        constructor(e, t) {
            this._tokenizationResultBrand = void 0, this.tokens = e, this.endState = t
        }
    }
    class o {
        constructor(e, t) {
            this._tokenizationResult2Brand = void 0, this.tokens = e, this.endState = t
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return c
    })), i.d(t, "a", (function() {
        return h
    })), i.d(t, "c", (function() {
        return f
    }));
    var n = i(32),
        r = i(33),
        o = i(2),
        s = i(0),
        a = i(148),
        l = (t = i(58), i(23));
    const d = new class {
        constructor() {
            this._onDidChange = new o.b, this.onDidChange = this._onDidChange.event, this.iconSchema = {
                definitions: {
                    icons: {
                        type: "object",
                        properties: {
                            fontId: {
                                type: "string",
                                description: Object(s.a)("iconDefintion.fontId", "The id of the font to use. If not set, the font that is defined first is used.")
                            },
                            fontCharacter: {
                                type: "string",
                                description: Object(s.a)("iconDefintion.fontCharacter", "The font character associated with the icon definition.")
                            }
                        },
                        additionalProperties: !1,
                        defaultSnippets: [{
                            body: {
                                fontCharacter: "\\\\e030"
                            }
                        }]
                    }
                },
                type: "object",
                properties: {}
            }, this.iconReferenceSchema = {
                type: "string",
                pattern: `^${r.a.iconNameExpression}$`,
                enum: [],
                enumDescriptions: []
            }, this.iconsById = {}, this.iconFontsById = {}
        }
        registerIcon(e, t, i, n) {
            const r = this.iconsById[e];
            var o;
            if (r) return i && !r.description && (r.description = i, this.iconSchema.properties[e].markdownDescription = `${i} $(${e})`, -1 !== (o = this.iconReferenceSchema.enum.indexOf(e)) && (this.iconReferenceSchema.enumDescriptions[o] = i), this._onDidChange.fire()), r;
            this.iconsById[e] = {
                id: e,
                description: i,
                defaults: t,
                deprecationMessage: n
            };
            let s = {
                $ref: "#/definitions/icons"
            };
            return n && (s.deprecationMessage = n), i && (s.markdownDescription = `${i}: $(${e})`), this.iconSchema.properties[e] = s, this.iconReferenceSchema.enum.push(e), this.iconReferenceSchema.enumDescriptions.push(i || ""), this._onDidChange.fire(), {
                id: e
            }
        }
        getIcons() {
            return Object.keys(this.iconsById).map(e => this.iconsById[e])
        }
        getIcon(e) {
            return this.iconsById[e]
        }
        getIconSchema() {
            return this.iconSchema
        }
        getIconFont(e) {
            return this.iconFontsById[e]
        }
        toString() {
            var e = (e, t) => e.id.localeCompare(t.id),
                t = e => {
                    for (; l.d.isThemeIcon(e.defaults);) e = this.iconsById[e.defaults.id];
                    return "codicon codicon-" + (e ? e.id : "")
                };
            let i = [];
            i.push("| preview     | identifier                        | default codicon ID                | description"), i.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");
            const n = Object.keys(this.iconsById).map(e => this.iconsById[e]);
            for (const r of n.filter(e => !!e.description).sort(e)) i.push(`|<i class="${t(r)}"></i>|${r.id}|${(l.d.isThemeIcon(r.defaults)?r.defaults:r).id}|${r.description||""}|`);
            i.push("| preview     | identifier                        "), i.push("| ----------- | --------------------------------- |");
            for (const r of n.filter(e => !l.d.isThemeIcon(e.defaults)).sort(e)) i.push(`|<i class="${t(r)}"></i>|${r.id}|`);
            return i.join("\n")
        }
    };

    function c(e, t, i, n) {
        return d.registerIcon(e, t, i, n)
    }

    function h() {
        return d
    }
    t.a.add("base.contributions.icons", d),
        function() {
            for (const e of r.d.all) d.registerIcon(e.id, e.definition, e.description);
            r.d.onDidRegister(e => d.registerIcon(e.id, e.definition, e.description))
        }();
    const u = "vscode://schemas/icons";
    let p = t.a.as(a.a.JSONContribution);
    p.registerSchema(u, d.getIconSchema());
    const g = new n.e(() => p.notifySchemaChanged(u), 200);
    d.onDidChange(() => {
        g.isScheduled() || g.schedule()
    });
    const f = c("widget-close", r.b.close, Object(s.a)("widgetClose", "Icon for the close action in widgets."))
}, function(e, t, i) {
    "use strict";
    /*!
     * Vue.js v2.6.14
     * (c) 2014-2021 Evan You
     * Released under the MIT License.
     */
    var n = Object.freeze({});

    function r(e) {
        return null == e
    }

    function o(e) {
        return null != e
    }

    function s(e) {
        return "string" == typeof e || "number" == typeof e || "symbol" == typeof e || "boolean" == typeof e
    }

    function a(e) {
        return null !== e && "object" == typeof e
    }
    var l = Object.prototype.toString;

    function d(e) {
        return "[object Object]" === l.call(e)
    }

    function c(e) {
        var t = parseFloat(String(e));
        return 0 <= t && Math.floor(t) === t && isFinite(e)
    }

    function h(e) {
        return o(e) && "function" == typeof e.then && "function" == typeof e.catch
    }

    function u(e) {
        return null == e ? "" : Array.isArray(e) || d(e) && e.toString === l ? JSON.stringify(e, null, 2) : String(e)
    }

    function p(e) {
        var t = parseFloat(e);
        return isNaN(t) ? e : t
    }

    function g(e, t) {
        for (var i = Object.create(null), n = e.split(","), r = 0; r < n.length; r++) i[n[r]] = !0;
        return t ? function(e) {
            return i[e.toLowerCase()]
        } : function(e) {
            return i[e]
        }
    }
    var f = g("slot,component", !0),
        m = g("key,ref,slot,slot-scope,is");

    function v(e, t) {
        if (e.length && -1 < (t = e.indexOf(t))) return e.splice(t, 1)
    }
    var b = Object.prototype.hasOwnProperty;

    function _(e, t) {
        return b.call(e, t)
    }

    function w(e) {
        var t = Object.create(null);
        return function(i) {
            return t[i] || (t[i] = e(i))
        }
    }
    var y = /-(\w)/g,
        C = w((function(e) {
            return e.replace(y, (function(e, t) {
                return t ? t.toUpperCase() : ""
            }))
        })),
        x = w((function(e) {
            return e.charAt(0).toUpperCase() + e.slice(1)
        })),
        S = /\B([A-Z])/g,
        k = w((function(e) {
            return e.replace(S, "-$1").toLowerCase()
        })),
        L = Function.prototype.bind ? function(e, t) {
            return e.bind(t)
        } : function(e, t) {
            function i(i) {
                var n = arguments.length;
                return n ? 1 < n ? e.apply(t, arguments) : e.call(t, i) : e.call(t)
            }
            return i._length = e.length, i
        };

    function O(e, t) {
        for (var i = e.length - (t = t || 0), n = new Array(i); i--;) n[i] = e[i + t];
        return n
    }

    function E(e, t) {
        for (var i in t) e[i] = t[i];
        return e
    }

    function N(e) {
        for (var t = {}, i = 0; i < e.length; i++) e[i] && E(t, e[i]);
        return t
    }

    function D(e, t, i) {}
    var I = function(e, t, i) {
            return !1
        },
        T = function(e) {
            return e
        };

    function M(e, t) {
        if (e === t) return !0;
        var i = a(e),
            n = a(t);
        if (!i || !n) return !i && !n && String(e) === String(t);
        try {
            var r = Array.isArray(e),
                o = Array.isArray(t);
            if (r && o) return e.length === t.length && e.every((function(e, i) {
                return M(e, t[i])
            }));
            if (e instanceof Date && t instanceof Date) return e.getTime() === t.getTime();
            if (r || o) return !1;
            var s = Object.keys(e),
                l = Object.keys(t);
            return s.length === l.length && s.every((function(i) {
                return M(e[i], t[i])
            }))
        } catch (i) {
            return !1
        }
    }

    function P(e, t) {
        for (var i = 0; i < e.length; i++)
            if (M(e[i], t)) return i;
        return -1
    }

    function A(e) {
        var t = !1;
        return function() {
            t || (t = !0, e.apply(this, arguments))
        }
    }
    var R = "data-server-rendered",
        F = ["component", "directive", "filter"],
        j = ["beforeCreate", "created", "beforeMount", "mounted", "beforeUpdate", "updated", "beforeDestroy", "destroyed", "activated", "deactivated", "errorCaptured", "serverPrefetch"],
        B = {
            optionMergeStrategies: Object.create(null),
            silent: !1,
            productionTip: !1,
            devtools: !1,
            performance: !1,
            errorHandler: null,
            warnHandler: null,
            ignoredElements: [],
            keyCodes: Object.create(null),
            isReservedTag: I,
            isReservedAttr: I,
            isUnknownElement: I,
            getTagNamespace: D,
            parsePlatformTagName: T,
            mustUseProp: I,
            async: !0,
            _lifecycleHooks: j
        },
        V = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;

    function W(e, t, i, n) {
        Object.defineProperty(e, t, {
            value: i,
            enumerable: !!n,
            writable: !0,
            configurable: !0
        })
    }
    var z, H = new RegExp("[^" + V.source + ".$_\\d]"),
        U = "__proto__" in {},
        K = "undefined" != typeof window,
        $ = "undefined" != typeof WXEnvironment && !!WXEnvironment.platform,
        q = $ && WXEnvironment.platform.toLowerCase(),
        G = (Mi = K && window.navigator.userAgent.toLowerCase()) && /msie|trident/.test(Mi),
        Y = Mi && 0 < Mi.indexOf("msie 9.0"),
        Z = Mi && 0 < Mi.indexOf("edge/"),
        X = (Mi && Mi.indexOf("android"), Mi && /iphone|ipad|ipod|ios/.test(Mi) || "ios" === q),
        Q = (Mi && /chrome\/\d+/.test(Mi), Mi && /phantomjs/.test(Mi), Mi && Mi.match(/firefox\/(\d+)/)),
        J = {}.watch,
        ee = !1;
    if (K) try {
        var te = {};
        Object.defineProperty(te, "passive", {
            get: function() {
                ee = !0
            }
        }), window.addEventListener("test-passive", null, te)
    } catch (e) {}
    var ie = function() {
            return z = void 0 === z ? !K && !$ && "undefined" != typeof global && global.process && "server" === global.process.env.VUE_ENV : z
        },
        ne = K && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;

    function re(e) {
        return "function" == typeof e && /native code/.test(e.toString())
    }
    var oe = "undefined" != typeof Symbol && re(Symbol) && "undefined" != typeof Reflect && re(Reflect.ownKeys),
        se = "undefined" != typeof Set && re(Set) ? Set : function() {
            function e() {
                this.set = Object.create(null)
            }
            return e.prototype.has = function(e) {
                return !0 === this.set[e]
            }, e.prototype.add = function(e) {
                this.set[e] = !0
            }, e.prototype.clear = function() {
                this.set = Object.create(null)
            }, e
        }(),
        ae = D,
        le = 0,
        de = function() {
            this.id = le++, this.subs = []
        };
    de.prototype.addSub = function(e) {
        this.subs.push(e)
    }, de.prototype.removeSub = function(e) {
        v(this.subs, e)
    }, de.prototype.depend = function() {
        de.target && de.target.addDep(this)
    }, de.prototype.notify = function() {
        for (var e = this.subs.slice(), t = 0, i = e.length; t < i; t++) e[t].update()
    }, de.target = null;
    var ce = [];

    function he(e) {
        ce.push(e), de.target = e
    }

    function ue() {
        ce.pop(), de.target = ce[ce.length - 1]
    }
    var pe = function(e, t, i, n, r, o, s, a) {
        this.tag = e, this.data = t, this.children = i, this.text = n, this.elm = r, this.ns = void 0, this.context = o, this.fnContext = void 0, this.fnOptions = void 0, this.fnScopeId = void 0, this.key = t && t.key, this.componentOptions = s, this.componentInstance = void 0, this.parent = void 0, this.raw = !1, this.isStatic = !1, this.isRootInsert = !0, this.isComment = !1, this.isCloned = !1, this.isOnce = !1, this.asyncFactory = a, this.asyncMeta = void 0, this.isAsyncPlaceholder = !1
    };
    (bn = {
        child: {
            configurable: !0
        }
    }).child.get = function() {
        return this.componentInstance
    }, Object.defineProperties(pe.prototype, bn);
    var ge = function(e) {
        void 0 === e && (e = "");
        var t = new pe;
        return t.text = e, t.isComment = !0, t
    };

    function fe(e) {
        return new pe(void 0, void 0, void 0, String(e))
    }

    function me(e) {
        var t = new pe(e.tag, e.data, e.children && e.children.slice(), e.text, e.elm, e.context, e.componentOptions, e.asyncFactory);
        return t.ns = e.ns, t.isStatic = e.isStatic, t.key = e.key, t.isComment = e.isComment, t.fnContext = e.fnContext, t.fnOptions = e.fnOptions, t.fnScopeId = e.fnScopeId, t.asyncMeta = e.asyncMeta, t.isCloned = !0, t
    }
    var ve = Array.prototype,
        be = Object.create(ve);
    ["push", "pop", "shift", "unshift", "splice", "sort", "reverse"].forEach((function(e) {
        var t = ve[e];
        W(be, e, (function() {
            for (var i = [], n = arguments.length; n--;) i[n] = arguments[n];
            var r, o = t.apply(this, i),
                s = this.__ob__;
            switch (e) {
                case "push":
                case "unshift":
                    r = i;
                    break;
                case "splice":
                    r = i.slice(2)
            }
            return r && s.observeArray(r), s.dep.notify(), o
        }))
    }));
    var _e = Object.getOwnPropertyNames(be),
        we = !0;

    function ye(e) {
        we = e
    }
    var Ce = function(e) {
        this.value = e, this.dep = new de, this.vmCount = 0, W(e, "__ob__", this), Array.isArray(e) ? (U ? e.__proto__ = be : function(e, t, i) {
            for (var n = 0, r = i.length; n < r; n++) {
                var o = i[n];
                W(e, o, t[o])
            }
        }(e, be, _e), this.observeArray(e)) : this.walk(e)
    };

    function xe(e, t) {
        var i;
        if (a(e) && !(e instanceof pe)) return _(e, "__ob__") && e.__ob__ instanceof Ce ? i = e.__ob__ : we && !ie() && (Array.isArray(e) || d(e)) && Object.isExtensible(e) && !e._isVue && (i = new Ce(e)), t && i && i.vmCount++, i
    }

    function Se(e, t, i, n, r) {
        var o, s, a, l = new de,
            d = Object.getOwnPropertyDescriptor(e, t);
        d && !1 === d.configurable || (o = d && d.get, s = d && d.set, o && !s || 2 !== arguments.length || (i = e[t]), a = !r && xe(i), Object.defineProperty(e, t, {
            enumerable: !0,
            configurable: !0,
            get: function() {
                var t = o ? o.call(e) : i;
                return de.target && (l.depend(), a && (a.dep.depend(), Array.isArray(t) && function e(t) {
                    for (var i = void 0, n = 0, r = t.length; n < r; n++)(i = t[n]) && i.__ob__ && i.__ob__.dep.depend(), Array.isArray(i) && e(i)
                }(t))), t
            },
            set: function(t) {
                var n = o ? o.call(e) : i;
                t === n || t != t && n != n || o && !s || (s ? s.call(e, t) : i = t, a = !r && xe(t), l.notify())
            }
        }))
    }

    function ke(e, t, i) {
        if (Array.isArray(e) && c(t)) return e.length = Math.max(e.length, t), e.splice(t, 1, i), i;
        if (t in e && !(t in Object.prototype)) return e[t] = i;
        var n = e.__ob__;
        return e._isVue || n && n.vmCount ? i : n ? (Se(n.value, t, i), n.dep.notify(), i) : e[t] = i
    }

    function Le(e, t) {
        var i;
        Array.isArray(e) && c(t) ? e.splice(t, 1) : (i = e.__ob__, e._isVue || i && i.vmCount || _(e, t) && (delete e[t], i && i.dep.notify()))
    }
    Ce.prototype.walk = function(e) {
        for (var t = Object.keys(e), i = 0; i < t.length; i++) Se(e, t[i])
    }, Ce.prototype.observeArray = function(e) {
        for (var t = 0, i = e.length; t < i; t++) xe(e[t])
    };
    var Oe = B.optionMergeStrategies;

    function Ee(e, t) {
        if (!t) return e;
        for (var i, n, r, o = oe ? Reflect.ownKeys(t) : Object.keys(t), s = 0; s < o.length; s++) "__ob__" !== (i = o[s]) && (n = e[i], r = t[i], _(e, i) ? n !== r && d(n) && d(r) && Ee(n, r) : ke(e, i, r));
        return e
    }

    function Ne(e, t, i) {
        return i ? function() {
            var n = "function" == typeof t ? t.call(i, i) : t,
                r = "function" == typeof e ? e.call(i, i) : e;
            return n ? Ee(n, r) : r
        } : t ? e ? function() {
            return Ee("function" == typeof t ? t.call(this, this) : t, "function" == typeof e ? e.call(this, this) : e)
        } : t : e
    }

    function De(e, t) {
        return (e = t ? e ? e.concat(t) : Array.isArray(t) ? t : [t] : e) && function(e) {
            for (var t = [], i = 0; i < e.length; i++) - 1 === t.indexOf(e[i]) && t.push(e[i]);
            return t
        }(e)
    }

    function Ie(e, t, i, n) {
        return e = Object.create(e || null), t ? E(e, t) : e
    }
    Oe.data = function(e, t, i) {
        return i ? Ne(e, t, i) : t && "function" != typeof t ? e : Ne(e, t)
    }, j.forEach((function(e) {
        Oe[e] = De
    })), F.forEach((function(e) {
        Oe[e + "s"] = Ie
    })), Oe.watch = function(e, t, i, n) {
        if (e === J && (e = void 0), !(t = t === J ? void 0 : t)) return Object.create(e || null);
        if (!e) return t;
        var r, o = {};
        for (r in E(o, e), t) {
            var s = o[r],
                a = t[r];
            s && !Array.isArray(s) && (s = [s]), o[r] = s ? s.concat(a) : Array.isArray(a) ? a : [a]
        }
        return o
    }, Oe.props = Oe.methods = Oe.inject = Oe.computed = function(e, t, i, n) {
        if (!e) return t;
        var r = Object.create(null);
        return E(r, e), t && E(r, t), r
    }, Oe.provide = Ne;
    var Te = function(e, t) {
        return void 0 === t ? e : t
    };

    function Me(e, t, i) {
        if (function(e) {
                var t = e.props;
                if (t) {
                    var i, n, r = {};
                    if (Array.isArray(t))
                        for (i = t.length; i--;) "string" == typeof(n = t[i]) && (r[C(n)] = {
                            type: null
                        });
                    else if (d(t))
                        for (var o in t) n = t[o], r[C(o)] = d(n) ? n : {
                            type: n
                        };
                    e.props = r
                }
            }(t = "function" == typeof t ? t.options : t), function(e) {
                var t = e.inject;
                if (t) {
                    var i = e.inject = {};
                    if (Array.isArray(t))
                        for (var n = 0; n < t.length; n++) i[t[n]] = {
                            from: t[n]
                        };
                    else if (d(t))
                        for (var r in t) {
                            var o = t[r];
                            i[r] = d(o) ? E({
                                from: r
                            }, o) : {
                                from: o
                            }
                        }
                }
            }(t), function(e) {
                var t = e.directives;
                if (t)
                    for (var i in t) {
                        var n = t[i];
                        "function" == typeof n && (t[i] = {
                            bind: n,
                            update: n
                        })
                    }
            }(t), !t._base && (t.extends && (e = Me(e, t.extends, i)), t.mixins))
            for (var n = 0, r = t.mixins.length; n < r; n++) e = Me(e, t.mixins[n], i);
        var o, s = {};
        for (o in e) a(o);
        for (o in t) _(e, o) || a(o);

        function a(n) {
            var r = Oe[n] || Te;
            s[n] = r(e[n], t[n], i, n)
        }
        return s
    }

    function Pe(e, t, i) {
        if ("string" == typeof i) {
            var n = e[t];
            return _(n, i) ? n[i] : _(n, e = C(i)) ? n[e] : _(n, t = x(e)) ? n[t] : n[i] || n[e] || n[t]
        }
    }

    function Ae(e, t, i, n) {
        var r = t[e],
            o = !_(i, e);
        t = i[e];
        return -1 < (i = Be(Boolean, r.type)) && (o && !_(r, "default") ? t = !1 : "" !== t && t !== k(e) || ((o = Be(String, r.type)) < 0 || i < o) && (t = !0)), void 0 === t && (t = function(e, t, i) {
            if (_(t, "default")) {
                var n = t.default;
                return e && e.$options.propsData && void 0 === e.$options.propsData[i] && void 0 !== e._props[i] ? e._props[i] : "function" == typeof n && "Function" !== Fe(t.type) ? n.call(e) : n
            }
        }(n, r, e), e = we, ye(!0), xe(t), ye(e)), t
    }
    var Re = /^\s*function (\w+)/;

    function Fe(e) {
        return (e = e && e.toString().match(Re)) ? e[1] : ""
    }

    function je(e, t) {
        return Fe(e) === Fe(t)
    }

    function Be(e, t) {
        if (!Array.isArray(t)) return je(t, e) ? 0 : -1;
        for (var i = 0, n = t.length; i < n; i++)
            if (je(t[i], e)) return i;
        return -1
    }

    function Ve(e, t, i) {
        he();
        try {
            if (t)
                for (var n = t; n = n.$parent;) {
                    var r = n.$options.errorCaptured;
                    if (r)
                        for (var o = 0; o < r.length; o++) try {
                            if (!1 === r[o].call(n, e, t, i)) return
                        } catch (e) {
                            ze(e, n, "errorCaptured hook")
                        }
                }
            ze(e, t, i)
        } finally {
            ue()
        }
    }

    function We(e, t, i, n, r) {
        var o;
        try {
            (o = i ? e.apply(t, i) : e.call(t)) && !o._isVue && h(o) && !o._handled && (o.catch((function(e) {
                return Ve(e, n, r + " (Promise/async)")
            })), o._handled = !0)
        } catch (e) {
            Ve(e, n, r)
        }
        return o
    }

    function ze(e, t, i) {
        if (B.errorHandler) try {
            return B.errorHandler.call(null, e, t, i)
        } catch (t) {
            t !== e && He(t)
        }
        He(e)
    }

    function He(e) {
        if (!K && !$ || "undefined" == typeof console) throw e;
        console.error(e)
    }
    var Ue, Ke, $e, qe, Ge = !1,
        Ye = [],
        Ze = !1;

    function Xe() {
        Ze = !1;
        for (var e = Ye.slice(0), t = Ye.length = 0; t < e.length; t++) e[t]()
    }

    function Qe(e, t) {
        var i;
        if (Ye.push((function() {
                if (e) try {
                    e.call(t)
                } catch (e) {
                    Ve(e, t, "nextTick")
                } else i && i(t)
            })), Ze || (Ze = !0, Ke()), !e && "undefined" != typeof Promise) return new Promise((function(e) {
            i = e
        }))
    }
    "undefined" != typeof Promise && re(Promise) ? (Ue = Promise.resolve(), Ke = function() {
        Ue.then(Xe), X && setTimeout(D)
    }, Ge = !0) : G || "undefined" == typeof MutationObserver || !re(MutationObserver) && "[object MutationObserverConstructor]" !== MutationObserver.toString() ? Ke = "undefined" != typeof setImmediate && re(setImmediate) ? function() {
        setImmediate(Xe)
    } : function() {
        setTimeout(Xe, 0)
    } : ($e = 1, an = new MutationObserver(Xe), qe = document.createTextNode(String($e)), an.observe(qe, {
        characterData: !0
    }), Ke = function() {
        $e = ($e + 1) % 2, qe.data = String($e)
    }, Ge = !0);
    var Je = new se;

    function et(e) {
        ! function e(t, i) {
            var n, r, o = Array.isArray(t);
            if (!(!o && !a(t) || Object.isFrozen(t) || t instanceof pe)) {
                if (t.__ob__) {
                    var s = t.__ob__.dep.id;
                    if (i.has(s)) return;
                    i.add(s)
                }
                if (o)
                    for (n = t.length; n--;) e(t[n], i);
                else
                    for (n = (r = Object.keys(t)).length; n--;) e(t[r[n]], i)
            }
        }(e, Je), Je.clear()
    }
    var tt = w((function(e) {
        var t = "&" === e.charAt(0),
            i = "~" === (e = t ? e.slice(1) : e).charAt(0),
            n = "!" === (e = i ? e.slice(1) : e).charAt(0);
        return {
            name: e = n ? e.slice(1) : e,
            once: i,
            capture: n,
            passive: t
        }
    }));

    function it(e, t) {
        function i() {
            var e = arguments,
                n = i.fns;
            if (!Array.isArray(n)) return We(n, null, arguments, t, "v-on handler");
            for (var r = n.slice(), o = 0; o < r.length; o++) We(r[o], null, e, t, "v-on handler")
        }
        return i.fns = e, i
    }

    function nt(e, t, i, n, o, s) {
        var a, l, d, c;
        for (a in e) l = e[a], d = t[a], c = tt(a), r(l) || (r(d) ? (r(l.fns) && (l = e[a] = it(l, s)), !0 === c.once && (l = e[a] = o(c.name, l, c.capture)), i(c.name, l, c.capture, c.passive, c.params)) : l !== d && (d.fns = l, e[a] = d));
        for (a in t) r(e[a]) && n((c = tt(a)).name, t[a], c.capture)
    }

    function rt(e, t, i) {
        var n, s = (e = e instanceof pe ? e.data.hook || (e.data.hook = {}) : e)[t];

        function a() {
            i.apply(this, arguments), v(n.fns, a)
        }
        r(s) ? n = it([a]) : o(s.fns) && !0 === s.merged ? (n = s).fns.push(a) : n = it([s, a]), n.merged = !0, e[t] = n
    }

    function ot(e, t, i, n, r) {
        if (o(t)) {
            if (_(t, i)) return e[i] = t[i], r || delete t[i], 1;
            if (_(t, n)) return e[i] = t[n], r || delete t[n], 1
        }
    }

    function st(e) {
        return s(e) ? [fe(e)] : Array.isArray(e) ? function e(t, i) {
            var n, a, l, d, c = [];
            for (n = 0; n < t.length; n++) r(a = t[n]) || "boolean" == typeof a || (d = c[l = c.length - 1], Array.isArray(a) ? 0 < a.length && (at((a = e(a, (i || "") + "_" + n))[0]) && at(d) && (c[l] = fe(d.text + a[0].text), a.shift()), c.push.apply(c, a)) : s(a) ? at(d) ? c[l] = fe(d.text + a) : "" !== a && c.push(fe(a)) : at(a) && at(d) ? c[l] = fe(d.text + a.text) : (!0 === t._isVList && o(a.tag) && r(a.key) && o(i) && (a.key = "__vlist" + i + "_" + n + "__"), c.push(a)));
            return c
        }(e) : void 0
    }

    function at(e) {
        return o(e) && o(e.text) && !1 === e.isComment
    }

    function lt(e, t) {
        if (e) {
            for (var i = Object.create(null), n = oe ? Reflect.ownKeys(e) : Object.keys(e), r = 0; r < n.length; r++) {
                var o = n[r];
                if ("__ob__" !== o) {
                    for (var s, a = e[o].from, l = t; l;) {
                        if (l._provided && _(l._provided, a)) {
                            i[o] = l._provided[a];
                            break
                        }
                        l = l.$parent
                    }
                    l || "default" in e[o] && (s = e[o].default, i[o] = "function" == typeof s ? s.call(t) : s)
                }
            }
            return i
        }
    }

    function dt(e, t) {
        if (!e || !e.length) return {};
        for (var i, n = {}, r = 0, o = e.length; r < o; r++) {
            var s = e[r],
                a = s.data;
            a && a.attrs && a.attrs.slot && delete a.attrs.slot, s.context !== t && s.fnContext !== t || !a || null == a.slot ? (n.default || (n.default = [])).push(s) : (a = n[a = a.slot] || (n[a] = []), "template" === s.tag ? a.push.apply(a, s.children || []) : a.push(s))
        }
        for (i in n) n[i].every(ct) && delete n[i];
        return n
    }

    function ct(e) {
        return e.isComment && !e.asyncFactory || " " === e.text
    }

    function ht(e) {
        return e.isComment && e.asyncFactory
    }

    function ut(e, t, i) {
        var r, o, s = 0 < Object.keys(t).length,
            a = e ? !!e.$stable : !s,
            l = e && e.$key;
        if (e) {
            if (e._normalized) return e._normalized;
            if (a && i && i !== n && l === i.$key && !s && !i.$hasNormal) return i;
            for (var d in r = {}, e) e[d] && "$" !== d[0] && (r[d] = function(e, t, i) {
                function n() {
                    var e = arguments.length ? i.apply(null, arguments) : i({}),
                        t = (e = e && "object" == typeof e && !Array.isArray(e) ? [e] : st(e)) && e[0];
                    return e && (!t || 1 === e.length && t.isComment && !ht(t)) ? void 0 : e
                }
                return i.proxy && Object.defineProperty(e, t, {
                    get: n,
                    enumerable: !0,
                    configurable: !0
                }), n
            }(t, d, e[d]))
        } else r = {};
        for (o in t) o in r || (r[o] = function(e, t) {
            return function() {
                return e[t]
            }
        }(t, o));
        return e && Object.isExtensible(e) && (e._normalized = r), W(r, "$stable", a), W(r, "$key", l), W(r, "$hasNormal", s), r
    }

    function pt(e, t) {
        var i, n, r, s;
        if (Array.isArray(e) || "string" == typeof e)
            for (l = new Array(e.length), i = 0, n = e.length; i < n; i++) l[i] = t(e[i], i);
        else if ("number" == typeof e)
            for (l = new Array(e), i = 0; i < e; i++) l[i] = t(i + 1, i);
        else if (a(e))
            if (oe && e[Symbol.iterator])
                for (var l = [], d = e[Symbol.iterator](), c = d.next(); !c.done;) l.push(t(c.value, l.length)), c = d.next();
            else
                for (r = Object.keys(e), l = new Array(r.length), i = 0, n = r.length; i < n; i++) s = r[i], l[i] = t(e[s], s, i);
        return (l = o(l) ? l : [])._isVList = !0, l
    }

    function gt(e, t, i, n) {
        var r = this.$scopedSlots[e];
        t = r ? (i = i || {}, r(i = n ? E(E({}, n), i) : i) || ("function" == typeof t ? t() : t)) : this.$slots[e] || ("function" == typeof t ? t() : t);
        return (i = i && i.slot) ? this.$createElement("template", {
            slot: i
        }, t) : t
    }

    function ft(e) {
        return Pe(this.$options, "filters", e) || T
    }

    function mt(e, t) {
        return Array.isArray(e) ? -1 === e.indexOf(t) : e !== t
    }

    function vt(e, t, i, n, r) {
        return i = B.keyCodes[t] || i, r && n && !B.keyCodes[t] ? mt(r, n) : i ? mt(i, e) : n ? k(n) !== t : void 0 === e
    }

    function bt(e, t, i, n, r) {
        var o, s;
        if (i && a(i))
            for (s in i = Array.isArray(i) ? N(i) : i) ! function(s) {
                o = "class" === s || "style" === s || m(s) ? e : (l = e.attrs && e.attrs.type, n || B.mustUseProp(t, l, s) ? e.domProps || (e.domProps = {}) : e.attrs || (e.attrs = {}));
                var a = C(s),
                    l = k(s);
                a in o || l in o || (o[s] = i[s], r && ((e.on || (e.on = {}))["update:" + s] = function(e) {
                    i[s] = e
                }))
            }(s);
        return e
    }

    function _t(e, t) {
        var i = this._staticTrees || (this._staticTrees = []),
            n = i[e];
        return n && !t || yt(n = i[e] = this.$options.staticRenderFns[e].call(this._renderProxy, null, this), "__static__" + e, !1), n
    }

    function wt(e, t, i) {
        return yt(e, "__once__" + t + (i ? "_" + i : ""), !0), e
    }

    function yt(e, t, i) {
        if (Array.isArray(e))
            for (var n = 0; n < e.length; n++) e[n] && "string" != typeof e[n] && Ct(e[n], t + "_" + n, i);
        else Ct(e, t, i)
    }

    function Ct(e, t, i) {
        e.isStatic = !0, e.key = t, e.isOnce = i
    }

    function xt(e, t) {
        if (t && d(t)) {
            var i, n = e.on = e.on ? E({}, e.on) : {};
            for (i in t) {
                var r = n[i],
                    o = t[i];
                n[i] = r ? [].concat(r, o) : o
            }
        }
        return e
    }

    function St(e, t, i, n) {
        t = t || {
            $stable: !i
        };
        for (var r = 0; r < e.length; r++) {
            var o = e[r];
            Array.isArray(o) ? St(o, t, i) : o && (o.proxy && (o.fn.proxy = !0), t[o.key] = o.fn)
        }
        return n && (t.$key = n), t
    }

    function kt(e, t) {
        for (var i = 0; i < t.length; i += 2) {
            var n = t[i];
            "string" == typeof n && n && (e[t[i]] = t[i + 1])
        }
        return e
    }

    function Lt(e, t) {
        return "string" == typeof e ? t + e : e
    }

    function Ot(e) {
        e._o = wt, e._n = p, e._s = u, e._l = pt, e._t = gt, e._q = M, e._i = P, e._m = _t, e._f = ft, e._k = vt, e._b = bt, e._v = fe, e._e = ge, e._u = St, e._g = xt, e._d = kt, e._p = Lt
    }

    function Et(e, t, i, r, o) {
        var s, a = this,
            l = o.options;
        _(r, "_uid") ? (s = Object.create(r))._original = r : r = (s = r)._original;
        var d = !(o = !0 === l._compiled);
        this.data = e, this.props = t, this.children = i, this.parent = r, this.listeners = e.on || n, this.injections = lt(l.inject, r), this.slots = function() {
            return a.$slots || ut(e.scopedSlots, a.$slots = dt(i, r)), a.$slots
        }, Object.defineProperty(this, "scopedSlots", {
            enumerable: !0,
            get: function() {
                return ut(e.scopedSlots, this.slots())
            }
        }), o && (this.$options = l, this.$slots = this.slots(), this.$scopedSlots = ut(e.scopedSlots, this.$slots)), l._scopeId ? this._c = function(e, t, i, n) {
            return (n = Pt(s, e, t, i, n, d)) && !Array.isArray(n) && (n.fnScopeId = l._scopeId, n.fnContext = r), n
        } : this._c = function(e, t, i, n) {
            return Pt(s, e, t, i, n, d)
        }
    }

    function Nt(e, t, i, n) {
        return (e = me(e)).fnContext = i, e.fnOptions = n, t.slot && ((e.data || (e.data = {})).slot = t.slot), e
    }

    function Dt(e, t) {
        for (var i in t) e[C(i)] = t[i]
    }
    Ot(Et.prototype);
    var It = {
            init: function(e, t) {
                e.componentInstance && !e.componentInstance._isDestroyed && e.data.keepAlive ? It.prepatch(e, e) : (e.componentInstance = function(e, t) {
                    var i = {
                        _isComponent: !0,
                        _parentVnode: e,
                        parent: t
                    };
                    return o(t = e.data.inlineTemplate) && (i.render = t.render, i.staticRenderFns = t.staticRenderFns), new e.componentOptions.Ctor(i)
                }(e, Ht)).$mount(t ? e.elm : void 0, t)
            },
            prepatch: function(e, t) {
                var i = t.componentOptions;
                ! function(e, t, i, r, o) {
                    var s = r.data.scopedSlots,
                        a = e.$scopedSlots;
                    a = !!(s && !s.$stable || a !== n && !a.$stable || s && e.$scopedSlots.$key !== s.$key || !s && e.$scopedSlots.$key), s = !!(o || e.$options._renderChildren || a);
                    if (e.$options._parentVnode = r, e.$vnode = r, e._vnode && (e._vnode.parent = r), e.$options._renderChildren = o, e.$attrs = r.data.attrs || n, e.$listeners = i || n, t && e.$options.props) {
                        ye(!1);
                        for (var l = e._props, d = e.$options._propKeys || [], c = 0; c < d.length; c++) {
                            var h = d[c],
                                u = e.$options.props;
                            l[h] = Ae(h, u, t, e)
                        }
                        ye(!0), e.$options.propsData = t
                    }
                    i = i || n, a = e.$options._parentListeners, e.$options._parentListeners = i, zt(e, i, a), s && (e.$slots = dt(o, r.context), e.$forceUpdate())
                }(t.componentInstance = e.componentInstance, i.propsData, i.listeners, t, i.children)
            },
            insert: function(e) {
                var t = e.context,
                    i = e.componentInstance;
                i._isMounted || (i._isMounted = !0, qt(i, "mounted")), e.data.keepAlive && (t._isMounted ? ((t = i)._inactive = !1, Zt.push(t)) : $t(i, !0))
            },
            destroy: function(e) {
                var t = e.componentInstance;
                t._isDestroyed || (e.data.keepAlive ? function e(t, i) {
                    if (!(i && (t._directInactive = !0, Kt(t)) || t._inactive)) {
                        t._inactive = !0;
                        for (var n = 0; n < t.$children.length; n++) e(t.$children[n]);
                        qt(t, "deactivated")
                    }
                }(t, !0) : t.$destroy())
            }
        },
        Tt = Object.keys(It);

    function Mt(e, t, i, s, l) {
        if (!r(e)) {
            var d, c, u, p, g = i.$options._base;
            if ("function" == typeof(e = a(e) ? g.extend(e) : e)) {
                if (r(e.cid) && void 0 === (e = function(e, t) {
                        if (!0 === e.error && o(e.errorComp)) return e.errorComp;
                        if (o(e.resolved)) return e.resolved;
                        var i = Rt;
                        if (i && o(e.owners) && -1 === e.owners.indexOf(i) && e.owners.push(i), !0 === e.loading && o(e.loadingComp)) return e.loadingComp;
                        if (i && !o(e.owners)) {
                            var n = e.owners = [i],
                                s = !0,
                                l = null,
                                d = null;
                            i.$on("hook:destroyed", (function() {
                                return v(n, i)
                            }));
                            var c = function(e) {
                                    for (var t = 0, i = n.length; t < i; t++) n[t].$forceUpdate();
                                    e && (n.length = 0, null !== l && (clearTimeout(l), l = null), null !== d && (clearTimeout(d), d = null))
                                },
                                u = A((function(i) {
                                    e.resolved = Ft(i, t), s ? n.length = 0 : c(!0)
                                })),
                                p = A((function(t) {
                                    o(e.errorComp) && (e.error = !0, c(!0))
                                })),
                                g = e(u, p);
                            return a(g) && (h(g) ? r(e.resolved) && g.then(u, p) : h(g.component) && (g.component.then(u, p), o(g.error) && (e.errorComp = Ft(g.error, t)), o(g.loading) && (e.loadingComp = Ft(g.loading, t), 0 === g.delay ? e.loading = !0 : l = setTimeout((function() {
                                l = null, r(e.resolved) && r(e.error) && (e.loading = !0, c(!1))
                            }), g.delay || 200)), o(g.timeout) && (d = setTimeout((function() {
                                d = null, r(e.resolved) && p(null)
                            }), g.timeout)))), s = !1, e.loading ? e.loadingComp : e.resolved
                        }
                    }(d = e, g))) return c = d, u = t, p = i, g = s, f = l, (m = ge()).asyncFactory = c, m.asyncMeta = {
                    data: u,
                    context: p,
                    children: g,
                    tag: f
                }, m;
                t = t || {}, yi(e), o(t.model) && function(e, t) {
                    var i = e.model && e.model.prop || "value",
                        n = e.model && e.model.event || "input";
                    (t.attrs || (t.attrs = {}))[i] = t.model.value, i = (e = t.on || (t.on = {}))[n], t = t.model.callback, o(i) ? (Array.isArray(i) ? -1 === i.indexOf(t) : i !== t) && (e[n] = [t].concat(i)) : e[n] = t
                }(e.options, t);
                var f = function(e, t) {
                    if (!r(t = t.options.props)) {
                        var i = {},
                            n = e.attrs,
                            s = e.props;
                        if (o(n) || o(s))
                            for (var a in t) {
                                var l = k(a);
                                ot(i, s, a, l, !0) || ot(i, n, a, l, !1)
                            }
                        return i
                    }
                }(t, e);
                if (!0 === e.options.functional) return function(e, t, i, r, s) {
                    var a = e.options,
                        l = {},
                        d = a.props;
                    if (o(d))
                        for (var c in d) l[c] = Ae(c, d, t || n);
                    else o(i.attrs) && Dt(l, i.attrs), o(i.props) && Dt(l, i.props);
                    var h = new Et(i, l, s, r, e);
                    if ((e = a.render.call(null, h._c, h)) instanceof pe) return Nt(e, i, h.parent, a);
                    if (Array.isArray(e)) {
                        for (var u = st(e) || [], p = new Array(u.length), g = 0; g < u.length; g++) p[g] = Nt(u[g], i, h.parent, a);
                        return p
                    }
                }(e, f, t, i, s);
                var m = t.on;
                t.on = t.nativeOn, !0 === e.options.abstract && (b = t.slot, t = {}, b && (t.slot = b)),
                    function(e) {
                        for (var t = e.hook || (e.hook = {}), i = 0; i < Tt.length; i++) {
                            var n = Tt[i],
                                r = t[n],
                                o = It[n];
                            r === o || r && r._merged || (t[n] = r ? function(e, t) {
                                function i(i, n) {
                                    e(i, n), t(i, n)
                                }
                                return i._merged = !0, i
                            }(o, r) : o)
                        }
                    }(t);
                var b = e.options.name || l;
                return new pe("vue-component-" + e.cid + (b ? "-" + b : ""), t, void 0, void 0, void 0, i, {
                    Ctor: e,
                    propsData: f,
                    listeners: m,
                    tag: l,
                    children: s
                }, d)
            }
        }
    }

    function Pt(e, t, i, n, l, d) {
        return (Array.isArray(i) || s(i)) && (l = n, n = i, i = void 0),
            function(e, t, i, n, s) {
                return o(i) && o(i.__ob__) ? ge() : (o(i) && o(i.is) && (t = i.is), t ? (Array.isArray(n) && "function" == typeof n[0] && ((i = i || {}).scopedSlots = {
                    default: n[0]
                }, n.length = 0), 2 === s ? n = st(n) : 1 === s && (n = function(e) {
                    for (var t = 0; t < e.length; t++)
                        if (Array.isArray(e[t])) return Array.prototype.concat.apply([], e);
                    return e
                }(n)), n = "string" == typeof t ? (l = e.$vnode && e.$vnode.ns || B.getTagNamespace(t), B.isReservedTag(t) ? new pe(B.parsePlatformTagName(t), i, n, void 0, void 0, e) : i && i.pre || !o(d = Pe(e.$options, "components", t)) ? new pe(t, i, n, void 0, void 0, e) : Mt(d, i, e, n, t)) : Mt(t, i, e, n), Array.isArray(n) ? n : o(n) ? (o(l) && function e(t, i, n) {
                    if (t.ns = i, "foreignObject" === t.tag && (n = !(i = void 0)), o(t.children))
                        for (var s = 0, a = t.children.length; s < a; s++) {
                            var l = t.children[s];
                            o(l.tag) && (r(l.ns) || !0 === n && "svg" !== l.tag) && e(l, i, n)
                        }
                }(n, l), o(i) && function(e) {
                    a(e.style) && et(e.style), a(e.class) && et(e.class)
                }(i), n) : ge()) : ge());
                var l, d
            }(e, t, i, n, l = !0 === d ? 2 : l)
    }
    var At, Rt = null;

    function Ft(e, t) {
        return a(e = e.__esModule || oe && "Module" === e[Symbol.toStringTag] ? e.default : e) ? t.extend(e) : e
    }

    function jt(e) {
        if (Array.isArray(e))
            for (var t = 0; t < e.length; t++) {
                var i = e[t];
                if (o(i) && (o(i.componentOptions) || ht(i))) return i
            }
    }

    function Bt(e, t) {
        At.$on(e, t)
    }

    function Vt(e, t) {
        At.$off(e, t)
    }

    function Wt(e, t) {
        var i = At;
        return function n() {
            null !== t.apply(null, arguments) && i.$off(e, n)
        }
    }

    function zt(e, t, i) {
        nt(t, i || {}, Bt, Vt, Wt, At = e), At = void 0
    }
    var Ht = null;

    function Ut(e) {
        var t = Ht;
        return Ht = e,
            function() {
                Ht = t
            }
    }

    function Kt(e) {
        for (; e = e && e.$parent;)
            if (e._inactive) return 1
    }

    function $t(e, t) {
        if (t) {
            if (e._directInactive = !1, Kt(e)) return
        } else if (e._directInactive) return;
        if (e._inactive || null === e._inactive) {
            e._inactive = !1;
            for (var i = 0; i < e.$children.length; i++) $t(e.$children[i]);
            qt(e, "activated")
        }
    }

    function qt(e, t) {
        he();
        var i = e.$options[t],
            n = t + " hook";
        if (i)
            for (var r = 0, o = i.length; r < o; r++) We(i[r], e, null, e, n);
        e._hasHookEvent && e.$emit("hook:" + t), ue()
    }
    var Gt, Yt = [],
        Zt = [],
        Xt = {},
        Qt = !1,
        Jt = !1,
        ei = 0,
        ti = 0,
        ii = Date.now;

    function ni() {
        var e, t;
        for (ti = ii(), Jt = !0, Yt.sort((function(e, t) {
                return e.id - t.id
            })), ei = 0; ei < Yt.length; ei++)(e = Yt[ei]).before && e.before(), t = e.id, Xt[t] = null, e.run();
        var i = Zt.slice(),
            n = Yt.slice();
        ei = Yt.length = Zt.length = 0, Qt = Jt = !(Xt = {}),
            function(e) {
                for (var t = 0; t < e.length; t++) e[t]._inactive = !0, $t(e[t], !0)
            }(i),
            function(e) {
                for (var t = e.length; t--;) {
                    var i = e[t],
                        n = i.vm;
                    n._watcher === i && n._isMounted && !n._isDestroyed && qt(n, "updated")
                }
            }(n), ne && B.devtools && ne.emit("flush")
    }!K || G || (Gt = window.performance) && "function" == typeof Gt.now && ii() > document.createEvent("Event").timeStamp && (ii = function() {
        return Gt.now()
    });
    var ri = 0,
        oi = function(e, t, i, n, r) {
            this.vm = e, r && (e._watcher = this), e._watchers.push(this), n ? (this.deep = !!n.deep, this.user = !!n.user, this.lazy = !!n.lazy, this.sync = !!n.sync, this.before = n.before) : this.deep = this.user = this.lazy = this.sync = !1, this.cb = i, this.id = ++ri, this.active = !0, this.dirty = this.lazy, this.deps = [], this.newDeps = [], this.depIds = new se, this.newDepIds = new se, this.expression = "", "function" == typeof t ? this.getter = t : (this.getter = function(e) {
                if (!H.test(e)) {
                    var t = e.split(".");
                    return function(e) {
                        for (var i = 0; i < t.length; i++) {
                            if (!e) return;
                            e = e[t[i]]
                        }
                        return e
                    }
                }
            }(t), this.getter || (this.getter = D)), this.value = this.lazy ? void 0 : this.get()
        };
    oi.prototype.get = function() {
        var e;
        he(this);
        var t = this.vm;
        try {
            e = this.getter.call(t, t)
        } catch (e) {
            if (!this.user) throw e;
            Ve(e, t, 'getter for watcher "' + this.expression + '"')
        } finally {
            this.deep && et(e), ue(), this.cleanupDeps()
        }
        return e
    }, oi.prototype.addDep = function(e) {
        var t = e.id;
        this.newDepIds.has(t) || (this.newDepIds.add(t), this.newDeps.push(e), this.depIds.has(t) || e.addSub(this))
    }, oi.prototype.cleanupDeps = function() {
        for (var e = this.deps.length; e--;) {
            var t = this.deps[e];
            this.newDepIds.has(t.id) || t.removeSub(this)
        }
        var i = this.depIds;
        this.depIds = this.newDepIds, this.newDepIds = i, this.newDepIds.clear(), i = this.deps, this.deps = this.newDeps, this.newDeps = i, this.newDeps.length = 0
    }, oi.prototype.update = function() {
        this.lazy ? this.dirty = !0 : this.sync ? this.run() : function(e) {
            var t = e.id;
            if (null == Xt[t]) {
                if (Xt[t] = !0, Jt) {
                    for (var i = Yt.length - 1; ei < i && Yt[i].id > e.id;) i--;
                    Yt.splice(i + 1, 0, e)
                } else Yt.push(e);
                Qt || (Qt = !0, Qe(ni))
            }
        }(this)
    }, oi.prototype.run = function() {
        var e, t, i;
        !this.active || ((e = this.get()) !== this.value || a(e) || this.deep) && (t = this.value, this.value = e, this.user ? (i = 'callback for watcher "' + this.expression + '"', We(this.cb, this.vm, [e, t], this.vm, i)) : this.cb.call(this.vm, e, t))
    }, oi.prototype.evaluate = function() {
        this.value = this.get(), this.dirty = !1
    }, oi.prototype.depend = function() {
        for (var e = this.deps.length; e--;) this.deps[e].depend()
    }, oi.prototype.teardown = function() {
        if (this.active) {
            this.vm._isBeingDestroyed || v(this.vm._watchers, this);
            for (var e = this.deps.length; e--;) this.deps[e].removeSub(this);
            this.active = !1
        }
    };
    var si = {
        enumerable: !0,
        configurable: !0,
        get: D,
        set: D
    };

    function ai(e, t, i) {
        si.get = function() {
            return this[t][i]
        }, si.set = function(e) {
            this[t][i] = e
        }, Object.defineProperty(e, i, si)
    }
    var li = {
        lazy: !0
    };

    function di(e, t, i) {
        var n = !ie();
        "function" == typeof i ? (si.get = n ? ci(t) : hi(i), si.set = D) : (si.get = i.get ? n && !1 !== i.cache ? ci(t) : hi(i.get) : D, si.set = i.set || D), Object.defineProperty(e, t, si)
    }

    function ci(e) {
        return function() {
            var t = this._computedWatchers && this._computedWatchers[e];
            if (t) return t.dirty && t.evaluate(), de.target && t.depend(), t.value
        }
    }

    function hi(e) {
        return function() {
            return e.call(this, this)
        }
    }

    function ui(e, t, i, n) {
        return "string" == typeof(i = d(i) ? (n = i).handler : i) && (i = e[i]), e.$watch(t, i, n)
    }
    var pi, gi, fi, mi, vi, bi, _i, wi = 0;

    function yi(e) {
        var t, i, n = e.options;
        return !e.super || (t = yi(e.super)) !== e.superOptions && (e.superOptions = t, (i = function(e) {
            var t, i, n = e.options,
                r = e.sealedOptions;
            for (i in n) n[i] !== r[i] && ((t = t || {})[i] = n[i]);
            return t
        }(e)) && E(e.extendOptions, i), (n = e.options = Me(t, e.extendOptions)).name && (n.components[n.name] = e)), n
    }

    function Ci(e) {
        this._init(e)
    }

    function xi(e) {
        return e && (e.Ctor.options.name || e.tag)
    }

    function Si(e, t) {
        return Array.isArray(e) ? -1 < e.indexOf(t) : "string" == typeof e ? -1 < e.split(",").indexOf(t) : !! function(e) {
            return "[object RegExp]" === l.call(e)
        }(e) && e.test(t)
    }

    function ki(e, t) {
        var i, n = e.cache,
            r = e.keys,
            o = e._vnode;
        for (i in n) {
            var s = n[i];
            !s || (s = s.name) && !t(s) && Li(n, i, r, o)
        }
    }

    function Li(e, t, i, n) {
        var r = e[t];
        !r || n && r.tag === n.tag || r.componentInstance.$destroy(), e[t] = null, v(i, t)
    }
    Ci.prototype._init = function(e) {
        var t, i, r, o = this;
        o._uid = wi++, o._isVue = !0, e && e._isComponent ? function(e, t) {
                var i = e.$options = Object.create(e.constructor.options);
                e = t._parentVnode;
                i.parent = t.parent, e = (i._parentVnode = e).componentOptions, i.propsData = e.propsData, i._parentListeners = e.listeners, i._renderChildren = e.children, i._componentTag = e.tag, t.render && (i.render = t.render, i.staticRenderFns = t.staticRenderFns)
            }(o, e) : o.$options = Me(yi(o.constructor), e || {}, o),
            function(e) {
                var t = e.$options,
                    i = t.parent;
                if (i && !t.abstract) {
                    for (; i.$options.abstract && i.$parent;) i = i.$parent;
                    i.$children.push(e)
                }
                e.$parent = i, e.$root = i ? i.$root : e, e.$children = [], e.$refs = {}, e._watcher = null, e._inactive = null, e._directInactive = !1, e._isMounted = !1, e._isDestroyed = !1, e._isBeingDestroyed = !1
            }((o._renderProxy = o)._self = o),
            function(e) {
                e._events = Object.create(null), e._hasHookEvent = !1;
                var t = e.$options._parentListeners;
                t && zt(e, t)
            }(o),
            function(e) {
                e._vnode = null, e._staticTrees = null;
                var t = e.$options,
                    i = e.$vnode = t._parentVnode,
                    r = i && i.context;
                e.$slots = dt(t._renderChildren, r), e.$scopedSlots = n, e._c = function(t, i, n, r) {
                    return Pt(e, t, i, n, r, !1)
                }, e.$createElement = function(t, i, n, r) {
                    return Pt(e, t, i, n, r, !0)
                }, i = i && i.data, Se(e, "$attrs", i && i.attrs || n, null, !0), Se(e, "$listeners", t._parentListeners || n, null, !0)
            }(o), qt(o, "beforeCreate"), (i = lt((t = o).$options.inject, t)) && (ye(!1), Object.keys(i).forEach((function(e) {
                Se(t, e, i[e])
            })), ye(!0)),
            function(e) {
                e._watchers = [];
                var t = e.$options;
                t.props && function(e, t) {
                    var i = e.$options.propsData || {},
                        n = e._props = {},
                        r = e.$options._propKeys = [];
                    for (var o in e.$parent && ye(!1), t) ! function(o) {
                        r.push(o);
                        var s = Ae(o, t, i, e);
                        Se(n, o, s), o in e || ai(e, "_props", o)
                    }(o);
                    ye(!0)
                }(e, t.props), t.methods && function(e, t) {
                    for (var i in e.$options.props, t) e[i] = "function" != typeof t[i] ? D : L(t[i], e)
                }(e, t.methods), t.data ? function(e) {
                    var t = e.$options.data;
                    d(t = e._data = "function" == typeof t ? function(e, t) {
                        he();
                        try {
                            return e.call(t, t)
                        } catch (e) {
                            return Ve(e, t, "data()"), {}
                        } finally {
                            ue()
                        }
                    }(t, e) : t || {}) || (t = {});
                    for (var i = Object.keys(t), n = e.$options.props, r = (e.$options.methods, i.length); r--;) {
                        var o = i[r];
                        n && _(n, o) || function(e) {
                            return 36 === (e = (e + "").charCodeAt(0)) || 95 === e
                        }(o) || ai(e, "_data", o)
                    }
                    xe(t, !0)
                }(e) : xe(e._data = {}, !0), t.computed && function(e, t) {
                    var i, n = e._computedWatchers = Object.create(null),
                        r = ie();
                    for (i in t) {
                        var o = t[i],
                            s = "function" == typeof o ? o : o.get;
                        r || (n[i] = new oi(e, s || D, D, li)), i in e || di(e, i, o)
                    }
                }(e, t.computed), t.watch && t.watch !== J && function(e, t) {
                    for (var i in t) {
                        var n = t[i];
                        if (Array.isArray(n))
                            for (var r = 0; r < n.length; r++) ui(e, i, n[r]);
                        else ui(e, i, n)
                    }
                }(e, t.watch)
            }(o), (e = (r = o).$options.provide) && (r._provided = "function" == typeof e ? e.call(r) : e), qt(o, "created"), o.$options.el && o.$mount(o.$options.el)
    }, pi = Ci, gi = {
        get: function() {
            return this._data
        }
    }, fi = {
        get: function() {
            return this._props
        }
    }, Object.defineProperty(pi.prototype, "$data", gi), Object.defineProperty(pi.prototype, "$props", fi), pi.prototype.$set = ke, pi.prototype.$delete = Le, pi.prototype.$watch = function(e, t, i) {
        if (d(t)) return ui(this, e, t, i);
        (i = i || {}).user = !0;
        var n = new oi(this, e, t, i);
        return i.immediate && (i = 'callback for immediate watcher "' + n.expression + '"', he(), We(t, this, [n.value], this, i), ue()),
            function() {
                n.teardown()
            }
    }, vi = /^hook:/, (mi = Ci).prototype.$on = function(e, t) {
        if (Array.isArray(e))
            for (var i = 0, n = e.length; i < n; i++) this.$on(e[i], t);
        else(this._events[e] || (this._events[e] = [])).push(t), vi.test(e) && (this._hasHookEvent = !0);
        return this
    }, mi.prototype.$once = function(e, t) {
        var i = this;

        function n() {
            i.$off(e, n), t.apply(i, arguments)
        }
        return n.fn = t, i.$on(e, n), i
    }, mi.prototype.$off = function(e, t) {
        if (!arguments.length) return this._events = Object.create(null), this;
        if (Array.isArray(e)) {
            for (var i = 0, n = e.length; i < n; i++) this.$off(e[i], t);
            return this
        }
        var r, o = this._events[e];
        if (!o) return this;
        if (!t) return this._events[e] = null, this;
        for (var s = o.length; s--;)
            if ((r = o[s]) === t || r.fn === t) {
                o.splice(s, 1);
                break
            } return this
    }, mi.prototype.$emit = function(e) {
        if (t = this._events[e])
            for (var t = 1 < t.length ? O(t) : t, i = O(arguments, 1), n = 'event handler for "' + e + '"', r = 0, o = t.length; r < o; r++) We(t[r], this, i, this, n);
        return this
    }, (bi = Ci).prototype._update = function(e, t) {
        var i = this,
            n = i.$el,
            r = i._vnode,
            o = Ut(i);
        i._vnode = e, i.$el = r ? i.__patch__(r, e) : i.__patch__(i.$el, e, t, !1), o(), n && (n.__vue__ = null), i.$el && (i.$el.__vue__ = i), i.$vnode && i.$parent && i.$vnode === i.$parent._vnode && (i.$parent.$el = i.$el)
    }, bi.prototype.$forceUpdate = function() {
        this._watcher && this._watcher.update()
    }, bi.prototype.$destroy = function() {
        var e = this;
        if (!e._isBeingDestroyed) {
            qt(e, "beforeDestroy"), e._isBeingDestroyed = !0;
            var t = e.$parent;
            !t || t._isBeingDestroyed || e.$options.abstract || v(t.$children, e), e._watcher && e._watcher.teardown();
            for (var i = e._watchers.length; i--;) e._watchers[i].teardown();
            e._data.__ob__ && e._data.__ob__.vmCount--, e._isDestroyed = !0, e.__patch__(e._vnode, null), qt(e, "destroyed"), e.$off(), e.$el && (e.$el.__vue__ = null), e.$vnode && (e.$vnode.parent = null)
        }
    }, Ot((_i = Ci).prototype), _i.prototype.$nextTick = function(e) {
        return Qe(e, this)
    }, _i.prototype._render = function() {
        var e, t, i = this,
            n = (t = i.$options).render;
        (t = t._parentVnode) && (i.$scopedSlots = ut(t.data.scopedSlots, i.$slots, i.$scopedSlots)), i.$vnode = t;
        try {
            Rt = i, e = n.call(i._renderProxy, i.$createElement)
        } catch (t) {
            Ve(t, i, "render"), e = i._vnode
        } finally {
            Rt = null
        }
        return (e = (e = Array.isArray(e) && 1 === e.length ? e[0] : e) instanceof pe ? e : ge()).parent = t, e
    };
    var Oi, Ei, Ni, Di = [String, RegExp, Array],
        Ii = {
            KeepAlive: {
                name: "keep-alive",
                abstract: !0,
                props: {
                    include: Di,
                    exclude: Di,
                    max: [String, Number]
                },
                methods: {
                    cacheVNode: function() {
                        var e, t, i = this.cache,
                            n = this.keys,
                            r = this.vnodeToCache,
                            o = this.keyToCache;
                        r && (e = r.tag, t = r.componentInstance, r = r.componentOptions, i[o] = {
                            name: xi(r),
                            tag: e,
                            componentInstance: t
                        }, n.push(o), this.max && n.length > parseInt(this.max) && Li(i, n[0], n, this._vnode), this.vnodeToCache = null)
                    }
                },
                created: function() {
                    this.cache = Object.create(null), this.keys = []
                },
                destroyed: function() {
                    for (var e in this.cache) Li(this.cache, e, this.keys)
                },
                mounted: function() {
                    var e = this;
                    this.cacheVNode(), this.$watch("include", (function(t) {
                        ki(e, (function(e) {
                            return Si(t, e)
                        }))
                    })), this.$watch("exclude", (function(t) {
                        ki(e, (function(e) {
                            return !Si(t, e)
                        }))
                    }))
                },
                updated: function() {
                    this.cacheVNode()
                },
                render: function() {
                    var e = this.$slots.default,
                        t = jt(e),
                        i = t && t.componentOptions;
                    if (i) {
                        var n = xi(i),
                            r = this.include,
                            o = this.exclude;
                        if (r && (!n || !Si(r, n)) || o && n && Si(o, n)) return t;
                        o = this.cache, n = this.keys, o[i = null == t.key ? i.Ctor.cid + (i.tag ? "::" + i.tag : "") : t.key] ? (t.componentInstance = o[i].componentInstance, v(n, i), n.push(i)) : (this.vnodeToCache = t, this.keyToCache = i), t.data.keepAlive = !0
                    }
                    return t || e && e[0]
                }
            }
        };
    Oi = Ci, Ni = {
            get: function() {
                return B
            }
        }, Object.defineProperty(Oi, "config", Ni), Oi.util = {
            warn: ae,
            extend: E,
            mergeOptions: Me,
            defineReactive: Se
        }, Oi.set = ke, Oi.delete = Le, Oi.nextTick = Qe, Oi.observable = function(e) {
            return xe(e), e
        }, Oi.options = Object.create(null), F.forEach((function(e) {
            Oi.options[e + "s"] = Object.create(null)
        })), E((Oi.options._base = Oi).options.components, Ii), Oi.use = function(e) {
            var t = this._installedPlugins || (this._installedPlugins = []);
            if (-1 < t.indexOf(e)) return this;
            var i = O(arguments, 1);
            return i.unshift(this), "function" == typeof e.install ? e.install.apply(e, i) : "function" == typeof e && e.apply(null, i), t.push(e), this
        }, Oi.mixin = function(e) {
            return this.options = Me(this.options, e), this
        },
        function(e) {
            e.cid = 0;
            var t = 1;
            e.extend = function(e) {
                var i = this,
                    n = i.cid,
                    r = (e = e || {})._Ctor || (e._Ctor = {});
                if (r[n]) return r[n];
                var o = e.name || i.options.name;

                function s(e) {
                    this._init(e)
                }
                return ((s.prototype = Object.create(i.prototype)).constructor = s).cid = t++, s.options = Me(i.options, e), s.super = i, s.options.props && function(e) {
                    for (var t in e.options.props) ai(e.prototype, "_props", t)
                }(s), s.options.computed && function(e) {
                    var t, i = e.options.computed;
                    for (t in i) di(e.prototype, t, i[t])
                }(s), s.extend = i.extend, s.mixin = i.mixin, s.use = i.use, F.forEach((function(e) {
                    s[e] = i[e]
                })), o && (s.options.components[o] = s), s.superOptions = i.options, s.extendOptions = e, s.sealedOptions = E({}, s.options), r[n] = s
            }
        }(Oi), Ei = Oi, F.forEach((function(e) {
            Ei[e] = function(t, i) {
                return i ? ("component" === e && d(i) && (i.name = i.name || t, i = this.options._base.extend(i)), this.options[e + "s"][t] = i = "directive" === e && "function" == typeof i ? {
                    bind: i,
                    update: i
                } : i) : this.options[e + "s"][t]
            }
        })), Object.defineProperty(Ci.prototype, "$isServer", {
            get: ie
        }), Object.defineProperty(Ci.prototype, "$ssrContext", {
            get: function() {
                return this.$vnode && this.$vnode.ssrContext
            }
        }), Object.defineProperty(Ci, "FunctionalRenderContext", {
            value: Et
        }), Ci.version = "2.6.14";
    q = g("style,class");
    var Ti = g("input,textarea,option,select,progress"),
        Mi = function(e, t, i) {
            return "value" === i && Ti(e) && "button" !== t || "selected" === i && "option" === e || "checked" === i && "input" === e || "muted" === i && "video" === e
        },
        Pi = g("contenteditable,draggable,spellcheck"),
        Ai = g("events,caret,typing,plaintext-only"),
        Ri = g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),
        Fi = "http://www.w3.org/1999/xlink",
        ji = function(e) {
            return ":" === e.charAt(5) && "xlink" === e.slice(0, 5)
        },
        Bi = function(e) {
            return ji(e) ? e.slice(6, e.length) : ""
        },
        Vi = function(e) {
            return null == e || !1 === e
        };

    function Wi(e, t) {
        return {
            staticClass: zi(e.staticClass, t.staticClass),
            class: o(e.class) ? [e.class, t.class] : t.class
        }
    }

    function zi(e, t) {
        return e ? t ? e + " " + t : e : t || ""
    }

    function Hi(e) {
        return Array.isArray(e) ? function(e) {
            for (var t, i = "", n = 0, r = e.length; n < r; n++) o(t = Hi(e[n])) && "" !== t && (i && (i += " "), i += t);
            return i
        }(e) : a(e) ? function(e) {
            var t, i = "";
            for (t in e) e[t] && (i && (i += " "), i += t);
            return i
        }(e) : "string" == typeof e ? e : ""
    }

    function Ui(e) {
        return $i(e) || qi(e)
    }
    var Ki = {
            svg: "http://www.w3.org/2000/svg",
            math: "http://www.w3.org/1998/Math/MathML"
        },
        $i = g("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),
        qi = g("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view", !0);

    function Gi(e) {
        return qi(e) ? "svg" : "math" === e ? "math" : void 0
    }
    var Yi = Object.create(null),
        Zi = g("text,number,password,search,email,tel,url");

    function Xi(e) {
        return "string" != typeof e ? e : (e = document.querySelector(e)) || document.createElement("div")
    }

    function Qi(e, t) {
        var i, n, r = e.data.ref;
        o(r) && (n = e.context, i = e.componentInstance || e.elm, n = n.$refs, t ? Array.isArray(n[r]) ? v(n[r], i) : n[r] === i && (n[r] = void 0) : e.data.refInFor ? Array.isArray(n[r]) ? n[r].indexOf(i) < 0 && n[r].push(i) : n[r] = [i] : n[r] = i)
    }
    te = Object.freeze({
        createElement: function(e, t) {
            var i = document.createElement(e);
            return "select" !== e || t.data && t.data.attrs && void 0 !== t.data.attrs.multiple && i.setAttribute("multiple", "multiple"), i
        },
        createElementNS: function(e, t) {
            return document.createElementNS(Ki[e], t)
        },
        createTextNode: function(e) {
            return document.createTextNode(e)
        },
        createComment: function(e) {
            return document.createComment(e)
        },
        insertBefore: function(e, t, i) {
            e.insertBefore(t, i)
        },
        removeChild: function(e, t) {
            e.removeChild(t)
        },
        appendChild: function(e, t) {
            e.appendChild(t)
        },
        parentNode: function(e) {
            return e.parentNode
        },
        nextSibling: function(e) {
            return e.nextSibling
        },
        tagName: function(e) {
            return e.tagName
        },
        setTextContent: function(e, t) {
            e.textContent = t
        },
        setStyleScope: function(e, t) {
            e.setAttribute(t, "")
        }
    }), bn = {
        create: function(e, t) {
            Qi(t)
        },
        update: function(e, t) {
            e.data.ref !== t.data.ref && (Qi(e, !0), Qi(t))
        },
        destroy: function(e) {
            Qi(e, !0)
        }
    };
    var Ji = new pe("", {}, []),
        en = ["create", "activate", "update", "remove", "destroy"];

    function tn(e, t) {
        return e.key === t.key && e.asyncFactory === t.asyncFactory && (e.tag === t.tag && e.isComment === t.isComment && o(e.data) === o(t.data) && function(e, t) {
            if ("input" !== e.tag) return 1;
            e = o(i = e.data) && o(i = i.attrs) && i.type;
            var i = o(i = t.data) && o(i = i.attrs) && i.type;
            return e === i || Zi(e) && Zi(i)
        }(e, t) || !0 === e.isAsyncPlaceholder && r(t.asyncFactory.error))
    }

    function nn(e, t) {
        (e.data.directives || t.data.directives) && function(e, t) {
            var i, n, r, o, s = e === Ji,
                a = t === Ji,
                l = on(e.data.directives, e.context),
                d = on(t.data.directives, t.context),
                c = [],
                h = [];
            for (i in d) n = l[i], r = d[i], n ? (r.oldValue = n.value, r.oldArg = n.arg, sn(r, "update", t, e), r.def && r.def.componentUpdated && h.push(r)) : (sn(r, "bind", t, e), r.def && r.def.inserted && c.push(r));
            if (c.length && (o = function() {
                    for (var i = 0; i < c.length; i++) sn(c[i], "inserted", t, e)
                }, s ? rt(t, "insert", o) : o()), h.length && rt(t, "postpatch", (function() {
                    for (var i = 0; i < h.length; i++) sn(h[i], "componentUpdated", t, e)
                })), !s)
                for (i in l) d[i] || sn(l[i], "unbind", e, e, a)
        }(e, t)
    }
    j = {
        create: nn,
        update: nn,
        destroy: function(e) {
            nn(e, Ji)
        }
    };
    var rn = Object.create(null);

    function on(e, t) {
        var i, n, r, o = Object.create(null);
        if (!e) return o;
        for (i = 0; i < e.length; i++)(n = e[i]).modifiers || (n.modifiers = rn), (o[(r = n).rawName || r.name + "." + Object.keys(r.modifiers || {}).join(".")] = n).def = Pe(t.$options, "directives", n.name);
        return o
    }

    function sn(e, t, i, n, r) {
        var o = e.def && e.def[t];
        if (o) try {
            o(i.elm, e, i, n, r)
        } catch (n) {
            Ve(n, i.context, "directive " + e.name + " " + t + " hook")
        }
    }
    var an = [bn, j];

    function ln(e, t) {
        var i = t.componentOptions;
        if (!(o(i) && !1 === i.Ctor.options.inheritAttrs || r(e.data.attrs) && r(t.data.attrs))) {
            var n, s, a = t.elm,
                l = e.data.attrs || {},
                d = t.data.attrs || {};
            for (n in d = o(d.__ob__) ? t.data.attrs = E({}, d) : d) s = d[n], l[n] !== s && dn(a, n, s, t.data.pre);
            for (n in (G || Z) && d.value !== l.value && dn(a, "value", d.value), l) r(d[n]) && (ji(n) ? a.removeAttributeNS(Fi, Bi(n)) : Pi(n) || a.removeAttribute(n))
        }
    }

    function dn(e, t, i, n) {
        n || -1 < e.tagName.indexOf("-") ? cn(e, t, i) : Ri(t) ? Vi(i) ? e.removeAttribute(t) : (i = "allowfullscreen" === t && "EMBED" === e.tagName ? "true" : t, e.setAttribute(t, i)) : Pi(t) ? e.setAttribute(t, function(e, t) {
            return Vi(t) || "false" === t ? "false" : "contenteditable" === e && Ai(t) ? t : "true"
        }(t, i)) : ji(t) ? Vi(i) ? e.removeAttributeNS(Fi, Bi(t)) : e.setAttributeNS(Fi, t, i) : cn(e, t, i)
    }

    function cn(e, t, i) {
        var n;
        Vi(i) ? e.removeAttribute(t) : (!G || Y || "TEXTAREA" !== e.tagName || "placeholder" !== t || "" === i || e.__ieph || (n = function(t) {
            t.stopImmediatePropagation(), e.removeEventListener("input", n)
        }, e.addEventListener("input", n), e.__ieph = !0), e.setAttribute(t, i))
    }

    function hn(e, t) {
        var i = t.elm,
            n = t.data;
        e = e.data;
        r(n.staticClass) && r(n.class) && (r(e) || r(e.staticClass) && r(e.class)) || (e = function(e) {
            for (var t = e.data, i = e, n = e; o(n.componentInstance);)(n = n.componentInstance._vnode) && n.data && (t = Wi(n.data, t));
            for (; o(i = i.parent);) i && i.data && (t = Wi(t, i.data));
            return function(e, t) {
                return o(e) || o(t) ? zi(e, Hi(t)) : ""
            }(t.staticClass, t.class)
        }(t), (e = o(t = i._transitionClasses) ? zi(e, Hi(t)) : e) !== i._prevClass && (i.setAttribute("class", e), i._prevClass = e))
    }
    Di = {
        create: ln,
        update: ln
    };
    var un, pn, gn, fn, mn, vn, bn = {
            create: hn,
            update: hn
        },
        _n = /[\w).+\-_$\]]/;

    function wn(e) {
        for (var t, i, n, r, o = !1, s = !1, a = !1, l = !1, d = 0, c = 0, h = 0, u = 0, p = 0; p < e.length; p++)
            if (i = t, t = e.charCodeAt(p), o) 39 === t && 92 !== i && (o = !1);
            else if (s) 34 === t && 92 !== i && (s = !1);
        else if (a) 96 === t && 92 !== i && (a = !1);
        else if (l) 47 === t && 92 !== i && (l = !1);
        else if (124 !== t || 124 === e.charCodeAt(p + 1) || 124 === e.charCodeAt(p - 1) || d || c || h) {
            switch (t) {
                case 34:
                    s = !0;
                    break;
                case 39:
                    o = !0;
                    break;
                case 96:
                    a = !0;
                    break;
                case 40:
                    h++;
                    break;
                case 41:
                    h--;
                    break;
                case 91:
                    c++;
                    break;
                case 93:
                    c--;
                    break;
                case 123:
                    d++;
                    break;
                case 125:
                    d--
            }
            if (47 === t) {
                for (var g = p - 1, f = void 0; 0 <= g && " " === (f = e.charAt(g)); g--);
                f && _n.test(f) || (l = !0)
            }
        } else void 0 === n ? (u = p + 1, n = e.slice(0, p).trim()) : m();

        function m() {
            (r = r || []).push(e.slice(u, p).trim()), u = p + 1
        }
        if (void 0 === n ? n = e.slice(0, p).trim() : 0 !== u && m(), r)
            for (p = 0; p < r.length; p++) n = function(e, t) {
                var i;
                return (i = t.indexOf("(")) < 0 ? '_f("' + t + '")(' + e + ")" : '_f("' + t.slice(0, i) + '")(' + e + (")" !== (i = t.slice(i + 1)) ? "," + i : i)
            }(n, r[p]);
        return n
    }

    function yn(e, t) {
        console.error("[Vue compiler]: " + e)
    }

    function Cn(e, t) {
        return e ? e.map((function(e) {
            return e[t]
        })).filter((function(e) {
            return e
        })) : []
    }

    function xn(e, t, i, n, r) {
        (e.props || (e.props = [])).push(In({
            name: t,
            value: i,
            dynamic: r
        }, n)), e.plain = !1
    }

    function Sn(e, t, i, n, r) {
        (r ? e.dynamicAttrs || (e.dynamicAttrs = []) : e.attrs || (e.attrs = [])).push(In({
            name: t,
            value: i,
            dynamic: r
        }, n)), e.plain = !1
    }

    function kn(e, t, i, n) {
        e.attrsMap[t] = i, e.attrsList.push(In({
            name: t,
            value: i
        }, n))
    }

    function Ln(e, t, i) {
        return i ? "_p(" + t + ',"' + e + '")' : e + t
    }

    function On(e, t, i, r, o, s, a, l) {
        (r = r || n).right ? l ? t = "(" + t + ")==='click'?'contextmenu':(" + t + ")" : "click" === t && (t = "contextmenu", delete r.right) : r.middle && (l ? t = "(" + t + ")==='click'?'mouseup':(" + t + ")" : "click" === t && (t = "mouseup")), r.capture && (delete r.capture, t = Ln("!", t, l)), r.once && (delete r.once, t = Ln("~", t, l)), r.passive && (delete r.passive, t = Ln("&", t, l));
        var d = r.native ? (delete r.native, e.nativeEvents || (e.nativeEvents = {})) : e.events || (e.events = {});
        a = In({
            value: i.trim(),
            dynamic: l
        }, a);
        r !== n && (a.modifiers = r), r = d[t], Array.isArray(r) ? o ? r.unshift(a) : r.push(a) : d[t] = r ? o ? [a, r] : [r, a] : a, e.plain = !1
    }

    function En(e, t, i) {
        var n = Nn(e, ":" + t) || Nn(e, "v-bind:" + t);
        return null != n ? wn(n) : !1 !== i && null != (t = Nn(e, t)) ? JSON.stringify(t) : void 0
    }

    function Nn(e, t, i) {
        var n;
        if (null != (n = e.attrsMap[t]))
            for (var r = e.attrsList, o = 0, s = r.length; o < s; o++)
                if (r[o].name === t) {
                    r.splice(o, 1);
                    break
                } return i && delete e.attrsMap[t], n
    }

    function Dn(e, t) {
        for (var i = e.attrsList, n = 0, r = i.length; n < r; n++) {
            var o = i[n];
            if (t.test(o.name)) return i.splice(n, 1), o
        }
    }

    function In(e, t) {
        return t && (null != t.start && (e.start = t.start), null != t.end && (e.end = t.end)), e
    }

    function Tn(e, t, i) {
        i = (n = i || {}).number;
        var n = n.trim ? "(typeof $$v === 'string'? $$v.trim(): $$v)" : "$$v";
        n = Mn(t, n = i ? "_n(" + n + ")" : n);
        e.model = {
            value: "(" + t + ")",
            expression: JSON.stringify(t),
            callback: "function ($$v) {" + n + "}"
        }
    }

    function Mn(e, t) {
        var i = function(e) {
            if (e = e.trim(), un = e.length, e.indexOf("[") < 0 || e.lastIndexOf("]") < un - 1) return -1 < (fn = e.lastIndexOf(".")) ? {
                exp: e.slice(0, fn),
                key: '"' + e.slice(fn + 1) + '"'
            } : {
                exp: e,
                key: null
            };
            for (pn = e, fn = mn = vn = 0; !An();) Rn(gn = Pn()) ? Fn(gn) : 91 === gn && function(e) {
                var t = 1;
                for (mn = fn; !An();)
                    if (Rn(e = Pn())) Fn(e);
                    else if (91 === e && t++, 93 === e && t--, 0 === t) {
                    vn = fn;
                    break
                }
            }(gn);
            return {
                exp: e.slice(0, mn),
                key: e.slice(mn + 1, vn)
            }
        }(e);
        return null === i.key ? e + "=" + t : "$set(" + i.exp + ", " + i.key + ", " + t + ")"
    }

    function Pn() {
        return pn.charCodeAt(++fn)
    }

    function An() {
        return un <= fn
    }

    function Rn(e) {
        return 34 === e || 39 === e
    }

    function Fn(e) {
        for (var t = e; !An() && (e = Pn()) !== t;);
    }
    var jn, Bn = "__r";

    function Vn(e, t, i) {
        var n = jn;
        return function r() {
            null !== t.apply(null, arguments) && Hn(e, r, i, n)
        }
    }
    var Wn = Ge && !(Q && Number(Q[1]) <= 53);

    function zn(e, t, i, n) {
        var r, o;
        Wn && (r = ti, t = (o = t)._wrapper = function(e) {
            if (e.target === e.currentTarget || e.timeStamp >= r || e.timeStamp <= 0 || e.target.ownerDocument !== document) return o.apply(this, arguments)
        }), jn.addEventListener(e, t, ee ? {
            capture: i,
            passive: n
        } : i)
    }

    function Hn(e, t, i, n) {
        (n || jn).removeEventListener(e, t._wrapper || t, i)
    }

    function Un(e, t) {
        var i, n, s;
        r(e.data.on) && r(t.data.on) || (i = t.data.on || {}, n = e.data.on || {}, jn = t.elm, o((s = i).__r) && (s[e = G ? "change" : "input"] = [].concat(s.__r, s[e] || []), delete s.__r), o(s.__c) && (s.change = [].concat(s.__c, s.change || []), delete s.__c), nt(i, n, zn, Hn, Vn, t.context), jn = void 0)
    }
    var Kn;
    j = {
        create: Un,
        update: Un
    };

    function $n(e, t) {
        if (!r(e.data.domProps) || !r(t.data.domProps)) {
            var i, n, s, a, l = t.elm,
                d = e.data.domProps || {},
                c = t.data.domProps || {};
            for (i in o(c.__ob__) && (c = t.data.domProps = E({}, c)), d) i in c || (l[i] = "");
            for (i in c) {
                if (n = c[i], "textContent" === i || "innerHTML" === i) {
                    if (t.children && (t.children.length = 0), n === d[i]) continue;
                    1 === l.childNodes.length && l.removeChild(l.childNodes[0])
                }
                if ("value" === i && "PROGRESS" !== l.tagName) {
                    var h = r(l._value = n) ? "" : String(n);
                    a = h, (s = l).composing || "OPTION" !== s.tagName && ! function(e, t) {
                        var i = !0;
                        try {
                            i = document.activeElement !== e
                        } catch (e) {}
                        return i && e.value !== t
                    }(s, a) && ! function(e, t) {
                        var i = e.value;
                        if (o(e = e._vModifiers)) {
                            if (e.number) return p(i) !== p(t);
                            if (e.trim) return i.trim() !== t.trim()
                        }
                        return i !== t
                    }(s, a) || (l.value = h)
                } else if ("innerHTML" === i && qi(l.tagName) && r(l.innerHTML)) {
                    (Kn = Kn || document.createElement("div")).innerHTML = "<svg>" + n + "</svg>";
                    for (var u = Kn.firstChild; l.firstChild;) l.removeChild(l.firstChild);
                    for (; u.firstChild;) l.appendChild(u.firstChild)
                } else if (n !== d[i]) try {
                    l[i] = n
                } catch (e) {}
            }
        }
    }
    Ge = {
        create: $n,
        update: $n
    };
    var qn = w((function(e) {
        var t = {},
            i = /:(.+)/;
        return e.split(/;(?![^(]*\))/g).forEach((function(e) {
            !e || 1 < (e = e.split(i)).length && (t[e[0].trim()] = e[1].trim())
        })), t
    }));

    function Gn(e) {
        var t = Yn(e.style);
        return e.staticStyle ? E(e.staticStyle, t) : t
    }

    function Yn(e) {
        return Array.isArray(e) ? N(e) : "string" == typeof e ? qn(e) : e
    }

    function Zn(e, t, i) {
        if (Qn.test(t)) e.style.setProperty(t, i);
        else if (Jn.test(i)) e.style.setProperty(k(t), i.replace(Jn, ""), "important");
        else {
            var n = tr(t);
            if (Array.isArray(i))
                for (var r = 0, o = i.length; r < o; r++) e.style[n] = i[r];
            else e.style[n] = i
        }
    }
    var Xn, Qn = /^--/,
        Jn = /\s*!important$/,
        er = ["Webkit", "Moz", "ms"],
        tr = w((function(e) {
            if (Xn = Xn || document.createElement("div").style, "filter" !== (e = C(e)) && e in Xn) return e;
            for (var t = e.charAt(0).toUpperCase() + e.slice(1), i = 0; i < er.length; i++) {
                var n = er[i] + t;
                if (n in Xn) return n
            }
        }));

    function ir(e, t) {
        var i = t.data;
        e = e.data;
        if (!(r(i.staticStyle) && r(i.style) && r(e.staticStyle) && r(e.style))) {
            var n, s, a = t.elm,
                l = (i = e.staticStyle, e = e.normalizedStyle || e.style || {}, i || e);
            e = Yn(t.data.style) || {};
            t.data.normalizedStyle = o(e.__ob__) ? E({}, e) : e;
            var d = function(e, t) {
                for (var i, n = {}, r = e; r.componentInstance;)(r = r.componentInstance._vnode) && r.data && (i = Gn(r.data)) && E(n, i);
                (i = Gn(e.data)) && E(n, i);
                for (var o = e; o = o.parent;) o.data && (i = Gn(o.data)) && E(n, i);
                return n
            }(t);
            for (s in l) r(d[s]) && Zn(a, s, "");
            for (s in d)(n = d[s]) !== l[s] && Zn(a, s, null == n ? "" : n)
        }
    }
    Q = {
        create: ir,
        update: ir
    };
    var nr = /\s+/;

    function rr(e, t) {
        var i;
        (t = t && t.trim()) && (e.classList ? -1 < t.indexOf(" ") ? t.split(nr).forEach((function(t) {
            return e.classList.add(t)
        })) : e.classList.add(t) : (i = " " + (e.getAttribute("class") || "") + " ").indexOf(" " + t + " ") < 0 && e.setAttribute("class", (i + t).trim()))
    }

    function or(e, t) {
        if (t = t && t.trim())
            if (e.classList) - 1 < t.indexOf(" ") ? t.split(nr).forEach((function(t) {
                return e.classList.remove(t)
            })) : e.classList.remove(t), e.classList.length || e.removeAttribute("class");
            else {
                for (var i = " " + (e.getAttribute("class") || "") + " ", n = " " + t + " "; 0 <= i.indexOf(n);) i = i.replace(n, " ");
                (i = i.trim()) ? e.setAttribute("class", i): e.removeAttribute("class")
            }
    }

    function sr(e) {
        if (e) {
            if ("object" != typeof e) return "string" == typeof e ? ar(e) : void 0;
            var t = {};
            return !1 !== e.css && E(t, ar(e.name || "v")), E(t, e), t
        }
    }
    var ar = w((function(e) {
            return {
                enterClass: e + "-enter",
                enterToClass: e + "-enter-to",
                enterActiveClass: e + "-enter-active",
                leaveClass: e + "-leave",
                leaveToClass: e + "-leave-to",
                leaveActiveClass: e + "-leave-active"
            }
        })),
        lr = K && !Y,
        dr = "transition",
        cr = "animation",
        hr = "transition",
        ur = "transitionend",
        pr = "animation",
        gr = "animationend";
    lr && (void 0 === window.ontransitionend && void 0 !== window.onwebkittransitionend && (hr = "WebkitTransition", ur = "webkitTransitionEnd"), void 0 === window.onanimationend && void 0 !== window.onwebkitanimationend && (pr = "WebkitAnimation", gr = "webkitAnimationEnd"));
    var fr = K ? window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout : function(e) {
        return e()
    };

    function mr(e) {
        fr((function() {
            fr(e)
        }))
    }

    function vr(e, t) {
        var i = e._transitionClasses || (e._transitionClasses = []);
        i.indexOf(t) < 0 && (i.push(t), rr(e, t))
    }

    function br(e, t) {
        e._transitionClasses && v(e._transitionClasses, t), or(e, t)
    }

    function _r(e, t, i) {
        var n = yr(e, t),
            r = n.type,
            o = (t = n.timeout, n.propCount);
        if (!r) return i();

        function s() {
            e.removeEventListener(a, d), i()
        }
        var a = r === dr ? ur : gr,
            l = 0,
            d = function(t) {
                t.target === e && ++l >= o && s()
            };
        setTimeout((function() {
            l < o && s()
        }), t + 1), e.addEventListener(a, d)
    }
    var wr = /\b(transform|all)(,|$)/;

    function yr(e, t) {
        var i, n = window.getComputedStyle(e),
            r = (n[hr + "Delay"] || "").split(", "),
            o = (n[hr + "Duration"] || "").split(", "),
            s = Cr(r, o),
            a = (n[pr + "Delay"] || "").split(", "),
            l = (n[pr + "Duration"] || "").split(", ");
        e = Cr(a, l), r = 0, a = 0;
        return t === dr ? 0 < s && (i = dr, r = s, a = o.length) : t === cr ? 0 < e && (i = cr, r = e, a = l.length) : a = (i = 0 < (r = Math.max(s, e)) ? e < s ? dr : cr : null) ? (i === dr ? o : l).length : 0, {
            type: i,
            timeout: r,
            propCount: a,
            hasTransform: i === dr && wr.test(n[hr + "Property"])
        }
    }

    function Cr(e, t) {
        for (; e.length < t.length;) e = e.concat(e);
        return Math.max.apply(null, t.map((function(t, i) {
            return xr(t) + xr(e[i])
        })))
    }

    function xr(e) {
        return 1e3 * Number(e.slice(0, -1).replace(",", "."))
    }

    function Sr(e, t) {
        var i = e.elm;
        if (o(i._leaveCb) && (i._leaveCb.cancelled = !0, i._leaveCb()), !r(F = sr(e.data.transition)) && !o(i._enterCb) && 1 === i.nodeType) {
            for (var n = F.css, s = F.type, l = F.enterClass, d = F.enterToClass, c = F.enterActiveClass, h = F.appearClass, u = F.appearToClass, g = F.appearActiveClass, f = F.beforeEnter, m = F.enter, v = F.afterEnter, b = F.enterCancelled, _ = F.beforeAppear, w = F.appear, y = F.afterAppear, C = F.appearCancelled, x = F.duration, S = Ht, k = Ht.$vnode; k && k.parent;) S = k.context, k = k.parent;
            var L, O, E, N, D, I, T, M, P, R, F;
            (F = !S._isMounted || !e.isRootInsert) && !w && "" !== w || (L = F && h ? h : l, O = F && g ? g : c, E = F && u ? u : d, f = F && _ || f, N = F && "function" == typeof w ? w : m, D = F && y || v, I = F && C || b, T = p(a(x) ? x.enter : x), M = !1 !== n && !Y, P = Or(N), R = i._enterCb = A((function() {
                M && (br(i, E), br(i, O)), R.cancelled ? (M && br(i, L), I && I(i)) : D && D(i), i._enterCb = null
            })), e.data.show || rt(e, "insert", (function() {
                var t;
                (t = (t = i.parentNode) && t._pending && t._pending[e.key]) && t.tag === e.tag && t.elm._leaveCb && t.elm._leaveCb(), N && N(i, R)
            })), f && f(i), M && (vr(i, L), vr(i, O), mr((function() {
                br(i, L), R.cancelled || (vr(i, E), P || (Lr(T) ? setTimeout(R, T) : _r(i, s, R)))
            }))), e.data.show && (t && t(), N && N(i, R)), M || P || R())
        }
    }

    function kr(e, t) {
        var i = e.elm;
        o(i._enterCb) && (i._enterCb.cancelled = !0, i._enterCb());
        var n, s, l, d, c, h, u, g, f, m, v, b, _, w, y = sr(e.data.transition);
        if (r(y) || 1 !== i.nodeType) return t();

        function C() {
            w.cancelled || (!e.data.show && i.parentNode && ((i.parentNode._pending || (i.parentNode._pending = {}))[e.key] = e), h && h(i), v && (vr(i, l), vr(i, c), mr((function() {
                br(i, l), w.cancelled || (vr(i, d), b || (Lr(_) ? setTimeout(w, _) : _r(i, s, w)))
            }))), u && u(i, w), v || b || w())
        }
        o(i._leaveCb) || (n = y.css, s = y.type, l = y.leaveClass, d = y.leaveToClass, c = y.leaveActiveClass, h = y.beforeLeave, u = y.leave, g = y.afterLeave, f = y.leaveCancelled, m = y.delayLeave, y = y.duration, v = !1 !== n && !Y, b = Or(u), _ = p(a(y) ? y.leave : y), w = i._leaveCb = A((function() {
            i.parentNode && i.parentNode._pending && (i.parentNode._pending[e.key] = null), v && (br(i, d), br(i, c)), w.cancelled ? (v && br(i, l), f && f(i)) : (t(), g && g(i)), i._leaveCb = null
        })), m ? m(C) : C())
    }

    function Lr(e) {
        return "number" == typeof e && !isNaN(e)
    }

    function Or(e) {
        if (r(e)) return !1;
        var t = e.fns;
        return o(t) ? Or(Array.isArray(t) ? t[0] : t) : 1 < (e._length || e.length)
    }

    function Er(e, t) {
        !0 !== t.data.show && Sr(t)
    }
    bn = function(e) {
        for (var t, i = {}, n = e.modules, a = e.nodeOps, l = 0; l < en.length; ++l)
            for (i[en[l]] = [], t = 0; t < n.length; ++t) o(n[t][en[l]]) && i[en[l]].push(n[t][en[l]]);

        function d(e, t) {
            function i() {
                0 == --i.listeners && c(e)
            }
            return i.listeners = t, i
        }

        function c(e) {
            var t = a.parentNode(e);
            o(t) && a.removeChild(t, e)
        }

        function h(e, t, n, r, s, l, d) {
            (e = o(e.elm) && o(l) ? l[d] = me(e) : e).isRootInsert = !s,
                function(e, t, n, r) {
                    var s = e.data;
                    if (o(s)) {
                        var a = o(e.componentInstance) && s.keepAlive;
                        if (o(s = s.hook) && o(s = s.init) && s(e, !1), o(e.componentInstance)) return u(e, t), p(n, e.elm, r), !0 === a && function(e, t, n, r) {
                            for (var s, a = e; a.componentInstance;)
                                if (o(s = (a = a.componentInstance._vnode).data) && o(s = s.transition)) {
                                    for (s = 0; s < i.activate.length; ++s) i.activate[s](Ji, a);
                                    t.push(a);
                                    break
                                } p(n, e.elm, r)
                        }(e, t, n, r), !0
                    }
                }(e, t, n, r) || (l = e.data, d = e.children, o(s = e.tag) ? (e.elm = e.ns ? a.createElementNS(e.ns, s) : a.createElement(s, e), b(e), f(e, d, t), o(l) && v(e, t)) : !0 === e.isComment ? e.elm = a.createComment(e.text) : e.elm = a.createTextNode(e.text), p(n, e.elm, r))
        }

        function u(e, t) {
            o(e.data.pendingInsert) && (t.push.apply(t, e.data.pendingInsert), e.data.pendingInsert = null), e.elm = e.componentInstance.$el, m(e) ? (v(e, t), b(e)) : (Qi(e), t.push(e))
        }

        function p(e, t, i) {
            o(e) && (o(i) ? a.parentNode(i) === e && a.insertBefore(e, t, i) : a.appendChild(e, t))
        }

        function f(e, t, i) {
            if (Array.isArray(t))
                for (var n = 0; n < t.length; ++n) h(t[n], i, e.elm, null, !0, t, n);
            else s(e.text) && a.appendChild(e.elm, a.createTextNode(String(e.text)))
        }

        function m(e) {
            for (; e.componentInstance;) e = e.componentInstance._vnode;
            return o(e.tag)
        }

        function v(e, t) {
            for (var n = 0; n < i.create.length; ++n) i.create[n](Ji, e);
            o(l = e.data.hook) && (o(l.create) && l.create(Ji, e), o(l.insert) && t.push(e))
        }

        function b(e) {
            var t;
            if (o(t = e.fnScopeId)) a.setStyleScope(e.elm, t);
            else
                for (var i = e; i;) o(t = i.context) && o(t = t.$options._scopeId) && a.setStyleScope(e.elm, t), i = i.parent;
            o(t = Ht) && t !== e.context && t !== e.fnContext && o(t = t.$options._scopeId) && a.setStyleScope(e.elm, t)
        }

        function _(e, t, i, n, r, o) {
            for (; n <= r; ++n) h(i[n], o, e, t, !1, i, n)
        }

        function w(e) {
            var t, n, r = e.data;
            if (o(r))
                for (o(t = r.hook) && o(t = t.destroy) && t(e), t = 0; t < i.destroy.length; ++t) i.destroy[t](e);
            if (o(t = e.children))
                for (n = 0; n < e.children.length; ++n) w(e.children[n])
        }

        function y(e, t, n) {
            for (; t <= n; ++t) {
                var r = e[t];
                o(r) && (o(r.tag) ? (function e(t, n) {
                    if (o(n) || o(t.data)) {
                        var r, s = i.remove.length + 1;
                        for (o(n) ? n.listeners += s : n = d(t.elm, s), o(r = t.componentInstance) && o(r = r._vnode) && o(r.data) && e(r, n), r = 0; r < i.remove.length; ++r) i.remove[r](t, n);
                        o(r = t.data.hook) && o(r = r.remove) ? r(t, n) : n()
                    } else c(t.elm)
                }(r), w(r)) : c(r.elm))
            }
        }

        function C(e, t, n, s, l, d) {
            if (e !== t) {
                var c = (t = o(t.elm) && o(s) ? s[l] = me(t) : t).elm = e.elm;
                if (!0 !== e.isAsyncPlaceholder)
                    if (!0 !== t.isStatic || !0 !== e.isStatic || t.key !== e.key || !0 !== t.isCloned && !0 !== t.isOnce) {
                        var u, p = t.data;
                        if (o(p) && o(u = p.hook) && o(u = u.prepatch) && u(e, t), s = e.children, l = t.children, o(p) && m(t)) {
                            for (u = 0; u < i.update.length; ++u) i.update[u](e, t);
                            o(u = p.hook) && o(u = u.update) && u(e, t)
                        }
                        r(t.text) ? o(s) && o(l) ? s !== l && function(e, t, i, n, s) {
                            for (var l, d, c, u = 0, p = 0, g = t.length - 1, f = t[0], m = t[g], v = i.length - 1, b = i[0], w = i[v], x = !s; u <= g && p <= v;) r(f) ? f = t[++u] : r(m) ? m = t[--g] : tn(f, b) ? (C(f, b, n, i, p), f = t[++u], b = i[++p]) : tn(m, w) ? (C(m, w, n, i, v), m = t[--g], w = i[--v]) : tn(f, w) ? (C(f, w, n, i, v), x && a.insertBefore(e, f.elm, a.nextSibling(m.elm)), f = t[++u], w = i[--v]) : (tn(m, b) ? (C(m, b, n, i, p), x && a.insertBefore(e, m.elm, f.elm), m = t[--g]) : (r(l) && (l = function(e, t, i) {
                                for (var n, r = {}, s = t; s <= i; ++s) o(n = e[s].key) && (r[n] = s);
                                return r
                            }(t, u, g)), !r(d = o(b.key) ? l[b.key] : function(e, t, i, n) {
                                for (var r = i; r < n; r++) {
                                    var s = t[r];
                                    if (o(s) && tn(e, s)) return r
                                }
                            }(b, t, u, g)) && tn(c = t[d], b) ? (C(c, b, n, i, p), t[d] = void 0, x && a.insertBefore(e, c.elm, f.elm)) : h(b, n, e, f.elm, !1, i, p)), b = i[++p]);
                            g < u ? _(e, r(i[v + 1]) ? null : i[v + 1].elm, i, p, v, n) : v < p && y(t, u, g)
                        }(c, s, l, n, d) : o(l) ? (o(e.text) && a.setTextContent(c, ""), _(c, null, l, 0, l.length - 1, n)) : o(s) ? y(s, 0, s.length - 1) : o(e.text) && a.setTextContent(c, "") : e.text !== t.text && a.setTextContent(c, t.text), o(p) && o(u = p.hook) && o(u = u.postpatch) && u(e, t)
                    } else t.componentInstance = e.componentInstance;
                else o(t.asyncFactory.resolved) ? k(e.elm, t, n) : t.isAsyncPlaceholder = !0
            }
        }

        function x(e, t, i) {
            if (!0 === i && o(e.parent)) e.parent.data.pendingInsert = t;
            else
                for (var n = 0; n < t.length; ++n) t[n].data.hook.insert(t[n])
        }
        var S = g("attrs,class,staticClass,staticStyle,key");

        function k(e, t, i, n) {
            var r, s = t.tag,
                a = t.data,
                l = t.children;
            if (n = n || a && a.pre, t.elm = e, !0 === t.isComment && o(t.asyncFactory)) return t.isAsyncPlaceholder = !0;
            if (o(a) && (o(r = a.hook) && o(r = r.init) && r(t, !0), o(r = t.componentInstance))) return u(t, i), 1;
            if (o(s)) {
                if (o(l))
                    if (e.hasChildNodes())
                        if (o(r = a) && o(r = r.domProps) && o(r = r.innerHTML)) {
                            if (r !== e.innerHTML) return
                        } else {
                            for (var d = !0, c = e.firstChild, h = 0; h < l.length; h++) {
                                if (!c || !k(c, l[h], i, n)) {
                                    d = !1;
                                    break
                                }
                                c = c.nextSibling
                            }
                            if (!d || c) return
                        }
                else f(t, l, i);
                if (o(a)) {
                    var p, g = !1;
                    for (p in a)
                        if (!S(p)) {
                            g = !0, v(t, i);
                            break
                        }! g && a.class && et(a.class)
                }
            } else e.data !== t.text && (e.data = t.text);
            return 1
        }
        return function(e, t, n, s) {
            if (!r(t)) {
                var l = !1,
                    d = [];
                if (r(e)) l = !0, h(t, d);
                else {
                    var c = o(e.nodeType);
                    if (!c && tn(e, t)) C(e, t, d, null, null, s);
                    else {
                        if (c) {
                            if (1 === e.nodeType && e.hasAttribute(R) && (e.removeAttribute(R), n = !0), !0 === n && k(e, t, d)) return x(t, d, !0), e;
                            u = e, e = new pe(a.tagName(u).toLowerCase(), {}, [], void 0, u)
                        }
                        n = e.elm;
                        var u = a.parentNode(n);
                        if (h(t, d, n._leaveCb ? null : u, a.nextSibling(n)), o(t.parent))
                            for (var p = t.parent, g = m(t); p;) {
                                for (var f = 0; f < i.destroy.length; ++f) i.destroy[f](p);
                                if (p.elm = t.elm, g) {
                                    for (var v = 0; v < i.create.length; ++v) i.create[v](Ji, p);
                                    var b = p.data.hook.insert;
                                    if (b.merged)
                                        for (var _ = 1; _ < b.fns.length; _++) b.fns[_]()
                                } else Qi(p);
                                p = p.parent
                            }
                        o(u) ? y([e], 0, 0) : o(e.tag) && w(e)
                    }
                }
                return x(t, d, l), t.elm
            }
            o(e) && w(e)
        }
    }({
        nodeOps: te,
        modules: [Di, bn, j, Ge, Q, K ? {
            create: Er,
            activate: Er,
            remove: function(e, t) {
                !0 !== e.data.show ? kr(e, t) : t()
            }
        } : {}].concat(an)
    }), Y && document.addEventListener("selectionchange", (function() {
        var e = document.activeElement;
        e && e.vmodel && Rr(e, "input")
    }));
    var Nr = {
        inserted: function(e, t, i, n) {
            "select" === i.tag ? (n.elm && !n.elm._vOptions ? rt(i, "postpatch", (function() {
                Nr.componentUpdated(e, t, i)
            })) : Dr(e, t, i.context), e._vOptions = [].map.call(e.options, Mr)) : "textarea" !== i.tag && !Zi(e.type) || (e._vModifiers = t.modifiers, t.modifiers.lazy || (e.addEventListener("compositionstart", Pr), e.addEventListener("compositionend", Ar), e.addEventListener("change", Ar), Y && (e.vmodel = !0)))
        },
        componentUpdated: function(e, t, i) {
            var n, r;
            "select" === i.tag && (Dr(e, t, i.context), n = e._vOptions, (r = e._vOptions = [].map.call(e.options, Mr)).some((function(e, t) {
                return !M(e, n[t])
            })) && (e.multiple ? t.value.some((function(e) {
                return Tr(e, r)
            })) : t.value !== t.oldValue && Tr(t.value, r)) && Rr(e, "change"))
        }
    };

    function Dr(e, t, i) {
        Ir(e, t), (G || Z) && setTimeout((function() {
            Ir(e, t)
        }), 0)
    }

    function Ir(e, t) {
        var i = t.value,
            n = e.multiple;
        if (!n || Array.isArray(i)) {
            for (var r, o, s = 0, a = e.options.length; s < a; s++)
                if (o = e.options[s], n) r = -1 < P(i, Mr(o)), o.selected !== r && (o.selected = r);
                else if (M(Mr(o), i)) return void(e.selectedIndex !== s && (e.selectedIndex = s));
            n || (e.selectedIndex = -1)
        }
    }

    function Tr(e, t) {
        return t.every((function(t) {
            return !M(t, e)
        }))
    }

    function Mr(e) {
        return "_value" in e ? e._value : e.value
    }

    function Pr(e) {
        e.target.composing = !0
    }

    function Ar(e) {
        e.target.composing && (e.target.composing = !1, Rr(e.target, "input"))
    }

    function Rr(e, t) {
        var i = document.createEvent("HTMLEvents");
        i.initEvent(t, !0, !0), e.dispatchEvent(i)
    }

    function Fr(e) {
        return !e.componentInstance || e.data && e.data.transition ? e : Fr(e.componentInstance._vnode)
    }

    function jr(e) {
        var t = e && e.componentOptions;
        return t && t.Ctor.options.abstract ? jr(jt(t.children)) : e
    }

    function Br(e) {
        var t, i = {},
            n = e.$options;
        for (t in n.propsData) i[t] = e[t];
        var r, o = n._parentListeners;
        for (r in o) i[C(r)] = o[r];
        return i
    }

    function Vr(e, t) {
        if (/\d-keep-alive$/.test(t.tag)) return e("keep-alive", {
            props: t.componentOptions.propsData
        })
    }

    function Wr(e) {
        return e.tag || ht(e)
    }

    function zr(e) {
        return "show" === e.name
    }

    function Hr(e) {
        e.elm._moveCb && e.elm._moveCb(), e.elm._enterCb && e.elm._enterCb()
    }

    function Ur(e) {
        e.data.newPos = e.elm.getBoundingClientRect()
    }

    function Kr(e) {
        var t = e.data.pos,
            i = e.data.newPos,
            n = t.left - i.left;
        i = t.top - i.top;
        (n || i) && (e.data.moved = !0, (e = e.elm.style).transform = e.WebkitTransform = "translate(" + n + "px," + i + "px)", e.transitionDuration = "0s")
    }
    j = {
        model: Nr,
        show: {
            bind: function(e, t, i) {
                var n = t.value,
                    r = (t = (i = Fr(i)).data && i.data.transition, e.__vOriginalDisplay = "none" === e.style.display ? "" : e.style.display);
                n && t ? (i.data.show = !0, Sr(i, (function() {
                    e.style.display = r
                }))) : e.style.display = n ? r : "none"
            },
            update: function(e, t, i) {
                var n = t.value;
                !n != !t.oldValue && ((i = Fr(i)).data && i.data.transition ? (i.data.show = !0, n ? Sr(i, (function() {
                    e.style.display = e.__vOriginalDisplay
                })) : kr(i, (function() {
                    e.style.display = "none"
                }))) : e.style.display = n ? e.__vOriginalDisplay : "none")
            },
            unbind: function(e, t, i, n, r) {
                r || (e.style.display = e.__vOriginalDisplay)
            }
        }
    }, Q = {
        name: "transition",
        props: Ge = {
            name: String,
            appear: Boolean,
            css: Boolean,
            mode: String,
            type: String,
            enterClass: String,
            leaveClass: String,
            enterToClass: String,
            leaveToClass: String,
            enterActiveClass: String,
            leaveActiveClass: String,
            appearClass: String,
            appearActiveClass: String,
            appearToClass: String,
            duration: [Number, String, Object]
        },
        abstract: !0,
        render: function(e) {
            var t = this,
                i = this.$slots.default;
            if (i && (i = i.filter(Wr)).length) {
                var n = this.mode,
                    r = i[0];
                if (function(e) {
                        for (; e = e.parent;)
                            if (e.data.transition) return 1
                    }(this.$vnode)) return r;
                var o = jr(r);
                if (!o) return r;
                if (this._leaving) return Vr(e, r);
                var a = "__transition-" + this._uid + "-";
                o.key = null == o.key ? o.isComment ? a + "comment" : a + o.tag : s(o.key) && 0 !== String(o.key).indexOf(a) ? a + o.key : o.key;
                var l = (o.data || (o.data = {})).transition = Br(this),
                    d = jr(h = this._vnode);
                if (o.data.directives && o.data.directives.some(zr) && (o.data.show = !0), d && d.data && (i = o, (a = d).key !== i.key || a.tag !== i.tag) && !ht(d) && (!d.componentInstance || !d.componentInstance._vnode.isComment)) {
                    if (d = d.data.transition = E({}, l), "out-in" === n) return this._leaving = !0, rt(d, "afterLeave", (function() {
                        t._leaving = !1, t.$forceUpdate()
                    })), Vr(e, r);
                    if ("in-out" === n) {
                        if (ht(o)) return h;
                        var c, h;
                        rt(l, "afterEnter", h = function() {
                            c()
                        }), rt(l, "enterCancelled", h), rt(d, "delayLeave", (function(e) {
                            c = e
                        }))
                    }
                }
                return r
            }
        }
    }, delete(an = E({
        tag: String,
        moveClass: String
    }, Ge)).mode, Ge = {
        Transition: Q,
        TransitionGroup: {
            props: an,
            beforeMount: function() {
                var e = this,
                    t = this._update;
                this._update = function(i, n) {
                    var r = Ut(e);
                    e.__patch__(e._vnode, e.kept, !1, !0), e._vnode = e.kept, r(), t.call(e, i, n)
                }
            },
            render: function(e) {
                for (var t = this.tag || this.$vnode.data.tag || "span", i = Object.create(null), n = this.prevChildren = this.children, r = this.$slots.default || [], o = this.children = [], s = Br(this), a = 0; a < r.length; a++) {
                    var l = r[a];
                    l.tag && null != l.key && 0 !== String(l.key).indexOf("__vlist") && (o.push(l), ((i[l.key] = l).data || (l.data = {})).transition = s)
                }
                if (n) {
                    for (var d = [], c = [], h = 0; h < n.length; h++) {
                        var u = n[h];
                        u.data.transition = s, u.data.pos = u.elm.getBoundingClientRect(), (i[u.key] ? d : c).push(u)
                    }
                    this.kept = e(t, null, d), this.removed = c
                }
                return e(t, null, o)
            },
            updated: function() {
                var e = this.prevChildren,
                    t = this.moveClass || (this.name || "v") + "-move";
                e.length && this.hasMove(e[0].elm, t) && (e.forEach(Hr), e.forEach(Ur), e.forEach(Kr), this._reflow = document.body.offsetHeight, e.forEach((function(e) {
                    var i;
                    e.data.moved && (e = (i = e.elm).style, vr(i, t), e.transform = e.WebkitTransform = e.transitionDuration = "", i.addEventListener(ur, i._moveCb = function e(n) {
                        n && n.target !== i || n && !/transform$/.test(n.propertyName) || (i.removeEventListener(ur, e), i._moveCb = null, br(i, t))
                    }))
                })))
            },
            methods: {
                hasMove: function(e, t) {
                    if (!lr) return !1;
                    if (this._hasMove) return this._hasMove;
                    var i = e.cloneNode();
                    return e._transitionClasses && e._transitionClasses.forEach((function(e) {
                        or(i, e)
                    })), rr(i, t), i.style.display = "none", this.$el.appendChild(i), t = yr(i), this.$el.removeChild(i), this._hasMove = t.hasTransform
                }
            }
        }
    }, Ci.config.mustUseProp = Mi, Ci.config.isReservedTag = Ui, Ci.config.isReservedAttr = q, Ci.config.getTagNamespace = Gi, Ci.config.isUnknownElement = function(e) {
        if (!K) return !0;
        if (Ui(e)) return !1;
        if (e = e.toLowerCase(), null != Yi[e]) return Yi[e];
        var t = document.createElement(e);
        return -1 < e.indexOf("-") ? Yi[e] = t.constructor === window.HTMLUnknownElement || t.constructor === window.HTMLElement : Yi[e] = /HTMLUnknownElement/.test(t.toString())
    }, E(Ci.options.directives, j), E(Ci.options.components, Ge), Ci.prototype.__patch__ = K ? bn : D, Ci.prototype.$mount = function(e, t) {
        return e = e = e && K ? Xi(e) : void 0, n = t, (i = this).$el = e, i.$options.render || (i.$options.render = ge), qt(i, "beforeMount"), e = function() {
            i._update(i._render(), n)
        }, new oi(i, e, D, {
            before: function() {
                i._isMounted && !i._isDestroyed && qt(i, "beforeUpdate")
            }
        }, !0), n = !1, null == i.$vnode && (i._isMounted = !0, qt(i, "mounted")), i;
        var i, n
    }, K && setTimeout((function() {
        B.devtools && ne && ne.emit("init", Ci)
    }), 0);
    var $r = /\{\{((?:.|\r?\n)+?)\}\}/g,
        qr = /[-.*+?^${}()|[\]\/\\]/g,
        Gr = w((function(e) {
            var t = e[0].replace(qr, "\\$&");
            e = e[1].replace(qr, "\\$&");
            return new RegExp(t + "((?:.|\\n)+?)" + e, "g")
        }));
    Q = {
        staticKeys: ["staticClass"],
        transformNode: function(e, t) {
            t.warn, (t = Nn(e, "class")) && (e.staticClass = JSON.stringify(t)), (t = En(e, "class", !1)) && (e.classBinding = t)
        },
        genData: function(e) {
            var t = "";
            return e.staticClass && (t += "staticClass:" + e.staticClass + ","), e.classBinding && (t += "class:" + e.classBinding + ","), t
        }
    };
    an = {
        staticKeys: ["staticStyle"],
        transformNode: function(e, t) {
            t.warn, (t = Nn(e, "style")) && (e.staticStyle = JSON.stringify(qn(t))), (t = En(e, "style", !1)) && (e.styleBinding = t)
        },
        genData: function(e) {
            var t = "";
            return e.staticStyle && (t += "staticStyle:" + e.staticStyle + ","), e.styleBinding && (t += "style:(" + e.styleBinding + "),"), t
        }
    }, q = function(e) {
        return (Yr = Yr || document.createElement("div")).innerHTML = e, Yr.textContent
    }, j = g("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"), Ge = g("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source");
    var Yr, Zr = g("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),
        Xr = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,
        Qr = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,
        Jr = (bn = "((?:" + (bn = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + V.source + "]*") + "\\:)?" + bn + ")", new RegExp("^<" + bn)),
        eo = /^\s*(\/?)>/,
        to = new RegExp("^<\\/" + bn + "[^>]*>"),
        io = /^<!DOCTYPE [^>]+>/i,
        no = /^<!\--/,
        ro = /^<!\[/,
        oo = g("script,style,textarea", !0),
        so = {},
        ao = {
            "&lt;": "<",
            "&gt;": ">",
            "&quot;": '"',
            "&amp;": "&",
            "&#10;": "\n",
            "&#9;": "\t",
            "&#39;": "'"
        },
        lo = /&(?:lt|gt|quot|amp|#39);/g,
        co = /&(?:lt|gt|quot|amp|#39|#10|#9);/g,
        ho = g("pre,textarea", !0),
        uo = function(e, t) {
            return e && ho(e) && "\n" === t[0]
        };
    var po, go, fo, mo, vo, bo, _o, wo, yo = /^@|^v-on:/,
        Co = /^v-|^@|^:|^#/,
        xo = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,
        So = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/,
        ko = /^\(|\)$/g,
        Lo = /^\[.*\]$/,
        Oo = /:(.*)$/,
        Eo = /^:|^\.|^v-bind:/,
        No = /\.[^.\]]+(?=[^\]]*$)/g,
        Do = /^v-slot(:|$)|^#/,
        Io = /[\r\n]/,
        To = /[ \f\t\r\n]+/g,
        Mo = w(q),
        Po = "_empty_";

    function Ao(e, t, i) {
        return {
            type: 1,
            tag: e,
            attrsList: t,
            attrsMap: function(e) {
                for (var t = {}, i = 0, n = e.length; i < n; i++) t[e[i].name] = e[i].value;
                return t
            }(t),
            rawAttrsMap: {},
            parent: i,
            children: []
        }
    }

    function Ro(e, t) {
        po = t.warn || yn, bo = t.isPreTag || I, _o = t.mustUseProp || I, wo = t.getTagNamespace || I;
        t.isReservedTag;
        fo = Cn(t.modules, "transformNode"), mo = Cn(t.modules, "preTransformNode"), vo = Cn(t.modules, "postTransformNode"), go = t.delimiters;
        var i, n, r = [],
            o = !1 !== t.preserveWhitespace,
            s = t.whitespace,
            a = !1,
            l = !1;

        function d(e) {
            var o;
            c(e), a || e.processed || (e = Fo(e, t)), r.length || e === i || i.if && (e.elseif || e.else) && Bo(i, {
                exp: e.elseif,
                block: e
            }), n && !e.forbidden && (e.elseif || e.else ? function(e, t) {
                (t = function(e) {
                    for (var t = e.length; t--;) {
                        if (1 === e[t].type) return e[t];
                        e.pop()
                    }
                }(t.children)) && t.if && Bo(t, {
                    exp: e.elseif,
                    block: e
                })
            }(e, n) : (e.slotScope && (o = e.slotTarget || '"default"', (n.scopedSlots || (n.scopedSlots = {}))[o] = e), n.children.push(e), e.parent = n)), e.children = e.children.filter((function(e) {
                return !e.slotScope
            })), c(e), e.pre && (a = !1), bo(e.tag) && (l = !1);
            for (var s = 0; s < vo.length; s++) vo[s](e, t)
        }

        function c(e) {
            if (!l)
                for (var t;
                    (t = e.children[e.children.length - 1]) && 3 === t.type && " " === t.text;) e.children.pop()
        }
        return function(e, t) {
            for (var i, n, r = [], o = t.expectHTML, s = t.isUnaryTag || I, a = t.canBeLeftOpenTag || I, l = 0; e;) {
                if (i = e, n && oo(n)) {
                    var d = 0,
                        c = n.toLowerCase(),
                        h = so[c] || (so[c] = new RegExp("([\\s\\S]*?)(</" + c + "[^>]*>)", "i"));
                    h = e.replace(h, (function(e, i, n) {
                        return d = n.length, oo(c) || "noscript" === c || (i = i.replace(/<!\--([\s\S]*?)-->/g, "$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g, "$1")), uo(c, i) && (i = i.slice(1)), t.chars && t.chars(i), ""
                    }));
                    l += e.length - h.length, e = h, b(c, l - d, l)
                } else {
                    var u = e.indexOf("<");
                    if (0 === u) {
                        if (no.test(e) && 0 <= (h = e.indexOf("--\x3e"))) {
                            t.shouldKeepComment && t.comment(e.substring(4, h), l, l + h + 3), v(h + 3);
                            continue
                        }
                        if (ro.test(e)) {
                            var p = e.indexOf("]>");
                            if (0 <= p) {
                                v(p + 2);
                                continue
                            }
                        }
                        if (p = e.match(io)) {
                            v(p[0].length);
                            continue
                        }
                        if (p = e.match(to)) {
                            var g = l;
                            v(p[0].length), b(p[1], g, l);
                            continue
                        }
                        if (g = function() {
                                var t, i, n = e.match(Jr);
                                if (n) {
                                    var r = {
                                        tagName: n[1],
                                        attrs: [],
                                        start: l
                                    };
                                    for (v(n[0].length); !(t = e.match(eo)) && (i = e.match(Qr) || e.match(Xr));) i.start = l, v(i[0].length), i.end = l, r.attrs.push(i);
                                    if (t) return r.unarySlash = t[1], v(t[0].length), r.end = l, r
                                }
                            }()) {
                            ! function(e) {
                                var i = e.tagName,
                                    l = e.unarySlash;
                                o && ("p" === n && Zr(i) && b(n), a(i) && n === i && b(i));
                                l = s(i) || !!l;
                                for (var d = e.attrs.length, c = new Array(d), h = 0; h < d; h++) {
                                    var u = e.attrs[h],
                                        p = u[3] || u[4] || u[5] || "",
                                        g = "a" === i && "href" === u[1] ? t.shouldDecodeNewlinesForHref : t.shouldDecodeNewlines;
                                    c[h] = {
                                        name: u[1],
                                        value: function(e, t) {
                                            return e.replace(t ? co : lo, (function(e) {
                                                return ao[e]
                                            }))
                                        }(p, g)
                                    }
                                }
                                l || (r.push({
                                    tag: i,
                                    lowerCasedTag: i.toLowerCase(),
                                    attrs: c,
                                    start: e.start,
                                    end: e.end
                                }), n = i), t.start && t.start(i, c, l, e.start, e.end)
                            }(g), uo(g.tagName, e) && v(1);
                            continue
                        }
                    }
                    g = void 0;
                    var f, m = void 0;
                    if (0 <= u) {
                        for (m = e.slice(u); !(to.test(m) || Jr.test(m) || no.test(m) || ro.test(m) || (f = m.indexOf("<", 1)) < 0);) u += f, m = e.slice(u);
                        g = e.substring(0, u)
                    }(g = u < 0 ? e : g) && v(g.length), t.chars && g && t.chars(g, l - g.length, l)
                }
                if (e === i) {
                    t.chars && t.chars(e);
                    break
                }
            }

            function v(t) {
                l += t, e = e.substring(t)
            }

            function b(e, i, o) {
                var s, a;
                if (null == i && (i = l), null == o && (o = l), e)
                    for (a = e.toLowerCase(), s = r.length - 1; 0 <= s && r[s].lowerCasedTag !== a; s--);
                else s = 0;
                if (0 <= s) {
                    for (var d = r.length - 1; s <= d; d--) t.end && t.end(r[d].tag, i, o);
                    r.length = s, n = s && r[s - 1].tag
                } else "br" === a ? t.start && t.start(e, [], !0, i, o) : "p" === a && (t.start && t.start(e, [], !1, i, o), t.end && t.end(e, i, o))
            }
            b()
        }(e, {
            warn: po,
            expectHTML: t.expectHTML,
            isUnaryTag: t.isUnaryTag,
            canBeLeftOpenTag: t.canBeLeftOpenTag,
            shouldDecodeNewlines: t.shouldDecodeNewlines,
            shouldDecodeNewlinesForHref: t.shouldDecodeNewlinesForHref,
            shouldKeepComment: t.comments,
            outputSourceRange: t.outputSourceRange,
            start: function(e, o, s, c, h) {
                var u = n && n.ns || wo(e),
                    p = Ao(e, o = G && "svg" === u ? function(e) {
                        for (var t = [], i = 0; i < e.length; i++) {
                            var n = e[i];
                            Wo.test(n.name) || (n.name = n.name.replace(zo, ""), t.push(n))
                        }
                        return t
                    }(o) : o, n);
                u && (p.ns = u), "style" !== (u = p).tag && ("script" !== u.tag || u.attrsMap.type && "text/javascript" !== u.attrsMap.type) || ie() || (p.forbidden = !0);
                for (var g, f = 0; f < mo.length; f++) p = mo[f](p, t) || p;
                a || (null != Nn(g = p, "v-pre") && (g.pre = !0), p.pre && (a = !0)), bo(p.tag) && (l = !0), a ? function(e) {
                    var t = e.attrsList,
                        i = t.length;
                    if (i)
                        for (var n = e.attrs = new Array(i), r = 0; r < i; r++) n[r] = {
                            name: t[r].name,
                            value: JSON.stringify(t[r].value)
                        }, null != t[r].start && (n[r].start = t[r].start, n[r].end = t[r].end);
                    else e.pre || (e.plain = !0)
                }(p) : p.processed || (jo(p), (g = Nn(u = p, "v-if")) ? (u.if = g, Bo(u, {
                    exp: g,
                    block: u
                })) : (null != Nn(u, "v-else") && (u.else = !0), (g = Nn(u, "v-else-if")) && (u.elseif = g)), null != Nn(g = p, "v-once") && (g.once = !0)), i = i || p, s ? d(p) : (n = p, r.push(p))
            },
            end: function(e, t, i) {
                var o = r[r.length - 1];
                --r.length, n = r[r.length - 1], d(o)
            },
            chars: function(e, t, i) {
                var r, d, c, h;
                n && (G && "textarea" === n.tag && n.attrsMap.placeholder === e || (r = n.children, (e = l || e.trim() ? "script" === (d = n).tag || "style" === d.tag ? e : Mo(e) : r.length ? s ? "condense" === s && Io.test(e) ? "" : " " : o ? " " : "" : "") && (l || "condense" !== s || (e = e.replace(To, " ")), !a && " " !== e && (c = function(e, t) {
                    var i = t ? Gr(t) : $r;
                    if (i.test(e)) {
                        for (var n, r, o, s = [], a = [], l = i.lastIndex = 0; n = i.exec(e);) {
                            l < (r = n.index) && (a.push(o = e.slice(l, r)), s.push(JSON.stringify(o)));
                            var d = wn(n[1].trim());
                            s.push("_s(" + d + ")"), a.push({
                                "@binding": d
                            }), l = r + n[0].length
                        }
                        return l < e.length && (a.push(o = e.slice(l)), s.push(JSON.stringify(o))), {
                            expression: s.join("+"),
                            tokens: a
                        }
                    }
                }(e, go)) ? h = {
                    type: 2,
                    expression: c.expression,
                    tokens: c.tokens,
                    text: e
                } : " " === e && r.length && " " === r[r.length - 1].text || (h = {
                    type: 3,
                    text: e
                }), h && r.push(h))))
            },
            comment: function(e, t, i) {
                n && n.children.push({
                    type: 3,
                    text: e,
                    isComment: !0
                })
            }
        }), i
    }

    function Fo(e, t) {
        var i, n;
        (i = En(n = e, "key")) && (n.key = i), e.plain = !e.key && !e.scopedSlots && !e.attrsList.length, (i = En(n = e, "ref")) && (n.ref = i, n.refInFor = function(e) {
                for (var t = e; t;) {
                    if (void 0 !== t.for) return !0;
                    t = t.parent
                }
                return !1
            }(n)),
            function(e) {
                "template" === e.tag ? (s = Nn(e, "scope"), e.slotScope = s || Nn(e, "slot-scope")) : (s = Nn(e, "slot-scope")) && (e.slotScope = s);
                var t, i, n, r, o, s = En(e, "slot");
                s && (e.slotTarget = '""' === s ? '"default"' : s, e.slotTargetDynamic = !(!e.attrsMap[":slot"] && !e.attrsMap["v-bind:slot"]), "template" === e.tag || e.slotScope || Sn(e, "slot", s, function(e, t) {
                    return e.rawAttrsMap[":" + t] || e.rawAttrsMap["v-bind:" + t] || e.rawAttrsMap[t]
                }(e, "slot"))), "template" === e.tag ? (n = Dn(e, Do)) && (i = (t = Vo(n)).name, r = t.dynamic, e.slotTarget = i, e.slotTargetDynamic = r, e.slotScope = n.value || Po) : (t = Dn(e, Do)) && (i = e.scopedSlots || (e.scopedSlots = {}), n = (r = Vo(t)).name, r = r.dynamic, (o = i[n] = Ao("template", [], e)).slotTarget = n, o.slotTargetDynamic = r, o.children = e.children.filter((function(e) {
                    if (!e.slotScope) return e.parent = o, !0
                })), o.slotScope = t.value || Po, e.children = [], e.plain = !1)
            }(e), "slot" === (n = e).tag && (n.slotName = En(n, "name")),
            function(e) {
                var t;
                (t = En(e, "is")) && (e.component = t), null != Nn(e, "inline-template") && (e.inlineTemplate = !0)
            }(e);
        for (var r = 0; r < fo.length; r++) e = fo[r](e, t) || e;
        return function(e) {
            var t, i, n, r, o, s, a, l = e.attrsList;
            for (t = 0, i = l.length; t < i; t++) {
                var d;
                n = r = l[t].name, o = l[t].value, Co.test(n) ? (e.hasBindings = !0, (s = function(e) {
                    if (e = e.match(No)) {
                        var t = {};
                        return e.forEach((function(e) {
                            t[e.slice(1)] = !0
                        })), t
                    }
                }(n.replace(Co, ""))) && (n = n.replace(No, "")), Eo.test(n) ? (n = n.replace(Eo, ""), o = wn(o), (a = Lo.test(n)) && (n = n.slice(1, -1)), s && (s.prop && !a && "innerHtml" === (n = C(n)) && (n = "innerHTML"), s.camel && !a && (n = C(n)), s.sync && (d = Mn(o, "$event"), a ? On(e, '"update:"+(' + n + ")", d, null, !1, 0, l[t], !0) : (On(e, "update:" + C(n), d, null, !1, 0, l[t]), k(n) !== C(n) && On(e, "update:" + k(n), d, null, !1, 0, l[t])))), (s && s.prop || !e.component && _o(e.tag, e.attrsMap.type, n) ? xn : Sn)(e, n, o, l[t], a)) : yo.test(n) ? (n = n.replace(yo, ""), (a = Lo.test(n)) && (n = n.slice(1, -1)), On(e, n, o, s, !1, 0, l[t], a)) : (a = !1, (d = (d = (n = n.replace(Co, "")).match(Oo)) && d[1]) && (n = n.slice(0, -(d.length + 1)), Lo.test(d) && (d = d.slice(1, -1), a = !0)), function(e, t, i, n, r, o, s, a) {
                    (e.directives || (e.directives = [])).push(In({
                        name: t,
                        rawName: i,
                        value: n,
                        arg: r,
                        isDynamicArg: o,
                        modifiers: s
                    }, a)), e.plain = !1
                }(e, n, r, o, d, a, s, l[t]))) : (Sn(e, n, JSON.stringify(o), l[t]), !e.component && "muted" === n && _o(e.tag, e.attrsMap.type, n) && xn(e, n, "true", l[t]))
            }
        }(e), e
    }

    function jo(e) {
        var t;
        !(t = Nn(e, "v-for")) || (t = function(e) {
            var t = e.match(xo);
            if (t) {
                var i = {};
                return i.for = t[2].trim(), e = t[1].trim().replace(ko, ""), (t = e.match(So)) ? (i.alias = e.replace(So, "").trim(), i.iterator1 = t[1].trim(), t[2] && (i.iterator2 = t[2].trim())) : i.alias = e, i
            }
        }(t)) && E(e, t)
    }

    function Bo(e, t) {
        e.ifConditions || (e.ifConditions = []), e.ifConditions.push(t)
    }

    function Vo(e) {
        var t = e.name.replace(Do, "");
        return t || "#" !== e.name[0] && (t = "default"), Lo.test(t) ? {
            name: t.slice(1, -1),
            dynamic: !0
        } : {
            name: '"' + t + '"',
            dynamic: !1
        }
    }
    var Wo = /^xmlns:NS\d+/,
        zo = /^NS\d+:/;

    function Ho(e) {
        return Ao(e.tag, e.attrsList.slice(), e.parent)
    }
    var Uo, Ko, $o = [Q, an, {
            preTransformNode: function(e, t) {
                if ("input" === e.tag) {
                    var i, n = e.attrsMap;
                    if (n["v-model"] && ((n[":type"] || n["v-bind:type"]) && (i = En(e, "type")), i = n.type || i || !n["v-bind"] ? i : "(" + n["v-bind"] + ").type")) {
                        var r = Nn(e, "v-if", !0),
                            o = r ? "&&(" + r + ")" : "",
                            s = null != Nn(e, "v-else", !0),
                            a = Nn(e, "v-else-if", !0),
                            l = Ho(e);
                        return jo(l), kn(l, "type", "checkbox"), Fo(l, t), l.processed = !0, l.if = "(" + i + ")==='checkbox'" + o, Bo(l, {
                            exp: l.if,
                            block: l
                        }), Nn(n = Ho(e), "v-for", !0), kn(n, "type", "radio"), Fo(n, t), Bo(l, {
                            exp: "(" + i + ")==='radio'" + o,
                            block: n
                        }), Nn(e = Ho(e), "v-for", !0), kn(e, ":type", i), Fo(e, t), Bo(l, {
                            exp: r,
                            block: e
                        }), s ? l.else = !0 : a && (l.elseif = a), l
                    }
                }
            }
        }],
        qo = (Ge = {
            expectHTML: !0,
            modules: $o,
            directives: {
                model: function(e, t, i) {
                    var n, r, o, s, a = t.value,
                        l = t.modifiers,
                        d = e.tag,
                        c = e.attrsMap.type;
                    if (e.component) return Tn(e, a, l), !1;
                    if ("select" === d) ! function(e, t, i) {
                        On(e, "change", i = (i = 'var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return ' + ((i = i && i.number) ? "_n(val)" : "val") + "});") + " " + Mn(t, "$event.target.multiple ? $$selectedVal : $$selectedVal[0]"), null, !0)
                    }(e, a, l);
                    else if ("input" === d && "checkbox" === c) n = e, r = a, o = (i = l) && i.number, s = En(n, "value") || "null", t = En(n, "true-value") || "true", i = En(n, "false-value") || "false", xn(n, "checked", "Array.isArray(" + r + ")?_i(" + r + "," + s + ")>-1" + ("true" === t ? ":(" + r + ")" : ":_q(" + r + "," + t + ")")), On(n, "change", "var $$a=" + r + ",$$el=$event.target,$$c=$$el.checked?(" + t + "):(" + i + ");if(Array.isArray($$a)){var $$v=" + (o ? "_n(" + s + ")" : s) + ",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(" + Mn(r, "$$a.concat([$$v])") + ")}else{$$i>-1&&(" + Mn(r, "$$a.slice(0,$$i).concat($$a.slice($$i+1))") + ")}}else{" + Mn(r, "$$c") + "}", null, !0);
                    else if ("input" === d && "radio" === c) o = e, s = a, c = (r = l) && r.number, r = En(o, "value") || "null", xn(o, "checked", "_q(" + s + "," + (r = c ? "_n(" + r + ")" : r) + ")"), On(o, "change", Mn(s, r), null, !0);
                    else if ("input" === d || "textarea" === d) ! function(e, t, i) {
                        var n = e.attrsMap.type,
                            r = (s = i || {}).lazy,
                            o = s.number,
                            s = (i = s.trim, !r && "range" !== n);
                        r = r ? "change" : "range" === n ? Bn : "input", n = "$event.target.value";
                        i && (n = "$event.target.value.trim()"), o && (n = "_n(" + n + ")"), n = Mn(t, n), s && (n = "if($event.target.composing)return;" + n), xn(e, "value", "(" + t + ")"), On(e, r, n, null, !0), (i || o) && On(e, "blur", "$forceUpdate()")
                    }(e, a, l);
                    else if (!B.isReservedTag(d)) return Tn(e, a, l), !1;
                    return !0
                },
                text: function(e, t) {
                    t.value && xn(e, "textContent", "_s(" + t.value + ")", t)
                },
                html: function(e, t) {
                    t.value && xn(e, "innerHTML", "_s(" + t.value + ")", t)
                }
            },
            isPreTag: function(e) {
                return "pre" === e
            },
            isUnaryTag: j,
            mustUseProp: Mi,
            canBeLeftOpenTag: Ge,
            isReservedTag: Ui,
            getTagNamespace: Gi,
            staticKeys: $o.reduce((function(e, t) {
                return e.concat(t.staticKeys || [])
            }), []).join(",")
        }, w((function(e) {
            return g("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap" + (e ? "," + e : ""))
        })));

    function Go(e) {
        return 2 !== e.type && (3 === e.type || !(!e.pre && (e.hasBindings || e.if || e.for || f(e.tag) || !Ko(e.tag) || function(e) {
            for (; e.parent;) {
                if ("template" !== (e = e.parent).tag) return !1;
                if (e.for) return !0
            }
            return !1
        }(e) || !Object.keys(e).every(Uo))))
    }
    var Yo = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,
        Zo = /\([^)]*?\);*$/,
        Xo = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,
        Qo = {
            esc: 27,
            tab: 9,
            enter: 13,
            space: 32,
            up: 38,
            left: 37,
            right: 39,
            down: 40,
            delete: [8, 46]
        },
        Jo = {
            esc: ["Esc", "Escape"],
            tab: "Tab",
            enter: "Enter",
            space: [" ", "Spacebar"],
            up: ["Up", "ArrowUp"],
            left: ["Left", "ArrowLeft"],
            right: ["Right", "ArrowRight"],
            down: ["Down", "ArrowDown"],
            delete: ["Backspace", "Delete", "Del"]
        },
        es = function(e) {
            return "if(" + e + ")return null;"
        },
        ts = {
            stop: "$event.stopPropagation();",
            prevent: "$event.preventDefault();",
            self: es("$event.target !== $event.currentTarget"),
            ctrl: es("!$event.ctrlKey"),
            shift: es("!$event.shiftKey"),
            alt: es("!$event.altKey"),
            meta: es("!$event.metaKey"),
            left: es("'button' in $event && $event.button !== 0"),
            middle: es("'button' in $event && $event.button !== 1"),
            right: es("'button' in $event && $event.button !== 2")
        };

    function is(e, t) {
        t = t ? "nativeOn:" : "on:";
        var i, n = "",
            r = "";
        for (i in e) {
            var o = function e(t) {
                if (!t) return "function(){}";
                if (Array.isArray(t)) return "[" + t.map((function(t) {
                    return e(t)
                })).join(",") + "]";
                var i = Xo.test(t.value),
                    n = Yo.test(t.value),
                    r = Xo.test(t.value.replace(Zo, ""));
                if (t.modifiers) {
                    var o, s, a = "",
                        l = "",
                        d = [];
                    for (o in t.modifiers) ts[o] ? (l += ts[o], Qo[o] && d.push(o)) : "exact" === o ? (s = t.modifiers, l += es(["ctrl", "shift", "alt", "meta"].filter((function(e) {
                        return !s[e]
                    })).map((function(e) {
                        return "$event." + e + "Key"
                    })).join("||"))) : d.push(o);
                    return d.length && (a += ns(d)), l && (a += l), "function($event){" + a + (i ? "return " + t.value + ".apply(null, arguments)" : n ? "return (" + t.value + ").apply(null, arguments)" : r ? "return " + t.value : t.value) + "}"
                }
                return i || n ? t.value : "function($event){" + (r ? "return " + t.value : t.value) + "}"
            }(e[i]);
            e[i] && e[i].dynamic ? r += i + "," + o + "," : n += '"' + i + '":' + o + ","
        }
        return n = "{" + n.slice(0, -1) + "}", r ? t + "_d(" + n + ",[" + r.slice(0, -1) + "])" : t + n
    }

    function ns(e) {
        return "if(!$event.type.indexOf('key')&&" + e.map(rs).join("&&") + ")return null;"
    }

    function rs(e) {
        if (i = parseInt(e, 10)) return "$event.keyCode!==" + i;
        var t = Qo[e],
            i = Jo[e];
        return "_k($event.keyCode," + JSON.stringify(e) + "," + JSON.stringify(t) + ",$event.key," + JSON.stringify(i) + ")"
    }
    var os = {
            on: function(e, t) {
                e.wrapListeners = function(e) {
                    return "_g(" + e + "," + t.value + ")"
                }
            },
            bind: function(e, t) {
                e.wrapData = function(i) {
                    return "_b(" + i + ",'" + e.tag + "'," + t.value + "," + (t.modifiers && t.modifiers.prop ? "true" : "false") + (t.modifiers && t.modifiers.sync ? ",true" : "") + ")"
                }
            },
            cloak: D
        },
        ss = function(e) {
            this.options = e, this.warn = e.warn || yn, this.transforms = Cn(e.modules, "transformCode"), this.dataGenFns = Cn(e.modules, "genData"), this.directives = E(E({}, os), e.directives);
            var t = e.isReservedTag || I;
            this.maybeComponent = function(e) {
                return !!e.component || !t(e.tag)
            }, this.onceId = 0, this.staticRenderFns = [], this.pre = !1
        };

    function as(e, t) {
        return t = new ss(t), {
            render: "with(this){return " + (e ? "script" === e.tag ? "null" : ls(e, t) : '_c("div")') + "}",
            staticRenderFns: t.staticRenderFns
        }
    }

    function ls(e, t) {
        if (e.parent && (e.pre = e.pre || e.parent.pre), e.staticRoot && !e.staticProcessed) return ds(e, t);
        if (e.once && !e.onceProcessed) return cs(e, t);
        if (e.for && !e.forProcessed) return us(e, t);
        if (e.if && !e.ifProcessed) return hs(e, t);
        if ("template" !== e.tag || e.slotTarget || t.pre) {
            if ("slot" === e.tag) return function(e, t) {
                var i = e.slotName || '"default"',
                    n = ms(e, t);
                t = "_t(" + i + (n ? ",function(){return " + n + "}" : ""), i = e.attrs || e.dynamicAttrs ? _s((e.attrs || []).concat(e.dynamicAttrs || []).map((function(e) {
                    return {
                        name: C(e.name),
                        value: e.value,
                        dynamic: e.dynamic
                    }
                }))) : null, e = e.attrsMap["v-bind"];
                return !i && !e || n || (t += ",null"), i && (t += "," + i), e && (t += (i ? "" : ",null") + "," + e), t + ")"
            }(e, t);
            var i, n;
            n = e.component ? (o = e.component, a = t, l = (s = e).inlineTemplate ? null : ms(s, a, !0), "_c(" + o + "," + ps(s, a) + (l ? "," + l : "") + ")") : ((!e.plain || e.pre && t.maybeComponent(e)) && (i = ps(e, t)), l = e.inlineTemplate ? null : ms(e, t, !0), "_c('" + e.tag + "'" + (i ? "," + i : "") + (l ? "," + l : "") + ")");
            for (var r = 0; r < t.transforms.length; r++) n = t.transforms[r](e, n);
            return n
        }
        return ms(e, t) || "void 0";
        var o, s, a, l
    }

    function ds(e, t) {
        e.staticProcessed = !0;
        var i = t.pre;
        return e.pre && (t.pre = e.pre), t.staticRenderFns.push("with(this){return " + ls(e, t) + "}"), t.pre = i, "_m(" + (t.staticRenderFns.length - 1) + (e.staticInFor ? ",true" : "") + ")"
    }

    function cs(e, t) {
        if (e.onceProcessed = !0, e.if && !e.ifProcessed) return hs(e, t);
        if (e.staticInFor) {
            for (var i = "", n = e.parent; n;) {
                if (n.for) {
                    i = n.key;
                    break
                }
                n = n.parent
            }
            return i ? "_o(" + ls(e, t) + "," + t.onceId++ + "," + i + ")" : ls(e, t)
        }
        return ds(e, t)
    }

    function hs(e, t, i, n) {
        return e.ifProcessed = !0,
            function e(t, i, n, r) {
                if (!t.length) return r || "_e()";
                var o = t.shift();
                return o.exp ? "(" + o.exp + ")?" + s(o.block) + ":" + e(t, i, n, r) : "" + s(o.block);

                function s(e) {
                    return (n || (e.once ? cs : ls))(e, i)
                }
            }(e.ifConditions.slice(), t, i, n)
    }

    function us(e, t, i, n) {
        var r = e.for,
            o = e.alias,
            s = e.iterator1 ? "," + e.iterator1 : "",
            a = e.iterator2 ? "," + e.iterator2 : "";
        return e.forProcessed = !0, (n || "_l") + "((" + r + "),function(" + o + s + a + "){return " + (i || ls)(e, t) + "})"
    }

    function ps(e, t) {
        var i = "{",
            n = function(e, t) {
                var i = e.directives;
                if (i) {
                    var n, r, o, s, a = "directives:[",
                        l = !1;
                    for (n = 0, r = i.length; n < r; n++) {
                        o = i[n], s = !0;
                        var d = t.directives[o.name];
                        (s = d ? !!d(e, o, t.warn) : s) && (l = !0, a += '{name:"' + o.name + '",rawName:"' + o.rawName + '"' + (o.value ? ",value:(" + o.value + "),expression:" + JSON.stringify(o.value) : "") + (o.arg ? ",arg:" + (o.isDynamicArg ? o.arg : '"' + o.arg + '"') : "") + (o.modifiers ? ",modifiers:" + JSON.stringify(o.modifiers) : "") + "},")
                    }
                    if (l) return a.slice(0, -1) + "]"
                }
            }(e, t);
        n && (i += n + ","), e.key && (i += "key:" + e.key + ","), e.ref && (i += "ref:" + e.ref + ","), e.refInFor && (i += "refInFor:true,"), e.pre && (i += "pre:true,"), e.component && (i += 'tag:"' + e.tag + '",');
        for (var r = 0; r < t.dataGenFns.length; r++) i += t.dataGenFns[r](e);
        return e.attrs && (i += "attrs:" + _s(e.attrs) + ","), e.props && (i += "domProps:" + _s(e.props) + ","), e.events && (i += is(e.events, !1) + ","), e.nativeEvents && (i += is(e.nativeEvents, !0) + ","), e.slotTarget && !e.slotScope && (i += "slot:" + e.slotTarget + ","), e.scopedSlots && (i += function(e, t, i) {
            var n = e.for || Object.keys(t).some((function(e) {
                    return (e = t[e]).slotTargetDynamic || e.if || e.for || gs(e)
                })),
                r = !!e.if;
            if (!n)
                for (var o = e.parent; o;) {
                    if (o.slotScope && o.slotScope !== Po || o.for) {
                        n = !0;
                        break
                    }
                    o.if && (r = !0), o = o.parent
                }
            return "scopedSlots:_u([" + (e = Object.keys(t).map((function(e) {
                return fs(t[e], i)
            })).join(",")) + "]" + (n ? ",null,true" : "") + (!n && r ? ",null,false," + function(e) {
                for (var t = 5381, i = e.length; i;) t = 33 * t ^ e.charCodeAt(--i);
                return t >>> 0
            }(e) : "") + ")"
        }(e, e.scopedSlots, t) + ","), e.model && (i += "model:{value:" + e.model.value + ",callback:" + e.model.callback + ",expression:" + e.model.expression + "},"), !e.inlineTemplate || (n = function(e, t) {
            if ((e = e.children[0]) && 1 === e.type) return "inlineTemplate:{render:function(){" + (t = as(e, t.options)).render + "},staticRenderFns:[" + t.staticRenderFns.map((function(e) {
                return "function(){" + e + "}"
            })).join(",") + "]}"
        }(e, t)) && (i += n + ","), i = i.replace(/,$/, "") + "}", e.dynamicAttrs && (i = "_b(" + i + ',"' + e.tag + '",' + _s(e.dynamicAttrs) + ")"), e.wrapData && (i = e.wrapData(i)), e.wrapListeners ? e.wrapListeners(i) : i
    }

    function gs(e) {
        return 1 === e.type && ("slot" === e.tag || e.children.some(gs))
    }

    function fs(e, t) {
        var i = e.attrsMap["slot-scope"];
        if (e.if && !e.ifProcessed && !i) return hs(e, t, fs, "null");
        if (e.for && !e.forProcessed) return us(e, t, fs);
        var n = e.slotScope === Po ? "" : String(e.slotScope);
        t = "function(" + n + "){return " + ("template" === e.tag ? e.if && i ? "(" + e.if+")?" + (ms(e, t) || "undefined") + ":undefined" : ms(e, t) || "undefined" : ls(e, t)) + "}";
        return "{key:" + (e.slotTarget || '"default"') + ",fn:" + t + (n ? "" : ",proxy:true") + "}"
    }

    function ms(e, t, i, n, r) {
        var o = e.children;
        if (o.length) {
            var s = o[0];
            if (1 === o.length && s.for && "template" !== s.tag && "slot" !== s.tag) return e = i ? t.maybeComponent(s) ? ",1" : ",0" : "", (n || ls)(s, t) + e;
            i = i ? function(e, t) {
                for (var i = 0, n = 0; n < e.length; n++) {
                    var r = e[n];
                    if (1 === r.type) {
                        if (vs(r) || r.ifConditions && r.ifConditions.some((function(e) {
                                return vs(e.block)
                            }))) {
                            i = 2;
                            break
                        }(t(r) || r.ifConditions && r.ifConditions.some((function(e) {
                            return t(e.block)
                        }))) && (i = 1)
                    }
                }
                return i
            }(o, t.maybeComponent) : 0;
            var a = r || bs;
            return "[" + o.map((function(e) {
                return a(e, t)
            })).join(",") + "]" + (i ? "," + i : "")
        }
    }

    function vs(e) {
        return void 0 !== e.for || "template" === e.tag || "slot" === e.tag
    }

    function bs(e, t) {
        return 1 === e.type ? ls(e, t) : 3 === e.type && e.isComment ? "_e(" + JSON.stringify(e.text) + ")" : "_v(" + (2 === (e = e).type ? e.expression : ws(JSON.stringify(e.text))) + ")"
    }

    function _s(e) {
        for (var t = "", i = "", n = 0; n < e.length; n++) {
            var r = e[n],
                o = ws(r.value);
            r.dynamic ? i += r.name + "," + o + "," : t += '"' + r.name + '":' + o + ","
        }
        return t = "{" + t.slice(0, -1) + "}", i ? "_d(" + t + ",[" + i.slice(0, -1) + "])" : t
    }

    function ws(e) {
        return e.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029")
    }

    function ys(e, t) {
        try {
            return new Function(e)
        } catch (i) {
            return t.push({
                err: i,
                code: e
            }), D
        }
    }
    new RegExp("\\b" + "do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b") + "\\b"), new RegExp("\\b" + "delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b") + "\\s*\\([^\\)]*\\)");
    var Cs, xs, Ss = ((Ge = (Cs = function(e, t) {
        return e = Ro(e.trim(), t), !1 !== t.optimize && function(e, t) {
            e && (Uo = qo(t.staticKeys || ""), Ko = t.isReservedTag || I, function e(t) {
                if (t.static = Go(t), 1 === t.type && (Ko(t.tag) || "slot" === t.tag || null != t.attrsMap["inline-template"])) {
                    for (var i = 0, n = t.children.length; i < n; i++) {
                        var r = t.children[i];
                        e(r), r.static || (t.static = !1)
                    }
                    if (t.ifConditions)
                        for (var o = 1, s = t.ifConditions.length; o < s; o++) {
                            var a = t.ifConditions[o].block;
                            e(a), a.static || (t.static = !1)
                        }
                }
            }(e), function e(t, i) {
                if (1 === t.type)
                    if ((t.static || t.once) && (t.staticInFor = i), !t.static || !t.children.length || 1 === t.children.length && 3 === t.children[0].type) {
                        if (t.staticRoot = !1, t.children)
                            for (var n = 0, r = t.children.length; n < r; n++) e(t.children[n], i || !!t.for);
                        if (t.ifConditions)
                            for (var o = 1, s = t.ifConditions.length; o < s; o++) e(t.ifConditions[o].block, i)
                    } else t.staticRoot = !0
            }(e, !1))
        }(e, t), {
            ast: e,
            render: (t = as(e, t)).render,
            staticRenderFns: t.staticRenderFns
        }
    }, function(e) {
        function t(t, i) {
            var n, r = Object.create(e),
                o = [],
                s = [];
            if (i)
                for (n in i.modules && (r.modules = (e.modules || []).concat(i.modules)), i.directives && (r.directives = E(Object.create(e.directives || null), i.directives)), i) "modules" !== n && "directives" !== n && (r[n] = i[n]);
            return r.warn = function(e, t, i) {
                (i ? s : o).push(e)
            }, (t = Cs(t.trim(), r)).errors = o, t.tips = s, t
        }
        return {
            compile: t,
            compileToFunctions: (i = t, n = Object.create(null), function(e, t, r) {
                (t = E({}, t)).warn, delete t.warn;
                var o = t.delimiters ? String(t.delimiters) + e : e;
                if (n[o]) return n[o];
                e = i(e, t);
                var s = [];
                return (t = {}).render = ys(e.render, s), t.staticRenderFns = e.staticRenderFns.map((function(e) {
                    return ys(e, s)
                })), n[o] = t
            })
        };
        var i, n
    })(Ge)).compile, Ge.compileToFunctions);

    function ks(e) {
        return (xs = xs || document.createElement("div")).innerHTML = e ? '<a href="\n"/>' : '<div a="\n"/>', 0 < xs.innerHTML.indexOf("&#10;")
    }
    var Ls = !!K && ks(!1),
        Os = !!K && ks(!0),
        Es = w((function(e) {
            return (e = Xi(e)) && e.innerHTML
        })),
        Ns = Ci.prototype.$mount;
    Ci.prototype.$mount = function(e, t) {
        if ((e = e && Xi(e)) === document.body || e === document.documentElement) return this;
        var i = this.$options;
        if (!i.render) {
            var n, r = i.template;
            if (r)
                if ("string" == typeof r) "#" === r.charAt(0) && (r = Es(r));
                else {
                    if (!r.nodeType) return this;
                    r = r.innerHTML
                }
            else e && (r = function(e) {
                if (e.outerHTML) return e.outerHTML;
                var t = document.createElement("div");
                return t.appendChild(e.cloneNode(!0)), t.innerHTML
            }(e));
            r && (r = (n = Ss(r, {
                outputSourceRange: !1,
                shouldDecodeNewlines: Ls,
                shouldDecodeNewlinesForHref: Os,
                delimiters: i.delimiters,
                comments: i.comments
            }, this)).render, n = n.staticRenderFns, i.render = r, i.staticRenderFns = n)
        }
        return Ns.call(this, e, t)
    }, Ci.compile = Ss, t.a = Ci
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return l
    })), i.d(t, "d", (function() {
        return c
    })), i.d(t, "c", (function() {
        return u
    })), i.d(t, "e", (function() {
        return p
    })), i.d(t, "b", (function() {
        return g
    }));
    var n = i(6),
        r = i(122),
        o = i(8),
        s = i(5),
        a = i(44);
    class l {
        constructor(e, t, i, n) {
            this.searchString = e, this.isRegex = t, this.matchCase = i, this.wordSeparators = n
        }
        parseSearchRequest() {
            if ("" === this.searchString) return null;
            let e;
            e = this.isRegex ? function(e) {
                if (!e || 0 === e.length) return !1;
                for (let i = 0, n = e.length; i < n; i++)
                    if (92 === e.charCodeAt(i)) {
                        if (i++, i >= n) break;
                        var t = e.charCodeAt(i);
                        if (110 === t || 114 === t || 87 === t) return !0
                    } return !1
            }(this.searchString) : 0 <= this.searchString.indexOf("\n");
            let t = null;
            try {
                t = n.q(this.searchString, this.isRegex, {
                    matchCase: this.matchCase,
                    wholeWord: !1,
                    multiline: e,
                    global: !0,
                    unicode: !0
                })
            } catch (e) {
                return null
            }
            if (!t) return null;
            let i = !this.isRegex && !e;
            return i && this.searchString.toLowerCase() !== this.searchString.toUpperCase() && (i = this.matchCase), new d(t, this.wordSeparators ? Object(r.a)(this.wordSeparators) : null, i ? this.searchString : null)
        }
    }
    class d {
        constructor(e, t, i) {
            this.regex = e, this.wordSeparators = t, this.simpleSearch = i
        }
    }

    function c(e, t, i) {
        if (!i) return new a.b(e, null);
        let n = [];
        for (let e = 0, i = t.length; e < i; e++) n[e] = t[e];
        return new a.b(e, n)
    }
    class h {
        constructor(e) {
            let t = [],
                i = 0;
            for (let n = 0, r = e.length; n < r; n++) 10 === e.charCodeAt(n) && (t[i++] = n);
            this._lineFeedsOffsets = t
        }
        findLineFeedCountBeforeOffset(e) {
            var t = this._lineFeedsOffsets;
            let i = 0,
                n = t.length - 1;
            if (-1 === n) return 0;
            if (e <= t[0]) return 0;
            for (; i < n;) {
                var r = i + ((n - i) / 2 >> 0);
                t[r] >= e ? n = r - 1 : t[r + 1] >= e ? (i = r, n = r) : i = r + 1
            }
            return i + 1
        }
    }
    class u {
        static findMatches(e, t, i, n, r) {
            return (t = t.parseSearchRequest()) ? t.regex.multiline ? this._doFindMatchesMultiline(e, i, new g(t.wordSeparators, t.regex), n, r) : this._doFindMatchesLineByLine(e, i, t, n, r) : []
        }
        static _getMultilineMatchRange(e, t, i, n, r, o) {
            let a, l, d = 0;
            return a = n ? (d = n.findLineFeedCountBeforeOffset(r), t + r + d) : t + r, l = n ? (r = n.findLineFeedCountBeforeOffset(r + o.length) - d, a + o.length + r) : a + o.length, o = e.getPositionAt(a), e = e.getPositionAt(l), new s.a(o.lineNumber, o.column, e.lineNumber, e.column)
        }
        static _doFindMatchesMultiline(e, t, i, n, r) {
            var o, s = e.getOffsetAt(t.getStartPosition()),
                a = e.getValueInRange(t, 1),
                l = "\r\n" === e.getEOL() ? new h(a) : null;
            const d = [];
            let u = 0;
            for (i.reset(0); o = i.next(a);)
                if (d[u++] = c(this._getMultilineMatchRange(e, s, a, l, o.index, o[0]), o, n), u >= r) return d;
            return d
        }
        static _doFindMatchesLineByLine(e, t, i, n, r) {
            var o = [];
            let s = 0;
            if (t.startLineNumber === t.endLineNumber) {
                const a = e.getLineContent(t.startLineNumber).substring(t.startColumn - 1, t.endColumn - 1);
                return s = this._findMatchesInLine(i, a, t.startLineNumber, t.startColumn - 1, s, o, n, r), o
            }
            const a = e.getLineContent(t.startLineNumber).substring(t.startColumn - 1);
            s = this._findMatchesInLine(i, a, t.startLineNumber, t.startColumn - 1, s, o, n, r);
            for (let a = t.startLineNumber + 1; a < t.endLineNumber && s < r; a++) s = this._findMatchesInLine(i, e.getLineContent(a), a, 0, s, o, n, r);
            if (s < r) {
                const a = e.getLineContent(t.endLineNumber).substring(0, t.endColumn - 1);
                s = this._findMatchesInLine(i, a, t.endLineNumber, 0, s, o, n, r)
            }
            return o
        }
        static _findMatchesInLine(e, t, i, n, r, o, l, d) {
            var h, u = e.wordSeparators;
            if (!l && e.simpleSearch) {
                var f = e.simpleSearch,
                    m = f.length,
                    v = t.length;
                let l = -m;
                for (; - 1 !== (l = t.indexOf(f, l + m));)
                    if ((!u || p(u, t, v, l, m)) && (o[r++] = new a.b(new s.a(i, l + 1 + n, i, l + 1 + m + n), null), d <= r)) return r;
                return r
            }
            const b = new g(e.wordSeparators, e.regex);
            b.reset(0);
            do {
                if ((h = b.next(t)) && (o[r++] = c(new s.a(i, h.index + 1 + n, i, h.index + 1 + h[0].length + n), h, l), d <= r)) return r
            } while (h);
            return r
        }
        static findNextMatch(e, t, i, n) {
            var r = t.parseSearchRequest();
            return r ? (t = new g(r.wordSeparators, r.regex), r.regex.multiline ? this._doFindNextMatchMultiline(e, i, t, n) : this._doFindNextMatchLineByLine(e, i, t, n)) : null
        }
        static _doFindNextMatchMultiline(e, t, i, n) {
            var r = new o.a(t.lineNumber, 1),
                a = e.getOffsetAt(r),
                l = e.getLineCount(),
                d = e.getValueInRange(new s.a(r.lineNumber, r.column, l, e.getLineMaxColumn(l)), 1);
            r = "\r\n" === e.getEOL() ? new h(d) : null;
            return i.reset(t.column - 1), (l = i.next(d)) ? c(this._getMultilineMatchRange(e, a, d, r, l.index, l[0]), l, n) : 1 !== t.lineNumber || 1 !== t.column ? this._doFindNextMatchMultiline(e, new o.a(1, 1), i, n) : null
        }
        static _doFindNextMatchLineByLine(e, t, i, n) {
            var r = e.getLineCount(),
                o = t.lineNumber;
            const s = e.getLineContent(o),
                a = this._findFirstMatchInLine(i, s, o, t.column, n);
            if (a) return a;
            for (let t = 1; t <= r; t++) {
                var l = (o + t - 1) % r;
                const s = e.getLineContent(1 + l),
                    a = this._findFirstMatchInLine(i, s, 1 + l, 1, n);
                if (a) return a
            }
            return null
        }
        static _findFirstMatchInLine(e, t, i, n, r) {
            return e.reset(n - 1), (t = e.next(t)) ? c(new s.a(i, t.index + 1, i, t.index + 1 + t[0].length), t, r) : null
        }
        static findPreviousMatch(e, t, i, n) {
            var r = t.parseSearchRequest();
            return r ? (t = new g(r.wordSeparators, r.regex), r.regex.multiline ? this._doFindPreviousMatchMultiline(e, i, t, n) : this._doFindPreviousMatchLineByLine(e, i, t, n)) : null
        }
        static _doFindPreviousMatchMultiline(e, t, i, n) {
            var r = this._doFindMatchesMultiline(e, new s.a(1, 1, t.lineNumber, t.column), i, n, 9990);
            return 0 < r.length ? r[r.length - 1] : (r = e.getLineCount(), t.lineNumber !== r || t.column !== e.getLineMaxColumn(r) ? this._doFindPreviousMatchMultiline(e, new o.a(r, e.getLineMaxColumn(r)), i, n) : null)
        }
        static _doFindPreviousMatchLineByLine(e, t, i, n) {
            var r = e.getLineCount(),
                o = t.lineNumber;
            const s = e.getLineContent(o).substring(0, t.column - 1),
                a = this._findLastMatchInLine(i, s, o, n);
            if (a) return a;
            for (let t = 1; t <= r; t++) {
                var l = (r + o - t - 1) % r;
                const s = e.getLineContent(1 + l),
                    a = this._findLastMatchInLine(i, s, 1 + l, n);
                if (a) return a
            }
            return null
        }
        static _findLastMatchInLine(e, t, i, n) {
            let r = null;
            var o;
            for (e.reset(0); o = e.next(t);) r = c(new s.a(i, o.index + 1, i, o.index + 1 + o[0].length), o, n);
            return r
        }
    }

    function p(e, t, i, n, r) {
        return function(e, t, i, n) {
            if (0 === i) return !0;
            var r = t.charCodeAt(i - 1);
            return 0 !== e.get(r) || (13 === r || 10 === r || 0 < n && (i = t.charCodeAt(i), 0 !== e.get(i)))
        }(e, t, n, r) && function(e, t, i, n, r) {
            return n + r === i || (i = t.charCodeAt(n + r), 0 !== e.get(i) || (13 === i || 10 === i || 0 < r && (r = t.charCodeAt(n + r - 1), 0 !== e.get(r))))
        }(e, t, i, n, r)
    }
    class g {
        constructor(e, t) {
            this._wordSeparators = e, this._searchRegex = t, this._prevMatchStartIndex = -1, this._prevMatchLength = 0
        }
        reset(e) {
            this._searchRegex.lastIndex = e, this._prevMatchStartIndex = -1, this._prevMatchLength = 0
        }
        next(e) {
            var t = e.length;
            let i;
            do {
                if (this._prevMatchStartIndex + this._prevMatchLength === t) return null;
                if (i = this._searchRegex.exec(e), !i) return null;
                var r = i.index,
                    o = i[0].length;
                if (r !== this._prevMatchStartIndex || o !== this._prevMatchLength) {
                    if (this._prevMatchStartIndex = r, this._prevMatchLength = o, !this._wordSeparators || p(this._wordSeparators, e, t, r, o)) return i
                } else {
                    if (0 !== o) return null;
                    65535 < n.z(e, t, this._searchRegex.lastIndex) ? this._searchRegex.lastIndex += 2 : this._searchRegex.lastIndex += 1
                }
            } while (i);
            return null
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return o
    }));
    var n = i(9);
    const r = n.b.performance && "function" == typeof n.b.performance.now;
    class o {
        constructor(e) {
            this._highResolution = r && e, this._startTime = this._now(), this._stopTime = -1
        }
        static create(e = !0) {
            return new o(e)
        }
        stop() {
            this._stopTime = this._now()
        }
        elapsed() {
            return -1 !== this._stopTime ? this._stopTime - this._startTime : this._now() - this._startTime
        }
        _now() {
            return (this._highResolution ? n.b.performance : Date).now()
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return c
    })), i.d(t, "a", (function() {
        return h
    })), i.d(t, "c", (function() {
        return u
    }));
    var n = i(1),
        r = i(9);
    t = i(372);
    let o, s, a, l, d;

    function c(e) {
        o = document.createElement("div"), o.className = "monaco-aria-container";
        var t = () => {
            const e = document.createElement("div");
            return e.className = "monaco-alert", e.setAttribute("role", "alert"), e.setAttribute("aria-atomic", "true"), o.appendChild(e), e
        };
        s = t(), a = t(), l = (t = () => {
            const e = document.createElement("div");
            return e.className = "monaco-status", e.setAttribute("role", "complementary"), e.setAttribute("aria-live", "polite"), e.setAttribute("aria-atomic", "true"), o.appendChild(e), e
        })(), d = t(), e.appendChild(o)
    }

    function h(e) {
        o && (s.textContent !== e ? (n.q(a), p(s, e)) : (n.q(s), p(a, e)))
    }

    function u(e) {
        o && (r.f ? h(e) : l.textContent !== e ? (n.q(d), p(l, e)) : (n.q(l), p(d, e)))
    }

    function p(e, t) {
        n.q(e), t.length > 2e4 && (t = t.substr(0, 2e4)), e.textContent = t, e.style.visibility = "hidden", e.style.visibility = "visible"
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return a
    })), i.d(t, "b", (function() {
        return u
    })), i.d(t, "d", (function() {
        return g
    })), i.d(t, "c", (function() {
        return f
    }));
    class n {
        constructor() {
            this._keyCodeToStr = [], this._strToKeyCode = Object.create(null)
        }
        define(e, t) {
            this._keyCodeToStr[e] = t, this._strToKeyCode[t.toLowerCase()] = e
        }
        keyCodeToStr(e) {
            return this._keyCodeToStr[e]
        }
        strToKeyCode(e) {
            return this._strToKeyCode[e.toLowerCase()] || 0
        }
    }
    const r = new n,
        o = new n,
        s = new n,
        a = new Array(230),
        l = {},
        d = [],
        c = Object.create(null),
        h = Object.create(null),
        u = [],
        p = [];
    for (let e = 0; e <= 193; e++) u[e] = -1;
    for (let e = 0; e <= 126; e++) p[e] = -1;
    var g;

    function f(e, t) {
        return (e | (65535 & t) << 16 >>> 0) >>> 0
    }! function() {
        let e = [],
            t = [];
        for (const i of [
                [0, 1, 0, "None", 0, "unknown", 0, "VK_UNKNOWN", "", ""],
                [0, 1, 1, "Hyper", 0, "", 0, "", "", ""],
                [0, 1, 2, "Super", 0, "", 0, "", "", ""],
                [0, 1, 3, "Fn", 0, "", 0, "", "", ""],
                [0, 1, 4, "FnLock", 0, "", 0, "", "", ""],
                [0, 1, 5, "Suspend", 0, "", 0, "", "", ""],
                [0, 1, 6, "Resume", 0, "", 0, "", "", ""],
                [0, 1, 7, "Turbo", 0, "", 0, "", "", ""],
                [0, 1, 8, "Sleep", 0, "", 0, "VK_SLEEP", "", ""],
                [0, 1, 9, "WakeUp", 0, "", 0, "", "", ""],
                [31, 0, 10, "KeyA", 31, "A", 65, "VK_A", "", ""],
                [32, 0, 11, "KeyB", 32, "B", 66, "VK_B", "", ""],
                [33, 0, 12, "KeyC", 33, "C", 67, "VK_C", "", ""],
                [34, 0, 13, "KeyD", 34, "D", 68, "VK_D", "", ""],
                [35, 0, 14, "KeyE", 35, "E", 69, "VK_E", "", ""],
                [36, 0, 15, "KeyF", 36, "F", 70, "VK_F", "", ""],
                [37, 0, 16, "KeyG", 37, "G", 71, "VK_G", "", ""],
                [38, 0, 17, "KeyH", 38, "H", 72, "VK_H", "", ""],
                [39, 0, 18, "KeyI", 39, "I", 73, "VK_I", "", ""],
                [40, 0, 19, "KeyJ", 40, "J", 74, "VK_J", "", ""],
                [41, 0, 20, "KeyK", 41, "K", 75, "VK_K", "", ""],
                [42, 0, 21, "KeyL", 42, "L", 76, "VK_L", "", ""],
                [43, 0, 22, "KeyM", 43, "M", 77, "VK_M", "", ""],
                [44, 0, 23, "KeyN", 44, "N", 78, "VK_N", "", ""],
                [45, 0, 24, "KeyO", 45, "O", 79, "VK_O", "", ""],
                [46, 0, 25, "KeyP", 46, "P", 80, "VK_P", "", ""],
                [47, 0, 26, "KeyQ", 47, "Q", 81, "VK_Q", "", ""],
                [48, 0, 27, "KeyR", 48, "R", 82, "VK_R", "", ""],
                [49, 0, 28, "KeyS", 49, "S", 83, "VK_S", "", ""],
                [50, 0, 29, "KeyT", 50, "T", 84, "VK_T", "", ""],
                [51, 0, 30, "KeyU", 51, "U", 85, "VK_U", "", ""],
                [52, 0, 31, "KeyV", 52, "V", 86, "VK_V", "", ""],
                [53, 0, 32, "KeyW", 53, "W", 87, "VK_W", "", ""],
                [54, 0, 33, "KeyX", 54, "X", 88, "VK_X", "", ""],
                [55, 0, 34, "KeyY", 55, "Y", 89, "VK_Y", "", ""],
                [56, 0, 35, "KeyZ", 56, "Z", 90, "VK_Z", "", ""],
                [22, 0, 36, "Digit1", 22, "1", 49, "VK_1", "", ""],
                [23, 0, 37, "Digit2", 23, "2", 50, "VK_2", "", ""],
                [24, 0, 38, "Digit3", 24, "3", 51, "VK_3", "", ""],
                [25, 0, 39, "Digit4", 25, "4", 52, "VK_4", "", ""],
                [26, 0, 40, "Digit5", 26, "5", 53, "VK_5", "", ""],
                [27, 0, 41, "Digit6", 27, "6", 54, "VK_6", "", ""],
                [28, 0, 42, "Digit7", 28, "7", 55, "VK_7", "", ""],
                [29, 0, 43, "Digit8", 29, "8", 56, "VK_8", "", ""],
                [30, 0, 44, "Digit9", 30, "9", 57, "VK_9", "", ""],
                [21, 0, 45, "Digit0", 21, "0", 48, "VK_0", "", ""],
                [3, 1, 46, "Enter", 3, "Enter", 13, "VK_RETURN", "", ""],
                [9, 1, 47, "Escape", 9, "Escape", 27, "VK_ESCAPE", "", ""],
                [1, 1, 48, "Backspace", 1, "Backspace", 8, "VK_BACK", "", ""],
                [2, 1, 49, "Tab", 2, "Tab", 9, "VK_TAB", "", ""],
                [10, 1, 50, "Space", 10, "Space", 32, "VK_SPACE", "", ""],
                [83, 0, 51, "Minus", 83, "-", 189, "VK_OEM_MINUS", "-", "OEM_MINUS"],
                [81, 0, 52, "Equal", 81, "=", 187, "VK_OEM_PLUS", "=", "OEM_PLUS"],
                [87, 0, 53, "BracketLeft", 87, "[", 219, "VK_OEM_4", "[", "OEM_4"],
                [89, 0, 54, "BracketRight", 89, "]", 221, "VK_OEM_6", "]", "OEM_6"],
                [88, 0, 55, "Backslash", 88, "\\", 220, "VK_OEM_5", "\\", "OEM_5"],
                [0, 0, 56, "IntlHash", 0, "", 0, "", "", ""],
                [80, 0, 57, "Semicolon", 80, ";", 186, "VK_OEM_1", ";", "OEM_1"],
                [90, 0, 58, "Quote", 90, "'", 222, "VK_OEM_7", "'", "OEM_7"],
                [86, 0, 59, "Backquote", 86, "`", 192, "VK_OEM_3", "`", "OEM_3"],
                [82, 0, 60, "Comma", 82, ",", 188, "VK_OEM_COMMA", ",", "OEM_COMMA"],
                [84, 0, 61, "Period", 84, ".", 190, "VK_OEM_PERIOD", ".", "OEM_PERIOD"],
                [85, 0, 62, "Slash", 85, "/", 191, "VK_OEM_2", "/", "OEM_2"],
                [8, 1, 63, "CapsLock", 8, "CapsLock", 20, "VK_CAPITAL", "", ""],
                [59, 1, 64, "F1", 59, "F1", 112, "VK_F1", "", ""],
                [60, 1, 65, "F2", 60, "F2", 113, "VK_F2", "", ""],
                [61, 1, 66, "F3", 61, "F3", 114, "VK_F3", "", ""],
                [62, 1, 67, "F4", 62, "F4", 115, "VK_F4", "", ""],
                [63, 1, 68, "F5", 63, "F5", 116, "VK_F5", "", ""],
                [64, 1, 69, "F6", 64, "F6", 117, "VK_F6", "", ""],
                [65, 1, 70, "F7", 65, "F7", 118, "VK_F7", "", ""],
                [66, 1, 71, "F8", 66, "F8", 119, "VK_F8", "", ""],
                [67, 1, 72, "F9", 67, "F9", 120, "VK_F9", "", ""],
                [68, 1, 73, "F10", 68, "F10", 121, "VK_F10", "", ""],
                [69, 1, 74, "F11", 69, "F11", 122, "VK_F11", "", ""],
                [70, 1, 75, "F12", 70, "F12", 123, "VK_F12", "", ""],
                [0, 1, 76, "PrintScreen", 0, "", 0, "", "", ""],
                [79, 1, 77, "ScrollLock", 79, "ScrollLock", 145, "VK_SCROLL", "", ""],
                [7, 1, 78, "Pause", 7, "PauseBreak", 19, "VK_PAUSE", "", ""],
                [19, 1, 79, "Insert", 19, "Insert", 45, "VK_INSERT", "", ""],
                [14, 1, 80, "Home", 14, "Home", 36, "VK_HOME", "", ""],
                [11, 1, 81, "PageUp", 11, "PageUp", 33, "VK_PRIOR", "", ""],
                [20, 1, 82, "Delete", 20, "Delete", 46, "VK_DELETE", "", ""],
                [13, 1, 83, "End", 13, "End", 35, "VK_END", "", ""],
                [12, 1, 84, "PageDown", 12, "PageDown", 34, "VK_NEXT", "", ""],
                [17, 1, 85, "ArrowRight", 17, "RightArrow", 39, "VK_RIGHT", "Right", ""],
                [15, 1, 86, "ArrowLeft", 15, "LeftArrow", 37, "VK_LEFT", "Left", ""],
                [18, 1, 87, "ArrowDown", 18, "DownArrow", 40, "VK_DOWN", "Down", ""],
                [16, 1, 88, "ArrowUp", 16, "UpArrow", 38, "VK_UP", "Up", ""],
                [78, 1, 89, "NumLock", 78, "NumLock", 144, "VK_NUMLOCK", "", ""],
                [108, 1, 90, "NumpadDivide", 108, "NumPad_Divide", 111, "VK_DIVIDE", "", ""],
                [103, 1, 91, "NumpadMultiply", 103, "NumPad_Multiply", 106, "VK_MULTIPLY", "", ""],
                [106, 1, 92, "NumpadSubtract", 106, "NumPad_Subtract", 109, "VK_SUBTRACT", "", ""],
                [104, 1, 93, "NumpadAdd", 104, "NumPad_Add", 107, "VK_ADD", "", ""],
                [3, 1, 94, "NumpadEnter", 3, "", 0, "", "", ""],
                [94, 1, 95, "Numpad1", 94, "NumPad1", 97, "VK_NUMPAD1", "", ""],
                [95, 1, 96, "Numpad2", 95, "NumPad2", 98, "VK_NUMPAD2", "", ""],
                [96, 1, 97, "Numpad3", 96, "NumPad3", 99, "VK_NUMPAD3", "", ""],
                [97, 1, 98, "Numpad4", 97, "NumPad4", 100, "VK_NUMPAD4", "", ""],
                [98, 1, 99, "Numpad5", 98, "NumPad5", 101, "VK_NUMPAD5", "", ""],
                [99, 1, 100, "Numpad6", 99, "NumPad6", 102, "VK_NUMPAD6", "", ""],
                [100, 1, 101, "Numpad7", 100, "NumPad7", 103, "VK_NUMPAD7", "", ""],
                [101, 1, 102, "Numpad8", 101, "NumPad8", 104, "VK_NUMPAD8", "", ""],
                [102, 1, 103, "Numpad9", 102, "NumPad9", 105, "VK_NUMPAD9", "", ""],
                [93, 1, 104, "Numpad0", 93, "NumPad0", 96, "VK_NUMPAD0", "", ""],
                [107, 1, 105, "NumpadDecimal", 107, "NumPad_Decimal", 110, "VK_DECIMAL", "", ""],
                [92, 0, 106, "IntlBackslash", 92, "OEM_102", 226, "VK_OEM_102", "", ""],
                [58, 1, 107, "ContextMenu", 58, "ContextMenu", 93, "", "", ""],
                [0, 1, 108, "Power", 0, "", 0, "", "", ""],
                [0, 1, 109, "NumpadEqual", 0, "", 0, "", "", ""],
                [71, 1, 110, "F13", 71, "F13", 124, "VK_F13", "", ""],
                [72, 1, 111, "F14", 72, "F14", 125, "VK_F14", "", ""],
                [73, 1, 112, "F15", 73, "F15", 126, "VK_F15", "", ""],
                [74, 1, 113, "F16", 74, "F16", 127, "VK_F16", "", ""],
                [75, 1, 114, "F17", 75, "F17", 128, "VK_F17", "", ""],
                [76, 1, 115, "F18", 76, "F18", 129, "VK_F18", "", ""],
                [77, 1, 116, "F19", 77, "F19", 130, "VK_F19", "", ""],
                [0, 1, 117, "F20", 0, "", 0, "VK_F20", "", ""],
                [0, 1, 118, "F21", 0, "", 0, "VK_F21", "", ""],
                [0, 1, 119, "F22", 0, "", 0, "VK_F22", "", ""],
                [0, 1, 120, "F23", 0, "", 0, "VK_F23", "", ""],
                [0, 1, 121, "F24", 0, "", 0, "VK_F24", "", ""],
                [0, 1, 122, "打开", 0, "", 0, "", "", ""],
                [0, 1, 123, "Help", 0, "", 0, "", "", ""],
                [0, 1, 124, "Select", 0, "", 0, "", "", ""],
                [0, 1, 125, "Again", 0, "", 0, "", "", ""],
                [0, 1, 126, "Undo", 0, "", 0, "", "", ""],
                [0, 1, 127, "Cut", 0, "", 0, "", "", ""],
                [0, 1, 128, "Copy", 0, "", 0, "", "", ""],
                [0, 1, 129, "Paste", 0, "", 0, "", "", ""],
                [0, 1, 130, "Find", 0, "", 0, "", "", ""],
                [0, 1, 131, "AudioVolumeMute", 112, "AudioVolumeMute", 173, "VK_VOLUME_MUTE", "", ""],
                [0, 1, 132, "AudioVolumeUp", 113, "AudioVolumeUp", 175, "VK_VOLUME_UP", "", ""],
                [0, 1, 133, "AudioVolumeDown", 114, "AudioVolumeDown", 174, "VK_VOLUME_DOWN", "", ""],
                [105, 1, 134, "NumpadComma", 105, "NumPad_Separator", 108, "VK_SEPARATOR", "", ""],
                [110, 0, 135, "IntlRo", 110, "ABNT_C1", 193, "VK_ABNT_C1", "", ""],
                [0, 1, 136, "KanaMode", 0, "", 0, "", "", ""],
                [0, 0, 137, "IntlYen", 0, "", 0, "", "", ""],
                [0, 1, 138, "Convert", 0, "", 0, "", "", ""],
                [0, 1, 139, "NonConvert", 0, "", 0, "", "", ""],
                [0, 1, 140, "Lang1", 0, "", 0, "", "", ""],
                [0, 1, 141, "Lang2", 0, "", 0, "", "", ""],
                [0, 1, 142, "Lang3", 0, "", 0, "", "", ""],
                [0, 1, 143, "Lang4", 0, "", 0, "", "", ""],
                [0, 1, 144, "Lang5", 0, "", 0, "", "", ""],
                [0, 1, 145, "Abort", 0, "", 0, "", "", ""],
                [0, 1, 146, "Props", 0, "", 0, "", "", ""],
                [0, 1, 147, "NumpadParenLeft", 0, "", 0, "", "", ""],
                [0, 1, 148, "NumpadParenRight", 0, "", 0, "", "", ""],
                [0, 1, 149, "NumpadBackspace", 0, "", 0, "", "", ""],
                [0, 1, 150, "NumpadMemoryStore", 0, "", 0, "", "", ""],
                [0, 1, 151, "NumpadMemoryRecall", 0, "", 0, "", "", ""],
                [0, 1, 152, "NumpadMemoryClear", 0, "", 0, "", "", ""],
                [0, 1, 153, "NumpadMemoryAdd", 0, "", 0, "", "", ""],
                [0, 1, 154, "NumpadMemorySubtract", 0, "", 0, "", "", ""],
                [0, 1, 155, "NumpadClear", 0, "", 0, "", "", ""],
                [0, 1, 156, "NumpadClearEntry", 0, "", 0, "", "", ""],
                [5, 1, 0, "", 5, "Ctrl", 17, "VK_CONTROL", "", ""],
                [4, 1, 0, "", 4, "Shift", 16, "VK_SHIFT", "", ""],
                [6, 1, 0, "", 6, "Alt", 18, "VK_MENU", "", ""],
                [57, 1, 0, "", 57, "Meta", 0, "VK_COMMAND", "", ""],
                [5, 1, 157, "ControlLeft", 5, "", 0, "VK_LCONTROL", "", ""],
                [4, 1, 158, "ShiftLeft", 4, "", 0, "VK_LSHIFT", "", ""],
                [6, 1, 159, "AltLeft", 6, "", 0, "VK_LMENU", "", ""],
                [57, 1, 160, "MetaLeft", 57, "", 0, "VK_LWIN", "", ""],
                [5, 1, 161, "ControlRight", 5, "", 0, "VK_RCONTROL", "", ""],
                [4, 1, 162, "ShiftRight", 4, "", 0, "VK_RSHIFT", "", ""],
                [6, 1, 163, "AltRight", 6, "", 0, "VK_RMENU", "", ""],
                [57, 1, 164, "MetaRight", 57, "", 0, "VK_RWIN", "", ""],
                [0, 1, 165, "BrightnessUp", 0, "", 0, "", "", ""],
                [0, 1, 166, "BrightnessDown", 0, "", 0, "", "", ""],
                [0, 1, 167, "MediaPlay", 0, "", 0, "", "", ""],
                [0, 1, 168, "MediaRecord", 0, "", 0, "", "", ""],
                [0, 1, 169, "MediaFastForward", 0, "", 0, "", "", ""],
                [0, 1, 170, "MediaRewind", 0, "", 0, "", "", ""],
                [114, 1, 171, "MediaTrackNext", 119, "MediaTrackNext", 176, "VK_MEDIA_NEXT_TRACK", "", ""],
                [115, 1, 172, "MediaTrackPrevious", 120, "MediaTrackPrevious", 177, "VK_MEDIA_PREV_TRACK", "", ""],
                [116, 1, 173, "MediaStop", 121, "MediaStop", 178, "VK_MEDIA_STOP", "", ""],
                [0, 1, 174, "Eject", 0, "", 0, "", "", ""],
                [117, 1, 175, "MediaPlayPause", 122, "MediaPlayPause", 179, "VK_MEDIA_PLAY_PAUSE", "", ""],
                [0, 1, 176, "MediaSelect", 123, "LaunchMediaPlayer", 181, "VK_MEDIA_LAUNCH_MEDIA_SELECT", "", ""],
                [0, 1, 177, "LaunchMail", 124, "LaunchMail", 180, "VK_MEDIA_LAUNCH_MAIL", "", ""],
                [0, 1, 178, "LaunchApp2", 125, "LaunchApp2", 183, "VK_MEDIA_LAUNCH_APP2", "", ""],
                [0, 1, 179, "LaunchApp1", 0, "", 0, "VK_MEDIA_LAUNCH_APP1", "", ""],
                [0, 1, 180, "SelectTask", 0, "", 0, "", "", ""],
                [0, 1, 181, "LaunchScreenSaver", 0, "", 0, "", "", ""],
                [0, 1, 182, "BrowserSearch", 115, "BrowserSearch", 170, "VK_BROWSER_SEARCH", "", ""],
                [0, 1, 183, "BrowserHome", 116, "BrowserHome", 172, "VK_BROWSER_HOME", "", ""],
                [112, 1, 184, "BrowserBack", 117, "BrowserBack", 166, "VK_BROWSER_BACK", "", ""],
                [113, 1, 185, "BrowserForward", 118, "BrowserForward", 167, "VK_BROWSER_FORWARD", "", ""],
                [0, 1, 186, "BrowserStop", 0, "", 0, "VK_BROWSER_STOP", "", ""],
                [0, 1, 187, "BrowserRefresh", 0, "", 0, "VK_BROWSER_REFRESH", "", ""],
                [0, 1, 188, "BrowserFavorites", 0, "", 0, "VK_BROWSER_FAVORITES", "", ""],
                [0, 1, 189, "ZoomToggle", 0, "", 0, "", "", ""],
                [0, 1, 190, "MailReply", 0, "", 0, "", "", ""],
                [0, 1, 191, "MailForward", 0, "", 0, "", "", ""],
                [0, 1, 192, "MailSend", 0, "", 0, "", "", ""],
                [109, 1, 0, "", 109, "KeyInComposition", 229, "", "", ""],
                [111, 1, 0, "", 111, "ABNT_C2", 194, "VK_ABNT_C2", "", ""],
                [91, 1, 0, "", 91, "OEM_8", 223, "VK_OEM_8", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_CLEAR", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_KANA", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_HANGUL", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_JUNJA", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_FINAL", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_HANJA", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_KANJI", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_CONVERT", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_NONCONVERT", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_ACCEPT", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_MODECHANGE", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_SELECT", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_PRINT", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_EXECUTE", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_SNAPSHOT", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_HELP", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_APPS", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_PROCESSKEY", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_PACKET", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_DBE_SBCSCHAR", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_DBE_DBCSCHAR", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_ATTN", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_CRSEL", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_EXSEL", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_EREOF", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_PLAY", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_ZOOM", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_NONAME", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_PA1", "", ""],
                [0, 1, 0, "", 0, "", 0, "VK_OEM_CLEAR", "", ""]
            ]) {
            const [, n, g, f, m, v, b, _, w, y] = i;
            if (t[g] || (t[g] = !0, d[g] = f, c[f] = g, h[f.toLowerCase()] = g, n && 0 !== (u[g] = m) && 3 !== m && 5 !== m && 4 !== m && 6 !== m && 57 !== m && (p[m] = g)), !e[m]) {
                if (e[m] = !0, !v) throw new Error(`String representation missing for key code ${m} around scan code ${f}`);
                r.define(m, v), o.define(m, w || v), s.define(m, y || w || v)
            }
            b && (a[b] = m), _ && (l[_] = m)
        }
        p[3] = 46
    }(), (t = g = g || {}).toString = function(e) {
        return r.keyCodeToStr(e)
    }, t.fromString = function(e) {
        return r.strToKeyCode(e)
    }, t.toUserSettingsUS = function(e) {
        return o.keyCodeToStr(e)
    }, t.toUserSettingsGeneral = function(e) {
        return s.keyCodeToStr(e)
    }, t.fromUserSettings = function(e) {
        return o.strToKeyCode(e) || s.strToKeyCode(e)
    }, t.toElectronAccelerator = function(e) {
        if (93 <= e && e <= 108) return null;
        switch (e) {
            case 16:
                return "Up";
            case 18:
                return "Down";
            case 15:
                return "Left";
            case 17:
                return "Right"
        }
        return r.keyCodeToStr(e)
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "a", (function() {
        return r
    })), i.d(t, "c", (function() {
        return o
    })), i.d(t, "d", (function() {
        return a
    }));
    const n = "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",
        r = function(e = "") {
            let t = "(-?\\d*\\.\\d\\w*)|([^";
            for (const i of n) 0 <= e.indexOf(i) || (t += "\\" + i);
            return t += "\\s]+)", new RegExp(t, "g")
        }();

    function o(e) {
        let t = r;
        if (e && e instanceof RegExp)
            if (e.global) t = e;
            else {
                let i = "g";
                e.ignoreCase && (i += "i"), e.multiline && (i += "m"), e.unicode && (i += "u"), t = new RegExp(e.source, i)
            } return t.lastIndex = 0, t
    }
    const s = {
        maxLen: 1e3,
        windowSize: 15,
        timeBudget: 150
    };

    function a(e, t, i, n, r = s) {
        if (i.length > r.maxLen) {
            let o = e - r.maxLen / 2;
            return o < 0 ? o = 0 : n += o, a(e, t, i = i.substring(o, e + r.maxLen / 2), n, r)
        }
        var o = Date.now(),
            l = e - 1 - n;
        let d = -1,
            c = null;
        for (let e = 1; !(Date.now() - o >= r.timeBudget); e++) {
            var h = l - r.windowSize * e;
            t.lastIndex = Math.max(0, h);
            var u = function(e, t, i, n) {
                for (var r; r = e.exec(t);) {
                    var o = r.index || 0;
                    if (o <= i && e.lastIndex >= i) return r;
                    if (0 < n && n < o) return null
                }
                return null
            }(t, i, l, d);
            if (!u && c) break;
            if (c = u, h <= 0) break;
            d = h
        }
        return c ? (n = {
            word: c[0],
            startColumn: n + 1 + c.index,
            endColumn: n + 1 + c.index + c[0].length
        }, t.lastIndex = 0, n) : null
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "a", (function() {
        return r
    })), i = i(26);
    const n = Object(i.c)("contextViewService"),
        r = Object(i.c)("contextMenuService")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return o
    })), i.d(t, "c", (function() {
        return n
    })), i.d(t, "a", (function() {
        return l
    })), i.d(t, "d", (function() {
        return d
    }));
    var n, r = i(2);
    t = i(4), i = i(26);
    const o = Object(i.c)("logService");
    (i = n = n || {})[i.Trace = 0] = "Trace", i[i.Debug = 1] = "Debug", i[i.Info = 2] = "Info", i[i.Warning = 3] = "Warning", i[i.Error = 4] = "错误", i[i.Critical = 5] = "Critical", i[i.Off = 6] = "Off";
    const s = n.Info;
    class a extends t.a {
        constructor() {
            super(...arguments), this.level = s, this._onDidChangeLogLevel = this._register(new r.b)
        }
        setLevel(e) {
            this.level !== e && (this.level = e, this._onDidChangeLogLevel.fire(this.level))
        }
        getLevel() {
            return this.level
        }
    }
    class l extends a {
        constructor(e = s) {
            super(), this.setLevel(e)
        }
        trace(e, ...t) {
            this.getLevel() <= n.Trace && console.log("%cTRACE", "color: #888", e, ...t)
        }
        debug(e, ...t) {
            this.getLevel() <= n.Debug && console.log("%cDEBUG", "background: #eee; color: #888", e, ...t)
        }
        info(e, ...t) {
            this.getLevel() <= n.Info && console.log("%c INFO", "color: #33f", e, ...t)
        }
        error(e, ...t) {
            this.getLevel() <= n.Error && console.log("%c  ERR", "color: #f33", e, ...t)
        }
        dispose() {}
    }
    class d extends t.a {
        constructor(e) {
            super(), this.logger = e, this._register(e)
        }
        getLevel() {
            return this.logger.getLevel()
        }
        trace(e, ...t) {
            this.logger.trace(e, ...t)
        }
        debug(e, ...t) {
            this.logger.debug(e, ...t)
        }
        info(e, ...t) {
            this.logger.info(e, ...t)
        }
        error(e, ...t) {
            this.logger.error(e, ...t)
        }
    }
}, function(e, t, i) {
    "use strict";

    function n(e, t) {
        var i = e.getCount(),
            n = (t = e.findTokenIndexAtOffset(t), e.getLanguageId(t));
        let o = t;
        for (; o + 1 < i && e.getLanguageId(o + 1) === n;) o++;
        let s = t;
        for (; 0 < s && e.getLanguageId(s - 1) === n;) s--;
        return new r(e, n, s, o + 1, e.getStartOffset(s), e.getEndOffset(o))
    }
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return o
    }));
    class r {
        constructor(e, t, i, n, r, o) {
            this._scopedLineTokensBrand = void 0, this._actual = e, this.languageId = t, this._firstTokenIndex = i, this._lastTokenIndex = n, this.firstCharOffset = r, this._lastCharOffset = o
        }
        getLineContent() {
            return this._actual.getLineContent().substring(this.firstCharOffset, this._lastCharOffset)
        }
        getActualLineContentBefore(e) {
            return this._actual.getLineContent().substring(0, this.firstCharOffset + e)
        }
        getTokenCount() {
            return this._lastTokenIndex - this._firstTokenIndex
        }
        findTokenIndexAtOffset(e) {
            return this._actual.findTokenIndexAtOffset(e + this.firstCharOffset) - this._firstTokenIndex
        }
        getStandardTokenType(e) {
            return this._actual.getStandardTokenType(e + this._firstTokenIndex)
        }
    }

    function o(e) {
        return 0 != (7 & e)
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i = i(26);
    const n = Object(i.c)("modeService")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "d", (function() {
        return u
    })), i.d(t, "b", (function() {
        return p
    })), i.d(t, "c", (function() {
        return g
    }));
    var n, r = i(171),
        o = i(54),
        s = i(62),
        a = i(140),
        l = i(6);
    (i = n = n || {}).text = "text/plain", i.binary = "application/octet-stream", i.unknown = "application/unknown", i.markdown = "text/markdown", i.latex = "text/latex";
    let d = [],
        c = [],
        h = [];

    function u(e, t = !1) {
        const i = {
            id: (e = e).id,
            mime: e.mime,
            filename: e.filename,
            extension: e.extension,
            filepattern: e.filepattern,
            firstline: e.firstline,
            userConfigured: e.userConfigured,
            filenameLowercase: e.filename ? e.filename.toLowerCase() : void 0,
            extensionLowercase: e.extension ? e.extension.toLowerCase() : void 0,
            filepatternLowercase: e.filepattern ? Object(r.b)(e.filepattern.toLowerCase()) : void 0,
            filepatternOnPath: !!e.filepattern && 0 <= e.filepattern.indexOf(s.e.sep)
        };
        d.push(i), (i.userConfigured ? h : c).push(i), t && !i.userConfigured && d.forEach(e => {
            e.mime === i.mime || e.userConfigured || (i.extension && e.extension === i.extension && console.warn(`Overwriting extension <<${i.extension}>> to now point to mime <<${i.mime}>>`), i.filename && e.filename === i.filename && console.warn(`Overwriting filename <<${i.filename}>> to now point to mime <<${i.mime}>>`), i.filepattern && e.filepattern === i.filepattern && console.warn(`Overwriting filepattern <<${i.filepattern}>> to now point to mime <<${i.mime}>>`), i.firstline && e.firstline === i.firstline && console.warn(`Overwriting firstline <<${i.firstline}>> to now point to mime <<${i.mime}>>`))
        })
    }

    function p(e) {
        e ? d = d.filter(e => !e.userConfigured) : (d = [], c = []), h = []
    }

    function g(e, t) {
        let i;
        if (e) switch (e.scheme) {
            case o.c.file:
                i = e.fsPath;
                break;
            case o.c.data:
                i = a.a.parseMetaData(e).get(a.a.META_DATA_LABEL);
                break;
            default:
                i = e.path
        }
        if (!i) return [n.unknown];
        i = i.toLowerCase();
        var r = Object(s.a)(i),
            u = f(i, r, h);
        return u ? [u, n.text] : (r = f(i, r, c)) ? [r, n.text] : t && (t = function(e) {
            if (Object(l.S)(e) && (e = e.substr(1)), 0 < e.length)
                for (let n = d.length - 1; 0 <= n; n--) {
                    var t = d[n];
                    if (t.firstline) {
                        var i = e.match(t.firstline);
                        if (i && 0 < i.length) return t.mime
                    }
                }
            return null
        }(t)) ? [t, n.text] : [n.unknown]
    }

    function f(e, t, i) {
        var n;
        let r = null,
            o = null,
            s = null;
        for (let d = i.length - 1; 0 <= d; d--) {
            var a, l = i[d];
            if (t === l.filenameLowercase) {
                r = l;
                break
            }
            l.filepattern && (!o || l.filepattern.length > o.filepattern.length) && (a = l.filepatternOnPath ? e : t, null !== (n = l.filepatternLowercase) && void 0 !== n && n.call(l, a) && (o = l)), l.extension && (!s || l.extension.length > s.extension.length) && t.endsWith(l.extensionLowercase) && (s = l)
        }
        return r ? r.mime : o ? o.mime : s ? s.mime : null
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "f", (function() {
        return l
    })), i.d(t, "b", (function() {
        return h
    })), i.d(t, "c", (function() {
        return u
    })), i.d(t, "a", (function() {
        return g
    })), i.d(t, "e", (function() {
        return v
    })), i.d(t, "d", (function() {
        return b
    }));
    var n = i(28),
        r = i(85),
        o = i(8),
        s = i(5),
        a = i(15);

    function l(e) {
        let t = 0,
            i = 0,
            n = 0,
            r = 0;
        for (let s = 0, a = e.length; s < a; s++) {
            var o = e.charCodeAt(s);
            13 === o ? (0 === t && (i = s), t++, s + 1 < a && 10 === e.charCodeAt(s + 1) ? (r |= 2, s++) : r |= 3, n = s + 1) : 10 === o && (r |= 1, 0 === t && (i = s), t++, n = s + 1)
        }
        return 0 === t && (i = e.length), [t, i, e.length - n, r]
    }

    function d(e) {
        return (e << 0 | 16384 | 2 << 23) >>> 0
    }
    const c = new Uint32Array(0).buffer;
    class h {
        constructor() {
            this.tokens = []
        }
        add(e, t) {
            if (0 < this.tokens.length) {
                const i = this.tokens[this.tokens.length - 1];
                if (i.startLineNumber + i.tokens.length - 1 + 1 === e) return void i.tokens.push(t)
            }
            this.tokens.push(new f(e, [t]))
        }
    }
    class u {
        constructor(e) {
            this._tokens = e, this._tokenCount = e.length / 4
        }
        toString(e) {
            let t = [];
            for (let i = 0; i < this._tokenCount; i++) t.push(`(${this._getDeltaLine(i)+e},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);
            return `[${t.join(",")}]`
        }
        getMaxDeltaLine() {
            var e = this._getTokenCount();
            return 0 === e ? -1 : this._getDeltaLine(e - 1)
        }
        getRange() {
            if (0 === (i = this._getTokenCount())) return null;
            var e = this._getStartCharacter(0),
                t = this._getDeltaLine(i - 1),
                i = this._getEndCharacter(i - 1);
            return new s.a(0, e + 1, t, i + 1)
        }
        _getTokenCount() {
            return this._tokenCount
        }
        _getDeltaLine(e) {
            return this._tokens[4 * e]
        }
        _getStartCharacter(e) {
            return this._tokens[4 * e + 1]
        }
        _getEndCharacter(e) {
            return this._tokens[4 * e + 2]
        }
        isEmpty() {
            return 0 === this._getTokenCount()
        }
        getLineTokens(e) {
            let t = 0,
                i = this._getTokenCount() - 1;
            for (; t < i;) {
                var n = t + Math.floor((i - t) / 2),
                    r = this._getDeltaLine(n);
                if (r < e) t = n + 1;
                else {
                    if (!(e < r)) {
                        let r = n;
                        for (; r > t && this._getDeltaLine(r - 1) === e;) r--;
                        let o = n;
                        for (; o < i && this._getDeltaLine(o + 1) === e;) o++;
                        return new p(this._tokens.subarray(4 * r, 4 * o + 4))
                    }
                    i = n - 1
                }
            }
            return this._getDeltaLine(t) === e ? new p(this._tokens.subarray(4 * t, 4 * t + 4)) : null
        }
        clear() {
            this._tokenCount = 0
        }
        removeTokens(e, t, i, n) {
            const r = this._tokens;
            var o = this._tokenCount;
            let s = 0,
                a = !1,
                l = 0;
            for (let g = 0; g < o; g++) {
                var d = 4 * g,
                    c = r[d],
                    h = r[1 + d],
                    u = r[2 + d],
                    p = r[3 + d];
                (e < c || c === e && t <= u) && (c < i || c === i && h <= n) ? a = !0: (0 === s && (l = c), a && (r[d = 4 * s] = c - l, r[1 + d] = h, r[2 + d] = u, r[3 + d] = p), s++)
            }
            return this._tokenCount = s, l
        }
        split(e, t, i, n) {
            var r = this._tokens,
                o = this._tokenCount,
                s = [],
                a = [];
            let l = s,
                d = 0,
                c = 0;
            for (let s = 0; s < o; s++) {
                var h = r[f = 4 * s],
                    p = r[1 + f],
                    g = r[2 + f],
                    f = r[3 + f];
                if (e < h || h === e && t <= g) {
                    if (h < i || h === i && p <= n) continue;
                    l !== a && (l = a, d = 0, c = h)
                }
                l[d++] = h - c, l[d++] = p, l[d++] = g, l[d++] = f
            }
            return [new u(new Uint32Array(s)), new u(new Uint32Array(a)), c]
        }
        acceptDeleteRange(e, t, i, n, r) {
            const o = this._tokens;
            var s = this._tokenCount,
                a = n - t;
            let l = 0,
                d = !1;
            for (let u = 0; u < s; u++) {
                var c = 4 * u;
                let p = o[c],
                    g = o[1 + c],
                    f = o[2 + c];
                var h = o[3 + c];
                if (p < t || p === t && f <= i) l++;
                else {
                    if (p === t && g < i) p === n && f > r ? f -= r - i : f = i;
                    else if (p === t && g === i) {
                        if (!(p === n && f > r)) {
                            d = !0;
                            continue
                        }
                        f -= r - i
                    } else if (p < n || p === n && g < r) {
                        if (!(p === n && f > r)) {
                            d = !0;
                            continue
                        }
                        g = p === t ? i : 0, f = g + (f - r)
                    } else if (p > n) {
                        if (0 == a && !d) {
                            l = s;
                            break
                        }
                        p -= a
                    } else {
                        if (!(p === n && g >= r)) throw new Error("Not possible!");
                        e && 0 === p && (g += e, f += e), p -= a, g -= r - i, f -= r - i
                    }
                    o[c = 4 * l] = p, o[1 + c] = g, o[2 + c] = f, o[3 + c] = h, l++
                }
            }
            this._tokenCount = l
        }
        acceptInsertText(e, t, i, n, r, o) {
            var s = 0 === i && 1 === n && (48 <= o && o <= 57 || 65 <= o && o <= 90 || 97 <= o && o <= 122);
            const a = this._tokens;
            var l = this._tokenCount;
            for (let o = 0; o < l; o++) {
                var d, c = 4 * o;
                let l = a[c],
                    h = a[1 + c],
                    u = a[2 + c];
                if (!(l < e || l === e && u < t)) {
                    if (l === e && u === t) {
                        if (!s) continue;
                        u += 1
                    } else if (l === e && h < t && t < u) 0 === i ? u += n : u = t;
                    else {
                        if (l === e && h === t && s) continue;
                        l === e ? (l += i, 0 === i ? (h += n, u += n) : (d = u - h, h = r + (h - t), u = h + d)) : l += i
                    }
                    a[c] = l, a[1 + c] = h, a[2 + c] = u
                }
            }
        }
    }
    class p {
        constructor(e) {
            this._tokens = e
        }
        getCount() {
            return this._tokens.length / 4
        }
        getStartCharacter(e) {
            return this._tokens[4 * e + 1]
        }
        getEndCharacter(e) {
            return this._tokens[4 * e + 2]
        }
        getMetadata(e) {
            return this._tokens[4 * e + 3]
        }
    }
    class g {
        constructor(e, t) {
            this.startLineNumber = e, this.tokens = t, this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine()
        }
        toString() {
            return this.tokens.toString(this.startLineNumber)
        }
        _updateEndLineNumber() {
            this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine()
        }
        isEmpty() {
            return this.tokens.isEmpty()
        }
        getLineTokens(e) {
            return this.startLineNumber <= e && e <= this.endLineNumber ? this.tokens.getLineTokens(e - this.startLineNumber) : null
        }
        getRange() {
            var e = this.tokens.getRange();
            return e && new s.a(this.startLineNumber + e.startLineNumber, e.startColumn, this.startLineNumber + e.endLineNumber, e.endColumn)
        }
        removeTokens(e) {
            var t = e.startLineNumber - this.startLineNumber,
                i = e.endLineNumber - this.startLineNumber;
            this.startLineNumber += this.tokens.removeTokens(t, e.startColumn - 1, i, e.endColumn - 1), this._updateEndLineNumber()
        }
        split(e) {
            var t = e.startLineNumber - this.startLineNumber,
                i = e.endLineNumber - this.startLineNumber,
                [t, i, e] = this.tokens.split(t, e.startColumn - 1, i, e.endColumn - 1);
            return [new g(this.startLineNumber, t), new g(this.startLineNumber + e, i)]
        }
        applyEdit(e, t) {
            var [i, n, r] = l(t);
            this.acceptEdit(e, i, n, r, 0 < t.length ? t.charCodeAt(0) : 0)
        }
        acceptEdit(e, t, i, n, r) {
            this._acceptDeleteRange(e), this._acceptInsertText(new o.a(e.startLineNumber, e.startColumn), t, i, n, r), this._updateEndLineNumber()
        }
        _acceptDeleteRange(e) {
            if (e.startLineNumber !== e.endLineNumber || e.startColumn !== e.endColumn) {
                var t = e.startLineNumber - this.startLineNumber,
                    i = e.endLineNumber - this.startLineNumber;
                if (i < 0) this.startLineNumber -= i - t;
                else {
                    var n = this.tokens.getMaxDeltaLine();
                    if (!(n + 1 <= t)) return t < 0 && n + 1 <= i ? (this.startLineNumber = 0, void this.tokens.clear()) : void(t < 0 ? (this.startLineNumber -= -t, this.tokens.acceptDeleteRange(e.startColumn - 1, 0, 0, i, e.endColumn - 1)) : this.tokens.acceptDeleteRange(0, t, e.startColumn - 1, i, e.endColumn - 1))
                }
            }
        }
        _acceptInsertText(e, t, i, n, r) {
            var o;
            0 === t && 0 === i || ((o = e.lineNumber - this.startLineNumber) < 0 ? this.startLineNumber += t : this.tokens.getMaxDeltaLine() + 1 <= o || this.tokens.acceptInsertText(o, e.column - 1, t, i, n, r))
        }
    }
    class f {
        constructor(e, t) {
            this.startLineNumber = e, this.tokens = t
        }
    }

    function m(e) {
        return e instanceof Uint32Array ? e : new Uint32Array(e)
    }
    class v {
        constructor(e) {
            this._pieces = [], this._isComplete = !1, this._languageIdCodec = e
        }
        flush() {
            this._pieces = [], this._isComplete = !1
        }
        isEmpty() {
            return 0 === this._pieces.length
        }
        set(e, t) {
            this._pieces = e || [], this._isComplete = t
        }
        setPartial(e, t) {
            let i = e;
            if (0 < t.length) {
                var r = t[0].getRange(),
                    o = t[t.length - 1].getRange();
                if (!r || !o) return e;
                i = e.plusRange(r).plusRange(o)
            }
            let s = null;
            for (let e = 0, t = this._pieces.length; e < t; e++) {
                const n = this._pieces[e];
                if (!(n.endLineNumber < i.startLineNumber)) {
                    if (n.startLineNumber > i.endLineNumber) {
                        s = s || {
                            index: e
                        };
                        break
                    }
                    if (n.removeTokens(i), n.isEmpty()) this._pieces.splice(e, 1), e--, t--;
                    else if (!(n.endLineNumber < i.startLineNumber))
                        if (n.startLineNumber > i.endLineNumber) s = s || {
                            index: e
                        };
                        else {
                            const [r, o] = n.split(i);
                            r.isEmpty() ? s = s || {
                                index: e
                            } : o.isEmpty() || (this._pieces.splice(e, 1, r, o), e++, t++, s = s || {
                                index: e
                            })
                        }
                }
            }
            return s = s || {
                index: this._pieces.length
            }, 0 < t.length && (this._pieces = n.b(this._pieces, s.index, t)), i
        }
        isComplete() {
            return this._isComplete
        }
        addSemanticTokens(e, t) {
            const i = this._pieces;
            if (0 === i.length) return t;
            const n = i[v._findFirstPieceWithLine(i, e)].getLineTokens(e);
            if (!n) return t;
            var o = t.getCount(),
                s = n.getCount();
            let a = 0,
                l = [],
                d = 0,
                c = 0;
            var h = (e, t) => {
                e !== c && (c = e, l[d++] = e, l[d++] = t)
            };
            for (let e = 0; e < s; e++) {
                for (var u, p = n.getStartCharacter(e), g = n.getEndCharacter(e), f = n.getMetadata(e), m = ((1 & f ? 2048 : 0) | (2 & f ? 4096 : 0) | (4 & f ? 8192 : 0) | (8 & f ? 8372224 : 0) | (16 & f ? 4286578688 : 0)) >>> 0, b = ~m >>> 0; a < o && t.getEndOffset(a) <= p;) h(t.getEndOffset(a), t.getMetadata(a)), a++;
                for (a < o && t.getStartOffset(a) < p && h(p, t.getMetadata(a)); a < o && t.getEndOffset(a) < g;) h(t.getEndOffset(a), t.getMetadata(a) & b | f & m), a++;
                a < o ? (h(g, t.getMetadata(a) & b | f & m), t.getEndOffset(a) === g && a++) : (u = Math.min(Math.max(0, a - 1), o - 1), h(g, t.getMetadata(u) & b | f & m))
            }
            for (; a < o;) h(t.getEndOffset(a), t.getMetadata(a)), a++;
            return new r.a(new Uint32Array(l), t.getLineContent(), this._languageIdCodec)
        }
        static _findFirstPieceWithLine(e, t) {
            let i = 0,
                n = e.length - 1;
            for (; i < n;) {
                let r = i + Math.floor((n - i) / 2);
                if (e[r].endLineNumber < t) i = r + 1;
                else {
                    if (!(e[r].startLineNumber > t)) {
                        for (; r > i && e[r - 1].startLineNumber <= t && t <= e[r - 1].endLineNumber;) r--;
                        return r
                    }
                    n = r - 1
                }
            }
            return i
        }
        acceptEdit(e, t, i, n, r) {
            for (const o of this._pieces) o.acceptEdit(e, t, i, n, r)
        }
    }
    class b {
        constructor(e) {
            this._lineTokens = [], this._len = 0, this._languageIdCodec = e
        }
        flush() {
            this._lineTokens = [], this._len = 0
        }
        getTokens(e, t, i) {
            let n = null;
            if (t < this._len && (n = this._lineTokens[t]), null !== n && n !== c) return new r.a(m(n), i, this._languageIdCodec);
            const o = new Uint32Array(2);
            return o[0] = i.length, o[1] = d(this._languageIdCodec.encodeLanguageId(e)), new r.a(o, i, this._languageIdCodec)
        }
        static _massageTokens(e, t, i) {
            const n = i ? m(i) : null;
            if (0 === t) {
                let t = !1;
                if (n && 1 < n.length && (t = a.z.getLanguageId(n[1]) !== e), !t) return c
            }
            if (n && 0 !== n.length) return n[n.length - 2] = t, 0 === n.byteOffset && n.byteLength === n.buffer.byteLength ? n.buffer : n; {
                const i = new Uint32Array(2);
                return i[0] = t, i[1] = d(e), i.buffer
            }
        }
        _ensureLine(e) {
            for (; e >= this._len;) this._lineTokens[this._len] = null, this._len++
        }
        _deleteLines(e, t) {
            0 !== t && (e + t > this._len && (t = this._len - e), this._lineTokens.splice(e, t), this._len -= t)
        }
        _insertLines(e, t) {
            if (0 !== t) {
                let i = [];
                for (let e = 0; e < t; e++) i[e] = null;
                this._lineTokens = n.b(this._lineTokens, e, i), this._len += t
            }
        }
        setTokens(e, t, i, n, r) {
            return i = b._massageTokens(this._languageIdCodec.encodeLanguageId(e), i, n), this._ensureLine(t), n = this._lineTokens[t], this._lineTokens[t] = i, !!r && !b._equals(n, i)
        }
        static _equals(e, t) {
            if (!e || !t) return !e && !t;
            var i = m(e),
                n = m(t);
            if (i.length !== n.length) return !1;
            for (let e = 0, t = i.length; e < t; e++)
                if (i[e] !== n[e]) return !1;
            return !0
        }
        acceptEdit(e, t, i) {
            this._acceptDeleteRange(e), this._acceptInsertText(new o.a(e.startLineNumber, e.startColumn), t, i)
        }
        _acceptDeleteRange(e) {
            var t = e.startLineNumber - 1;
            if (!(t >= this._len)) {
                if (e.startLineNumber === e.endLineNumber) return e.startColumn === e.endColumn ? void 0 : void(this._lineTokens[t] = b._delete(this._lineTokens[t], e.startColumn - 1, e.endColumn - 1));
                this._lineTokens[t] = b._deleteEnding(this._lineTokens[t], e.startColumn - 1);
                var i = e.endLineNumber - 1;
                let n = null;
                i < this._len && (n = b._deleteBeginning(this._lineTokens[i], e.endColumn - 1)), this._lineTokens[t] = b._append(this._lineTokens[t], n), this._deleteLines(e.startLineNumber, e.endLineNumber - e.startLineNumber)
            }
        }
        _acceptInsertText(e, t, i) {
            var n;
            0 === t && 0 === i || (n = e.lineNumber - 1) >= this._len || (0 !== t ? (this._lineTokens[n] = b._deleteEnding(this._lineTokens[n], e.column - 1), this._lineTokens[n] = b._insert(this._lineTokens[n], e.column - 1, i), this._insertLines(e.lineNumber, t)) : this._lineTokens[n] = b._insert(this._lineTokens[n], e.column - 1, i))
        }
        static _deleteBeginning(e, t) {
            return null === e || e === c ? e : b._delete(e, 0, t)
        }
        static _deleteEnding(e, t) {
            if (null === e || e === c) return e;
            var i = (i = m(e))[i.length - 2];
            return b._delete(e, t, i)
        }
        static _delete(e, t, i) {
            if (null === e || e === c || t === i) return e;
            const n = m(e);
            var o = n.length >>> 1;
            if (0 === t && n[n.length - 2] === i) return c;
            var s = r.a.findIndexInTokensArray(n, t),
                a = 0 < s ? n[s - 1 << 1] : 0;
            if (i < n[s << 1]) {
                const r = i - t;
                for (let e = s; e < o; e++) n[e << 1] -= r;
                return e
            }
            let l, d;
            d = a !== t ? (n[s << 1] = t, l = s + 1 << 1, t) : (l = s << 1, a);
            const h = i - t;
            for (let e = s + 1; e < o; e++) {
                var u = n[e << 1] - h;
                u > d && (n[l++] = u, n[l++] = n[1 + (e << 1)], d = u)
            }
            if (l === n.length) return e;
            let p = new Uint32Array(l);
            return p.set(n.subarray(0, l), 0), p.buffer
        }
        static _append(e, t) {
            if (t === c) return e;
            if (e === c) return t;
            if (null === e) return e;
            if (null === t) return null;
            e = m(e);
            var i = m(t),
                n = i.length >>> 1;
            let r = new Uint32Array(e.length + i.length);
            r.set(e, 0);
            let o = e.length;
            var s = e[e.length - 2];
            for (let e = 0; e < n; e++) r[o++] = i[e << 1] + s, r[o++] = i[1 + (e << 1)];
            return r.buffer
        }
        static _insert(e, t, i) {
            if (null === e || e === c) return e;
            const n = m(e);
            var o = n.length >>> 1;
            let s = r.a.findIndexInTokensArray(n, t);
            0 < s && n[s - 1 << 1] === t && s--;
            for (let e = s; e < o; e++) n[e << 1] += i;
            return e
        }
    }
}, function(e, t, i) {
    "use strict";

    function n(e, t, i) {
        return Math.min(Math.max(e, t), i)
    }
    i.d(t, "b", (function() {
        return n
    })), i.d(t, "a", (function() {
        return r
    }));
    class r {
        constructor() {
            this._n = 1, this._val = 0
        }
        update(e) {
            return this._val = this._val + (e - this._val) / this._n, this._n += 1, this
        }
        get value() {
            return this._val
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), i.d(t, "c", (function() {
        return o
    })), i.d(t, "d", (function() {
        return s
    })), i = i(26);
    const n = Object(i.c)("undoRedoService");
    class r {
        constructor(e, t) {
            this.resource = e, this.elements = t
        }
    }
    class o {
        constructor() {
            this.id = o._ID++, this.order = 1
        }
        nextOrder() {
            return 0 === this.id ? 0 : this.order++
        }
    }
    o._ID = 0, o.None = new o;
    class s {
        constructor() {
            this.id = s._ID++, this.order = 1
        }
        nextOrder() {
            return 0 === this.id ? 0 : this.order++
        }
    }
    s._ID = 0, s.None = new s
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return a
    })), i.d(t, "a", (function() {
        return g
    }));
    var n = i(6),
        r = i(110),
        o = i(5);
    class s {
        constructor(e, t, i, n, r, o) {
            this._richEditBracketBrand = void 0, this.languageId = e, this.index = t, this.open = i, this.close = n, this.forwardRegex = r, this.reversedRegex = o, this._openSet = s._toSet(this.open), this._closeSet = s._toSet(this.close)
        }
        isOpen(e) {
            return this._openSet.has(e)
        }
        isClose(e) {
            return this._closeSet.has(e)
        }
        static _toSet(e) {
            const t = new Set;
            for (const i of e) t.add(i);
            return t
        }
    }
    class a {
        constructor(e, t) {
            this._richEditBracketsBrand = void 0;
            const i = function(e) {
                const t = e.length;
                e = e.map(e => [e[0].toLowerCase(), e[1].toLowerCase()]);
                const i = [];
                for (let e = 0; e < t; e++) i[e] = e;
                var n, r;
                for (let n = 0; n < t; n++) {
                    var o = e[n];
                    for (let r = n + 1; r < t; r++)((e, t) => {
                        var [i, n] = e, [e, t] = t;
                        return i === e || i === t || n === e || n === t
                    })(o, e[r]) && ((e, n) => {
                        var r = Math.min(e, n),
                            o = Math.max(e, n);
                        for (let e = 0; e < t; e++) i[e] === o && (i[e] = r)
                    })(i[n], i[r])
                }
                const s = [];
                for (let o = 0; o < t; o++) {
                    let a = [],
                        l = [];
                    for (let s = 0; s < t; s++) i[s] === o && ([n, r] = e[s], a.push(n), l.push(r));
                    0 < a.length && s.push({
                        open: a,
                        close: l
                    })
                }
                return s
            }(t);
            this.brackets = i.map((t, n) => new s(e, n, t.open, t.close, function(e, t, i, n) {
                let r = [];
                r = r.concat(e), r = r.concat(t);
                for (let e = 0, t = r.length; e < t; e++) l(r[e], i, n, r);
                return r = c(r), r.sort(d), r.reverse(), u(r)
            }(t.open, t.close, i, n), function(e, t, i, n) {
                let r = [];
                r = r.concat(e), r = r.concat(t);
                for (let e = 0, t = r.length; e < t; e++) l(r[e], i, n, r);
                return r = c(r), r.sort(d), r.reverse(), u(r.map(p))
            }(t.open, t.close, i, n))), this.forwardRegex = function(e) {
                let t = [];
                for (const i of e) {
                    for (const e of i.open) t.push(e);
                    for (const e of i.close) t.push(e)
                }
                return t = c(t), u(t)
            }(this.brackets), this.reversedRegex = function(e) {
                let t = [];
                for (const i of e) {
                    for (const e of i.open) t.push(e);
                    for (const e of i.close) t.push(e)
                }
                return t = c(t), u(t.map(p))
            }(this.brackets), this.textIsBracket = {}, this.textIsOpenBracket = {}, this.maxBracketLength = 0;
            for (const e of this.brackets) {
                for (const t of e.open) this.textIsBracket[t] = e, this.textIsOpenBracket[t] = !0, this.maxBracketLength = Math.max(this.maxBracketLength, t.length);
                for (const t of e.close) this.textIsBracket[t] = e, this.textIsOpenBracket[t] = !1, this.maxBracketLength = Math.max(this.maxBracketLength, t.length)
            }
        }
    }

    function l(e, t, i, n) {
        for (let o = 0, s = t.length; o < s; o++)
            if (o !== i) {
                var r = t[o];
                for (const t of r.open) 0 <= t.indexOf(e) && n.push(t);
                for (const t of r.close) 0 <= t.indexOf(e) && n.push(t)
            }
    }

    function d(e, t) {
        return e.length - t.length
    }

    function c(e) {
        if (e.length <= 1) return e;
        const t = [],
            i = new Set;
        for (const n of e) i.has(n) || (t.push(n), i.add(n));
        return t
    }

    function h(e) {
        var t = /^[\w ]+$/.test(e);
        return e = n.t(e), t ? `\\b${e}\\b` : e
    }

    function u(e) {
        return e = `(${e.map(h).join(")|(")})`, n.q(e, !0)
    }
    const p = function() {
        let e = null,
            t = null;
        return function(i) {
            return e !== i && (e = i, t = function(e) {
                if (r.d) {
                    const t = new Uint16Array(e.length);
                    let i = 0;
                    for (let n = e.length - 1; 0 <= n; n--) t[i++] = e.charCodeAt(n);
                    return r.c().decode(t)
                } {
                    let t = [],
                        i = 0;
                    for (let n = e.length - 1; 0 <= n; n--) t[i++] = e.charAt(n);
                    return t.join("")
                }
            }(e)), t
        }
    }();
    class g {
        static _findPrevBracketInText(e, t, i, n) {
            return (e = i.match(e)) ? (i = i.length - (e.index || 0), e = e[0].length, i = n + i, new o.a(t, i - e + 1, t, i + 1)) : null
        }
        static findPrevBracketInRange(e, t, i, n, r) {
            return i = p(i).substring(i.length - r, i.length - n), this._findPrevBracketInText(e, t, i, n)
        }
        static findNextBracketInText(e, t, i, n) {
            return (i = i.match(e)) ? (e = i.index || 0, 0 === (i = i[0].length) ? null : (e = n + e, new o.a(t, e + 1, t, e + 1 + i))) : null
        }
        static findNextBracketInRange(e, t, i, n, r) {
            return r = i.substring(n, r), this.findNextBracketInText(e, t, r, n)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return C
    }));
    var n = i(0),
        r = i(37),
        o = i(17),
        s = i(91),
        a = i(20),
        l = i(67),
        d = i(14),
        c = i(8),
        h = i(5);
    class u {
        static columnSelect(e, t, i, n, r, o) {
            var s = Math.abs(r - i) + 1,
                a = r < i,
                l = o < n,
                u = n < o;
            let p = [];
            for (let r = 0; r < s; r++) {
                var g = i + (a ? -r : r),
                    f = d.a.columnFromVisibleColumn2(e, t, g, n),
                    m = d.a.columnFromVisibleColumn2(e, t, g, o),
                    v = d.a.visibleColumnFromColumn2(e, t, new c.a(g, f)),
                    b = d.a.visibleColumnFromColumn2(e, t, new c.a(g, m));
                if (u) {
                    if (o < v) continue;
                    if (b < n) continue
                }
                if (l) {
                    if (n < b) continue;
                    if (v < o) continue
                }
                p.push(new d.f(new h.a(g, f, g, f), 0, new c.a(g, m), 0))
            }
            if (0 === p.length)
                for (let e = 0; e < s; e++) {
                    var _ = i + (a ? -e : e),
                        w = t.getLineMaxColumn(_);
                    p.push(new d.f(new h.a(_, w, _, w), 0, new c.a(_, w), 0))
                }
            return {
                viewStates: p,
                reversed: a,
                fromLineNumber: i,
                fromVisualColumn: n,
                toLineNumber: r,
                toVisualColumn: o
            }
        }
        static columnSelectLeft(e, t, i) {
            let n = i.toViewVisualColumn;
            return 0 < n && n--, u.columnSelect(e, t, i.fromViewLineNumber, i.fromViewVisualColumn, i.toViewLineNumber, n)
        }
        static columnSelectRight(e, t, i) {
            let n = 0;
            var r = Math.min(i.fromViewLineNumber, i.toViewLineNumber),
                o = Math.max(i.fromViewLineNumber, i.toViewLineNumber);
            for (let i = r; i <= o; i++) {
                var s = t.getLineMaxColumn(i);
                s = d.a.visibleColumnFromColumn2(e, t, new c.a(i, s));
                n = Math.max(n, s)
            }
            let a = i.toViewVisualColumn;
            return a < n && a++, this.columnSelect(e, t, i.fromViewLineNumber, i.fromViewVisualColumn, i.toViewLineNumber, a)
        }
        static columnSelectUp(e, t, i, n) {
            return n = n ? e.pageSize : 1, n = Math.max(1, i.toViewLineNumber - n), this.columnSelect(e, t, i.fromViewLineNumber, i.fromViewVisualColumn, n, i.toViewVisualColumn)
        }
        static columnSelectDown(e, t, i, n) {
            return n = n ? e.pageSize : 1, n = Math.min(t.getLineCount(), i.toViewLineNumber + n), this.columnSelect(e, t, i.fromViewLineNumber, i.fromViewVisualColumn, n, i.toViewVisualColumn)
        }
    }
    var p, g, f = i(141),
        m = i(74),
        v = i(172);
    class b {
        static addCursorDown(e, t, i) {
            let n = [],
                r = 0;
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                n[r++] = new d.d(o.modelState, o.viewState), n[r++] = i ? d.d.fromModelState(m.a.translateDown(e.cursorConfig, e.model, o.modelState)) : d.d.fromViewState(m.a.translateDown(e.cursorConfig, e, o.viewState))
            }
            return n
        }
        static addCursorUp(e, t, i) {
            let n = [],
                r = 0;
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                n[r++] = new d.d(o.modelState, o.viewState), n[r++] = i ? d.d.fromModelState(m.a.translateUp(e.cursorConfig, e.model, o.modelState)) : d.d.fromViewState(m.a.translateUp(e.cursorConfig, e, o.viewState))
            }
            return n
        }
        static moveToBeginningOfLine(e, t, i) {
            let n = [];
            for (let o = 0, s = t.length; o < s; o++) {
                var r = t[o];
                n[o] = this._moveToLineStart(e, r, i)
            }
            return n
        }
        static _moveToLineStart(e, t, i) {
            var n = t.viewState.position.column,
                r = n === t.modelState.position.column,
                o = t.viewState.position.lineNumber;
            o = e.getLineFirstNonWhitespaceColumn(o);
            return r || n === o ? this._moveToLineStartByModel(e, t, i) : this._moveToLineStartByView(e, t, i)
        }
        static _moveToLineStartByView(e, t, i) {
            return d.d.fromViewState(m.a.moveToBeginningOfLine(e.cursorConfig, e, t.viewState, i))
        }
        static _moveToLineStartByModel(e, t, i) {
            return d.d.fromModelState(m.a.moveToBeginningOfLine(e.cursorConfig, e.model, t.modelState, i))
        }
        static moveToEndOfLine(e, t, i, n) {
            let r = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                r[s] = this._moveToLineEnd(e, o, i, n)
            }
            return r
        }
        static _moveToLineEnd(e, t, i, n) {
            var r = t.viewState.position,
                o = e.getLineMaxColumn(r.lineNumber),
                s = r.column === o,
                a = t.modelState.position,
                l = e.model.getLineMaxColumn(a.lineNumber);
            a = o - r.column == l - a.column;
            return s || a ? this._moveToLineEndByModel(e, t, i, n) : this._moveToLineEndByView(e, t, i, n)
        }
        static _moveToLineEndByView(e, t, i, n) {
            return d.d.fromViewState(m.a.moveToEndOfLine(e.cursorConfig, e, t.viewState, i, n))
        }
        static _moveToLineEndByModel(e, t, i, n) {
            return d.d.fromModelState(m.a.moveToEndOfLine(e.cursorConfig, e.model, t.modelState, i, n))
        }
        static expandLineSelection(e, t) {
            let i = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var n = t[s],
                    r = n.modelState.selection.startLineNumber,
                    o = e.model.getLineCount();
                let a, l = n.modelState.selection.endLineNumber;
                a = l === o ? e.model.getLineMaxColumn(o) : (l++, 1), i[s] = d.d.fromModelState(new d.f(new h.a(r, 1, r, 1), 0, new c.a(l, a), 0))
            }
            return i
        }
        static moveToBeginningOfBuffer(e, t, i) {
            let n = [];
            for (let o = 0, s = t.length; o < s; o++) {
                var r = t[o];
                n[o] = d.d.fromModelState(m.a.moveToBeginningOfBuffer(e.cursorConfig, e.model, r.modelState, i))
            }
            return n
        }
        static moveToEndOfBuffer(e, t, i) {
            let n = [];
            for (let o = 0, s = t.length; o < s; o++) {
                var r = t[o];
                n[o] = d.d.fromModelState(m.a.moveToEndOfBuffer(e.cursorConfig, e.model, r.modelState, i))
            }
            return n
        }
        static selectAll(e, t) {
            var i = e.model.getLineCount();
            e = e.model.getLineMaxColumn(i);
            return d.d.fromModelState(new d.f(new h.a(1, 1, 1, 1), 0, new c.a(i, e), 0))
        }
        static line(e, t, i, n, r) {
            if (n = e.model.validatePosition(n), r = r ? e.coordinatesConverter.validateViewPosition(new c.a(r.lineNumber, r.column), n) : e.coordinatesConverter.convertModelPositionToViewPosition(n), !i || !t.modelState.hasSelection()) {
                var o = e.model.getLineCount();
                let t = n.lineNumber + 1,
                    i = 1;
                return t > o && (t = o, i = e.model.getLineMaxColumn(t)), d.d.fromModelState(new d.f(new h.a(n.lineNumber, 1, t, i), 0, new c.a(t, i), 0))
            }
            if (o = t.modelState.selectionStart.getStartPosition().lineNumber, n.lineNumber < o) return d.d.fromViewState(t.viewState.move(t.modelState.hasSelection(), r.lineNumber, 1, 0));
            if (n.lineNumber > o) {
                o = e.getLineCount();
                let i = r.lineNumber + 1,
                    n = 1;
                return i > o && (i = o, n = e.getLineMaxColumn(i)), d.d.fromViewState(t.viewState.move(t.modelState.hasSelection(), i, n, 0))
            }
            return e = t.modelState.selectionStart.getEndPosition(), d.d.fromModelState(t.modelState.move(t.modelState.hasSelection(), e.lineNumber, e.column, 0))
        }
        static word(e, t, i, n) {
            return n = e.model.validatePosition(n), d.d.fromModelState(v.a.word(e.cursorConfig, e.model, t.modelState, i, n))
        }
        static cancelSelection(e, t) {
            if (!t.modelState.hasSelection()) return new d.d(t.modelState, t.viewState);
            var i = t.viewState.position.lineNumber;
            t = t.viewState.position.column;
            return d.d.fromViewState(new d.f(new h.a(i, t, i, t), 0, new c.a(i, t), 0))
        }
        static moveTo(e, t, i, n, r) {
            return n = e.model.validatePosition(n), n = r ? e.coordinatesConverter.validateViewPosition(new c.a(r.lineNumber, r.column), n) : e.coordinatesConverter.convertModelPositionToViewPosition(n), d.d.fromViewState(t.viewState.move(i, n.lineNumber, n.column, 0))
        }
        static simpleMove(e, t, i, n, r, o) {
            switch (i) {
                case 0:
                    return 4 === o ? this._moveHalfLineLeft(e, t, n) : this._moveLeft(e, t, n, r);
                case 1:
                    return 4 === o ? this._moveHalfLineRight(e, t, n) : this._moveRight(e, t, n, r);
                case 2:
                    return 2 === o ? this._moveUpByViewLines(e, t, n, r) : this._moveUpByModelLines(e, t, n, r);
                case 3:
                    return 2 === o ? this._moveDownByViewLines(e, t, n, r) : this._moveDownByModelLines(e, t, n, r);
                case 4:
                    return 2 === o ? t.map(t => d.d.fromViewState(m.a.moveToPrevBlankLine(e.cursorConfig, e, t.viewState, n))) : t.map(t => d.d.fromModelState(m.a.moveToPrevBlankLine(e.cursorConfig, e.model, t.modelState, n)));
                case 5:
                    return 2 === o ? t.map(t => d.d.fromViewState(m.a.moveToNextBlankLine(e.cursorConfig, e, t.viewState, n))) : t.map(t => d.d.fromModelState(m.a.moveToNextBlankLine(e.cursorConfig, e.model, t.modelState, n)));
                case 6:
                    return this._moveToViewMinColumn(e, t, n);
                case 7:
                    return this._moveToViewFirstNonWhitespaceColumn(e, t, n);
                case 8:
                    return this._moveToViewCenterColumn(e, t, n);
                case 9:
                    return this._moveToViewMaxColumn(e, t, n);
                case 10:
                    return this._moveToViewLastNonWhitespaceColumn(e, t, n);
                default:
                    return null
            }
        }
        static viewportMove(e, t, i, n, r) {
            var o = e.getCompletelyVisibleViewRange(),
                s = e.coordinatesConverter.convertViewRangeToModelRange(o);
            switch (i) {
                case 11:
                    var a = this._firstLineNumberInRange(e.model, s, r),
                        l = e.model.getLineFirstNonWhitespaceColumn(a);
                    return [this._moveToModelPosition(e, t[0], n, a, l)];
                case 13:
                    var d = this._lastLineNumberInRange(e.model, s, r),
                        c = e.model.getLineFirstNonWhitespaceColumn(d);
                    return [this._moveToModelPosition(e, t[0], n, d, c)];
                case 12:
                    return d = Math.round((s.startLineNumber + s.endLineNumber) / 2), c = e.model.getLineFirstNonWhitespaceColumn(d), [this._moveToModelPosition(e, t[0], n, d, c)];
                case 14: {
                    let i = [];
                    for (let r = 0, s = t.length; r < s; r++) {
                        var h = t[r];
                        i[r] = this.findPositionInViewportIfOutside(e, h, o, n)
                    }
                    return i
                }
                default:
                    return null
            }
        }
        static findPositionInViewportIfOutside(e, t, i, n) {
            var r = t.viewState.position.lineNumber;
            if (i.startLineNumber <= r && r <= i.endLineNumber - 1) return new d.d(t.modelState, t.viewState); {
                let o;
                return o = r > i.endLineNumber - 1 ? i.endLineNumber - 1 : r < i.startLineNumber ? i.startLineNumber : r, r = m.a.vertical(e.cursorConfig, e, r, t.viewState.position.column, t.viewState.leftoverVisibleColumns, o, !1), d.d.fromViewState(t.viewState.move(n, r.lineNumber, r.column, r.leftoverVisibleColumns))
            }
        }
        static _firstLineNumberInRange(e, t, i) {
            let n = t.startLineNumber;
            return t.startColumn !== e.getLineMinColumn(n) && n++, Math.min(t.endLineNumber, n + i - 1)
        }
        static _lastLineNumberInRange(e, t, i) {
            let n = t.startLineNumber;
            return t.startColumn !== e.getLineMinColumn(n) && n++, Math.max(n, t.endLineNumber - i + 1)
        }
        static _moveLeft(e, t, i, n) {
            return t.map(t => d.d.fromViewState(m.a.moveLeft(e.cursorConfig, e, t.viewState, i, n)))
        }
        static _moveHalfLineLeft(e, t, i) {
            let n = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var r = t[s],
                    o = r.viewState.position.lineNumber;
                o = Math.round(e.getLineContent(o).length / 2);
                n[s] = d.d.fromViewState(m.a.moveLeft(e.cursorConfig, e, r.viewState, i, o))
            }
            return n
        }
        static _moveRight(e, t, i, n) {
            return t.map(t => d.d.fromViewState(m.a.moveRight(e.cursorConfig, e, t.viewState, i, n)))
        }
        static _moveHalfLineRight(e, t, i) {
            let n = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var r = t[s],
                    o = r.viewState.position.lineNumber;
                o = Math.round(e.getLineContent(o).length / 2);
                n[s] = d.d.fromViewState(m.a.moveRight(e.cursorConfig, e, r.viewState, i, o))
            }
            return n
        }
        static _moveDownByViewLines(e, t, i, n) {
            let r = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                r[s] = d.d.fromViewState(m.a.moveDown(e.cursorConfig, e, o.viewState, i, n))
            }
            return r
        }
        static _moveDownByModelLines(e, t, i, n) {
            let r = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                r[s] = d.d.fromModelState(m.a.moveDown(e.cursorConfig, e.model, o.modelState, i, n))
            }
            return r
        }
        static _moveUpByViewLines(e, t, i, n) {
            let r = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                r[s] = d.d.fromViewState(m.a.moveUp(e.cursorConfig, e, o.viewState, i, n))
            }
            return r
        }
        static _moveUpByModelLines(e, t, i, n) {
            let r = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var o = t[s];
                r[s] = d.d.fromModelState(m.a.moveUp(e.cursorConfig, e.model, o.modelState, i, n))
            }
            return r
        }
        static _moveToViewPosition(e, t, i, n, r) {
            return d.d.fromViewState(t.viewState.move(i, n, r, 0))
        }
        static _moveToModelPosition(e, t, i, n, r) {
            return d.d.fromModelState(t.modelState.move(i, n, r, 0))
        }
        static _moveToViewMinColumn(e, t, i) {
            let n = [];
            for (let a = 0, l = t.length; a < l; a++) {
                var r = t[a],
                    o = r.viewState.position.lineNumber,
                    s = e.getLineMinColumn(o);
                n[a] = this._moveToViewPosition(e, r, i, o, s)
            }
            return n
        }
        static _moveToViewFirstNonWhitespaceColumn(e, t, i) {
            let n = [];
            for (let a = 0, l = t.length; a < l; a++) {
                var r = t[a],
                    o = r.viewState.position.lineNumber,
                    s = e.getLineFirstNonWhitespaceColumn(o);
                n[a] = this._moveToViewPosition(e, r, i, o, s)
            }
            return n
        }
        static _moveToViewCenterColumn(e, t, i) {
            let n = [];
            for (let a = 0, l = t.length; a < l; a++) {
                var r = t[a],
                    o = r.viewState.position.lineNumber,
                    s = Math.round((e.getLineMaxColumn(o) + e.getLineMinColumn(o)) / 2);
                n[a] = this._moveToViewPosition(e, r, i, o, s)
            }
            return n
        }
        static _moveToViewMaxColumn(e, t, i) {
            let n = [];
            for (let a = 0, l = t.length; a < l; a++) {
                var r = t[a],
                    o = r.viewState.position.lineNumber,
                    s = e.getLineMaxColumn(o);
                n[a] = this._moveToViewPosition(e, r, i, o, s)
            }
            return n
        }
        static _moveToViewLastNonWhitespaceColumn(e, t, i) {
            let n = [];
            for (let a = 0, l = t.length; a < l; a++) {
                var r = t[a],
                    o = r.viewState.position.lineNumber,
                    s = e.getLineLastNonWhitespaceColumn(o);
                n[a] = this._moveToViewPosition(e, r, i, o, s)
            }
            return n
        }
    }(g = p = p || {}).description = {
        description: "Move cursor to a logical position in the view",
        args: [{
            name: "Cursor move argument object",
            description: "Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory logical position value providing where to move the cursor.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n\t\t\t\t\t\t'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n\t\t\t\t\t\t'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n\t\t\t\t\t\t'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'line', 'wrappedLine', 'character', 'halfLine'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'select': If 'true' makes the selection. Default is 'false'.\n\t\t\t\t",
            constraint: function(e) {
                return !!o.j(e) && !(!o.k(e.to) || !o.l(e.select) && !o.f(e.select) || !o.l(e.by) && !o.k(e.by) || !o.l(e.value) && !o.i(e.value))
            },
            schema: {
                type: "object",
                required: ["to"],
                properties: {
                    to: {
                        type: "string",
                        enum: ["left", "right", "up", "down", "prevBlankLine", "nextBlankLine", "wrappedLineStart", "wrappedLineEnd", "wrappedLineColumnCenter", "wrappedLineFirstNonWhitespaceCharacter", "wrappedLineLastNonWhitespaceCharacter", "viewPortTop", "viewPortCenter", "viewPortBottom", "viewPortIfOutside"]
                    },
                    by: {
                        type: "string",
                        enum: ["line", "wrappedLine", "character", "halfLine"]
                    },
                    value: {
                        type: "number",
                        default: 1
                    },
                    select: {
                        type: "boolean",
                        default: !1
                    }
                }
            }
        }]
    }, g.RawDirection = {
        Left: "left",
        Right: "right",
        Up: "up",
        Down: "down",
        PrevBlankLine: "prevBlankLine",
        NextBlankLine: "nextBlankLine",
        WrappedLineStart: "wrappedLineStart",
        WrappedLineFirstNonWhitespaceCharacter: "wrappedLineFirstNonWhitespaceCharacter",
        WrappedLineColumnCenter: "wrappedLineColumnCenter",
        WrappedLineEnd: "wrappedLineEnd",
        WrappedLineLastNonWhitespaceCharacter: "wrappedLineLastNonWhitespaceCharacter",
        ViewPortTop: "viewPortTop",
        ViewPortCenter: "viewPortCenter",
        ViewPortBottom: "viewPortBottom",
        ViewPortIfOutside: "viewPortIfOutside"
    }, g.RawUnit = {
        Line: "line",
        WrappedLine: "wrappedLine",
        Character: "character",
        HalfLine: "halfLine"
    }, g.parse = function(e) {
        if (!e.to) return null;
        let t;
        switch (e.to) {
            case g.RawDirection.Left:
                t = 0;
                break;
            case g.RawDirection.Right:
                t = 1;
                break;
            case g.RawDirection.Up:
                t = 2;
                break;
            case g.RawDirection.Down:
                t = 3;
                break;
            case g.RawDirection.PrevBlankLine:
                t = 4;
                break;
            case g.RawDirection.NextBlankLine:
                t = 5;
                break;
            case g.RawDirection.WrappedLineStart:
                t = 6;
                break;
            case g.RawDirection.WrappedLineFirstNonWhitespaceCharacter:
                t = 7;
                break;
            case g.RawDirection.WrappedLineColumnCenter:
                t = 8;
                break;
            case g.RawDirection.WrappedLineEnd:
                t = 9;
                break;
            case g.RawDirection.WrappedLineLastNonWhitespaceCharacter:
                t = 10;
                break;
            case g.RawDirection.ViewPortTop:
                t = 11;
                break;
            case g.RawDirection.ViewPortBottom:
                t = 13;
                break;
            case g.RawDirection.ViewPortCenter:
                t = 12;
                break;
            case g.RawDirection.ViewPortIfOutside:
                t = 14;
                break;
            default:
                return null
        }
        let i = 0;
        switch (e.by) {
            case g.RawUnit.Line:
                i = 1;
                break;
            case g.RawUnit.WrappedLine:
                i = 2;
                break;
            case g.RawUnit.Character:
                i = 3;
                break;
            case g.RawUnit.HalfLine:
                i = 4
        }
        return {
            direction: t,
            unit: i,
            select: !!e.select,
            value: e.value || 1
        }
    };
    var _, w, y, C, x = i(120),
        S = i(21),
        k = i(13),
        L = i(128);
    class O extends a.c {
        runEditorCommand(e, t, i) {
            (t = t._getViewModel()) && this.runCoreEditorCommand(t, i || {})
        }
    }(w = _ = _ || {}).description = {
        description: "Scroll editor in the given direction",
        args: [{
            name: "Editor scroll argument object",
            description: "Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory direction value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'up', 'down'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\t\t\t\t",
            constraint: function(e) {
                return !!o.j(e) && !(!o.k(e.to) || !o.l(e.by) && !o.k(e.by) || !o.l(e.value) && !o.i(e.value) || !o.l(e.revealCursor) && !o.f(e.revealCursor))
            },
            schema: {
                type: "object",
                required: ["to"],
                properties: {
                    to: {
                        type: "string",
                        enum: ["up", "down"]
                    },
                    by: {
                        type: "string",
                        enum: ["line", "wrappedLine", "page", "halfPage"]
                    },
                    value: {
                        type: "number",
                        default: 1
                    },
                    revealCursor: {
                        type: "boolean"
                    }
                }
            }
        }]
    }, w.RawDirection = {
        Up: "up",
        Down: "down"
    }, w.RawUnit = {
        Line: "line",
        WrappedLine: "wrappedLine",
        Page: "page",
        HalfPage: "halfPage"
    }, w.parse = function(e) {
        let t, i;
        switch (e.to) {
            case w.RawDirection.Up:
                t = 1;
                break;
            case w.RawDirection.Down:
                t = 2;
                break;
            default:
                return null
        }
        switch (e.by) {
            case w.RawUnit.Line:
                i = 1;
                break;
            case w.RawUnit.WrappedLine:
                i = 2;
                break;
            case w.RawUnit.Page:
                i = 3;
                break;
            case w.RawUnit.HalfPage:
                i = 4;
                break;
            default:
                i = 2
        }
        return {
            direction: t,
            unit: i,
            value: Math.floor(e.value || 1),
            revealCursor: !!e.revealCursor,
            select: !!e.select
        }
    }, (i = y = y || {}).description = {
        description: "Reveal the given line at the given logical position",
        args: [{
            name: "Reveal line argument object",
            description: "Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'top', 'center', 'bottom'\n\t\t\t\t\t\t```\n\t\t\t\t",
            constraint: function(e) {
                return !!o.j(e) && !(!o.i(e.lineNumber) && !o.k(e.lineNumber) || !o.l(e.at) && !o.k(e.at))
            },
            schema: {
                type: "object",
                required: ["lineNumber"],
                properties: {
                    lineNumber: {
                        type: ["number", "string"]
                    },
                    at: {
                        type: "string",
                        enum: ["top", "center", "bottom"]
                    }
                }
            }
        }]
    }, i.RawAtArgument = {
        Top: "top",
        Center: "center",
        Bottom: "bottom"
    };
    class E {
        constructor(e) {
            e.addImplementation(1e4, "code-editor", (e, t) => {
                const i = e.get(l.a).getFocusedCodeEditor();
                return !(!i || !i.hasTextFocus()) && this._runEditorCommand(e, i, t)
            }), e.addImplementation(1e3, "generic-dom-input-textarea", (e, t) => {
                const i = document.activeElement;
                return !!(i && 0 <= ["input", "textarea"].indexOf(i.tagName.toLowerCase())) && (this.runDOMCommand(), !0)
            }), e.addImplementation(0, "generic-dom", (e, t) => {
                const i = e.get(l.a).getActiveCodeEditor();
                return !!i && (i.focus(), this._runEditorCommand(e, i, t))
            })
        }
        _runEditorCommand(e, t, i) {
            return (i = this.runEditorCommand(e, t, i)) || !0
        }
    }! function(e) {
        class t extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, [b.moveTo(e, e.getPrimaryCursorState(), this._inSelectionMode, t.position, t.viewPosition)]), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.MoveTo = Object(a.j)(new t({
            id: "_moveTo",
            inSelectionMode: !1,
            precondition: void 0
        })), e.MoveToSelect = Object(a.j)(new t({
            id: "_moveToSelect",
            inSelectionMode: !0,
            precondition: void 0
        }));
        class i extends O {
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement();
                const i = this._getColumnSelectResult(e, e.getPrimaryCursorState(), e.getCursorColumnSelectData(), t);
                e.setCursorStates(t.source, 3, i.viewStates.map(e => d.d.fromViewState(e))), e.setCursorColumnSelectData({
                    isReal: !0,
                    fromViewLineNumber: i.fromLineNumber,
                    fromViewVisualColumn: i.fromVisualColumn,
                    toViewLineNumber: i.toLineNumber,
                    toViewVisualColumn: i.toVisualColumn
                }), i.reversed ? e.revealTopMostCursor(t.source) : e.revealBottomMostCursor(t.source)
            }
        }
        e.ColumnSelect = Object(a.j)(new class extends i {
            constructor() {
                super({
                    id: "columnSelect",
                    precondition: void 0
                })
            }
            _getColumnSelectResult(e, t, i, n) {
                var r = e.model.validatePosition(n.position),
                    o = e.coordinatesConverter.validateViewPosition(new c.a(n.viewPosition.lineNumber, n.viewPosition.column), r);
                r = n.doColumnSelect ? i.fromViewLineNumber : o.lineNumber, i = n.doColumnSelect ? i.fromViewVisualColumn : n.mouseColumn - 1;
                return u.columnSelect(e.cursorConfig, e, r, i, o.lineNumber, n.mouseColumn - 1)
            }
        }), e.CursorColumnSelectLeft = Object(a.j)(new class extends i {
            constructor() {
                super({
                    id: "cursorColumnSelectLeft",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 3599,
                        linux: {
                            primary: 0
                        }
                    }
                })
            }
            _getColumnSelectResult(e, t, i, n) {
                return u.columnSelectLeft(e.cursorConfig, e, i)
            }
        }), e.CursorColumnSelectRight = Object(a.j)(new class extends i {
            constructor() {
                super({
                    id: "cursorColumnSelectRight",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 3601,
                        linux: {
                            primary: 0
                        }
                    }
                })
            }
            _getColumnSelectResult(e, t, i, n) {
                return u.columnSelectRight(e.cursorConfig, e, i)
            }
        });
        class o extends i {
            constructor(e) {
                super(e), this._isPaged = e.isPaged
            }
            _getColumnSelectResult(e, t, i, n) {
                return u.columnSelectUp(e.cursorConfig, e, i, this._isPaged)
            }
        }
        e.CursorColumnSelectUp = Object(a.j)(new o({
            isPaged: !1,
            id: "cursorColumnSelectUp",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 3600,
                linux: {
                    primary: 0
                }
            }
        })), e.CursorColumnSelectPageUp = Object(a.j)(new o({
            isPaged: !0,
            id: "cursorColumnSelectPageUp",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 3595,
                linux: {
                    primary: 0
                }
            }
        }));
        class l extends i {
            constructor(e) {
                super(e), this._isPaged = e.isPaged
            }
            _getColumnSelectResult(e, t, i, n) {
                return u.columnSelectDown(e.cursorConfig, e, i, this._isPaged)
            }
        }
        e.CursorColumnSelectDown = Object(a.j)(new l({
            isPaged: !1,
            id: "cursorColumnSelectDown",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 3602,
                linux: {
                    primary: 0
                }
            }
        })), e.CursorColumnSelectPageDown = Object(a.j)(new l({
            isPaged: !0,
            id: "cursorColumnSelectPageDown",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 3596,
                linux: {
                    primary: 0
                }
            }
        }));
        class g extends O {
            constructor() {
                super({
                    id: "cursorMove",
                    precondition: void 0,
                    description: p.description
                })
            }
            runCoreEditorCommand(e, t) {
                var i = p.parse(t);
                i && this._runCursorMove(e, t.source, i)
            }
            _runCursorMove(e, t, i) {
                e.model.pushStackElement(), e.setCursorStates(t, 3, g._move(e, e.getCursorStates(), i)), e.revealPrimaryCursor(t, !0)
            }
            static _move(e, t, i) {
                var n = i.select,
                    r = i.value;
                switch (i.direction) {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                    case 9:
                    case 10:
                        return b.simpleMove(e, t, i.direction, n, r, i.unit);
                    case 11:
                    case 13:
                    case 12:
                    case 14:
                        return b.viewportMove(e, t, i.direction, n, r);
                    default:
                        return null
                }
            }
        }
        e.CursorMoveImpl = g, e.CursorMove = Object(a.j)(new g);
        class f extends O {
            constructor(e) {
                super(e), this._staticArgs = e.args
            }
            runCoreEditorCommand(e, t) {
                let i = this._staticArgs; - 1 === this._staticArgs.value && (i = {
                    direction: this._staticArgs.direction,
                    unit: this._staticArgs.unit,
                    select: this._staticArgs.select,
                    value: e.cursorConfig.pageSize
                }), e.model.pushStackElement(), e.setCursorStates(t.source, 3, b.simpleMove(e, e.getCursorStates(), i.direction, i.select, i.value, i.unit)), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.CursorLeft = Object(a.j)(new f({
            args: {
                direction: 0,
                unit: 0,
                select: !1,
                value: 1
            },
            id: "cursorLeft",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 15,
                mac: {
                    primary: 15,
                    secondary: [288]
                }
            }
        })), e.CursorLeftSelect = Object(a.j)(new f({
            args: {
                direction: 0,
                unit: 0,
                select: !0,
                value: 1
            },
            id: "cursorLeftSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1039
            }
        })), e.CursorRight = Object(a.j)(new f({
            args: {
                direction: 1,
                unit: 0,
                select: !1,
                value: 1
            },
            id: "cursorRight",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 17,
                mac: {
                    primary: 17,
                    secondary: [292]
                }
            }
        })), e.CursorRightSelect = Object(a.j)(new f({
            args: {
                direction: 1,
                unit: 0,
                select: !0,
                value: 1
            },
            id: "cursorRightSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1041
            }
        })), e.CursorUp = Object(a.j)(new f({
            args: {
                direction: 2,
                unit: 2,
                select: !1,
                value: 1
            },
            id: "cursorUp",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 16,
                mac: {
                    primary: 16,
                    secondary: [302]
                }
            }
        })), e.CursorUpSelect = Object(a.j)(new f({
            args: {
                direction: 2,
                unit: 2,
                select: !0,
                value: 1
            },
            id: "cursorUpSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1040,
                secondary: [3088],
                mac: {
                    primary: 1040
                },
                linux: {
                    primary: 1040
                }
            }
        })), e.CursorPageUp = Object(a.j)(new f({
            args: {
                direction: 2,
                unit: 2,
                select: !1,
                value: -1
            },
            id: "cursorPageUp",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 11
            }
        })), e.CursorPageUpSelect = Object(a.j)(new f({
            args: {
                direction: 2,
                unit: 2,
                select: !0,
                value: -1
            },
            id: "cursorPageUpSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1035
            }
        })), e.CursorDown = Object(a.j)(new f({
            args: {
                direction: 3,
                unit: 2,
                select: !1,
                value: 1
            },
            id: "cursorDown",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 18,
                mac: {
                    primary: 18,
                    secondary: [300]
                }
            }
        })), e.CursorDownSelect = Object(a.j)(new f({
            args: {
                direction: 3,
                unit: 2,
                select: !0,
                value: 1
            },
            id: "cursorDownSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1042,
                secondary: [3090],
                mac: {
                    primary: 1042
                },
                linux: {
                    primary: 1042
                }
            }
        })), e.CursorPageDown = Object(a.j)(new f({
            args: {
                direction: 3,
                unit: 2,
                select: !1,
                value: -1
            },
            id: "cursorPageDown",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 12
            }
        })), e.CursorPageDownSelect = Object(a.j)(new f({
            args: {
                direction: 3,
                unit: 2,
                select: !0,
                value: -1
            },
            id: "cursorPageDownSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1036
            }
        })), e.CreateCursor = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "createCursor",
                    precondition: void 0
                })
            }
            runCoreEditorCommand(e, t) {
                let i;
                i = t.wholeLine ? b.line(e, e.getPrimaryCursorState(), !1, t.position, t.viewPosition) : b.moveTo(e, e.getPrimaryCursorState(), !1, t.position, t.viewPosition);
                const n = e.getCursorStates();
                if (1 < n.length) {
                    var r = i.modelState ? i.modelState.position : null,
                        o = i.viewState ? i.viewState.position : null;
                    for (let i = 0, s = n.length; i < s; i++) {
                        const s = n[i];
                        if ((!r || s.modelState.selection.containsPosition(r)) && (!o || s.viewState.selection.containsPosition(o))) return n.splice(i, 1), e.model.pushStackElement(), void e.setCursorStates(t.source, 3, n)
                    }
                }
                n.push(i), e.model.pushStackElement(), e.setCursorStates(t.source, 3, n)
            }
        }), e.LastCursorMoveToSelect = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "_lastCursorMoveToSelect",
                    precondition: void 0
                })
            }
            runCoreEditorCommand(e, t) {
                var i = e.getLastAddedCursorIndex();
                const n = e.getCursorStates(),
                    r = n.slice(0);
                r[i] = b.moveTo(e, n[i], !0, t.position, t.viewPosition), e.model.pushStackElement(), e.setCursorStates(t.source, 3, r)
            }
        });
        class m extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, b.moveToBeginningOfLine(e, e.getCursorStates(), this._inSelectionMode)), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.CursorHome = Object(a.j)(new m({
            inSelectionMode: !1,
            id: "cursorHome",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 14,
                mac: {
                    primary: 14,
                    secondary: [2063]
                }
            }
        })), e.CursorHomeSelect = Object(a.j)(new m({
            inSelectionMode: !0,
            id: "cursorHomeSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1038,
                mac: {
                    primary: 1038,
                    secondary: [3087]
                }
            }
        }));
        class v extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, this._exec(e.getCursorStates())), e.revealPrimaryCursor(t.source, !0)
            }
            _exec(e) {
                const t = [];
                for (let n = 0, r = e.length; n < r; n++) {
                    const r = e[n];
                    var i = r.modelState.position.lineNumber;
                    t[n] = d.d.fromModelState(r.modelState.move(this._inSelectionMode, i, 1, 0))
                }
                return t
            }
        }
        e.CursorLineStart = Object(a.j)(new v({
            inSelectionMode: !1,
            id: "cursorLineStart",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 0,
                mac: {
                    primary: 287
                }
            }
        })), e.CursorLineStartSelect = Object(a.j)(new v({
            inSelectionMode: !0,
            id: "cursorLineStartSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 0,
                mac: {
                    primary: 1311
                }
            }
        }));
        class w extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, b.moveToEndOfLine(e, e.getCursorStates(), this._inSelectionMode, t.sticky || !1)), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.CursorEnd = Object(a.j)(new w({
            inSelectionMode: !1,
            id: "cursorEnd",
            precondition: void 0,
            kbOpts: {
                args: {
                    sticky: !1
                },
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 13,
                mac: {
                    primary: 13,
                    secondary: [2065]
                }
            },
            description: {
                description: "Go to End",
                args: [{
                    name: "args",
                    schema: {
                        type: "object",
                        properties: {
                            sticky: {
                                description: n.a("stickydesc", "Stick to the end even when going to longer lines"),
                                type: "boolean",
                                default: !1
                            }
                        }
                    }
                }]
            }
        })), e.CursorEndSelect = Object(a.j)(new w({
            inSelectionMode: !0,
            id: "cursorEndSelect",
            precondition: void 0,
            kbOpts: {
                args: {
                    sticky: !1
                },
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 1037,
                mac: {
                    primary: 1037,
                    secondary: [3089]
                }
            },
            description: {
                description: "Select to End",
                args: [{
                    name: "args",
                    schema: {
                        type: "object",
                        properties: {
                            sticky: {
                                description: n.a("stickydesc", "Stick to the end even when going to longer lines"),
                                type: "boolean",
                                default: !1
                            }
                        }
                    }
                }]
            }
        }));
        class C extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, this._exec(e, e.getCursorStates())), e.revealPrimaryCursor(t.source, !0)
            }
            _exec(e, t) {
                const i = [];
                for (let o = 0, s = t.length; o < s; o++) {
                    const s = t[o];
                    var n = s.modelState.position.lineNumber,
                        r = e.model.getLineMaxColumn(n);
                    i[o] = d.d.fromModelState(s.modelState.move(this._inSelectionMode, n, r, 0))
                }
                return i
            }
        }
        e.CursorLineEnd = Object(a.j)(new C({
            inSelectionMode: !1,
            id: "cursorLineEnd",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 0,
                mac: {
                    primary: 291
                }
            }
        })), e.CursorLineEndSelect = Object(a.j)(new C({
            inSelectionMode: !0,
            id: "cursorLineEndSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 0,
                mac: {
                    primary: 1315
                }
            }
        }));
        class x extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, b.moveToBeginningOfBuffer(e, e.getCursorStates(), this._inSelectionMode)), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.CursorTop = Object(a.j)(new x({
            inSelectionMode: !1,
            id: "cursorTop",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 2062,
                mac: {
                    primary: 2064
                }
            }
        })), e.CursorTopSelect = Object(a.j)(new x({
            inSelectionMode: !0,
            id: "cursorTopSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 3086,
                mac: {
                    primary: 3088
                }
            }
        }));
        class k extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, b.moveToEndOfBuffer(e, e.getCursorStates(), this._inSelectionMode)), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.CursorBottom = Object(a.j)(new k({
            inSelectionMode: !1,
            id: "cursorBottom",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 2061,
                mac: {
                    primary: 2066
                }
            }
        })), e.CursorBottomSelect = Object(a.j)(new k({
            inSelectionMode: !0,
            id: "cursorBottomSelect",
            precondition: void 0,
            kbOpts: {
                weight: 0,
                kbExpr: S.a.textInputFocus,
                primary: 3085,
                mac: {
                    primary: 3090
                }
            }
        }));
        class L extends O {
            constructor() {
                super({
                    id: "editorScroll",
                    precondition: void 0,
                    description: _.description
                })
            }
            runCoreEditorCommand(e, t) {
                var i = _.parse(t);
                i && this._runEditorScroll(e, t.source, i)
            }
            _runEditorScroll(e, t, i) {
                var n, r = this._computeDesiredScrollTop(e, i);
                i.revealCursor && (n = e.getCompletelyVisibleViewRangeAtScrollTop(r), e.setCursorStates(t, 3, [b.findPositionInViewportIfOutside(e, e.getPrimaryCursorState(), n, i.select)])), e.setScrollTop(r, 0)
            }
            _computeDesiredScrollTop(e, t) {
                if (1 === t.unit) {
                    var i = e.getCompletelyVisibleViewRange();
                    i = e.coordinatesConverter.convertViewRangeToModelRange(i);
                    let n;
                    return n = 1 === t.direction ? Math.max(1, i.startLineNumber - t.value) : Math.min(e.model.getLineCount(), i.startLineNumber + t.value), i = e.coordinatesConverter.convertModelPositionToViewPosition(new c.a(n, 1)), e.getVerticalOffsetForLineNumber(i.lineNumber)
                }
                let n;
                return n = 3 === t.unit ? e.cursorConfig.pageSize * t.value : 4 === t.unit ? Math.round(e.cursorConfig.pageSize / 2) * t.value : t.value, t = (1 === t.direction ? -1 : 1) * n, e.getScrollTop() + t * e.cursorConfig.lineHeight
            }
        }
        e.EditorScrollImpl = L, e.EditorScroll = Object(a.j)(new L), e.ScrollLineUp = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "scrollLineUp",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 2064,
                        mac: {
                            primary: 267
                        }
                    }
                })
            }
            runCoreEditorCommand(t, i) {
                e.EditorScroll._runEditorScroll(t, i.source, {
                    direction: 1,
                    unit: 2,
                    value: 1,
                    revealCursor: !1,
                    select: !1
                })
            }
        }), e.ScrollPageUp = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "scrollPageUp",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 2059,
                        win: {
                            primary: 523
                        },
                        linux: {
                            primary: 523
                        }
                    }
                })
            }
            runCoreEditorCommand(t, i) {
                e.EditorScroll._runEditorScroll(t, i.source, {
                    direction: 1,
                    unit: 3,
                    value: 1,
                    revealCursor: !1,
                    select: !1
                })
            }
        }), e.ScrollLineDown = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "scrollLineDown",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 2066,
                        mac: {
                            primary: 268
                        }
                    }
                })
            }
            runCoreEditorCommand(t, i) {
                e.EditorScroll._runEditorScroll(t, i.source, {
                    direction: 2,
                    unit: 2,
                    value: 1,
                    revealCursor: !1,
                    select: !1
                })
            }
        }), e.ScrollPageDown = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "scrollPageDown",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 2060,
                        win: {
                            primary: 524
                        },
                        linux: {
                            primary: 524
                        }
                    }
                })
            }
            runCoreEditorCommand(t, i) {
                e.EditorScroll._runEditorScroll(t, i.source, {
                    direction: 2,
                    unit: 3,
                    value: 1,
                    revealCursor: !1,
                    select: !1
                })
            }
        });
        class N extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, [b.word(e, e.getPrimaryCursorState(), this._inSelectionMode, t.position)]), e.revealPrimaryCursor(t.source, !0)
            }
        }
        e.WordSelect = Object(a.j)(new N({
            inSelectionMode: !1,
            id: "_wordSelect",
            precondition: void 0
        })), e.WordSelectDrag = Object(a.j)(new N({
            inSelectionMode: !0,
            id: "_wordSelectDrag",
            precondition: void 0
        })), e.LastCursorWordSelect = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "lastCursorWordSelect",
                    precondition: void 0
                })
            }
            runCoreEditorCommand(e, t) {
                var i = e.getLastAddedCursorIndex();
                const n = e.getCursorStates(),
                    r = n.slice(0),
                    o = n[i];
                r[i] = b.word(e, o, o.modelState.hasSelection(), t.position), e.model.pushStackElement(), e.setCursorStates(t.source, 3, r)
            }
        });
        class D extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, [b.line(e, e.getPrimaryCursorState(), this._inSelectionMode, t.position, t.viewPosition)]), e.revealPrimaryCursor(t.source, !1)
            }
        }
        e.LineSelect = Object(a.j)(new D({
            inSelectionMode: !1,
            id: "_lineSelect",
            precondition: void 0
        })), e.LineSelectDrag = Object(a.j)(new D({
            inSelectionMode: !0,
            id: "_lineSelectDrag",
            precondition: void 0
        }));
        class I extends O {
            constructor(e) {
                super(e), this._inSelectionMode = e.inSelectionMode
            }
            runCoreEditorCommand(e, t) {
                var i = e.getLastAddedCursorIndex();
                const n = e.getCursorStates(),
                    r = n.slice(0);
                r[i] = b.line(e, n[i], this._inSelectionMode, t.position, t.viewPosition), e.model.pushStackElement(), e.setCursorStates(t.source, 3, r)
            }
        }
        e.LastCursorLineSelect = Object(a.j)(new I({
            inSelectionMode: !1,
            id: "lastCursorLineSelect",
            precondition: void 0
        })), e.LastCursorLineSelectDrag = Object(a.j)(new I({
            inSelectionMode: !0,
            id: "lastCursorLineSelectDrag",
            precondition: void 0
        })), e.ExpandLineSelection = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "expandLineSelection",
                    precondition: void 0,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 2090
                    }
                })
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, b.expandLineSelection(e, e.getCursorStates())), e.revealPrimaryCursor(t.source, !0)
            }
        }), e.CancelSelection = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "cancelSelection",
                    precondition: S.a.hasNonEmptySelection,
                    kbOpts: {
                        weight: 0,
                        kbExpr: S.a.textInputFocus,
                        primary: 9,
                        secondary: [1033]
                    }
                })
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, [b.cancelSelection(e, e.getPrimaryCursorState())]), e.revealPrimaryCursor(t.source, !0)
            }
        }), e.RemoveSecondaryCursors = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "removeSecondaryCursors",
                    precondition: S.a.hasMultipleSelections,
                    kbOpts: {
                        weight: 1,
                        kbExpr: S.a.textInputFocus,
                        primary: 9,
                        secondary: [1033]
                    }
                })
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, [e.getPrimaryCursorState()]), e.revealPrimaryCursor(t.source, !0), Object(s.c)(n.a("removedCursor", "Removed secondary cursors"))
            }
        }), e.RevealLine = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "revealLine",
                    precondition: void 0,
                    description: y.description
                })
            }
            runCoreEditorCommand(e, t) {
                var i = t,
                    n = i.lineNumber || 0;
                let r = "number" == typeof n ? n + 1 : parseInt(n) + 1;
                r < 1 && (r = 1), r > (n = e.model.getLineCount()) && (r = n), n = new h.a(r, 1, r, e.model.getLineMaxColumn(r));
                let o = 0;
                if (i.at) switch (i.at) {
                    case y.RawAtArgument.Top:
                        o = 3;
                        break;
                    case y.RawAtArgument.Center:
                        o = 1;
                        break;
                    case y.RawAtArgument.Bottom:
                        o = 4
                }
                n = e.coordinatesConverter.convertModelRangeToViewRange(n), e.revealRange(t.source, !1, n, o, 0)
            }
        }), e.SelectAll = new class extends E {
            constructor() {
                super(a.g)
            }
            runDOMCommand() {
                r.g && (document.activeElement.focus(), document.activeElement.select()), document.execCommand("selectAll")
            }
            runEditorCommand(e, t, i) {
                (t = t._getViewModel()) && this.runCoreEditorCommand(t, i)
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates("keyboard", 3, [b.selectAll(e, e.getPrimaryCursorState())])
            }
        }, e.SetSelection = Object(a.j)(new class extends O {
            constructor() {
                super({
                    id: "setSelection",
                    precondition: void 0
                })
            }
            runCoreEditorCommand(e, t) {
                e.model.pushStackElement(), e.setCursorStates(t.source, 3, [d.d.fromModelSelection(t.selection)])
            }
        })
    }(C = C || {});
    const N = k.a.and(S.a.textInputFocus, S.a.columnSelection);

    function D(e, t) {
        L.a.registerKeybindingRule({
            id: e,
            primary: t,
            when: N,
            weight: 1
        })
    }

    function I(e) {
        return e.register(), e
    }
    D(C.CursorColumnSelectLeft.id, 1039), D(C.CursorColumnSelectRight.id, 1041), D(C.CursorColumnSelectUp.id, 1040), D(C.CursorColumnSelectPageUp.id, 1035), D(C.CursorColumnSelectDown.id, 1042), D(C.CursorColumnSelectPageDown.id, 1036),
        function(e) {
            class t extends a.c {
                runEditorCommand(e, t, i) {
                    var n = t._getViewModel();
                    n && this.runCoreEditingCommand(t, n, i || {})
                }
            }
            e.CoreEditingCommand = t, e.LineBreakInsert = Object(a.j)(new class extends t {
                constructor() {
                    super({
                        id: "lineBreakInsert",
                        precondition: S.a.writable,
                        kbOpts: {
                            weight: 0,
                            kbExpr: S.a.textInputFocus,
                            primary: 0,
                            mac: {
                                primary: 301
                            }
                        }
                    })
                }
                runCoreEditingCommand(e, t, i) {
                    e.pushUndoStop(), e.executeCommands(this.id, x.a.lineBreakInsert(t.cursorConfig, t.model, t.getCursorStates().map(e => e.modelState.selection)))
                }
            }), e.Outdent = Object(a.j)(new class extends t {
                constructor() {
                    super({
                        id: "outdent",
                        precondition: S.a.writable,
                        kbOpts: {
                            weight: 0,
                            kbExpr: k.a.and(S.a.editorTextFocus, S.a.tabDoesNotMoveFocus),
                            primary: 1026
                        }
                    })
                }
                runCoreEditingCommand(e, t, i) {
                    e.pushUndoStop(), e.executeCommands(this.id, x.a.outdent(t.cursorConfig, t.model, t.getCursorStates().map(e => e.modelState.selection))), e.pushUndoStop()
                }
            }), e.Tab = Object(a.j)(new class extends t {
                constructor() {
                    super({
                        id: "tab",
                        precondition: S.a.writable,
                        kbOpts: {
                            weight: 0,
                            kbExpr: k.a.and(S.a.editorTextFocus, S.a.tabDoesNotMoveFocus),
                            primary: 2
                        }
                    })
                }
                runCoreEditingCommand(e, t, i) {
                    e.pushUndoStop(), e.executeCommands(this.id, x.a.tab(t.cursorConfig, t.model, t.getCursorStates().map(e => e.modelState.selection))), e.pushUndoStop()
                }
            }), e.DeleteLeft = Object(a.j)(new class extends t {
                constructor() {
                    super({
                        id: "deleteLeft",
                        precondition: void 0,
                        kbOpts: {
                            weight: 0,
                            kbExpr: S.a.textInputFocus,
                            primary: 1,
                            secondary: [1025],
                            mac: {
                                primary: 1,
                                secondary: [1025, 294, 257]
                            }
                        }
                    })
                }
                runCoreEditingCommand(e, t, i) {
                    var [n, r] = f.a.deleteLeft(t.getPrevEditOperationType(), t.cursorConfig, t.model, t.getCursorStates().map(e => e.modelState.selection), t.getCursorAutoClosedCharacters());
                    n && e.pushUndoStop(), e.executeCommands(this.id, r), t.setPrevEditOperationType(2)
                }
            }), e.DeleteRight = Object(a.j)(new class extends t {
                constructor() {
                    super({
                        id: "deleteRight",
                        precondition: void 0,
                        kbOpts: {
                            weight: 0,
                            kbExpr: S.a.textInputFocus,
                            primary: 20,
                            mac: {
                                primary: 20,
                                secondary: [290, 276]
                            }
                        }
                    })
                }
                runCoreEditingCommand(e, t, i) {
                    var [n, r] = f.a.deleteRight(t.getPrevEditOperationType(), t.cursorConfig, t.model, t.getCursorStates().map(e => e.modelState.selection));
                    n && e.pushUndoStop(), e.executeCommands(this.id, r), t.setPrevEditOperationType(3)
                }
            }), e.Undo = new class extends E {
                constructor() {
                    super(a.h)
                }
                runDOMCommand() {
                    document.execCommand("undo")
                }
                runEditorCommand(e, t, i) {
                    if (t.hasModel() && !0 !== t.getOption(80)) return t.getModel().undo()
                }
            }, e.Redo = new class extends E {
                constructor() {
                    super(a.f)
                }
                runDOMCommand() {
                    document.execCommand("redo")
                }
                runEditorCommand(e, t, i) {
                    if (t.hasModel() && !0 !== t.getOption(80)) return t.getModel().redo()
                }
            }
        }({});
    class T extends a.a {
        constructor(e, t, i) {
            super({
                id: e,
                precondition: void 0,
                description: i
            }), this._handlerId = t
        }
        runCommand(e, t) {
            const i = e.get(l.a).getFocusedCodeEditor();
            i && i.trigger("keyboard", this._handlerId, t)
        }
    }

    function M(e, t) {
        I(new T("default:" + e, e)), I(new T(e, e, t))
    }
    M("type", {
        description: "类型",
        args: [{
            name: "args",
            schema: {
                type: "object",
                required: ["text"],
                properties: {
                    text: {
                        type: "string"
                    }
                }
            }
        }]
    }), M("replacePreviousChar"), M("compositionType"), M("compositionStart"), M("compositionEnd"), M("paste"), M("cut")
}, function(e, t, i) {
    "use strict";

    function n(e) {
        const t = this;
        let i, n = !1;
        return function() {
            return n || (n = !0, i = e.apply(t, arguments)), i
        }
    }
    i.d(t, "a", (function() {
        return n
    }))
}, function(e, t, i) {
    var n = i(276),
        r = i(277),
        o = i(182),
        s = i(278);
    e.exports = function(e, t) {
        return n(e) || r(e, t) || o(e, t) || s()
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    "use strict";
    i.d(t, "e", (function() {
        return r
    })), i.d(t, "d", (function() {
        return s
    })), i.d(t, "a", (function() {
        return a
    })), i.d(t, "c", (function() {
        return l
    })), i.d(t, "b", (function() {
        return d
    }));
    var n = i(31);

    function r(e, t) {
        if (0 === e) return null;
        var i = (65535 & e) >>> 0;
        return new a(0 != (e = (4294901760 & e) >>> 16) ? [o(i, t), o(e, t)] : [o(i, t)])
    }

    function o(e, t) {
        var i = !!(2048 & e),
            n = !!(256 & e);
        return new s(2 === t ? n : i, !!(1024 & e), !!(512 & e), n = 2 === t ? i : n, e = 255 & e)
    }
    class s {
        constructor(e, t, i, n, r) {
            this.ctrlKey = e, this.shiftKey = t, this.altKey = i, this.metaKey = n, this.keyCode = r
        }
        equals(e) {
            return this.ctrlKey === e.ctrlKey && this.shiftKey === e.shiftKey && this.altKey === e.altKey && this.metaKey === e.metaKey && this.keyCode === e.keyCode
        }
        isModifierKey() {
            return 0 === this.keyCode || 5 === this.keyCode || 57 === this.keyCode || 6 === this.keyCode || 4 === this.keyCode
        }
        toChord() {
            return new a([this])
        }
        isDuplicateModifierCase() {
            return this.ctrlKey && 5 === this.keyCode || this.shiftKey && 4 === this.keyCode || this.altKey && 6 === this.keyCode || this.metaKey && 57 === this.keyCode
        }
    }
    class a {
        constructor(e) {
            if (0 === e.length) throw Object(n.c)("parts");
            this.parts = e
        }
    }
    class l {
        constructor(e, t, i, n, r, o) {
            this.ctrlKey = e, this.shiftKey = t, this.altKey = i, this.metaKey = n, this.keyLabel = r, this.keyAriaLabel = o
        }
    }
    class d {}
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(5);
    class r {
        static insert(e, t) {
            return {
                range: new n.a(e.lineNumber, e.column, e.lineNumber, e.column),
                text: t,
                forceMoveMarkers: !0
            }
        }
        static delete(e) {
            return {
                range: e,
                text: null
            }
        }
        static replace(e, t) {
            return {
                range: e,
                text: t
            }
        }
        static replaceMove(e, t) {
            return {
                range: e,
                text: t,
                forceMoveMarkers: !0
            }
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return r
    })), i.d(t, "c", (function() {
        return o
    }));
    const n = {
        RESOURCES: "ResourceURLs",
        DOWNLOAD_URL: "DownloadURL",
        FILES: "Files",
        TEXT: i(98).a.text,
        TERMINALS: "Terminals"
    };
    class r {
        constructor(e) {
            this.data = e
        }
        update() {}
        getData() {
            return this.data
        }
    }
    const o = {
        CurrentDragAndDropData: void 0
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "d", (function() {
        return s
    })), i.d(t, "c", (function() {
        return _
    })), i.d(t, "a", (function() {
        return n
    })), i.d(t, "b", (function() {
        return I
    }));
    t = i(73);
    var n, r = i(6);

    function o(...e) {
        return function(t, i) {
            for (let r = 0, o = e.length; r < o; r++) {
                var n = e[r](t, i);
                if (n) return n
            }
            return null
        }
    }
    const s = function(e, t, i) {
        if (!i || i.length < t.length) return null;
        let n;
        return n = e ? r.R(i, t) : 0 === i.indexOf(t), n ? 0 < t.length ? [{
            start: 0,
            end: t.length
        }] : [] : null
    }.bind(void 0, !0);

    function a(e) {
        return 97 <= e && e <= 122
    }

    function l(e) {
        return 65 <= e && e <= 90
    }

    function d(e) {
        return 48 <= e && e <= 57
    }

    function c(e) {
        return 32 === e || 9 === e || 10 === e || 13 === e
    }
    const h = new Set;

    function u(e) {
        return a(e) || l(e) || d(e)
    }

    function p(e, t) {
        return 0 === t.length ? t = [e] : e.end === t[0].start ? t[0].start = e.start : t.unshift(e), t
    }

    function g(e, t) {
        for (let n = t; n < e.length; n++) {
            var i = e.charCodeAt(n);
            if (l(i) || d(i) || 0 < n && !u(e.charCodeAt(n - 1))) return n
        }
        return e.length
    }

    function f(e, t) {
        if (!t) return null;
        if (0 === (t = t.trim()).length) return null;
        if (! function(e) {
                let t, i = 0,
                    n = 0,
                    r = 0;
                for (let o = 0; o < e.length; o++) l(t = e.charCodeAt(o)) && i++, a(t) && n++, c(t) && r++;
                return 0 !== i && 0 !== n || 0 !== r ? i <= 5 : e.length <= 30
            }(e)) return null;
        if (60 < t.length) return null;
        var i = function(e) {
            let t, i = 0,
                n = 0,
                r = 0,
                o = 0;
            for (let s = 0; s < e.length; s++) l(t = e.charCodeAt(s)) && i++, a(t) && n++, u(t) && r++, d(t) && o++;
            return {
                upperPercent: i / e.length,
                lowerPercent: n / e.length,
                alphaPercent: r / e.length,
                numericPercent: o / e.length
            }
        }(t);
        if (! function(e) {
                var {
                    upperPercent: t,
                    lowerPercent: i,
                    alphaPercent: n,
                    numericPercent: e
                } = e;
                return .2 < i && t < .8 && .6 < n && e < .2
            }(i)) {
            if (! function(e) {
                    var {
                        upperPercent: t,
                        lowerPercent: e
                    } = e;
                    return 0 === e && .6 < t
                }(i)) return null;
            t = t.toLowerCase()
        }
        let n = null,
            r = 0;
        for (e = e.toLowerCase(); r < t.length && null === (n = function e(t, i, n, r) {
                if (n === t.length) return [];
                if (r === i.length) return null;
                if (t[n] !== i[r].toLowerCase()) return null; {
                    let o = null,
                        s = r + 1;
                    for (o = e(t, i, n + 1, r + 1); !o && (s = g(i, s)) < i.length;) o = e(t, i, n + 1, s), s++;
                    return null === o ? null : p({
                        start: r,
                        end: r + 1
                    }, o)
                }
            }(e, t, 0, r));) r = g(t, r + 1);
        return n
    }
    "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?".split("").forEach(e => h.add(e.charCodeAt(0)));
    const m = o(s, f, (function(e, t) {
            return -1 === (t = t.toLowerCase().indexOf(e.toLowerCase())) ? null : [{
                start: t,
                end: t + e.length
            }]
        })),
        v = o(s, f, (function(e, t) {
            return function e(t, i, n, r) {
                if (n === t.length) return [];
                if (r === i.length) return null;
                if (t[n] !== i[r]) return e(t, i, n, r + 1); {
                    let o = null;
                    return (o = e(t, i, n + 1, r + 1)) ? p({
                        start: r,
                        end: r + 1
                    }, o) : null
                }
            }(e.toLowerCase(), t.toLowerCase(), 0, 0)
        })),
        b = new t.a(1e4);

    function _(e, t, i = !1) {
        if ("string" != typeof e || "string" != typeof t) return null;
        let n = b.get(e);
        n || (n = new RegExp(r.p(e), "i"), b.set(e, n));
        var o = n.exec(t);
        return o ? [{
            start: o.index,
            end: o.index + o[0].length
        }] : (i ? v : m)(e, t)
    }
    const w = 128;

    function y() {
        const e = [],
            t = [];
        for (let e = 0; e <= w; e++) t[e] = 0;
        for (let i = 0; i <= w; i++) e.push(t.slice(0));
        return e
    }

    function C(e) {
        const t = [];
        for (let i = 0; i <= e; i++) t[i] = 0;
        return t
    }
    const x = C(256),
        S = C(256),
        k = y(),
        L = y(),
        O = y();

    function E(e, t) {
        if (t < 0 || t >= e.length) return !1;
        var i = e.codePointAt(t);
        switch (i) {
            case 95:
            case 45:
            case 46:
            case 32:
            case 47:
            case 92:
            case 39:
            case 34:
            case 58:
            case 36:
            case 60:
            case 40:
            case 91:
                return !0;
            case void 0:
                return !1;
            default:
                return !!r.B(i)
        }
    }

    function N(e, t) {
        if (t < 0 || t >= e.length) return !1;
        switch (e.charCodeAt(t)) {
            case 32:
            case 9:
                return !0;
            default:
                return !1
        }
    }

    function D(e, t, i) {
        return t[e] !== i[e]
    }

    function I(e, t, i, n, r, o, s) {
        var a = e.length > w ? w : e.length,
            l = n.length > w ? w : n.length;
        if (!(a <= i || l <= o || l - o < a - i) && function(e, t, i, n, r, o, s) {
                for (; t < i && r < o;) e[t] === n[r] && (x[t] = r, t += 1), r += 1;
                return t === i
            }(t, i, a, r, o, l)) {
            ! function(e, t, i, n, r, o) {
                let s = e - 1,
                    a = t - 1;
                for (; s >= i && a >= n;) r[s] === o[a] && (S[s] = a, s--), a--
            }(a, l, i, o, t, r);
            let b = 1,
                _ = 1,
                w = i,
                y = o;
            var d = [!1];
            for (b = 1, w = i; w < a; b++, w++) {
                var c = x[w],
                    h = S[w],
                    u = w + 1 < a ? S[w + 1] : l;
                for (_ = c - o + 1, y = c; y < u; _++, y++) {
                    let s = Number.MIN_SAFE_INTEGER,
                        a = !1;
                    y <= h && (s = function(e, t, i, n, r, o, s, a, l, d, c) {
                        if (t[i] !== o[s]) return Number.MIN_SAFE_INTEGER;
                        let h = 1,
                            u = !1;
                        return s === i - n ? h = e[i] === r[s] ? 7 : 5 : !D(s, r, o) || 0 !== s && D(s - 1, r, o) ? !E(o, s) || 0 !== s && E(o, s - 1) ? (E(o, s - 1) || N(o, s - 1)) && (h = 5, u = !0) : h = 5 : (h = e[i] === r[s] ? 7 : 5, u = !0), 1 < h && i === n && (c[0] = !0), u = u || D(s, r, o) || E(o, s - 1) || N(o, s - 1), i === n ? l < s && (h -= u ? 3 : 5) : h += d ? u ? 2 : 0 : u ? 0 : 1, s + 1 === a && (h -= u ? 3 : 5), h
                    }(e, t, w, i, n, r, y, l, o, 0 === k[b - 1][_ - 1], d));
                    let u = 0;
                    s !== Number.MAX_SAFE_INTEGER && (a = !0, u = s + L[b - 1][_ - 1]);
                    var p = y > c,
                        g = p ? L[b][_ - 1] + (0 < k[b][_ - 1] ? -5 : 0) : 0,
                        f = y > c + 1 && 0 < k[b][_ - 1],
                        m = f ? L[b][_ - 2] + (0 < k[b][_ - 2] ? -5 : 0) : 0;
                    if (f && (!p || g <= m) && (!a || m >= u)) L[b][_] = m, O[b][_] = 3, k[b][_] = 0;
                    else if (p && (!a || g >= u)) L[b][_] = g, O[b][_] = 2, k[b][_] = 0;
                    else {
                        if (!a) throw new Error("not possible");
                        L[b][_] = u, O[b][_] = 1, k[b][_] = k[b - 1][_ - 1] + 1
                    }
                }
            }
            if (d[0] || s) {
                b--, _--;
                const e = [L[b][_], o];
                let d = 0,
                    c = 0;
                for (; 1 <= b;) {
                    let s = _;
                    do {
                        var v = O[b][s];
                        if (3 === v) s -= 2;
                        else {
                            if (2 !== v) break;
                            s -= 1
                        }
                    } while (1 <= s);
                    1 < d && t[i + b - 1] === r[o + _ - 1] && !D(s + o - 1, n, r) && d + 1 > k[b][s] && (s = _), s === _ ? d++ : d = 1, c = c || s, b--, _ = s - 1, e.push(_)
                }
                return l === a && (e[0] += 2), s = c - a, e[0] -= s, e
            }
        }
    }(t = n = n || {}).Default = [-100, 0], t.isDefault = function(e) {
        return !e || 2 === e.length && -100 === e[0] && 0 === e[1]
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "c", (function() {
        return c
    })), i.d(t, "d", (function() {
        return h
    })), i.d(t, "a", (function() {
        return u
    })), i.d(t, "b", (function() {
        return p
    }));
    var n = i(6),
        r = i(9),
        o = i(59);
    let s, a, l;

    function d() {
        return s = s || new TextDecoder("UTF-16LE"), s
    }

    function c() {
        return l = l || (r.e() ? d() : (a = a || new TextDecoder("UTF-16BE"), a)), l
    }
    const h = "undefined" != typeof TextDecoder;
    let u, p;

    function g(e, t, i) {
        let n = [],
            r = 0;
        for (let a = 0; a < i; a++) {
            var s = o.b(e, t);
            t += 2, n[r++] = String.fromCharCode(s)
        }
        return n.join("")
    }
    p = h ? (u = e => new f(e), function(e, t, i) {
        var n = new Uint16Array(e.buffer, t, i);
        return 0 < i && (65279 === n[0] || 65534 === n[0]) ? g(e, t, i) : d().decode(n)
    }) : (u = e => new m, g);
    class f {
        constructor(e) {
            this._capacity = 0 | e, this._buffer = new Uint16Array(this._capacity), this._completedStrings = null, this._bufferLength = 0
        }
        reset() {
            this._completedStrings = null, this._bufferLength = 0
        }
        build() {
            return null !== this._completedStrings ? (this._flushBuffer(), this._completedStrings.join("")) : this._buildBuffer()
        }
        _buildBuffer() {
            if (0 === this._bufferLength) return "";
            var e = new Uint16Array(this._buffer.buffer, 0, this._bufferLength);
            return c().decode(e)
        }
        _flushBuffer() {
            var e = this._buildBuffer();
            this._bufferLength = 0, null === this._completedStrings ? this._completedStrings = [e] : this._completedStrings[this._completedStrings.length] = e
        }
        write1(e) {
            var t = this._capacity - this._bufferLength;
            t <= 1 && (0 != t && !n.E(e) || this._flushBuffer()), this._buffer[this._bufferLength++] = e
        }
        appendASCII(e) {
            this._bufferLength === this._capacity && this._flushBuffer(), this._buffer[this._bufferLength++] = e
        }
        appendASCIIString(e) {
            var t = e.length;
            if (this._bufferLength + t >= this._capacity) return this._flushBuffer(), void(this._completedStrings[this._completedStrings.length] = e);
            for (let i = 0; i < t; i++) this._buffer[this._bufferLength++] = e.charCodeAt(i)
        }
    }
    class m {
        constructor() {
            this._pieces = [], this._piecesLen = 0
        }
        reset() {
            this._pieces = [], this._piecesLen = 0
        }
        build() {
            return this._pieces.join("")
        }
        write1(e) {
            this._pieces[this._piecesLen++] = String.fromCharCode(e)
        }
        appendASCII(e) {
            this._pieces[this._piecesLen++] = String.fromCharCode(e)
        }
        appendASCIIString(e) {
            this._pieces[this._piecesLen++] = e
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return jg
    })), i.d(t, "b", (function() {
        return Bg
    })), i.d(t, "c", (function() {
        return Vg
    })), i.d(t, "f", (function() {
        return Wg
    })), i.d(t, "g", (function() {
        return zg
    })), i.d(t, "d", (function() {
        return Hg
    })), i.d(t, "e", (function() {
        return Ug
    })), i.d(t, "h", (function() {
        return Kg
    })), i.d(t, "i", (function() {
        return $g
    })), i.d(t, "j", (function() {
        return qg
    }));
    var n = i(29),
        r = i(136),
        o = (i(386), i(67)),
        s = i(1),
        a = i(51),
        l = i(79),
        d = i(73),
        c = i(59),
        h = i(39);

    function u(e) {
        return function e(t, i = 0) {
            if (!t || 200 < i) return t;
            if ("object" == typeof t) {
                switch (t.$mid) {
                    case 1:
                        return h.a.revive(t);
                    case 2:
                        return new RegExp(t.source, t.flags)
                }
                if (t instanceof c.a || t instanceof Uint8Array) return t;
                if (Array.isArray(t))
                    for (let n = 0; n < t.length; ++n) t[n] = e(t[n], i + 1);
                else
                    for (const n in t) Object.hasOwnProperty.call(t, n) && (t[n] = e(t[n], i + 1))
            }
            return t
        }(JSON.parse(e))
    }
    var p, g = i(54),
        f = i(140),
        m = i(46);
    (ae = p = p || {})[ae.API = 0] = "API", ae[ae.USER = 1] = "USER";
    var v = i(4),
        b = i(6),
        _ = i(26),
        w = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    const y = Object(_.c)("openerService");

    function C(e, t) {
        return h.a.isUri(e) ? Object(b.r)(e.scheme, t) : Object(b.R)(e, t + ":")
    }
    Object.freeze({
        _serviceBrand: void 0,
        registerOpener: () => v.a.None,
        registerValidator: () => v.a.None,
        registerExternalUriResolver: () => v.a.None,
        setDefaultExternalOpener() {},
        registerExternalOpener: () => v.a.None,
        open() {
            return w(this, void 0, void 0, (function*() {
                return !1
            }))
        },
        resolveExternalUri(e) {
            return w(this, void 0, void 0, (function*() {
                return {
                    resolved: e,
                    dispose() {}
                }
            }))
        }
    });
    var x = function(e, t, i, n) {
            var r, o = arguments.length,
                s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
            if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
            else
                for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
            return 3 < o && s && Object.defineProperty(t, i, s), s
        },
        S = function(e, t) {
            return function(i, n) {
                t(i, n, e)
            }
        },
        k = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    let L = class {
        constructor(e) {
            this._commandService = e
        }
        open(e, t) {
            return k(this, void 0, void 0, (function*() {
                if (!C(e, g.c.command)) return !1;
                if (null == t || !t.allowCommands) return !0;
                "string" == typeof e && (e = h.a.parse(e));
                let i = [];
                try {
                    i = u(decodeURIComponent(e.query))
                } catch (t) {
                    try {
                        i = u(e.query)
                    } catch (e) {}
                }
                return Array.isArray(i) || (i = [i]), yield this._commandService.executeCommand(e.path, ...i), !0
            }))
        }
    };
    L = x([S(0, m.b)], L);
    let O = class {
        constructor(e) {
            this._editorService = e
        }
        open(e, t) {
            return k(this, void 0, void 0, (function*() {
                "string" == typeof e && (e = h.a.parse(e));
                let i = void 0;
                var n = /^L?(\d+)(?:,(\d+))?/.exec(e.fragment);
                return n && (i = {
                    startLineNumber: parseInt(n[1]),
                    startColumn: n[2] ? parseInt(n[2]) : 1
                }, e = e.with({
                    fragment: ""
                })), e.scheme === g.c.file && (e = Object(f.c)(e)), yield this._editorService.openCodeEditor({
                    resource: e,
                    options: Object.assign({
                        selection: i,
                        context: null != t && t.fromUserGesture ? p.USER : p.API
                    }, null == t ? void 0 : t.editorOptions)
                }, this._editorService.getFocusedCodeEditor(), null == t ? void 0 : t.openToSide), !0
            }))
        }
    };
    O = x([S(0, o.a)], O);
    let E = class {
        constructor(e, t) {
            this._openers = new l.a, this._validators = new l.a, this._resolvers = new l.a, this._resolvedUriTargets = new d.b(e => e.with({
                path: null,
                fragment: null,
                query: null
            }).toString()), this._externalOpeners = new l.a, this._defaultExternalOpener = {
                openExternal: e => k(this, void 0, void 0, (function*() {
                    return C(e, g.c.http) || C(e, g.c.https) ? s.U(e) : window.location.href = e, !0
                }))
            }, this._openers.push({
                open: (e, t) => k(this, void 0, void 0, (function*() {
                    return !!(null != t && t.openExternal || C(e, g.c.mailto) || C(e, g.c.http) || C(e, g.c.https)) && (yield this._doOpenExternal(e, t), !0)
                }))
            }), this._openers.push(new L(t)), this._openers.push(new O(e))
        }
        registerOpener(e) {
            return {
                dispose: this._openers.unshift(e)
            }
        }
        registerValidator(e) {
            return {
                dispose: this._validators.push(e)
            }
        }
        registerExternalUriResolver(e) {
            return {
                dispose: this._resolvers.push(e)
            }
        }
        setDefaultExternalOpener(e) {
            this._defaultExternalOpener = e
        }
        registerExternalOpener(e) {
            return {
                dispose: this._externalOpeners.push(e)
            }
        }
        open(e, t) {
            var i;
            return k(this, void 0, void 0, (function*() {
                var n = "string" == typeof e ? h.a.parse(e) : e,
                    r = null !== (i = this._resolvedUriTargets.get(n)) && void 0 !== i ? i : e;
                for (const e of this._validators)
                    if (!(yield e.shouldOpen(r))) return !1;
                for (const i of this._openers)
                    if (yield i.open(e, t)) return !0;
                return !1
            }))
        }
        resolveExternalUri(e, t) {
            return k(this, void 0, void 0, (function*() {
                for (const n of this._resolvers) try {
                    var i = yield n.resolveExternalUri(e, t);
                    if (i) return this._resolvedUriTargets.has(i.resolved) || this._resolvedUriTargets.set(i.resolved, e), i
                } catch (i) {}
                throw new Error("Could not resolve external URI: " + e.toString())
            }))
        }
        _doOpenExternal(e, t) {
            return k(this, void 0, void 0, (function*() {
                const i = "string" == typeof e ? h.a.parse(e) : e;
                let n, r;
                try {
                    n = (yield this.resolveExternalUri(i, t)).resolved
                } catch (r) {
                    n = i
                }
                if (r = "string" == typeof e && i.toString() === n.toString() ? e : encodeURI(n.toString(!0)), null != t && t.allowContributedOpeners) {
                    var o = "string" != typeof(null == t ? void 0 : t.allowContributedOpeners) || null == t ? void 0 : t.allowContributedOpeners;
                    for (const e of this._externalOpeners)
                        if (yield e.openExternal(r, {
                                sourceUri: i,
                                preferredOpenerId: o
                            }, a.a.None)) return !0
                }
                return this._defaultExternalOpener.openExternal(r, {
                    sourceUri: i
                }, a.a.None)
            }))
        }
        dispose() {
            this._validators.clear()
        }
    };
    E = x([S(0, o.a), S(1, m.b)], E);
    var N = i(155),
        D = i(2),
        I = i(47),
        T = i(5);
    const M = {
        followsCaret: !0,
        ignoreCharChanges: !0,
        alwaysRevealFirst: !0
    };
    class P extends v.a {
        constructor(e, t = {}) {
            super(), this._onDidUpdate = this._register(new D.b), this._editor = e, this._options = I.e(t, M, !1), this.disposed = !1, this.nextIdx = -1, this.ranges = [], this.ignoreSelectionChange = !1, this.revealFirst = Boolean(this._options.alwaysRevealFirst), this._register(this._editor.onDidDispose(() => this.dispose())), this._register(this._editor.onDidUpdateDiff(() => this._onDiffUpdated())), this._options.followsCaret && this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition(e => {
                this.ignoreSelectionChange || (this.nextIdx = -1)
            })), this._options.alwaysRevealFirst && this._register(this._editor.getModifiedEditor().onDidChangeModel(e => {
                this.revealFirst = !0
            })), this._init()
        }
        _init() {
            this._editor.getLineChanges()
        }
        _onDiffUpdated() {
            this._init(), this._compute(this._editor.getLineChanges()), this.revealFirst && null !== this._editor.getLineChanges() && (this.revealFirst = !1, this.nextIdx = -1, this.next(1))
        }
        _compute(e) {
            this.ranges = [], e && e.forEach(e => {
                !this._options.ignoreCharChanges && e.charChanges ? e.charChanges.forEach(e => {
                    this.ranges.push({
                        rhs: !0,
                        range: new T.a(e.modifiedStartLineNumber, e.modifiedStartColumn, e.modifiedEndLineNumber, e.modifiedEndColumn)
                    })
                }) : 0 === e.modifiedEndLineNumber ? this.ranges.push({
                    rhs: !0,
                    range: new T.a(e.modifiedStartLineNumber, 1, e.modifiedStartLineNumber + 1, 1)
                }) : this.ranges.push({
                    rhs: !0,
                    range: new T.a(e.modifiedStartLineNumber, 1, e.modifiedEndLineNumber + 1, 1)
                })
            }), this.ranges.sort((e, t) => T.a.compareRangesUsingStarts(e.range, t.range)), this._onDidUpdate.fire(this)
        }
        _initIdx(e) {
            let t = !1,
                i = this._editor.getPosition();
            if (i) {
                for (let n = 0, r = this.ranges.length; n < r && !t; n++) {
                    let r = this.ranges[n].range;
                    i.isBeforeOrEqual(r.getStartPosition()) && (this.nextIdx = n + (e ? 0 : -1), t = !0)
                }
                t || (this.nextIdx = e ? 0 : this.ranges.length - 1), this.nextIdx < 0 && (this.nextIdx = this.ranges.length - 1)
            } else this.nextIdx = 0
        }
        _move(e, t) {
            if (N.a(!this.disposed, "Illegal State - diff navigator has been disposed"), this.canNavigate()) {
                -1 === this.nextIdx ? this._initIdx(e) : e ? (this.nextIdx += 1, this.nextIdx >= this.ranges.length && (this.nextIdx = 0)) : (--this.nextIdx, this.nextIdx < 0 && (this.nextIdx = this.ranges.length - 1));
                let n = this.ranges[this.nextIdx];
                this.ignoreSelectionChange = !0;
                try {
                    var i = n.range.getStartPosition();
                    this._editor.setPosition(i), this._editor.revealRangeInCenter(n.range, t)
                } finally {
                    this.ignoreSelectionChange = !1
                }
            }
        }
        canNavigate() {
            return this.ranges && 0 < this.ranges.length
        }
        next(e = 0) {
            this._move(!0, e)
        }
        previous(e = 0) {
            this._move(!1, e)
        }
        dispose() {
            super.dispose(), this.ranges = [], this.disposed = !0
        }
    }
    var A = i(9);
    const R = new class {
            constructor() {
                this._zoomLevel = 0, this._onDidChangeZoomLevel = new D.b, this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event
            }
            getZoomLevel() {
                return this._zoomLevel
            }
            setZoomLevel(e) {
                e = Math.min(Math.max(-5, e), 20), this._zoomLevel !== e && (this._zoomLevel = e, this._onDidChangeZoomLevel.fire(this._zoomLevel))
            }
        },
        F = A.f ? 1.5 : 1.35;
    class j {
        constructor(e) {
            this._bareFontInfoBrand = void 0, this.zoomLevel = e.zoomLevel, this.pixelRatio = e.pixelRatio, this.fontFamily = String(e.fontFamily), this.fontWeight = String(e.fontWeight), this.fontSize = e.fontSize, this.fontFeatureSettings = e.fontFeatureSettings, this.lineHeight = 0 | e.lineHeight, this.letterSpacing = e.letterSpacing
        }
        static createFromValidatedSettings(e, t, i, n) {
            var r = e.get(42),
                o = e.get(46),
                s = e.get(45),
                a = e.get(44),
                l = e.get(58);
            e = e.get(55);
            return j._create(r, o, s, a, l, e, t, i, n)
        }
        static _create(e, t, i, n, r, o, s, a, l) {
            return 0 === r ? r = F * i : r < 8 && (r *= i), (r = Math.round(r)) < 8 && (r = 8), l = 1 + (l ? 0 : .1 * R.getZoomLevel()), new j({
                zoomLevel: s,
                pixelRatio: a,
                fontFamily: e,
                fontWeight: t,
                fontSize: i *= l,
                fontFeatureSettings: n,
                lineHeight: r *= l,
                letterSpacing: o
            })
        }
        getId() {
            return this.zoomLevel + "-" + this.pixelRatio + "-" + this.fontFamily + "-" + this.fontWeight + "-" + this.fontSize + "-" + this.fontFeatureSettings + "-" + this.lineHeight + "-" + this.letterSpacing
        }
        getMassagedFontFamily(e) {
            var t = j._wrapInQuotes(this.fontFamily);
            return e && this.fontFamily !== e ? `${t}, ${e}` : t
        }
        static _wrapInQuotes(e) {
            return !/[,"']/.test(e) && /[+ ]/.test(e) ? `"${e}"` : e
        }
    }
    class B extends j {
        constructor(e, t) {
            super(e), this._editorStylingBrand = void 0, this.version = 1, this.isTrusted = t, this.isMonospace = e.isMonospace, this.typicalHalfwidthCharacterWidth = e.typicalHalfwidthCharacterWidth, this.typicalFullwidthCharacterWidth = e.typicalFullwidthCharacterWidth, this.canUseHalfwidthRightwardsArrow = e.canUseHalfwidthRightwardsArrow, this.spaceWidth = e.spaceWidth, this.middotWidth = e.middotWidth, this.wsmiddotWidth = e.wsmiddotWidth, this.maxDigitWidth = e.maxDigitWidth
        }
        equals(e) {
            return this.fontFamily === e.fontFamily && this.fontWeight === e.fontWeight && this.fontSize === e.fontSize && this.fontFeatureSettings === e.fontFeatureSettings && this.lineHeight === e.lineHeight && this.letterSpacing === e.letterSpacing && this.typicalHalfwidthCharacterWidth === e.typicalHalfwidthCharacterWidth && this.typicalFullwidthCharacterWidth === e.typicalFullwidthCharacterWidth && this.canUseHalfwidthRightwardsArrow === e.canUseHalfwidthRightwardsArrow && this.spaceWidth === e.spaceWidth && this.middotWidth === e.middotWidth && this.wsmiddotWidth === e.wsmiddotWidth && this.maxDigitWidth === e.maxDigitWidth
        }
    }
    const V = {
        ICodeEditor: "vs.editor.ICodeEditor",
        IDiffEditor: "vs.editor.IDiffEditor"
    };
    var W = i(44),
        z = i(15),
        H = i(83);
    const U = Object(_.c)("editorWorkerService");
    var K = i(97),
        $ = i(114),
        q = i(32),
        G = i(129);
    const Y = null === (gi = window.trustedTypes) || void 0 === gi ? void 0 : gi.createPolicy("defaultWorkerFactory", {
        createScriptURL: e => e
    });
    class Z {
        constructor(e, t, i, n, r) {
            this.id = t, "function" == typeof(i = function(e, t) {
                if (A.b.MonacoEnvironment) {
                    if ("function" == typeof A.b.MonacoEnvironment.getWorker) return A.b.MonacoEnvironment.getWorker(e, t);
                    if ("function" == typeof A.b.MonacoEnvironment.getWorkerUrl) return e = A.b.MonacoEnvironment.getWorkerUrl(e, t), new Worker(Y ? Y.createScriptURL(e) : e, {
                        name: t
                    })
                }
                throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")
            }("workerMain.js", i)).then ? this.worker = i : this.worker = Promise.resolve(i), this.postMessage(e, []), this.worker.then(e => {
                e.onmessage = function(e) {
                    n(e.data)
                }, e.onmessageerror = r, "function" == typeof e.addEventListener && e.addEventListener("error", r)
            })
        }
        getId() {
            return this.id
        }
        postMessage(e, t) {
            this.worker && this.worker.then(i => i.postMessage(e, t))
        }
        dispose() {
            this.worker && this.worker.then(e => e.terminate()), this.worker = null
        }
    }
    class X {
        constructor(e) {
            this._label = e, this._webWorkerFailedBeforeError = !1
        }
        create(e, t, i) {
            var n = ++X.LAST_WORKER_ID;
            if (this._webWorkerFailedBeforeError) throw this._webWorkerFailedBeforeError;
            return new Z(e, n, this._label || "anonymous" + n, t, e => {
                Object(G.c)(e), this._webWorkerFailedBeforeError = e, i(e)
            })
        }
    }
    X.LAST_WORKER_ID = 0;
    var Q = i(57),
        J = i(149),
        ee = i(78);
    const te = Object(_.c)("textResource配置Service"),
        ie = Object(_.c)("textResourcePropertiesService");
    var ne = i(28),
        re = i(95),
        oe = i(90),
        se = i(31),
        ae = (t = function(e, t, i, n) {
            var r, o = arguments.length,
                s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
            if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
            else
                for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
            return 3 < o && s && Object.defineProperty(t, i, s), s
        }, function(e, t) {
            return function(i, n) {
                t(i, n, e)
            }
        }),
        le = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };

    function de(e, t) {
        let i = e.getModel(t);
        return !!i && !i.isTooLargeForSyncing()
    }
    let ce = class extends v.a {
        constructor(e, t, i) {
            super(), this._modelService = e, this._workerManager = this._register(new ue(this._modelService)), this._logService = i, this._register(z.s.register({
                language: "*",
                hasAccessToAllModels: !0
            }, {
                provideLinks: (e, t) => de(this._modelService, e.uri) ? this._workerManager.withWorker().then(t => t.computeLinks(e.uri)).then(e => e && {
                    links: e
                }) : Promise.resolve({
                    links: []
                })
            })), this._register(z.d.register("*", new he(this._workerManager, t, this._modelService)))
        }
        dispose() {
            super.dispose()
        }
        computeDiff(e, t, i, n) {
            return this._workerManager.withWorker().then(r => r.computeDiff(e, t, i, n))
        }
        computeMoreMinimalEdits(e, t) {
            if (Object(ne.l)(t)) {
                if (!de(this._modelService, e)) return Promise.resolve(t);
                const i = oe.a.create(!0),
                    n = this._workerManager.withWorker().then(i => i.computeMoreMinimalEdits(e, t));
                return n.finally(() => this._logService.trace("FORMAT#computeMoreMinimalEdits", e.toString(!0), i.elapsed())), Promise.race([n, Object(q.k)(1e3).then(() => t)])
            }
            return Promise.resolve(void 0)
        }
        canNavigateValueSet(e) {
            return de(this._modelService, e)
        }
        navigateValueSet(e, t, i) {
            return this._workerManager.withWorker().then(n => n.navigateValueSet(e, t, i))
        }
        canComputeWordRanges(e) {
            return de(this._modelService, e)
        }
        computeWordRanges(e, t) {
            return this._workerManager.withWorker().then(i => i.computeWordRanges(e, t))
        }
    };
    ce = t([ae(0, ee.a), ae(1, te), ae(2, re.b)], ce);
    class he {
        constructor(e, t, i) {
            this._debugDisplayName = "wordbasedCompletions", this._workerManager = e, this._configurationService = t, this._modelService = i
        }
        provideCompletionItems(e, t) {
            return le(this, void 0, void 0, (function*() {
                var i = this._configurationService.getValue(e.uri, t, "editor");
                if (i.wordBasedSuggestions) {
                    const o = [];
                    if ("currentDocument" === i.wordBasedSuggestionsMode) de(this._modelService, e.uri) && o.push(e.uri);
                    else
                        for (const t of this._modelService.getModels()) de(this._modelService, t.uri) && (t === e ? o.unshift(t.uri) : "allDocuments" !== i.wordBasedSuggestionsMode && t.getLanguageId() !== e.getLanguageId() || o.push(t.uri));
                    if (0 !== o.length) {
                        var n = Q.b.getWordDefinition(e.getLanguageId()),
                            r = e.getWordAtPosition(t);
                        const i = r ? new T.a(t.lineNumber, r.startColumn, t.lineNumber, r.endColumn) : T.a.fromPositions(t),
                            s = i.setEndPosition(t.lineNumber, t.column),
                            a = yield this._workerManager.withWorker(), l = yield a.textualSuggest(o, null == r ? void 0 : r.word, n);
                        if (l) return {
                            duration: l.duration,
                            suggestions: l.words.map(e => ({
                                kind: 18,
                                label: e,
                                insertText: e,
                                range: {
                                    insert: s,
                                    replace: i
                                }
                            }))
                        }
                    }
                }
            }))
        }
    }
    class ue extends v.a {
        constructor(e) {
            super(), this._modelService = e, this._editorWorkerClient = null, this._lastWorkerUsedTime = (new Date).getTime(), this._register(new q.c).cancelAndSet(() => this._checkStopIdleWorker(), Math.round(15e4)), this._register(this._modelService.onModelRemoved(e => this._checkStopEmptyWorker()))
        }
        dispose() {
            this._editorWorkerClient && (this._editorWorkerClient.dispose(), this._editorWorkerClient = null), super.dispose()
        }
        _checkStopEmptyWorker() {
            this._editorWorkerClient && 0 === this._modelService.getModels().length && (this._editorWorkerClient.dispose(), this._editorWorkerClient = null)
        }
        _checkStopIdleWorker() {
            this._editorWorkerClient && 3e5 < (new Date).getTime() - this._lastWorkerUsedTime && (this._editorWorkerClient.dispose(), this._editorWorkerClient = null)
        }
        withWorker() {
            return this._lastWorkerUsedTime = (new Date).getTime(), this._editorWorkerClient || (this._editorWorkerClient = new me(this._modelService, !1, "editorWorkerService")), Promise.resolve(this._editorWorkerClient)
        }
    }
    class pe extends v.a {
        constructor(e, t, i) {
            if (super(), this._syncedModels = Object.create(null), this._syncedModelsLastUsedTime = Object.create(null), this._proxy = e, this._modelService = t, !i) {
                let e = new q.c;
                e.cancelAndSet(() => this._checkStopModelSync(), Math.round(3e4)), this._register(e)
            }
        }
        dispose() {
            for (var e in this._syncedModels) Object(v.f)(this._syncedModels[e]);
            this._syncedModels = Object.create(null), this._syncedModelsLastUsedTime = Object.create(null), super.dispose()
        }
        ensureSyncedResources(e, t) {
            for (const n of e) {
                var i = n.toString();
                this._syncedModels[i] || this._beginModelSync(n, t), this._syncedModels[i] && (this._syncedModelsLastUsedTime[i] = (new Date).getTime())
            }
        }
        _checkStopModelSync() {
            var e, t = (new Date).getTime();
            let i = [];
            for (e in this._syncedModelsLastUsedTime) 6e4 < t - this._syncedModelsLastUsedTime[e] && i.push(e);
            for (const e of i) this._stopModelSync(e)
        }
        _beginModelSync(e, t) {
            let i = this._modelService.getModel(e);
            if (i && (t || !i.isTooLargeForSyncing())) {
                let t = e.toString();
                this._proxy.acceptNewModel({
                    url: i.uri.toString(),
                    lines: i.getLinesContent(),
                    EOL: i.getEOL(),
                    versionId: i.getVersionId()
                });
                const n = new v.b;
                n.add(i.onDidChangeContent(e => {
                    this._proxy.acceptModelChanged(t.toString(), e)
                })), n.add(i.onWillDispose(() => {
                    this._stopModelSync(t)
                })), n.add(Object(v.i)(() => {
                    this._proxy.acceptRemovedModel(t)
                })), this._syncedModels[t] = n
            }
        }
        _stopModelSync(e) {
            var t = this._syncedModels[e];
            delete this._syncedModels[e], delete this._syncedModelsLastUsedTime[e], Object(v.f)(t)
        }
    }
    class ge {
        constructor(e) {
            this._instance = e, this._proxyObj = Promise.resolve(this._instance)
        }
        dispose() {
            this._instance.dispose()
        }
        getProxyObject() {
            return this._proxyObj
        }
    }
    class fe {
        constructor(e) {
            this._workerClient = e
        }
        fhr(e, t) {
            return this._workerClient.fhr(e, t)
        }
    }
    class me extends v.a {
        constructor(e, t, i) {
            super(), this._disposed = !1, this._modelService = e, this._keepIdleModels = t, this._workerFactory = new X(i), this._worker = null, this._modelManager = null
        }
        fhr(e, t) {
            throw new Error("Not implemented!")
        }
        _getOrCreateWorker() {
            if (!this._worker) try {
                this._worker = this._register(new G.a(this._workerFactory, "vs/editor/common/services/editorSimpleWorker", new fe(this)))
            } catch (e) {
                Object(G.c)(e), this._worker = new ge(new J.a(new fe(this), null))
            }
            return this._worker
        }
        _getProxy() {
            return this._getOrCreateWorker().getProxyObject().then(void 0, e => (Object(G.c)(e), this._worker = new ge(new J.a(new fe(this), null)), this._getOrCreateWorker().getProxyObject()))
        }
        _getOrCreateModelManager(e) {
            return this._modelManager || (this._modelManager = this._register(new pe(e, this._modelService, this._keepIdleModels))), this._modelManager
        }
        _withSyncedResources(e, t = !1) {
            return le(this, void 0, void 0, (function*() {
                return this._disposed ? Promise.reject(Object(se.b)()) : this._getProxy().then(i => (this._getOrCreateModelManager(i).ensureSyncedResources(e, t), i))
            }))
        }
        computeDiff(e, t, i, n) {
            return this._withSyncedResources([e, t], !0).then(r => r.computeDiff(e.toString(), t.toString(), i, n))
        }
        computeMoreMinimalEdits(e, t) {
            return this._withSyncedResources([e]).then(i => i.computeMoreMinimalEdits(e.toString(), t))
        }
        computeLinks(e) {
            return this._withSyncedResources([e]).then(t => t.computeLinks(e.toString()))
        }
        textualSuggest(e, t, i) {
            return le(this, void 0, void 0, (function*() {
                const n = yield this._withSyncedResources(e);
                var r = i.source,
                    o = Object(b.M)(i);
                return n.textualSuggest(e.map(e => e.toString()), t, r, o)
            }))
        }
        computeWordRanges(e, t) {
            return this._withSyncedResources([e]).then(i => {
                let n = this._modelService.getModel(e);
                if (!n) return Promise.resolve(null);
                var r = (o = Q.b.getWordDefinition(n.getLanguageId())).source,
                    o = Object(b.M)(o);
                return i.computeWordRanges(e.toString(), t, r, o)
            })
        }
        navigateValueSet(e, t, i) {
            return this._withSyncedResources([e]).then(n => {
                let r = this._modelService.getModel(e);
                if (!r) return null;
                var o = (s = Q.b.getWordDefinition(r.getLanguageId())).source,
                    s = Object(b.M)(s);
                return n.navigateValueSet(e.toString(), t, i, o, s)
            })
        }
        dispose() {
            super.dispose(), this._disposed = !0
        }
    }
    var ve = i(17);
    class be extends me {
        constructor(e, t) {
            super(e, t.keepIdleModels || !1, t.label), this._foreignModuleId = t.moduleId, this._foreignModuleCreateData = t.createData || null, this._foreignModuleHost = t.host || null, this._foreignProxy = null
        }
        fhr(e, t) {
            if (!this._foreignModuleHost || "function" != typeof this._foreignModuleHost[e]) return Promise.reject(new Error("Missing method " + e + " or missing main thread foreign host."));
            try {
                return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost, t))
            } catch (e) {
                return Promise.reject(e)
            }
        }
        _getForeignProxy() {
            return this._foreignProxy || (this._foreignProxy = this._getProxy().then(e => {
                var t = this._foreignModuleHost ? ve.d(this._foreignModuleHost) : [];
                return e.loadForeignModule(this._foreignModuleId, this._foreignModuleCreateData, t).then(t => {
                    this._foreignModuleCreateData = null;
                    var i = (t, i) => e.fmr(t, i);
                    let n = {};
                    for (const e of t) n[e] = ((e, t) => function() {
                        var i = Array.prototype.slice.call(arguments, 0);
                        return t(e, i)
                    })(e, i);
                    return n
                })
            })), this._foreignProxy
        }
        getProxy() {
            return this._getForeignProxy()
        }
        withSyncedResources(e) {
            return this._withSyncedResources(e).then(e => this.getProxy())
        }
    }
    var _e = i(49),
        we = i(85),
        ye = i(110);
    class Ce {
        constructor(e, t, i, n) {
            this.startColumn = e, this.endColumn = t, this.className = i, this.type = n, this._lineDecorationBrand = void 0
        }
        static _equals(e, t) {
            return e.startColumn === t.startColumn && e.endColumn === t.endColumn && e.className === t.className && e.type === t.type
        }
        static equalsArr(e, t) {
            var i = e.length;
            if (i !== t.length) return !1;
            for (let n = 0; n < i; n++)
                if (!Ce._equals(e[n], t[n])) return !1;
            return !0
        }
        static extractWrapped(e, t, i) {
            if (0 === e.length) return e;
            var n = t + 1,
                r = i + 1,
                o = i - t;
            const s = [];
            let a = 0;
            for (const t of e) t.endColumn <= n || t.startColumn >= r || (s[a++] = new Ce(Math.max(1, t.startColumn - n + 1), Math.min(1 + o, t.endColumn - n + 1), t.className, t.type));
            return s
        }
        static filter(e, t, i, n) {
            if (0 === e.length) return [];
            let r = [],
                o = 0;
            for (let d = 0, c = e.length; d < c; d++) {
                var s, a, l = e[d];
                const c = l.range;
                c.endLineNumber < t || c.startLineNumber > t || c.isEmpty() && (0 === l.type || 3 === l.type) || (s = c.startLineNumber === t ? c.startColumn : i, a = c.endLineNumber === t ? c.endColumn : n, r[o++] = new Ce(s, a, l.inlineClassName, l.type))
            }
            return r
        }
        static _typeCompare(e, t) {
            var i = [2, 0, 1, 3];
            return i[e] - i[t]
        }
        static compare(e, t) {
            if (e.startColumn !== t.startColumn) return e.startColumn - t.startColumn;
            if (e.endColumn !== t.endColumn) return e.endColumn - t.endColumn;
            var i = Ce._typeCompare(e.type, t.type);
            return 0 !== i ? i : e.className !== t.className ? e.className < t.className ? -1 : 1 : 0
        }
    }
    class xe {
        constructor(e, t, i, n) {
            this.startOffset = e, this.endOffset = t, this.className = i, this.metadata = n
        }
    }
    class Se {
        constructor() {
            this.stopOffsets = [], this.classNames = [], this.metadata = [], this.count = 0
        }
        static _metadata(e) {
            let t = 0;
            for (let i = 0, n = e.length; i < n; i++) t |= e[i];
            return t
        }
        consumeLowerThan(e, t, i) {
            for (; 0 < this.count && this.stopOffsets[0] < e;) {
                let e = 0;
                for (; e + 1 < this.count && this.stopOffsets[e] === this.stopOffsets[e + 1];) e++;
                i.push(new xe(t, this.stopOffsets[e], this.classNames.join(" "), Se._metadata(this.metadata))), t = this.stopOffsets[e] + 1, this.stopOffsets.splice(0, e + 1), this.classNames.splice(0, e + 1), this.metadata.splice(0, e + 1), this.count -= e + 1
            }
            return 0 < this.count && t < e && (i.push(new xe(t, e - 1, this.classNames.join(" "), Se._metadata(this.metadata))), t = e), t
        }
        insert(e, t, i) {
            if (0 === this.count || this.stopOffsets[this.count - 1] <= e) this.stopOffsets.push(e), this.classNames.push(t), this.metadata.push(i);
            else
                for (let n = 0; n < this.count; n++)
                    if (this.stopOffsets[n] >= e) {
                        this.stopOffsets.splice(n, 0, e), this.classNames.splice(n, 0, t), this.metadata.splice(n, 0, i);
                        break
                    } this.count++
        }
    }
    class ke {
        constructor(e, t, i) {
            this._linePartBrand = void 0, this.endIndex = e, this.type = t, this.metadata = i
        }
        isWhitespace() {
            return !!(1 & this.metadata)
        }
        isPseudoAfter() {
            return !!(4 & this.metadata)
        }
    }
    class Le {
        constructor(e, t) {
            this.startOffset = e, this.endOffset = t
        }
        equals(e) {
            return this.startOffset === e.startOffset && this.endOffset === e.endOffset
        }
    }
    class Oe {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h, u, p, g, f, m, v, b) {
            this.useMonospaceOptimizations = e, this.canUseHalfwidthRightwardsArrow = t, this.lineContent = i, this.continuesWithWrappedLine = n, this.isBasicASCII = r, this.containsRTL = o, this.fauxIndentLength = s, this.lineTokens = a, this.lineDecorations = l.sort(Ce.compare), this.tabSize = d, this.startVisibleColumn = c, this.spaceWidth = h, this.stopRenderingLineAfter = g, this.renderWhitespace = "all" === f ? 4 : "boundary" === f ? 1 : "selection" === f ? 2 : "trailing" === f ? 3 : 0, this.renderControlCharacters = m, this.fontLigatures = v, this.selectionsOnLine = b && b.sort((e, t) => e.startOffset < t.startOffset ? -1 : 1), Math.abs(p - h) < Math.abs(u - h) ? (this.renderSpaceWidth = p, this.renderSpaceCharCode = 11825) : (this.renderSpaceWidth = u, this.renderSpaceCharCode = 183)
        }
        sameSelection(e) {
            if (null === this.selectionsOnLine) return null === e;
            if (null === e) return !1;
            if (e.length !== this.selectionsOnLine.length) return !1;
            for (let t = 0; t < this.selectionsOnLine.length; t++)
                if (!this.selectionsOnLine[t].equals(e[t])) return !1;
            return !0
        }
        equals(e) {
            return this.useMonospaceOptimizations === e.useMonospaceOptimizations && this.canUseHalfwidthRightwardsArrow === e.canUseHalfwidthRightwardsArrow && this.lineContent === e.lineContent && this.continuesWithWrappedLine === e.continuesWithWrappedLine && this.isBasicASCII === e.isBasicASCII && this.containsRTL === e.containsRTL && this.fauxIndentLength === e.fauxIndentLength && this.tabSize === e.tabSize && this.startVisibleColumn === e.startVisibleColumn && this.spaceWidth === e.spaceWidth && this.renderSpaceWidth === e.renderSpaceWidth && this.renderSpaceCharCode === e.renderSpaceCharCode && this.stopRenderingLineAfter === e.stopRenderingLineAfter && this.renderWhitespace === e.renderWhitespace && this.renderControlCharacters === e.renderControlCharacters && this.fontLigatures === e.fontLigatures && Ce.equalsArr(this.lineDecorations, e.lineDecorations) && this.lineTokens.equals(e.lineTokens) && this.sameSelection(e.selectionsOnLine)
        }
    }
    class Ee {
        constructor(e, t) {
            this.partIndex = e, this.charIndex = t
        }
    }
    class Ne {
        constructor(e, t) {
            this.length = e, this._data = new Uint32Array(this.length), this._absoluteOffsets = new Uint32Array(this.length)
        }
        static getPartIndex(e) {
            return (4294901760 & e) >>> 16
        }
        static getCharIndex(e) {
            return (65535 & e) >>> 0
        }
        setColumnInfo(e, t, i, n) {
            this._data[e - 1] = (t << 16 | i << 0) >>> 0, this._absoluteOffsets[e - 1] = n + i
        }
        getAbsoluteOffset(e) {
            return 0 === this._absoluteOffsets.length ? 0 : this._absoluteOffsets[e - 1]
        }
        charOffsetToPartData(e) {
            return 0 === this.length ? 0 : e < 0 ? this._data[0] : e >= this.length ? this._data[this.length - 1] : this._data[e]
        }
        getDomPosition(e) {
            var t = this.charOffsetToPartData(e - 1);
            e = Ne.getPartIndex(t), t = Ne.getCharIndex(t);
            return new Ee(e, t)
        }
        getColumn(e, t) {
            return this.partDataToCharOffset(e.partIndex, t, e.charIndex) + 1
        }
        partDataToCharOffset(e, t, i) {
            if (0 === this.length) return 0;
            var n = (e << 16 | i << 0) >>> 0;
            let r = 0,
                o = this.length - 1;
            for (; r + 1 < o;) {
                var s = r + o >>> 1,
                    a = this._data[s];
                if (a === n) return s;
                n < a ? o = s : r = s
            }
            if (r === o) return r;
            var l = this._data[r],
                d = this._data[o];
            if (l === n) return r;
            if (d === n) return o;
            var c = Ne.getPartIndex(l);
            e = Ne.getCharIndex(l);
            let h;
            return h = c !== (l = Ne.getPartIndex(d)) ? t : Ne.getCharIndex(d), i - e <= h - i ? r : o
        }
    }
    class De {
        constructor(e, t, i) {
            this._renderLineOutputBrand = void 0, this.characterMapping = e, this.containsRTL = t, this.containsForeignElements = i
        }
    }

    function Ie(e, t) {
        if (0 !== e.lineContent.length) return function(e, t) {
            const i = e.fontIsMonospace,
                n = e.canUseHalfwidthRightwardsArrow,
                r = e.containsForeignElements,
                o = e.lineContent,
                s = e.len,
                a = e.isOverflowing,
                l = e.parts,
                d = e.fauxIndentLength,
                c = e.tabSize,
                h = e.startVisibleColumn,
                u = e.containsRTL,
                p = e.spaceWidth,
                g = e.renderSpaceCharCode,
                f = e.renderWhitespace,
                m = e.renderControlCharacters,
                v = new Ne(s + 1, l.length);
            let _ = !1,
                w = 0,
                y = h,
                C = 0,
                x = 0,
                S = 0,
                k = 0;
            u ? t.appendASCIIString('<span dir="ltr">') : t.appendASCIIString("<span>");
            for (let e = 0, a = l.length; e < a; e++) {
                k += S;
                const a = l[e];
                var L = a.endIndex,
                    O = a.type,
                    E = 0 !== f && a.isWhitespace(),
                    N = E && !i && ("mtkw" === O || !r),
                    D = w === L && a.isPseudoAfter();
                if (C = 0, t.appendASCIIString('<span class="'), t.appendASCIIString(N ? "mtkz" : O), t.appendASCII(34), E) {
                    let i = 0; {
                        let e = w,
                            t = y;
                        for (; e < L; e++) {
                            var I = 0 | (9 === o.charCodeAt(e) ? c - t % c : 1);
                            i += I, e >= d && (t += I)
                        }
                    }
                    for (N && (t.appendASCIIString(' style="width:'), t.appendASCIIString(String(p * i)), t.appendASCIIString('px"')), t.appendASCII(62); w < L; w++) {
                        let i;
                        if (v.setColumnInfo(w + 1, e - x, C, k), x = 0, 9 === o.charCodeAt(w)) {
                            i = c - y % c | 0, !n || 1 < i ? t.write1(8594) : t.write1(65515);
                            for (let e = 2; e <= i; e++) t.write1(160)
                        } else i = 1, t.write1(g);
                        C += i, w >= d && (y += i)
                    }
                    S = i
                } else {
                    let i = 0;
                    for (t.appendASCII(62); w < L; w++) {
                        v.setColumnInfo(w + 1, e - x, C, k), x = 0;
                        var T = o.charCodeAt(w);
                        let n = 1,
                            r = 1;
                        switch (T) {
                            case 9:
                                n = c - y % c, r = n;
                                for (let e = 1; e <= n; e++) t.write1(160);
                                break;
                            case 32:
                                t.write1(160);
                                break;
                            case 60:
                                t.appendASCIIString("&lt;");
                                break;
                            case 62:
                                t.appendASCIIString("&gt;");
                                break;
                            case 38:
                                t.appendASCIIString("&amp;");
                                break;
                            case 0:
                                m ? t.write1(9216) : t.appendASCIIString("&#00;");
                                break;
                            case 65279:
                            case 8232:
                            case 8233:
                            case 133:
                                t.write1(65533);
                                break;
                            default:
                                b.D(T) && r++, m && T < 32 ? t.write1(9216 + T) : m && 127 === T ? t.write1(9249) : m && Ae(T) ? (t.appendASCIIString("[U+"), t.appendASCIIString(T.toString(16).toUpperCase().padStart(4, "0")), t.appendASCIIString("]"), n = 8) : t.write1(T)
                        }
                        C += n, i += n, w >= d && (y += r)
                    }
                    S = i
                }
                D ? x++ : x = 0, w >= s && !_ && a.isPseudoAfter() && (_ = !0, v.setColumnInfo(w + 1, e, C, k)), t.appendASCIIString("</span>")
            }
            return _ || v.setColumnInfo(s + 1, l.length - 1, C, k), a && t.appendASCIIString("<span>&hellip;</span>"), t.appendASCIIString("</span>"), new De(v, u, r)
        }(function(e) {
            var t = e.lineContent;
            let i, n;
            n = -1 !== e.stopRenderingLineAfter && e.stopRenderingLineAfter < t.length ? (i = !0, e.stopRenderingLineAfter) : (i = !1, t.length);
            let r = function(e, t, i) {
                let n = [],
                    r = 0;
                0 < t && (n[r++] = new ke(t, "", 0));
                for (let a = 0, l = e.getCount(); a < l; a++) {
                    var o = e.getEndOffset(a);
                    if (!(o <= t)) {
                        var s = e.getClassName(a);
                        if (i <= o) {
                            n[r++] = new ke(i, s, 0);
                            break
                        }
                        n[r++] = new ke(o, s, 0)
                    }
                }
                return n
            }(e.lineTokens, e.fauxIndentLength, n);
            (4 === e.renderWhitespace || 1 === e.renderWhitespace || 2 === e.renderWhitespace && e.selectionsOnLine || 3 === e.renderWhitespace) && (r = function(e, t, i, n) {
                var r = e.continuesWithWrappedLine,
                    o = e.fauxIndentLength,
                    s = e.tabSize,
                    a = e.startVisibleColumn,
                    l = e.useMonospaceOptimizations,
                    d = e.selectionsOnLine,
                    c = 1 === e.renderWhitespace,
                    h = 3 === e.renderWhitespace,
                    u = e.renderSpaceWidth !== e.spaceWidth;
                let p = [],
                    g = 0,
                    f = 0,
                    m = n[f].type,
                    v = n[f].endIndex;
                var _ = n.length;
                let w, y = !1,
                    C = b.u(t);
                w = -1 === C ? (y = !0, C = i, i) : b.I(t);
                let x = !1,
                    S = 0,
                    k = d && d[S],
                    L = a % s;
                for (let e = o; e < i; e++) {
                    var O, E = t.charCodeAt(e);
                    let r;
                    if (k && e >= k.endOffset && (S++, k = d && d[S]), r = e < C || e > w || 9 === E || 32 === E && (!c || !!x || 32 === (O = e + 1 < i ? t.charCodeAt(e + 1) : 0) || 9 === O), r && d && (r = !!k && k.startOffset <= e && k.endOffset > e), r && h && (r = y || e > w), x) {
                        if (!r || !l && L >= s) {
                            if (u)
                                for (let t = (0 < g ? p[g - 1].endIndex : o) + 1; t <= e; t++) p[g++] = new ke(t, "mtkw", 1);
                            else p[g++] = new ke(e, "mtkw", 1);
                            L %= s
                        }
                    } else(e === v || r && e > o) && (p[g++] = new ke(e, m, 0), L %= s);
                    for (9 === E ? L = s : b.D(E) ? L += 2 : L++, x = r; e === v && (f++, f < _);) m = n[f].type, v = n[f].endIndex
                }
                let N = !1;
                if (x && (r && c ? (a = 0 < i ? t.charCodeAt(i - 1) : 0, r = 1 < i ? t.charCodeAt(i - 2) : 0, 32 === a && 32 !== r && 9 !== r || (N = !0)) : N = !0), N)
                    if (u)
                        for (let e = (0 < g ? p[g - 1].endIndex : o) + 1; e <= i; e++) p[g++] = new ke(e, "mtkw", 1);
                    else p[g++] = new ke(i, "mtkw", 1);
                else p[g++] = new ke(i, m, 0);
                return p
            }(e, t, n, r));
            let o = 0;
            if (0 < e.lineDecorations.length) {
                for (let t = 0, i = e.lineDecorations.length; t < i; t++) {
                    var s = e.lineDecorations[t];
                    3 === s.type || 1 === s.type ? o |= 1 : 2 === s.type && (o |= 2)
                }
                r = function(e, t, i) {
                    i.sort(Ce.compare);
                    var n = class {
                            static normalize(e, t) {
                                if (0 === t.length) return [];
                                var i = [];
                                const n = new Se;
                                let r = 0;
                                for (let d = 0, c = t.length; d < c; d++) {
                                    let c = (s = t[d]).startColumn,
                                        h = s.endColumn;
                                    var o = s.className,
                                        s = 1 === s.type ? 2 : 2 === s.type ? 4 : 0;
                                    1 < c && (a = e.charCodeAt(c - 2), b.E(a) && c--), 1 < h && (l = e.charCodeAt(h - 2), b.E(l) && h--);
                                    var a = c - 1,
                                        l = h - 2;
                                    r = n.consumeLowerThan(a, r, i), 0 === n.count && (r = a), n.insert(l, o, s)
                                }
                                return n.consumeLowerThan(1073741824, r, i), i
                            }
                        }.normalize(e, i),
                        r = n.length;
                    let o = 0,
                        s = [],
                        a = 0,
                        l = 0;
                    for (let e = 0, i = t.length; e < i; e++) {
                        for (var d = t[e], c = d.endIndex, h = d.type, u = d.metadata; o < r && n[o].startOffset < c;) {
                            var p = n[o];
                            if (p.startOffset > l && (l = p.startOffset, s[a++] = new ke(l, h, u)), !(p.endOffset + 1 <= c)) {
                                l = c, s[a++] = new ke(l, h + " " + p.className, u | p.metadata);
                                break
                            }
                            l = p.endOffset + 1, s[a++] = new ke(l, h + " " + p.className, u | p.metadata), o++
                        }
                        c > l && (l = c, s[a++] = new ke(l, h, u))
                    }
                    var g = t[t.length - 1].endIndex;
                    if (o < r && n[o].startOffset === g)
                        for (; o < r && n[o].startOffset === g;) {
                            var f = n[o];
                            s[a++] = new ke(l, f.className, f.metadata), o++
                        }
                    return s
                }(t, r, e.lineDecorations)
            }
            return e.containsRTL || (r = function(e, t, i) {
                let n = 0,
                    r = [],
                    o = 0;
                if (i)
                    for (let i = 0, c = t.length; i < c; i++) {
                        var s = t[i],
                            a = s.endIndex;
                        if (n + 50 < a) {
                            var l = s.type,
                                d = s.metadata;
                            let t = -1,
                                i = n;
                            for (let s = n; s < a; s++) 32 === e.charCodeAt(s) && (t = s), -1 !== t && 50 <= s - i && (r[o++] = new ke(t + 1, l, d), i = t + 1, t = -1);
                            i !== a && (r[o++] = new ke(a, l, d))
                        } else r[o++] = s;
                        n = a
                    } else
                        for (let e = 0, i = t.length; e < i; e++) {
                            var c = t[e],
                                h = c.endIndex,
                                u = h - n;
                            if (50 < u) {
                                var p = c.type,
                                    g = c.metadata,
                                    f = Math.ceil(u / 50);
                                for (let e = 1; e < f; e++) {
                                    var m = n + 50 * e;
                                    r[o++] = new ke(m, p, g)
                                }
                                r[o++] = new ke(h, p, g)
                            } else r[o++] = c;
                            n = h
                        }
                return r
            }(t, r, !e.isBasicASCII || e.fontLigatures)), e.renderControlCharacters && !e.isBasicASCII && (r = function(e, t) {
                let i = [],
                    n = new ke(0, "", 0),
                    r = 0;
                for (const s of t) {
                    for (var o = s.endIndex; r < o; r++) Ae(e.charCodeAt(r)) && (r > n.endIndex && (n = new ke(r, s.type, s.metadata), i.push(n)), n = new ke(r + 1, "mtkcontrol", s.metadata), i.push(n));
                    r > n.endIndex && (n = new ke(o, s.type, s.metadata), i.push(n))
                }
                return i
            }(t, r)), new Pe(e.useMonospaceOptimizations, e.canUseHalfwidthRightwardsArrow, t, n, i, r, o, e.fauxIndentLength, e.tabSize, e.startVisibleColumn, e.containsRTL, e.spaceWidth, e.renderSpaceCharCode, e.renderWhitespace, e.renderControlCharacters)
        }(e), t);
        if (0 < e.lineDecorations.length) {
            t.appendASCIIString("<span>");
            let i = 0,
                n = 0,
                r = 0;
            for (const o of e.lineDecorations) 1 !== o.type && 2 !== o.type || (t.appendASCIIString('<span class="'), t.appendASCIIString(o.className), t.appendASCIIString('"></span>'), 1 === o.type && (r |= 1, i++), 2 === o.type && (r |= 2, n++));
            t.appendASCIIString("</span>");
            const o = new Ne(1, i + n);
            return o.setColumnInfo(1, i, 0, 0), new De(o, !1, r)
        }
        return t.appendASCIIString("<span><span></span></span>"), new De(new Ne(0, 0), !1, 0)
    }
    class Te {
        constructor(e, t, i, n) {
            this.characterMapping = e, this.html = t, this.containsRTL = i, this.containsForeignElements = n
        }
    }

    function Me(e) {
        let t = Object(ye.a)(1e4);
        return e = Ie(e, t), new Te(e.characterMapping, t.build(), e.containsRTL, e.containsForeignElements)
    }
    class Pe {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h, u, p, g) {
            this.fontIsMonospace = e, this.canUseHalfwidthRightwardsArrow = t, this.lineContent = i, this.len = n, this.isOverflowing = r, this.parts = o, this.containsForeignElements = s, this.fauxIndentLength = a, this.tabSize = l, this.startVisibleColumn = d, this.containsRTL = c, this.spaceWidth = h, this.renderSpaceCharCode = u, this.renderWhitespace = p, this.renderControlCharacters = g
        }
    }

    function Ae(e) {
        return e < 32 ? 9 !== e : 127 === e || 8234 <= e && e <= 8238 || 8294 <= e && e <= 8297 || 8206 <= e && e <= 8207 || 1564 === e
    }
    var Re = i(8);
    class Fe {
        constructor(e, t, i, n) {
            this._viewportBrand = void 0, this.top = 0 | e, this.left = 0 | t, this.width = 0 | i, this.height = 0 | n
        }
    }
    class je {
        constructor(e, t) {
            this.outputLineIndex = e, this.outputOffset = t
        }
        toString() {
            return `${this.outputLineIndex}:${this.outputOffset}`
        }
        toPosition(e, t) {
            return t = 0 < this.outputLineIndex ? t : 0, new Re.a(e + this.outputLineIndex, t + this.outputOffset + 1)
        }
    }
    class Be {
        constructor(e, t, i, n, r) {
            this.breakOffsets = e, this.breakOffsetsVisibleColumn = t, this.wrappedTextIndentLength = i, this.injectionOffsets = n, this.injectionOptions = r
        }
        getInputOffsetOfOutputPosition(e, t) {
            let i = 0;
            if (i = 0 === e ? t : this.breakOffsets[e - 1] + t, null !== this.injectionOffsets)
                for (let e = 0; e < this.injectionOffsets.length && i > this.injectionOffsets[e]; e++) i < this.injectionOffsets[e] + this.injectionOptions[e].content.length ? i = this.injectionOffsets[e] : i -= this.injectionOptions[e].content.length;
            return i
        }
        getOutputPositionOfInputOffset(e, t = 2) {
            let i = 0;
            if (null !== this.injectionOffsets)
                for (let n = 0; n < this.injectionOffsets.length && !(e < this.injectionOffsets[n]) && (1 === t || e !== this.injectionOffsets[n]); n++) i += this.injectionOptions[n].content.length;
            return e += i, this.getOutputPositionOfOffsetInUnwrappedLine(e, t)
        }
        getOutputPositionOfOffsetInUnwrappedLine(e, t = 2) {
            let i = 0,
                n = this.breakOffsets.length - 1,
                r = 0,
                o = 0;
            for (; i <= n;) {
                r = i + (n - i) / 2 | 0;
                var s = this.breakOffsets[r];
                if (o = 0 < r ? this.breakOffsets[r - 1] : 0, 0 === t)
                    if (e <= o) n = r - 1;
                    else {
                        if (!(s < e)) break;
                        i = r + 1
                    }
                else if (e < o) n = r - 1;
                else {
                    if (!(s <= e)) break;
                    i = r + 1
                }
            }
            return new je(r, e - o)
        }
        outputPositionToOffsetInUnwrappedLine(e, t) {
            let i = (0 < e ? this.breakOffsets[e - 1] : 0) + t;
            return 0 < e && (i -= this.wrappedTextIndentLength), i
        }
        normalizeOffsetAroundInjections(e, t) {
            var i = this.getInjectedTextAtOffset(e);
            if (!i) return e;
            if (2 === t) return e === i.offsetInUnwrappedLine + i.length ? i.offsetInUnwrappedLine + i.length : i.offsetInUnwrappedLine;
            if (1 === t) {
                let e = i.offsetInUnwrappedLine + i.length,
                    t = i.injectedTextIndex;
                for (; t + 1 < this.injectionOffsets.length && this.injectionOffsets[t + 1] === this.injectionOffsets[t];) e += this.injectionOptions[t + 1].content.length, t++;
                return e
            }
            let n = i.offsetInUnwrappedLine,
                r = i.injectedTextIndex;
            for (; 0 <= r - 1 && this.injectionOffsets[r - 1] === this.injectionOffsets[r];) n -= this.injectionOptions[r - 1].content.length, r++;
            return n
        }
        getInjectedText(e, t) {
            return t = this.outputPositionToOffsetInUnwrappedLine(e, t), (t = this.getInjectedTextAtOffset(t)) ? {
                options: this.injectionOptions[t.injectedTextIndex]
            } : null
        }
        getInjectedTextAtOffset(e) {
            var t = this.injectionOffsets,
                i = this.injectionOptions;
            if (null !== t) {
                let s = 0;
                for (let a = 0; a < t.length; a++) {
                    var n = i[a].content.length,
                        r = t[a] + s,
                        o = t[a] + s + n;
                    if (e < r) break;
                    if (e <= o) return {
                        injectedTextIndex: a,
                        offsetInUnwrappedLine: r,
                        length: n
                    };
                    s += n
                }
            }
        }
    }
    class Ve {
        constructor(e, t) {
            this.tabSize = e, this.data = t
        }
    }
    class We {
        constructor(e, t, i, n, r, o, s) {
            this._viewLineDataBrand = void 0, this.content = e, this.continuesWithWrappedLine = t, this.minColumn = i, this.maxColumn = n, this.startVisibleColumn = r, this.tokens = o, this.inlineDecorations = s
        }
    }
    class ze {
        constructor(e, t, i, n, r, o, s, a, l, d) {
            this.minColumn = e, this.maxColumn = t, this.content = i, this.continuesWithWrappedLine = n, this.isBasicASCII = ze.isBasicASCII(i, o), this.containsRTL = ze.containsRTL(i, this.isBasicASCII, r), this.tokens = s, this.inlineDecorations = a, this.tabSize = l, this.startVisibleColumn = d
        }
        static isBasicASCII(e, t) {
            return !t || b.A(e)
        }
        static containsRTL(e, t, i) {
            return !(t || !i) && b.m(e)
        }
    }
    class He {
        constructor(e, t, i) {
            this.range = e, this.inlineClassName = t, this.type = i
        }
    }
    class Ue {
        constructor(e, t, i, n) {
            this.startOffset = e, this.endOffset = t, this.inlineClassName = i, this.inlineClassNameAffectsLetterSpacing = n
        }
        toInlineDecoration(e) {
            return new He(new T.a(e, this.startOffset + 1, e, this.endOffset + 1), this.inlineClassName, this.inlineClassNameAffectsLetterSpacing ? 3 : 0)
        }
    }
    class Ke {
        constructor(e, t) {
            this._viewModelDecorationBrand = void 0, this.range = e, this.options = t
        }
    }
    class $e {
        constructor(e, t, i) {
            this.color = e, this.zIndex = t, this.data = i
        }
        static cmp(e, t) {
            return e.zIndex === t.zIndex ? e.color < t.color ? -1 : e.color > t.color ? 1 : 0 : e.zIndex - t.zIndex
        }
    }
    var qe = i(86);

    function Ge(e) {
        return !Array.isArray(e)
    }

    function Ye(e) {
        return "string" == typeof e
    }

    function Ze(e) {
        return !Ye(e)
    }

    function Xe(e, t) {
        return e.ignoreCase && t ? t.toLowerCase() : t
    }

    function Qe(e) {
        return e.replace(/[&<>'"_]/g, "-")
    }

    function Je(e, t) {
        return new Error(`${e.languageId}: ${t}`)
    }

    function et(e, t, i, n, r) {
        let o = null;
        return t.replace(/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g, (function(t, s, a, l, d, c, h, u, p) {
            return a ? "$" : l ? Xe(e, i) : d && d < n.length ? Xe(e, n[d]) : h && e && "string" == typeof e[h] ? e[h] : (null === o && (o = r.split("."), o.unshift(r)), c && c < o.length ? Xe(e, o[c]) : "")
        }))
    }

    function tt(e, t) {
        let i = t;
        for (; i && 0 < i.length;) {
            var n = e.tokenizer[i];
            if (n) return n;
            n = i.lastIndexOf("."), i = n < 0 ? null : i.substr(0, n)
        }
        return null
    }
    class it {
        constructor(e) {
            this._maxCacheDepth = e, this._entries = Object.create(null)
        }
        static create(e, t) {
            return this._INSTANCE.create(e, t)
        }
        create(e, t) {
            if (null !== e && e.depth >= this._maxCacheDepth) return new nt(e, t);
            let i = nt.getStackElementId(e);
            0 < i.length && (i += "|"), i += t;
            let n = this._entries[i];
            return n || (n = new nt(e, t), this._entries[i] = n, n)
        }
    }
    it._INSTANCE = new it(5);
    class nt {
        constructor(e, t) {
            this.parent = e, this.state = t, this.depth = (this.parent ? this.parent.depth : 0) + 1
        }
        static getStackElementId(e) {
            let t = "";
            for (; null !== e;) 0 < t.length && (t += "|"), t += e.state, e = e.parent;
            return t
        }
        static _equals(e, t) {
            for (; null !== e && null !== t;) {
                if (e === t) return !0;
                if (e.state !== t.state) return !1;
                e = e.parent, t = t.parent
            }
            return null === e && null === t
        }
        equals(e) {
            return nt._equals(this, e)
        }
        push(e) {
            return it.create(this, e)
        }
        pop() {
            return this.parent
        }
        popall() {
            let e = this;
            for (; e.parent;) e = e.parent;
            return e
        }
        switchTo(e) {
            return it.create(this.parent, e)
        }
    }
    class rt {
        constructor(e, t) {
            this.languageId = e, this.state = t
        }
        equals(e) {
            return this.languageId === e.languageId && this.state.equals(e.state)
        }
        clone() {
            return this.state.clone() === this.state ? this : new rt(this.languageId, this.state)
        }
    }
    class ot {
        constructor(e) {
            this._maxCacheDepth = e, this._entries = Object.create(null)
        }
        static create(e, t) {
            return this._INSTANCE.create(e, t)
        }
        create(e, t) {
            if (null !== t) return new st(e, t);
            if (null !== e && e.depth >= this._maxCacheDepth) return new st(e, t);
            t = nt.getStackElementId(e);
            let i = this._entries[t];
            return i || (i = new st(e, null), this._entries[t] = i, i)
        }
    }
    ot._INSTANCE = new ot(5);
    class st {
        constructor(e, t) {
            this.stack = e, this.embeddedModeData = t
        }
        clone() {
            return (this.embeddedModeData ? this.embeddedModeData.clone() : null) === this.embeddedModeData ? this : ot.create(this.stack, this.embeddedModeData)
        }
        equals(e) {
            return e instanceof st && !!this.stack.equals(e.stack) && (null === this.embeddedModeData && null === e.embeddedModeData || null !== this.embeddedModeData && null !== e.embeddedModeData && this.embeddedModeData.equals(e.embeddedModeData))
        }
    }
    class at {
        constructor() {
            this._tokens = [], this._languageId = null, this._lastTokenType = null, this._lastTokenLanguage = null
        }
        enterMode(e, t) {
            this._languageId = t
        }
        emit(e, t) {
            this._lastTokenType === t && this._lastTokenLanguage === this._languageId || (this._lastTokenType = t, this._lastTokenLanguage = this._languageId, this._tokens.push(new qe.a(e, t, this._languageId)))
        }
        nestedModeTokenize(e, t, i, n) {
            var r = i.languageId;
            i = i.state;
            const o = z.A.get(r);
            return o ? (n = o.tokenize(e, t, i, n), this._tokens = this._tokens.concat(n.tokens), this._lastTokenType = null, this._lastTokenLanguage = null, this._languageId = null, n.endState) : (this.enterMode(n, r), this.emit(n, ""), i)
        }
        finalize(e) {
            return new qe.b(this._tokens, e)
        }
    }
    class lt {
        constructor(e, t) {
            this._modeService = e, this._theme = t, this._prependTokens = null, this._tokens = [], this._currentLanguageId = 0, this._lastTokenMetadata = 0
        }
        enterMode(e, t) {
            this._currentLanguageId = this._modeService.languageIdCodec.encodeLanguageId(t)
        }
        emit(e, t) {
            t = this._theme.match(this._currentLanguageId, t), this._lastTokenMetadata !== t && (this._lastTokenMetadata = t, this._tokens.push(e), this._tokens.push(t))
        }
        static _merge(e, t, i) {
            var n = null !== e ? e.length : 0,
                r = t.length,
                o = null !== i ? i.length : 0;
            if (0 === n && 0 === r && 0 === o) return new Uint32Array(0);
            if (0 === n && 0 === r) return i;
            if (0 === r && 0 === o) return e;
            let s = new Uint32Array(n + r + o);
            null !== e && s.set(e);
            for (let e = 0; e < r; e++) s[n + e] = t[e];
            return null !== i && s.set(i, n + r), s
        }
        nestedModeTokenize(e, t, i, n) {
            var r = i.languageId;
            i = i.state;
            const o = z.A.get(r);
            return o ? (n = o.tokenize2(e, t, i, n), this._prependTokens = lt._merge(this._prependTokens, this._tokens, n.tokens), this._tokens = [], this._currentLanguageId = 0, this._lastTokenMetadata = 0, n.endState) : (this.enterMode(n, r), this.emit(n, ""), i)
        }
        finalize(e) {
            return new qe.c(lt._merge(this._prependTokens, this._tokens, null), e)
        }
    }
    class dt {
        constructor(e, t, i, n) {
            this._modeService = e, this._standaloneThemeService = t, this._languageId = i, this._lexer = n, this._embeddedModes = Object.create(null), this.embeddedLoaded = Promise.resolve(void 0);
            let r = !1;
            this._tokenizationRegistryListener = z.A.onDidChange(e => {
                if (!r) {
                    let i = !1;
                    for (let n = 0, r = e.changedLanguages.length; n < r; n++) {
                        var t = e.changedLanguages[n];
                        if (this._embeddedModes[t]) {
                            i = !0;
                            break
                        }
                    }
                    i && (r = !0, z.A.fire([this._languageId]), r = !1)
                }
            })
        }
        dispose() {
            this._tokenizationRegistryListener.dispose()
        }
        getLoadStatus() {
            let e = [];
            for (var t in this._embeddedModes) {
                const n = z.A.get(t);
                var i;
                n ? n instanceof dt && !1 === (i = n.getLoadStatus()).loaded && e.push(i.promise) : (t = z.A.getPromise(t)) && e.push(t)
            }
            return 0 === e.length ? {
                loaded: !0
            } : {
                loaded: !1,
                promise: Promise.all(e).then(e => {})
            }
        }
        getInitialState() {
            var e = it.create(null, this._lexer.start);
            return ot.create(e, null)
        }
        tokenize(e, t, i, n) {
            let r = new at;
            return n = this._tokenize(e, t, i, n, r), r.finalize(n)
        }
        tokenize2(e, t, i, n) {
            let r = new lt(this._modeService, this._standaloneThemeService.getColorTheme().tokenTheme);
            return n = this._tokenize(e, t, i, n, r), r.finalize(n)
        }
        _tokenize(e, t, i, n, r) {
            return i.embeddedModeData ? this._nestedTokenize(e, t, i, n, r) : this._myTokenize(e, t, i, n, r)
        }
        _findLeavingNestedModeOffset(e, t) {
            let i = this._lexer.tokenizer[t.stack.state];
            if (!i && (i = tt(this._lexer, t.stack.state), !i)) throw Je(this._lexer, "tokenizer state is not defined: " + t.stack.state);
            let n = -1,
                r = !1;
            for (const t of i)
                if (Ze(t.action) && "@pop" === t.action.nextEmbedded) {
                    r = !0;
                    let i = t.regex,
                        s = t.regex.source;
                    "^(?:" === s.substr(0, 4) && ")" === s.substr(s.length - 1, 1) && (o = (i.ignoreCase ? "i" : "") + (i.unicode ? "u" : ""), i = new RegExp(s.substr(4, s.length - 5), o));
                    var o = e.search(i); - 1 === o || 0 !== o && t.matchOnlyAtLineStart || (-1 === n || o < n) && (n = o)
                } if (!r) throw Je(this._lexer, 'no rule containing nextEmbedded: "@pop" in tokenizer embedded state: ' + t.stack.state);
            return n
        }
        _nestedTokenize(e, t, i, n, r) {
            var o = this._findLeavingNestedModeOffset(e, i);
            if (-1 === o) {
                var s = r.nestedModeTokenize(e, t, i.embeddedModeData, n);
                return ot.create(i.stack, new rt(i.embeddedModeData.languageId, s))
            }
            return 0 < (s = e.substring(0, o)).length && r.nestedModeTokenize(s, !1, i.embeddedModeData, n), e = e.substring(o), this._myTokenize(e, t, i, n + o, r)
        }
        _safeRuleName(e) {
            return e ? e.name : "(unknown)"
        }
        _myTokenize(e, t, i, n, r) {
            r.enterMode(n, this._languageId);
            var o = e.length;
            const s = t && this._lexer.includeLF ? e + "\n" : e,
                a = s.length;
            let l = i.embeddedModeData,
                d = i.stack,
                c = 0,
                h = null,
                u = !0;
            for (; u || c < a;) {
                var p = c,
                    g = d.depth,
                    f = h ? h.groups.length : 0,
                    m = d.state;
                let i = null,
                    w = null,
                    y = null,
                    C = null,
                    x = null;
                if (h) {
                    i = h.matches;
                    var v = h.groups.shift();
                    w = v.matched, y = v.action, C = h.rule, 0 === h.groups.length && (h = null)
                } else {
                    if (!u && c >= a) break;
                    u = !1;
                    let e = this._lexer.tokenizer[m];
                    if (!e && (e = tt(this._lexer, m), !e)) throw Je(this._lexer, "tokenizer state is not defined: " + m);
                    let t = s.substr(c);
                    for (const n of e)
                        if ((0 === c || !n.matchOnlyAtLineStart) && (i = t.match(n.regex), i)) {
                            w = i[0], y = n.action;
                            break
                        }
                }
                if (i || (i = [""], w = ""), y || (c < a && (i = [s.charAt(c)], w = i[0]), y = this._lexer.defaultToken), null === w) break;
                for (c += w.length; Ge(y) && Ze(y) && y.test;) y = y.test(w, i, m, c === a);
                let S = null;
                if ("string" == typeof y || Array.isArray(y)) S = y;
                else if (y.group) S = y.group;
                else if (null !== y.token && void 0 !== y.token) {
                    if (S = y.tokenSubst ? et(this._lexer, y.token, w, i, m) : y.token, y.nextEmbedded)
                        if ("@pop" === y.nextEmbedded) {
                            if (!l) throw Je(this._lexer, "cannot pop embedded mode if not inside one");
                            l = null
                        } else {
                            if (l) throw Je(this._lexer, "cannot enter embedded mode from within an embedded mode");
                            x = et(this._lexer, y.nextEmbedded, w, i, m)
                        } if (y.goBack && (c = Math.max(0, c - y.goBack)), y.switchTo && "string" == typeof y.switchTo) {
                        let e = et(this._lexer, y.switchTo, w, i, m);
                        if ("@" === e[0] && (e = e.substr(1)), !tt(this._lexer, e)) throw Je(this._lexer, "trying to switch to a state '" + e + "' that is undefined in rule: " + this._safeRuleName(C));
                        d = d.switchTo(e)
                    } else {
                        if (y.transform && "function" == typeof y.transform) throw Je(this._lexer, "action.transform not supported");
                        if (y.next)
                            if ("@push" === y.next) {
                                if (d.depth >= this._lexer.maxStack) throw Je(this._lexer, "maximum tokenizer stack size reached: [" + d.state + "," + d.parent.state + ",...]");
                                d = d.push(m)
                            } else if ("@pop" === y.next) {
                            if (d.depth <= 1) throw Je(this._lexer, "trying to pop an empty stack in rule: " + this._safeRuleName(C));
                            d = d.pop()
                        } else if ("@popall" === y.next) d = d.popall();
                        else {
                            let e = et(this._lexer, y.next, w, i, m);
                            if ("@" === e[0] && (e = e.substr(1)), !tt(this._lexer, e)) throw Je(this._lexer, "trying to set a next state '" + e + "' that is undefined in rule: " + this._safeRuleName(C));
                            d = d.push(e)
                        }
                    }
                    y.log && "string" == typeof y.log && (v = this._lexer, b = this._lexer.languageId + ": " + et(this._lexer, y.log, w, i, m), console.log(`${v.languageId}: ${b}`))
                }
                if (null === S) throw Je(this._lexer, "lexer rule has no well-defined action in rule: " + this._safeRuleName(C));
                var b = i => {
                    var o = this._modeService.getModeIdForLanguageName(i);
                    o = this._getNestedEmbeddedModeData(i = o || i);
                    return c < a ? (i = e.substr(c), this._nestedTokenize(i, t, ot.create(d, o), n + c, r)) : ot.create(d, o)
                };
                if (Array.isArray(S)) {
                    if (h && 0 < h.groups.length) throw Je(this._lexer, "groups cannot be nested: " + this._safeRuleName(C));
                    if (i.length !== S.length + 1) throw Je(this._lexer, "matched number of groups does not match the number of actions in rule: " + this._safeRuleName(C));
                    let e = 0;
                    for (let t = 1; t < i.length; t++) e += i[t].length;
                    if (e !== w.length) throw Je(this._lexer, "with groups, all characters should be matched in consecutive groups in rule: " + this._safeRuleName(C));
                    h = {
                        rule: C,
                        matches: i,
                        groups: []
                    };
                    for (let e = 0; e < S.length; e++) h.groups[e] = {
                        action: S[e],
                        matched: i[e + 1]
                    };
                    c -= w.length
                } else {
                    {
                        if ("@rematch" === S && (c -= w.length, w = "", i = null, S = "", null !== x)) return b(x);
                        if (0 === w.length) {
                            if (0 === a || g !== d.depth || m !== d.state || (h ? h.groups.length : 0) !== f) continue;
                            throw Je(this._lexer, "no progress in tokenizer in rule: " + this._safeRuleName(C))
                        }
                        let e = null;
                        if (Ye(S) && 0 === S.indexOf("@brackets")) {
                            var _ = S.substr("@brackets".length);
                            if (!(f = function(e, t) {
                                    if (!t) return null;
                                    t = Xe(e, t), e = e.brackets;
                                    for (const i of e) {
                                        if (i.open === t) return {
                                            token: i.token,
                                            bracketType: 1
                                        };
                                        if (i.close === t) return {
                                            token: i.token,
                                            bracketType: -1
                                        }
                                    }
                                    return null
                                }(this._lexer, w))) throw Je(this._lexer, "@brackets token returned but no bracket defined as: " + w);
                            e = Qe(f.token + _)
                        } else e = Qe(_ = "" === S ? "" : S + this._lexer.tokenPostfix);
                        p < o && r.emit(p + n, e)
                    }
                    if (null !== x) return b(x)
                }
            }
            return ot.create(d, l)
        }
        _getNestedEmbeddedModeData(e) {
            if (e = this._locateMode(e)) {
                let t = z.A.get(e);
                if (t) return new rt(e, t.getInitialState())
            }
            return new rt(e || H.a, H.b)
        }
        _locateMode(e) {
            return e && this._modeService.isRegisteredMode(e) ? (e === this._languageId || (e = this._modeService.getModeId(e)) && (this._modeService.triggerMode(e), this._embeddedModes[e] = !0), e) : null
        }
    }
    const ct = null === (x = window.trustedTypes) || void 0 === x ? void 0 : x.createPolicy("standaloneColorizer", {
        createHTML: e => e
    });
    class ht {
        static colorizeElement(e, t, i, n) {
            var r = (n = n || {}).theme || "vs",
                o = n.mimeType || i.getAttribute("lang") || i.getAttribute("data-lang");
            return o ? (e.setTheme(r), e = i.firstChild ? i.firstChild.nodeValue : "", i.className += " " + r, this.colorize(t, e || "", o, n).then(e => {
                var t;
                e = null !== (t = null == ct ? void 0 : ct.createHTML(e)) && void 0 !== t ? t : e;
                i.innerHTML = e
            }, e => console.error(e))) : (console.error("Mode not detected"), Promise.resolve())
        }
        static colorize(e, t, i, n) {
            const r = e.languageIdCodec;
            let o = 4;
            n && "number" == typeof n.tabSize && (o = n.tabSize), b.S(t) && (t = t.substr(1));
            let s = b.Q(t),
                a = e.getModeId(i);
            if (!a) return Promise.resolve(pt(s, o, r));
            if (e.triggerMode(a), e = z.A.get(a)) return ut(s, o, e, r);
            const l = z.A.getPromise(a);
            return new Promise(l ? (e, t) => {
                l.then(i => {
                    ut(s, o, i, r).then(e, t)
                }, t)
            } : (e, t) => {
                let i = null,
                    n = null;
                const l = () => {
                    i && (i.dispose(), i = null), n && (n.dispose(), n = null);
                    var l = z.A.get(a);
                    l ? ut(s, o, l, r).then(e, t) : e(pt(s, o, r))
                };
                n = new q.g, n.cancelAndSet(l, 500), i = z.A.onDidChange(e => {
                    0 <= e.changedLanguages.indexOf(a) && l()
                })
            })
        }
        static colorizeLine(e, t, i, n, r = 4) {
            return t = ze.isBasicASCII(e, t), i = ze.containsRTL(e, t, i), Me(new Oe(!1, !0, e, !1, t, i, 0, n, [], r, 0, 0, 0, 0, -1, "none", !1, !1, null)).html
        }
        static colorizeModelLine(e, t, i = 4) {
            var n = e.getLineContent(t);
            return e.forceTokenization(t), t = e.getLineTokens(t).inflate(), this.colorizeLine(n, e.mightContainNonBasicASCII(), e.mightContainRTL(), t, i)
        }
    }

    function ut(e, t, i, n) {
        return new Promise((r, o) => {
            const s = () => {
                var a = function(e, t, i, n) {
                    let r = [],
                        o = i.getInitialState();
                    for (let c = 0, h = e.length; c < h; c++) {
                        var s = e[c],
                            a = i.tokenize2(s, !0, o, 0);
                        we.a.convertToEndOffset(a.tokens, s.length);
                        let h = new we.a(a.tokens, s, n);
                        var l = ze.isBasicASCII(s, !0),
                            d = ze.containsRTL(s, l, !0);
                        d = Me(new Oe(!1, !0, s, !1, l, d, 0, h.inflate(), [], t, 0, 0, 0, 0, -1, "none", !1, !1, null));
                        r = r.concat(d.html), r.push("<br/>"), o = a.endState
                    }
                    return r.join("")
                }(e, t, i, n);
                if (i instanceof dt) {
                    const e = i.getLoadStatus();
                    if (!1 === e.loaded) return void e.promise.then(s, o)
                }
                r(a)
            };
            s()
        })
    }

    function pt(e, t, i) {
        let n = [];
        const r = new Uint32Array(2);
        r[0] = 0, r[1] = 16793600;
        for (let d = 0, c = e.length; d < c; d++) {
            var o = e[d];
            r[0] = o.length;
            var s = new we.a(r, o, i),
                a = ze.isBasicASCII(o, !0),
                l = ze.containsRTL(o, a, !0);
            s = Me(new Oe(!1, !0, o, !1, a, l, 0, s, [], t, 0, 0, 0, 0, -1, "none", !1, !1, null));
            n = n.concat(s.html), n.push("<br/>")
        }
        return n.join("")
    }
    var gt = i(55),
        ft = i(106),
        mt = i(65);
    const vt = Object(_.c)("IWorkspaceEditService");
    class bt {
        constructor(e) {
            this.metadata = e
        }
        static convert(e) {
            return e.edits.map(e => {
                if (t = e, Object(ve.j)(t) && h.a.isUri(t.resource) && Object(ve.j)(t.edit)) return new _t(e.resource, e.edit, e.modelVersionId, e.metadata);
                var t;
                if (t = e, Object(ve.j)(t) && (Boolean(t.newUri) || Boolean(t.oldUri))) return new wt(e.oldUri, e.newUri, e.options, e.metadata);
                throw new Error("Unsupported edit")
            })
        }
    }
    class _t extends bt {
        constructor(e, t, i, n) {
            super(n), this.resource = e, this.textEdit = t, this.versionId = i
        }
    }
    class wt extends bt {
        constructor(e, t, i, n) {
            super(n), this.oldResource = e, this.newResource = t, this.options = i
        }
    }
    var yt = i(0),
        Ct = i(113),
        xt = i(58);
    const St = Object.prototype.hasOwnProperty;
    class kt {
        constructor() {
            this.map = new Map
        }
        add(e, t) {
            let i = this.map.get(e);
            i || (i = new Set, this.map.set(e, i)), i.add(t)
        }
        delete(e, t) {
            const i = this.map.get(e);
            i && (i.delete(t), 0 === i.size && this.map.delete(e))
        }
        forEach(e, t) {
            const i = this.map.get(e);
            i && i.forEach(t)
        }
    }
    const Lt = new class {
            constructor() {
                this._tabFocus = !1, this._onDidChangeTabFocus = new D.b, this.onDidChangeTabFocus = this._onDidChangeTabFocus.event
            }
            getTabFocusMode() {
                return this._tabFocus
            }
            setTabFocusMode(e) {
                this._tabFocus !== e && (this._tabFocus = e, this._onDidChangeTabFocus.fire(this._tabFocus))
            }
        },
        Ot = Object.hasOwnProperty;
    class Et {
        constructor() {
            this._values = []
        }
        _read(e) {
            return this._values[e]
        }
        get(e) {
            return this._values[e]
        }
        _write(e, t) {
            this._values[e] = t
        }
    }
    class Nt {
        constructor() {
            this._values = []
        }
        _read(e) {
            return this._values[e]
        }
        _write(e, t) {
            this._values[e] = t
        }
    }
    class Dt {
        static readOptions(e) {
            var t = e;
            const i = new Nt;
            for (const e of n.m) {
                var r = "_never_" === e.name ? void 0 : t[e.name];
                i._write(e.id, r)
            }
            return i
        }
        static validateOptions(e) {
            const t = new n.j;
            for (const i of n.m) t._write(i.id, i.validate(e._read(i.id)));
            return t
        }
        static computeOptions(e, t) {
            const i = new Et;
            for (const r of n.m) i._write(r.id, r.compute(t, i, e._read(r.id)));
            return i
        }
        static _deepEquals(e, t) {
            if ("object" != typeof e || "object" != typeof t) return e === t;
            if (Array.isArray(e) || Array.isArray(t)) return !(!Array.isArray(e) || !Array.isArray(t)) && ne.g(e, t);
            for (var i in e)
                if (!Dt._deepEquals(e[i], t[i])) return !1;
            return !0
        }
        static checkEquals(e, t) {
            const i = [];
            let r = !1;
            for (const s of n.m) {
                var o = !Dt._deepEquals(e._read(s.id), t._read(s.id));
                (i[s.id] = o) && (r = !0)
            }
            return r ? new n.b(i) : null
        }
    }

    function It(e) {
        return function(e) {
            var t, i;
            !0 === (t = e.wordWrap) ? e.wordWrap = "on" : !1 === t && (e.wordWrap = "off"), !0 === (i = e.lineNumbers) ? e.lineNumbers = "on" : !1 === i && (e.lineNumbers = "off"), !1 === e.autoClosingBrackets && (e.autoClosingBrackets = "never", e.autoClosingQuotes = "never", e.autoSurround = "never"), "visible" === e.cursorBlinking && (e.cursorBlinking = "solid"), !0 === (t = e.renderWhitespace) ? e.renderWhitespace = "boundary" : !1 === t && (e.renderWhitespace = "none"), !0 === (i = e.renderLineHighlight) ? e.renderLineHighlight = "line" : !1 === i && (e.renderLineHighlight = "none"), !0 === (t = e.acceptSuggestionOnEnter) ? e.acceptSuggestionOnEnter = "on" : !1 === t && (e.acceptSuggestionOnEnter = "off"), !1 === (i = e.tabCompletion) ? e.tabCompletion = "off" : !0 === i && (e.tabCompletion = "onlySnippets");
            const n = e.suggest;
            if (n && "object" == typeof n.filteredTypes && n.filteredTypes) {
                ! function(e, t) {
                    for (let i in e)
                        if (St.call(e, i) && !1 === t({
                                key: i,
                                value: e[i]
                            })) return
                }({
                    method: "showMethods",
                    function: "showFunctions",
                    constructor: "showConstructors",
                    deprecated: "showDeprecated",
                    field: "showFields",
                    variable: "showVariables",
                    class: "showClasses",
                    struct: "showStructs",
                    interface: "showInterfaces",
                    module: "showModules",
                    property: "showProperties",
                    event: "showEvents",
                    operator: "showOperators",
                    unit: "showUnits",
                    value: "showValues",
                    constant: "showConstants",
                    enum: "showEnums",
                    enumMember: "showEnumMembers",
                    keyword: "showKeywords",
                    text: "showWords",
                    color: "showColors",
                    file: "showFiles",
                    reference: "showReferences",
                    folder: "showFolders",
                    typeParameter: "showTypeParameters",
                    snippet: "showSnippets"
                }, e => {
                    var t = n.filteredTypes[e.key];
                    !1 === t && (n[e.value] = t)
                })
            }!0 === (t = e.hover) ? e.hover = {
                enabled: !0
            } : !1 === t && (e.hover = {
                enabled: !1
            }), !0 === (i = e.parameterHints) ? e.parameterHints = {
                enabled: !0
            } : !1 === i && (e.parameterHints = {
                enabled: !1
            }), !0 === (t = e.autoIndent) ? e.autoIndent = "full" : !1 === t && (e.autoIndent = "advanced"), !0 === (i = e.matchBrackets) ? e.matchBrackets = "always" : !1 === i && (e.matchBrackets = "never");
            var {
                renderIndentGuides: t,
                highlightActiveIndentGuide: i
            } = e;
            e.guides || (e.guides = {}), void 0 !== t && (e.guides.indentation = !!t), void 0 !== i && (e.guides.highlightActiveIndentation = !!i)
        }(e = I.a(e)), e
    }
    class Tt extends v.a {
        constructor(e, t) {
            super(), this._onDidChange = this._register(new D.b), this.onDidChange = this._onDidChange.event, this._onDidChangeFast = this._register(new D.b), this.onDidChangeFast = this._onDidChangeFast.event, this.isSimpleWidget = e, this._isDominatedByLongLines = !1, this._computeOptionsMemory = new n.a, this._viewLineCount = 1, this._lineNumbersDigitCount = 1, this._rawOptions = It(t), this._readOptions = Dt.readOptions(this._rawOptions), this._validatedOptions = Dt.validateOptions(this._readOptions), this._register(R.onDidChangeZoomLevel(e => this._recomputeOptions())), this._register(Lt.onDidChangeTabFocus(e => this._recomputeOptions()))
        }
        observeReferenceElement(e) {}
        updatePixelRatio() {}
        _recomputeOptions() {
            var e = this.options,
                t = this._computeInternalOptions();
            e ? null !== (e = Dt.checkEquals(e, t)) && (this.options = t, this._onDidChangeFast.fire(e), this._onDidChange.fire(e)) : this.options = t
        }
        getRawOptions() {
            return this._rawOptions
        }
        _computeInternalOptions() {
            var e = this._getEnv配置(),
                t = j.createFromValidatedSettings(this._validatedOptions, e.zoomLevel, e.pixelRatio, this.isSimpleWidget);
            e = {
                memory: this._computeOptionsMemory,
                outerWidth: e.outerWidth,
                outerHeight: e.outerHeight,
                fontInfo: this.read配置(t),
                extraEditorClassName: e.extraEditorClassName,
                isDominatedByLongLines: this._isDominatedByLongLines,
                viewLineCount: this._viewLineCount,
                lineNumbersDigitCount: this._lineNumbersDigitCount,
                emptySelectionClipboard: e.emptySelectionClipboard,
                pixelRatio: e.pixelRatio,
                tabFocusMode: Lt.getTabFocusMode(),
                accessibilitySupport: e.accessibilitySupport
            };
            return Dt.computeOptions(this._validatedOptions, e)
        }
        static _subsetEquals(e, t) {
            for (const r in t)
                if (Ot.call(t, r)) {
                    var i = t[r],
                        n = e[r];
                    if (n !== i)
                        if (Array.isArray(n) && Array.isArray(i)) {
                            if (!ne.g(n, i)) return !1
                        } else {
                            if (!n || "object" != typeof n || !i || "object" != typeof i) return !1;
                            if (!this._subsetEquals(n, i)) return !1
                        }
                } return !0
        }
        updateOptions(e) {
            void 0 !== e && (e = It(e), Tt._subsetEquals(this._rawOptions, e) || (this._rawOptions = I.e(this._rawOptions, e || {}), this._readOptions = Dt.readOptions(this._rawOptions), this._validatedOptions = Dt.validateOptions(this._readOptions), this._recomputeOptions()))
        }
        setIsDominatedByLongLines(e) {
            this._isDominatedByLongLines = e, this._recomputeOptions()
        }
        setMaxLineNumber(e) {
            e = Tt._digitCount(e), this._lineNumbersDigitCount !== e && (this._lineNumbersDigitCount = e, this._recomputeOptions())
        }
        setViewLineCount(e) {
            this._viewLineCount !== e && (this._viewLineCount = e, this._recomputeOptions())
        }
        static _digitCount(e) {
            let t = 0;
            for (; e;) e = Math.floor(e / 10), t++;
            return t || 1
        }
    }
    var Mt;
    S = Object.freeze({
        id: "editor",
        order: 5,
        type: "object",
        title: yt.a("editor配置Title", "Editor"),
        scope: 5
    });
    const Pt = xt.a.as(Ct.a.配置),
        At = Object.assign(Object.assign({}, S), {
            properties: {
                "editor.tabSize": {
                    type: "number",
                    default: n.d.tabSize,
                    minimum: 1,
                    markdownDescription: yt.a("tabSize", "The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.")
                },
                "editor.insertSpaces": {
                    type: "boolean",
                    default: n.d.insertSpaces,
                    markdownDescription: yt.a("insertSpaces", "Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.")
                },
                "editor.detectIndentation": {
                    type: "boolean",
                    default: n.d.detectIndentation,
                    markdownDescription: yt.a("detectIndentation", "Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.")
                },
                "editor.trimAutoWhitespace": {
                    type: "boolean",
                    default: n.d.trimAutoWhitespace,
                    description: yt.a("trimAutoWhitespace", "Remove trailing auto inserted whitespace.")
                },
                "editor.largeFileOptimizations": {
                    type: "boolean",
                    default: n.d.largeFileOptimizations,
                    description: yt.a("largeFileOptimizations", "Special handling for large files to disable certain memory intensive features.")
                },
                "editor.wordBasedSuggestions": {
                    type: "boolean",
                    default: !0,
                    description: yt.a("wordBasedSuggestions", "Controls whether completions should be computed based on words in the document.")
                },
                "editor.wordBasedSuggestionsMode": {
                    enum: ["currentDocument", "matchingDocuments", "allDocuments"],
                    default: "matchingDocuments",
                    enumDescriptions: [yt.a("wordBasedSuggestionsMode.currentDocument", "Only suggest words from the active document."), yt.a("wordBasedSuggestionsMode.matchingDocuments", "Suggest words from all open documents of the same language."), yt.a("wordBasedSuggestionsMode.allDocuments", "Suggest words from all open documents.")],
                    description: yt.a("wordBasedSuggestionsMode", "Controls from which documents word based completions are computed.")
                },
                "editor.semanticHighlighting.enabled": {
                    enum: [!0, !1, "configuredByTheme"],
                    enumDescriptions: [yt.a("semanticHighlighting.true", "Semantic highlighting enabled for all color themes."), yt.a("semanticHighlighting.false", "Semantic highlighting disabled for all color themes."), yt.a("semanticHighlighting.configuredByTheme", "Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],
                    default: "configuredByTheme",
                    description: yt.a("semanticHighlighting.enabled", "Controls whether the semanticHighlighting is shown for the languages that support it.")
                },
                "editor.stablePeek": {
                    type: "boolean",
                    default: !1,
                    markdownDescription: yt.a("stablePeek", "Keep peek editors open even when double clicking their content or when hitting `Escape`.")
                },
                "editor.maxTokenizationLineLength": {
                    type: "integer",
                    default: 2e4,
                    description: yt.a("maxTokenizationLineLength", "Lines above this length will not be tokenized for performance reasons")
                },
                "editor.language.brackets": {
                    type: "array",
                    default: !1,
                    description: yt.a("schema.brackets", "Defines the bracket symbols that increase or decrease the indentation."),
                    items: {
                        type: "array",
                        items: [{
                            type: "string",
                            description: yt.a("schema.openBracket", "The opening bracket character or string sequence.")
                        }, {
                            type: "string",
                            description: yt.a("schema.closeBracket", "The closing bracket character or string sequence.")
                        }]
                    }
                },
                "editor.language.colorizedBracketPairs": {
                    type: "array",
                    default: !1,
                    description: yt.a("schema.colorizedBracketPairs", "Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),
                    items: {
                        type: "array",
                        items: [{
                            type: "string",
                            description: yt.a("schema.openBracket", "The opening bracket character or string sequence.")
                        }, {
                            type: "string",
                            description: yt.a("schema.closeBracket", "The closing bracket character or string sequence.")
                        }]
                    }
                },
                "diffEditor.maxComputationTime": {
                    type: "number",
                    default: 5e3,
                    description: yt.a("maxComputationTime", "Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")
                },
                "diffEditor.maxFileSize": {
                    type: "number",
                    default: 50,
                    description: yt.a("maxFileSize", "Maximum file size in MB for which to compute diffs. Use 0 for no limit.")
                },
                "diffEditor.renderSideBySide": {
                    type: "boolean",
                    default: !0,
                    description: yt.a("sideBySide", "Controls whether the diff editor shows the diff side by side or inline.")
                },
                "diffEditor.ignoreTrimWhitespace": {
                    type: "boolean",
                    default: !0,
                    description: yt.a("ignoreTrimWhitespace", "When enabled, the diff editor ignores changes in leading or trailing whitespace.")
                },
                "diffEditor.renderIndicators": {
                    type: "boolean",
                    default: !0,
                    description: yt.a("renderIndicators", "Controls whether the diff editor shows +/- indicators for added/removed changes.")
                },
                "diffEditor.codeLens": {
                    type: "boolean",
                    default: !1,
                    description: yt.a("codeLens", "Controls whether the editor shows CodeLens.")
                },
                "diffEditor.wordWrap": {
                    type: "string",
                    enum: ["off", "on", "inherit"],
                    default: "inherit",
                    markdownEnumDescriptions: [yt.a("wordWrap.off", "Lines will never wrap."), yt.a("wordWrap.on", "Lines will wrap at the viewport width."), yt.a("wordWrap.inherit", "Lines will wrap according to the `#editor.wordWrap#` setting.")]
                }
            }
        });
    for (const e of n.m) {
        var Rt = e.schema;
        if (void 0 !== Rt)
            if (void 0 !== (Mt = Rt).type || void 0 !== Mt.anyOf) At.properties["editor." + e.name] = Rt;
            else
                for (var Ft in Rt) Ot.call(Rt, Ft) && (At.properties[Ft] = Rt[Ft])
    }
    let jt = null;

    function Bt() {
        return null === jt && (jt = Object.create(null), Object.keys(At.properties).forEach(e => {
            jt[e] = !0
        })), jt
    }
    Pt.register配置(At);
    var Vt = i(107),
        Wt = i(56);
    class zt {
        constructor(e = {}, t = [], i = []) {
            this._contents = e, this._keys = t, this._overrides = i, this.isFrozen = !1, this.override配置s = new Map
        }
        get contents() {
            return this.checkAndFreeze(this._contents)
        }
        get overrides() {
            return this.checkAndFreeze(this._overrides)
        }
        get keys() {
            return this.checkAndFreeze(this._keys)
        }
        isEmpty() {
            return 0 === this._keys.length && 0 === Object.keys(this._contents).length && 0 === this._overrides.length
        }
        getValue(e) {
            return e ? Object(Wt.d)(this.contents, e) : this.contents
        }
        override(e) {
            let t = this.override配置s.get(e);
            return t || (t = this.createOverride配置Model(e), this.override配置s.set(e, t)), t
        }
        merge(...e) {
            var t = I.a(this.contents);
            const i = I.a(this.overrides),
                n = [...this.keys];
            for (const o of e) {
                this.mergeContents(t, o.contents);
                for (const e of o.overrides) {
                    var [r] = i.filter(t => ne.g(t.identifiers, e.identifiers));
                    r ? this.mergeContents(r.contents, e.contents) : i.push(I.a(e))
                }
                for (const e of o.keys) - 1 === n.indexOf(e) && n.push(e)
            }
            return new zt(t, n, i)
        }
        freeze() {
            return this.isFrozen = !0, this
        }
        createOverride配置Model(e) {
            var t = this.getContentsForOverrideIdentifer(e);
            if (!t || "object" != typeof t || !Object.keys(t).length) return this;
            let i = {};
            for (const e of ne.f([...Object.keys(this.contents), ...Object.keys(t)])) {
                let r = this.contents[e];
                var n = t[e];
                n && ("object" == typeof r && "object" == typeof n ? (r = I.a(r), this.mergeContents(r, n)) : r = n), i[e] = r
            }
            return new zt(i, this.keys, this.overrides)
        }
        mergeContents(e, t) {
            for (const i of Object.keys(t)) i in e && ve.j(e[i]) && ve.j(t[i]) ? this.mergeContents(e[i], t[i]) : e[i] = I.a(t[i])
        }
        checkAndFreeze(e) {
            return this.isFrozen && !Object.isFrozen(e) ? I.b(e) : e
        }
        getContentsForOverrideIdentifer(e) {
            for (const t of this.overrides)
                if (-1 !== t.identifiers.indexOf(e)) return t.contents;
            return null
        }
        toJSON() {
            return {
                contents: this.contents,
                overrides: this.overrides,
                keys: this.keys
            }
        }
        setValue(e, t) {
            this.addKey(e), Object(Wt.b)(this.contents, e, t, e => {
                throw new Error(e)
            })
        }
        removeValue(e) {
            this.removeKey(e) && Object(Wt.f)(this.contents, e)
        }
        addKey(e) {
            let t = this.keys.length;
            for (let i = 0; i < t; i++) 0 === e.indexOf(this.keys[i]) && (t = i);
            this.keys.splice(t, 1, e)
        }
        removeKey(e) {
            return -1 !== (e = this.keys.indexOf(e)) && (this.keys.splice(e, 1), !0)
        }
    }
    class Ht extends zt {
        constructor() {
            var e = Object(Wt.e)(),
                t = Object(Wt.c)();
            const i = [];
            for (const t of Object.keys(e)) Ct.b.test(t) && i.push({
                identifiers: [Object(Ct.c)(t).trim()],
                keys: Object.keys(e[t]),
                contents: Object(Wt.g)(e[t], e => console.error("Conflict in default settings file: " + e))
            });
            super(e, t, i)
        }
    }
    class Ut {
        constructor(e, t, i = new zt, n = new zt, r = new d.b, o = new zt, s = new d.b, a = !0) {
            this._default配置 = e, this._localUser配置 = t, this._remoteUser配置 = i, this._workspace配置 = n, this._folder配置s = r, this._memory配置 = o, this._memory配置ByResource = s, this._freeze = a, this._workspaceConsolidated配置 = null, this._foldersConsolidated配置s = new d.b, this._user配置 = null
        }
        getValue(e, t, i) {
            return this.getConsolidate配置Model(t, i).getValue(e)
        }
        updateValue(e, t, i = {}) {
            let n;
            i.resource ? (n = this._memory配置ByResource.get(i.resource), n || (n = new zt, this._memory配置ByResource.set(i.resource, n))) : n = this._memory配置, void 0 === t ? n.removeValue(e) : n.setValue(e, t), i.resource || (this._workspaceConsolidated配置 = null)
        }
        get user配置() {
            return this._user配置 || (this._user配置 = this._remoteUser配置.isEmpty() ? this._localUser配置 : this._localUser配置.merge(this._remoteUser配置), this._freeze && this._user配置.freeze()), this._user配置
        }
        getConsolidate配置Model(e, t) {
            let i = this.getConsolidated配置ModelForResource(e, t);
            return e.overrideIdentifier ? i.override(e.overrideIdentifier) : i
        }
        getConsolidated配置ModelForResource({
            resource: e
        }, t) {
            let i = this.getWorkspaceConsolidated配置();
            return t && e && ((t = t.getFolder(e)) && (i = this.getFolderConsolidated配置(t.uri) || i), (e = this._memory配置ByResource.get(e)) && (i = i.merge(e))), i
        }
        getWorkspaceConsolidated配置() {
            return this._workspaceConsolidated配置 || (this._workspaceConsolidated配置 = this._default配置.merge(this.user配置, this._workspace配置, this._memory配置), this._freeze && (this._workspace配置 = this._workspace配置.freeze())), this._workspaceConsolidated配置
        }
        getFolderConsolidated配置(e) {
            let t = this._foldersConsolidated配置s.get(e);
            if (!t) {
                const n = this.getWorkspaceConsolidated配置();
                var i = this._folder配置s.get(e);
                i ? (t = n.merge(i), this._freeze && (t = t.freeze()), this._foldersConsolidated配置s.set(e, t)) : t = n
            }
            return t
        }
        toData() {
            return {
                defaults: {
                    contents: this._default配置.contents,
                    overrides: this._default配置.overrides,
                    keys: this._default配置.keys
                },
                user: {
                    contents: this.user配置.contents,
                    overrides: this.user配置.overrides,
                    keys: this.user配置.keys
                },
                workspace: {
                    contents: this._workspace配置.contents,
                    overrides: this._workspace配置.overrides,
                    keys: this._workspace配置.keys
                },
                folders: [...this._folder配置s.keys()].reduce((e, t) => {
                    var {
                        contents: i,
                        overrides: n,
                        keys: r
                    } = this._folder配置s.get(t);
                    return e.push([t, {
                        contents: i,
                        overrides: n,
                        keys: r
                    }]), e
                }, [])
            }
        }
        static parse(e) {
            var t = this.parse配置Model(e.defaults),
                i = this.parse配置Model(e.user),
                n = this.parse配置Model(e.workspace);
            e = e.folders.reduce((e, t) => (e.set(h.a.revive(t[0]), this.parse配置Model(t[1])), e), new d.b);
            return new Ut(t, i, new zt, n, e, new zt, new d.b, !1)
        }
        static parse配置Model(e) {
            return new zt(e.contents, e.keys, e.overrides).freeze()
        }
    }
    class Kt {
        constructor(e, t, i, n) {
            this.change = e, this.previous = t, this.currentConfiguraiton = i, this.currentWorkspace = n, this._previous配置 = void 0;
            const r = new Set;
            e.keys.forEach(e => r.add(e)), e.overrides.forEach(([, e]) => e.forEach(e => r.add(e))), this.affectedKeys = [...r.values()];
            const o = new zt;
            this.affectedKeys.forEach(e => o.setValue(e, {})), this.affectedKeysTree = o.contents
        }
        get previous配置() {
            return !this._previous配置 && this.previous && (this._previous配置 = Ut.parse(this.previous.data)), this._previous配置
        }
        affects配置(e, t) {
            if (this.doesAffectedKeysTreeContains(this.affectedKeysTree, e)) {
                if (t) {
                    var i = this.previous配置 ? this.previous配置.getValue(e, t, null === (i = this.previous) || void 0 === i ? void 0 : i.workspace) : void 0;
                    t = this.currentConfiguraiton.getValue(e, t, this.currentWorkspace);
                    return !I.c(i, t)
                }
                return !0
            }
            return !1
        }
        doesAffectedKeysTreeContains(e, t) {
            let i, n = Object(Wt.g)({
                [t]: !0
            }, () => {});
            for (;
                "object" == typeof n && (i = Object.keys(n)[0]);) {
                if (!(e = e[i])) return !1;
                n = n[i]
            }
            return !0
        }
    }
    const $t = /^(cursor|delete)/;
    class qt extends v.a {
        constructor(e, t, i, n, r) {
            super(), this._contextKeyService = e, this._commandService = t, this._telemetryService = i, this._notificationService = n, this._logService = r, this._onDidUpdateKeybindings = this._register(new D.b), this._currentChord = null, this._currentChordChecker = new q.c, this._currentChordStatusMessage = null, this._ignoreSingleModifiers = Gt.EMPTY, this._currentSingleModifier = null, this._currentSingleModifierClearTimeout = new q.g, this._logging = !1
        }
        get onDidUpdateKeybindings() {
            return this._onDidUpdateKeybindings ? this._onDidUpdateKeybindings.event : D.c.None
        }
        dispose() {
            super.dispose()
        }
        _log(e) {
            this._logging && this._logService.info("[KeybindingService]: " + e)
        }
        getKeybindings() {
            return this._getResolver().getKeybindings()
        }
        lookupKeybinding(e, t) {
            if (t = this._getResolver().lookupPrimaryKeybinding(e, t || this._contextKeyService)) return t.resolvedKeybinding
        }
        dispatchEvent(e, t) {
            return this._dispatch(e, t)
        }
        softDispatch(e, t) {
            const i = this.resolveKeyboardEvent(e);
            if (i.isChord()) return console.warn("Unexpected keyboard event mapped to a chord"), null;
            var [n] = i.getDispatchParts();
            return null === n ? null : (e = this._contextKeyService.getContext(t), t = this._currentChord ? this._currentChord.keypress : null, this._getResolver().resolve(e, t, n))
        }
        _enterChordMode(e, t) {
            this._currentChord = {
                keypress: e,
                label: t
            }, this._currentChordStatusMessage = this._notificationService.status(yt.a("first.chord", "({0}) was pressed. Waiting for second key of chord...", t));
            const i = Date.now();
            this._currentChordChecker.cancelAndSet(() => {
                (!this._documentHasFocus() || 5e3 < Date.now() - i) && this._leaveChordMode()
            }, 500)
        }
        _leaveChordMode() {
            this._currentChordStatusMessage && (this._currentChordStatusMessage.dispose(), this._currentChordStatusMessage = null), this._currentChordChecker.cancel(), this._currentChord = null
        }
        _dispatch(e, t) {
            return this._doDispatch(this.resolveKeyboardEvent(e), t, !1)
        }
        _singleModifierDispatch(e, t) {
            const i = this.resolveKeyboardEvent(e);
            var [e] = i.getSingleModifierDispatchParts();
            if (e) return this._ignoreSingleModifiers.has(e) ? (this._log(`+ Ignoring single modifier ${e} due to it being pressed together with other keys.`), this._ignoreSingleModifiers = Gt.EMPTY, this._currentSingleModifierClearTimeout.cancel(), this._currentSingleModifier = null, !1) : (this._ignoreSingleModifiers = Gt.EMPTY, null === this._currentSingleModifier ? (this._log(`+ Storing single modifier for possible chord ${e}.`), this._currentSingleModifier = e, this._currentSingleModifierClearTimeout.cancelAndSet(() => {
                this._log("+ Clearing single modifier due to 300ms elapsed."), this._currentSingleModifier = null
            }, 300), !1) : e === this._currentSingleModifier ? (this._log(`/ Dispatching single modifier chord ${e} ${e}`), this._currentSingleModifierClearTimeout.cancel(), this._currentSingleModifier = null, this._doDispatch(i, t, !0)) : (this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${e}`), this._currentSingleModifierClearTimeout.cancel(), this._currentSingleModifier = null, !1));
            var [e] = i.getParts();
            return this._ignoreSingleModifiers = new Gt(e), null !== this._currentSingleModifier && this._log("+ Clearing single modifier due to other key up."), this._currentSingleModifierClearTimeout.cancel(), this._currentSingleModifier = null, !1
        }
        _doDispatch(e, t, i = !1) {
            let n = !1;
            if (e.isChord()) return console.warn("Unexpected keyboard event mapped to a chord"), !1;
            let r = null,
                o = null;
            return o = i ? ([i] = e.getSingleModifierDispatchParts(), r = i) : ([r] = e.getDispatchParts(), this._currentChord ? this._currentChord.keypress : null), null === r ? (this._log("\\ Keyboard event cannot be dispatched in keydown phase."), n) : (t = this._contextKeyService.getContext(t), e = e.getLabel(), t = this._getResolver().resolve(t, o, r), this._logService.trace("KeybindingService#dispatch", e, null == t ? void 0 : t.commandId), t && t.enterChord ? (n = !0, this._enterChordMode(r, e)) : (this._currentChord && (t && t.commandId || (this._notificationService.status(yt.a("missing.chord", "The key combination ({0}, {1}) is not a command.", this._currentChord.label, e), {
                hideAfter: 1e4
            }), n = !0)), this._leaveChordMode(), t && t.commandId && (t.bubble || (n = !0), void 0 === t.commandArgs ? this._commandService.executeCommand(t.commandId).then(void 0, e => this._notificationService.warn(e)) : this._commandService.executeCommand(t.commandId, t.commandArgs).then(void 0, e => this._notificationService.warn(e)), $t.test(t.commandId) || this._telemetryService.publicLog2("workbenchActionExecuted", {
                id: t.commandId,
                from: "keybinding"
            }))), n)
        }
        mightProducePrintableCharacter(e) {
            return !e.ctrlKey && !e.metaKey && (31 <= e.keyCode && e.keyCode <= 56 || 21 <= e.keyCode && e.keyCode <= 30)
        }
    }
    class Gt {
        constructor(e) {
            this._ctrlKey = !!e && e.ctrlKey, this._shiftKey = !!e && e.shiftKey, this._altKey = !!e && e.altKey, this._metaKey = !!e && e.metaKey
        }
        has(e) {
            switch (e) {
                case "ctrl":
                    return this._ctrlKey;
                case "shift":
                    return this._shiftKey;
                case "alt":
                    return this._altKey;
                case "meta":
                    return this._metaKey
            }
        }
    }
    Gt.EMPTY = new Gt(null);
    var Yt = i(13);
    class Zt {
        constructor(e, t, i) {
            this._log = i, this._defaultKeybindings = e, this._defaultBoundCommands = new Map;
            for (let t = 0, i = e.length; t < i; t++) {
                var n = e[t].command;
                n && this._defaultBoundCommands.set(n, !0)
            }
            this._map = new Map, this._lookupMap = new Map, this._keybindings = Zt.combine(e, t);
            for (let e = 0, t = this._keybindings.length; e < t; e++) {
                var r = this._keybindings[e];
                0 !== r.keypressParts.length && (r.when && 0 === r.when.type || this._addKeyPress(r.keypressParts[0], r))
            }
        }
        static _isTargetedForRemoval(e, t, i, n, r) {
            if (e.command !== n) return !1;
            if (t && e.keypressParts[0] !== t) return !1;
            if (i && e.keypressParts[1] !== i) return !1;
            if (r) {
                if (!e.when) return !1;
                if (!Object(Yt.e)(r, e.when)) return !1
            }
            return !0
        }
        static combine(e, t) {
            e = e.slice(0);
            let i = [];
            for (const a of t)
                if (a.command && 0 !== a.command.length && "-" === a.command.charAt(0)) {
                    var n = a.command.substr(1),
                        r = a.keypressParts[0],
                        o = a.keypressParts[1],
                        s = a.when;
                    for (let t = e.length - 1; 0 <= t; t--) this._isTargetedForRemoval(e[t], r, o, n, s) && e.splice(t, 1)
                } else i.push(a);
            return e.concat(i)
        }
        _addKeyPress(e, t) {
            const i = this._map.get(e);
            if (void 0 === i) return this._map.set(e, [t]), void this._addToLookupMap(t);
            for (let e = i.length - 1; 0 <= e; e--) {
                var n, r, o = i[e];
                o.command !== t.command && (n = 1 < o.keypressParts.length, r = 1 < t.keypressParts.length, n && r && o.keypressParts[1] !== t.keypressParts[1] || Zt.whenIsEntirelyIncluded(o.when, t.when) && this._removeFromLookupMap(o))
            }
            i.push(t), this._addToLookupMap(t)
        }
        _addToLookupMap(e) {
            if (e.command) {
                let t = this._lookupMap.get(e.command);
                void 0 === t ? (t = [e], this._lookupMap.set(e.command, t)) : t.push(e)
            }
        }
        _removeFromLookupMap(e) {
            if (e.command) {
                let t = this._lookupMap.get(e.command);
                if (void 0 !== t)
                    for (let i = 0, n = t.length; i < n; i++)
                        if (t[i] === e) return void t.splice(i, 1)
            }
        }
        static whenIsEntirelyIncluded(e, t) {
            return !t || 1 === t.type || !(!e || 1 === e.type) && Object(Yt.f)(e, t)
        }
        getKeybindings() {
            return this._keybindings
        }
        lookupPrimaryKeybinding(e, t) {
            var i = this._lookupMap.get(e);
            if (void 0 === i || 0 === i.length) return null;
            if (1 === i.length) return i[0];
            for (let e = i.length - 1; 0 <= e; e--) {
                var n = i[e];
                if (t.contextMatchesRules(n.when)) return n
            }
            return i[i.length - 1]
        }
        resolve(e, t, i) {
            this._log(`| Resolving ${i}${t?" chorded from "+t:""}`);
            let n = null;
            if (null !== t) {
                var r = this._map.get(t);
                if (void 0 === r) return this._log("\\ No keybinding entries."), null;
                n = [];
                for (let e = 0, t = r.length; e < t; e++) {
                    var o = r[e];
                    o.keypressParts[1] === i && n.push(o)
                }
            } else {
                var s = this._map.get(i);
                if (void 0 === s) return this._log("\\ No keybinding entries."), null;
                n = s
            }
            return (e = this._findCommand(e, n)) ? null === t && 1 < e.keypressParts.length && null !== e.keypressParts[1] ? (this._log(`\\ From ${n.length} keybinding entries, matched chord, when: ${Xt(e.when)}, source: ${Qt(e)}.`), {
                enterChord: !0,
                leaveChord: !1,
                commandId: null,
                commandArgs: null,
                bubble: !1
            }) : (this._log(`\\ From ${n.length} keybinding entries, matched ${e.command}, when: ${Xt(e.when)}, source: ${Qt(e)}.`), {
                enterChord: !1,
                leaveChord: 1 < e.keypressParts.length,
                commandId: e.command,
                commandArgs: e.commandArgs,
                bubble: e.bubble
            }) : (this._log(`\\ From ${n.length} keybinding entries, no when clauses matched the context.`), null)
        }
        _findCommand(e, t) {
            for (let n = t.length - 1; 0 <= n; n--) {
                var i = t[n];
                if (Zt.contextMatchesRules(e, i.when)) return i
            }
            return null
        }
        static contextMatchesRules(e, t) {
            return !t || t.evaluate(e)
        }
    }

    function Xt(e) {
        return e ? "" + e.serialize() : "no when condition"
    }

    function Qt(e) {
        return e.extensionId ? e.isBuiltinExtension ? "built-in extension " + e.extensionId : "user extension " + e.extensionId : e.isDefault ? "built-in" : "user"
    }
    var Jt = i(128);
    class ei {
        constructor(e, t, i, n, r, o, s) {
            this._resolvedKeybindingItemBrand = void 0, this.resolvedKeybinding = e, this.keypressParts = e ? ti(e.getDispatchParts()) : [], e && 0 === this.keypressParts.length && (this.keypressParts = ti(e.getSingleModifierDispatchParts())), this.bubble = !!t && 94 === t.charCodeAt(0), this.command = this.bubble ? t.substr(1) : t, this.commandArgs = i, this.when = n, this.isDefault = r, this.extensionId = o, this.isBuiltinExtension = s
        }
    }

    function ti(e) {
        let t = [];
        for (let n = 0, r = e.length; n < r; n++) {
            var i = e[n];
            if (!i) return t;
            t.push(i)
        }
        return t
    }
    var ii = i(92);
    class ni {
        constructor(e, t, i = t) {
            this.modifierLabels = [null], this.modifierLabels[2] = e, this.modifierLabels[1] = t, this.modifierLabels[3] = i
        }
        toLabel(e, t, i) {
            if (0 === t.length) return null;
            const n = [];
            for (let s = 0, a = t.length; s < a; s++) {
                var r = t[s],
                    o = i(r);
                if (null === o) return null;
                n[s] = function(e, t, i) {
                    if (null === t) return "";
                    const n = [];
                    return e.ctrlKey && n.push(i.ctrlKey), e.shiftKey && n.push(i.shiftKey), e.altKey && n.push(i.altKey), e.metaKey && n.push(i.metaKey), "" !== t && n.push(t), n.join(i.separator)
                }(r, o, this.modifierLabels[e])
            }
            return n.join(" ")
        }
    }
    const ri = new ni({
            ctrlKey: "⌃",
            shiftKey: "⇧",
            altKey: "⌥",
            metaKey: "⌘",
            separator: ""
        }, {
            ctrlKey: yt.a({
                key: "ctrlKey",
                comment: ["This is the short form for the Control key on the keyboard"]
            }, "Ctrl"),
            shiftKey: yt.a({
                key: "shiftKey",
                comment: ["This is the short form for the Shift key on the keyboard"]
            }, "Shift"),
            altKey: yt.a({
                key: "altKey",
                comment: ["This is the short form for the Alt key on the keyboard"]
            }, "Alt"),
            metaKey: yt.a({
                key: "windowsKey",
                comment: ["This is the short form for the Windows key on the keyboard"]
            }, "Windows"),
            separator: "+"
        }, {
            ctrlKey: yt.a({
                key: "ctrlKey",
                comment: ["This is the short form for the Control key on the keyboard"]
            }, "Ctrl"),
            shiftKey: yt.a({
                key: "shiftKey",
                comment: ["This is the short form for the Shift key on the keyboard"]
            }, "Shift"),
            altKey: yt.a({
                key: "altKey",
                comment: ["This is the short form for the Alt key on the keyboard"]
            }, "Alt"),
            metaKey: yt.a({
                key: "superKey",
                comment: ["This is the short form for the Super key on the keyboard"]
            }, "Super"),
            separator: "+"
        }),
        oi = new ni({
            ctrlKey: yt.a({
                key: "ctrlKey.long",
                comment: ["This is the long form for the Control key on the keyboard"]
            }, "Control"),
            shiftKey: yt.a({
                key: "shiftKey.long",
                comment: ["This is the long form for the Shift key on the keyboard"]
            }, "Shift"),
            altKey: yt.a({
                key: "altKey.long",
                comment: ["This is the long form for the Alt key on the keyboard"]
            }, "Alt"),
            metaKey: yt.a({
                key: "cmdKey.long",
                comment: ["This is the long form for the Command key on the keyboard"]
            }, "Command"),
            separator: "+"
        }, {
            ctrlKey: yt.a({
                key: "ctrlKey.long",
                comment: ["This is the long form for the Control key on the keyboard"]
            }, "Control"),
            shiftKey: yt.a({
                key: "shiftKey.long",
                comment: ["This is the long form for the Shift key on the keyboard"]
            }, "Shift"),
            altKey: yt.a({
                key: "altKey.long",
                comment: ["This is the long form for the Alt key on the keyboard"]
            }, "Alt"),
            metaKey: yt.a({
                key: "windowsKey.long",
                comment: ["This is the long form for the Windows key on the keyboard"]
            }, "Windows"),
            separator: "+"
        }, {
            ctrlKey: yt.a({
                key: "ctrlKey.long",
                comment: ["This is the long form for the Control key on the keyboard"]
            }, "Control"),
            shiftKey: yt.a({
                key: "shiftKey.long",
                comment: ["This is the long form for the Shift key on the keyboard"]
            }, "Shift"),
            altKey: yt.a({
                key: "altKey.long",
                comment: ["This is the long form for the Alt key on the keyboard"]
            }, "Alt"),
            metaKey: yt.a({
                key: "superKey.long",
                comment: ["This is the long form for the Super key on the keyboard"]
            }, "Super"),
            separator: "+"
        }),
        si = new ni({
            ctrlKey: "Ctrl",
            shiftKey: "Shift",
            altKey: "Alt",
            metaKey: "Cmd",
            separator: "+"
        }, {
            ctrlKey: "Ctrl",
            shiftKey: "Shift",
            altKey: "Alt",
            metaKey: "Super",
            separator: "+"
        });
    class ai extends ft.b {
        constructor(e, t) {
            if (super(), 0 === t.length) throw Object(se.c)("parts");
            this._os = e, this._parts = t
        }
        getLabel() {
            return ri.toLabel(this._os, this._parts, e => this._getLabel(e))
        }
        getAriaLabel() {
            return oi.toLabel(this._os, this._parts, e => this._getAriaLabel(e))
        }
        getElectronAccelerator() {
            return 1 < this._parts.length || this._parts[0].isDuplicateModifierCase() ? null : si.toLabel(this._os, this._parts, e => this._getElectronAccelerator(e))
        }
        isChord() {
            return 1 < this._parts.length
        }
        getParts() {
            return this._parts.map(e => this._getPart(e))
        }
        _getPart(e) {
            return new ft.c(e.ctrlKey, e.shiftKey, e.altKey, e.metaKey, this._getLabel(e), this._getAriaLabel(e))
        }
        getDispatchParts() {
            return this._parts.map(e => this._getDispatchPart(e))
        }
        getSingleModifierDispatchParts() {
            return this._parts.map(e => this._getSingleModifierDispatchPart(e))
        }
    }
    class li extends ai {
        constructor(e, t) {
            super(t, e.parts)
        }
        _keyCodeToUILabel(e) {
            if (2 === this._os) switch (e) {
                case 15:
                    return "←";
                case 16:
                    return "↑";
                case 17:
                    return "→";
                case 18:
                    return "↓"
            }
            return ii.d.toString(e)
        }
        _getLabel(e) {
            return e.isDuplicateModifierCase() ? "" : this._keyCodeToUILabel(e.keyCode)
        }
        _getAriaLabel(e) {
            return e.isDuplicateModifierCase() ? "" : ii.d.toString(e.keyCode)
        }
        _getElectronAccelerator(e) {
            return ii.d.toElectronAccelerator(e.keyCode)
        }
        _getDispatchPart(e) {
            return li.getDispatchStr(e)
        }
        static getDispatchStr(e) {
            if (e.isModifierKey()) return null;
            let t = "";
            return e.ctrlKey && (t += "ctrl+"), e.shiftKey && (t += "shift+"), e.altKey && (t += "alt+"), e.metaKey && (t += "meta+"), t += ii.d.toString(e.keyCode), t
        }
        _getSingleModifierDispatchPart(e) {
            return 5 !== e.keyCode || e.shiftKey || e.altKey || e.metaKey ? 4 !== e.keyCode || e.ctrlKey || e.altKey || e.metaKey ? 6 !== e.keyCode || e.ctrlKey || e.shiftKey || e.metaKey ? 57 !== e.keyCode || e.ctrlKey || e.shiftKey || e.altKey ? null : "meta" : "alt" : "shift" : "ctrl"
        }
        static _scanCodeToKeyCode(e) {
            var t = ii.b[e];
            if (-1 !== t) return t;
            switch (e) {
                case 10:
                    return 31;
                case 11:
                    return 32;
                case 12:
                    return 33;
                case 13:
                    return 34;
                case 14:
                    return 35;
                case 15:
                    return 36;
                case 16:
                    return 37;
                case 17:
                    return 38;
                case 18:
                    return 39;
                case 19:
                    return 40;
                case 20:
                    return 41;
                case 21:
                    return 42;
                case 22:
                    return 43;
                case 23:
                    return 44;
                case 24:
                    return 45;
                case 25:
                    return 46;
                case 26:
                    return 47;
                case 27:
                    return 48;
                case 28:
                    return 49;
                case 29:
                    return 50;
                case 30:
                    return 51;
                case 31:
                    return 52;
                case 32:
                    return 53;
                case 33:
                    return 54;
                case 34:
                    return 55;
                case 35:
                    return 56;
                case 36:
                    return 22;
                case 37:
                    return 23;
                case 38:
                    return 24;
                case 39:
                    return 25;
                case 40:
                    return 26;
                case 41:
                    return 27;
                case 42:
                    return 28;
                case 43:
                    return 29;
                case 44:
                    return 30;
                case 45:
                    return 21;
                case 51:
                    return 83;
                case 52:
                    return 81;
                case 53:
                    return 87;
                case 54:
                    return 89;
                case 55:
                    return 88;
                case 56:
                    return 0;
                case 57:
                    return 80;
                case 58:
                    return 90;
                case 59:
                    return 86;
                case 60:
                    return 82;
                case 61:
                    return 84;
                case 62:
                    return 85;
                case 106:
                    return 92
            }
            return 0
        }
        static _resolveSimpleUserBinding(e) {
            if (!e) return null;
            if (e instanceof ft.d) return e;
            var t = this._scanCodeToKeyCode(e.scanCode);
            return 0 === t ? null : new ft.d(e.ctrlKey, e.shiftKey, e.altKey, e.metaKey, t)
        }
        static resolveUserBinding(e, t) {
            return 0 < (e = ti(e.map(e => this._resolveSimpleUserBinding(e)))).length ? [new li(new ft.a(e), t)] : []
        }
    }
    var di, ci, hi = i(80);
    const ui = Object(_.c)("contextService");
    class pi {
        constructor(e, t) {
            this.raw = t, this.uri = e.uri, this.index = e.index, this.name = e.name
        }
        toJSON() {
            return {
                uri: this.uri,
                name: this.name,
                index: this.index
            }
        }
    }(gi = {}).noSelection = yt.a("noSelection", "No selection"), gi.singleSelectionRange = yt.a("singleSelectionRange", "Line {0}, Column {1} ({2} selected)"), gi.singleSelection = yt.a("singleSelection", "Line {0}, Column {1}"), gi.multiSelectionRange = yt.a("multiSelectionRange", "{0} selections ({1} characters selected)"), gi.multiSelection = yt.a("multiSelection", "{0} selections"), gi.emergencyConfOn = yt.a("emergencyConfOn", "Now changing the setting `accessibilitySupport` to 'on'."), gi.openingDocs = yt.a("openingDocs", "Now opening the Editor Accessibility documentation page."), gi.readonlyDiffEditor = yt.a("readonlyDiffEditor", " in a read-only pane of a diff editor."), gi.editableDiffEditor = yt.a("editableDiffEditor", " in a pane of a diff editor."), gi.readonlyEditor = yt.a("readonlyEditor", " in a read-only code editor"), gi.editableEditor = yt.a("editableEditor", " in a code editor"), gi.changeConfigToOnMac = yt.a("changeConfigToOnMac", "To configure the editor to be optimized for usage with a Screen Reader press Command+E now."), gi.changeConfigToOnWinLinux = yt.a("changeConfigToOnWinLinux", "To configure the editor to be optimized for usage with a Screen Reader press Control+E now."), gi.auto_on = yt.a("auto_on", "The editor is configured to be optimized for usage with a Screen Reader."), gi.auto_off = yt.a("auto_off", "The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time."), gi.tabFocusModeOnMsg = yt.a("tabFocusModeOnMsg", "Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}."), gi.tabFocusModeOnMsgNoKb = yt.a("tabFocusModeOnMsgNoKb", "Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding."), gi.tabFocusModeOffMsg = yt.a("tabFocusModeOffMsg", "Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}."), gi.tabFocusModeOffMsgNoKb = yt.a("tabFocusModeOffMsgNoKb", "Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding."), gi.openDocMac = yt.a("openDocMac", "Press Command+H now to open a browser window with more information related to editor accessibility."), gi.openDocWinLinux = yt.a("openDocWinLinux", "Press Control+H now to open a browser window with more information related to editor accessibility."), gi.outroMsg = yt.a("outroMsg", "You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape."), gi.showAccessibilityHelpAction = yt.a("showAccessibilityHelpAction", "Show Accessibility Help"), yt.a("inspectTokens", "Developer: Inspect Tokens"), yt.a("gotoLineActionLabel", "Go to Line/Column..."), yt.a("helpQuickAccess", "Show all Quick Access Providers"), (t = {}).quickCommandActionLabel = yt.a("quickCommandActionLabel", "Command Palette"), t.quickCommandHelp = yt.a("quickCommandActionHelp", "Show And Run Commands"), (ae = {}).quickOutlineActionLabel = yt.a("quickOutlineActionLabel", "Go to Symbol..."), ae.quickOutlineByCategoryActionLabel = yt.a("quickOutlineByCategoryActionLabel", "Go to Symbol by Category..."), (x = di = di || {}).editorViewAccessibleLabel = yt.a("editorViewAccessibleLabel", "Editor content"), x.accessibilityHelpMessage = yt.a("accessibilityHelpMessage", "Press Alt+F1 for Accessibility Options."), yt.a("toggleHighContrast", "Toggle High Contrast Theme"), (ci = ci || {}).bulkEditServiceSummary = yt.a("bulkEditServiceSummary", "Made {0} edits in {1} files");
    S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    };
    var gi = function(e, t) {
            return function(i, n) {
                t(i, n, e)
            }
        },
        fi = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    class mi {
        constructor(e) {
            this.disposed = !1, this.model = e, this._onWillDispose = new D.b
        }
        get textEditorModel() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model
        }
        dispose() {
            this.disposed = !0, this._onWillDispose.fire()
        }
    }
    let vi = class {
        constructor(e) {
            this.modelService = e
        }
        setEditor(e) {
            this.editor = e
        }
        createModelReference(e) {
            let t = null;
            var i, n, r;
            return this.editor && (n = t => this.findModel(t, e), r = t => this.findModel(t.getOriginalEditor(), e) || this.findModel(t.getModifiedEditor(), e), t = (function(e) {
                return e && "function" == typeof e.getEditorType && e.getEditorType() === V.ICodeEditor
            }(i = this.editor) ? n : r)(i)), t ? Promise.resolve(new v.c(new mi(t))) : Promise.reject(new Error("Model not found"))
        }
        findModel(e, t) {
            let i = this.modelService.getModel(t);
            return i && i.uri.toString() !== t.toString() ? null : i
        }
    };
    vi = S([gi(0, ee.a)], vi);
    class bi {
        show() {
            return bi.NULL_PROGRESS_RUNNER
        }
        showWhile(e, t) {
            return fi(this, void 0, void 0, (function*() {
                yield e
            }))
        }
    }
    bi.NULL_PROGRESS_RUNNER = {
        done: () => {},
        total: () => {},
        worked: () => {}
    };
    class _i {
        confirm(e) {
            return this.doConfirm(e).then(e => ({
                confirmed: e,
                checkboxChecked: !1
            }))
        }
        doConfirm(e) {
            let t = e.message;
            return e.detail && (t = t + "\n\n" + e.detail), Promise.resolve(window.confirm(t))
        }
        show(e, t, i, n) {
            return Promise.resolve({
                choice: 0
            })
        }
    }
    class wi {
        info(e) {
            return this.notify({
                severity: mt.a.Info,
                message: e
            })
        }
        warn(e) {
            return this.notify({
                severity: mt.a.Warning,
                message: e
            })
        }
        error(e) {
            return this.notify({
                severity: mt.a.Error,
                message: e
            })
        }
        notify(e) {
            switch (e.severity) {
                case mt.a.Error:
                    console.error(e.message);
                    break;
                case mt.a.Warning:
                    console.warn(e.message);
                    break;
                default:
                    console.log(e.message)
            }
            return wi.NO_OP
        }
        status(e, t) {
            return v.a.None
        }
    }
    wi.NO_OP = new hi.b;
    class yi {
        constructor(e) {
            this._onWillExecuteCommand = new D.b, this._onDidExecuteCommand = new D.b, this.onDidExecuteCommand = this._onDidExecuteCommand.event, this._instantiationService = e
        }
        executeCommand(e, ...t) {
            var i = m.a.getCommand(e);
            if (!i) return Promise.reject(new Error(`command '${e}' not found`));
            try {
                this._onWillExecuteCommand.fire({
                    commandId: e,
                    args: t
                });
                var n = this._instantiationService.invokeFunction.apply(this._instantiationService, [i.handler, ...t]);
                return this._onDidExecuteCommand.fire({
                    commandId: e,
                    args: t
                }), Promise.resolve(n)
            } catch (e) {
                return Promise.reject(e)
            }
        }
    }
    class Ci extends qt {
        constructor(e, t, i, n, r, o) {
            super(e, t, i, n, r), this._cachedResolver = null, this._dynamicKeybindings = [], this._register(s.g(o, s.d.KEY_DOWN, e => {
                const t = new gt.a(e);
                this._dispatch(t, t.target) && (t.preventDefault(), t.stopPropagation())
            })), this._register(s.g(window, s.d.KEY_UP, e => {
                const t = new gt.a(e);
                this._singleModifierDispatch(t, t.target) && t.preventDefault()
            }))
        }
        addDynamicKeybinding(e, t, i, n) {
            t = Object(ft.e)(t, A.a);
            const r = new v.b;
            return t && (this._dynamicKeybindings.push({
                keybinding: t.parts,
                command: e,
                when: n,
                weight1: 1e3,
                weight2: 0,
                extensionId: null,
                isBuiltinExtension: !1
            }), r.add(Object(v.i)(() => {
                for (let t = 0; t < this._dynamicKeybindings.length; t++)
                    if (this._dynamicKeybindings[t].command === e) return this._dynamicKeybindings.splice(t, 1), void this.updateResolver({
                        source: 1
                    })
            }))), r.add(m.a.registerCommand(e, i)), this.updateResolver({
                source: 1
            }), r
        }
        updateResolver(e) {
            this._cachedResolver = null, this._onDidUpdateKeybindings.fire(e)
        }
        _getResolver() {
            var e, t;
            return this._cachedResolver || (e = this._toNormalizedKeybindingItems(Jt.a.getDefaultKeybindings(), !0), t = this._toNormalizedKeybindingItems(this._dynamicKeybindings, !1), this._cachedResolver = new Zt(e, t, e => this._log(e))), this._cachedResolver
        }
        _documentHasFocus() {
            return document.hasFocus()
        }
        _toNormalizedKeybindingItems(e, t) {
            let i = [],
                n = 0;
            for (const s of e) {
                var r = s.when || void 0,
                    o = s.keybinding;
                if (o)
                    for (const e of li.resolveUserBinding(o, A.a)) i[n++] = new ei(e, s.command, s.commandArgs, r, t, null, !1);
                else i[n++] = new ei(void 0, s.command, s.commandArgs, r, t, null, !1)
            }
            return i
        }
        resolveKeyboardEvent(e) {
            return e = new ft.d(e.ctrlKey, e.shiftKey, e.altKey, e.metaKey, e.keyCode).toChord(), new li(e, A.a)
        }
    }

    function xi(e) {
        return e && "object" == typeof e && (!e.overrideIdentifier || "string" == typeof e.overrideIdentifier) && (!e.resource || e.resource instanceof h.a)
    }
    class Si {
        constructor() {
            this._onDidChange配置 = new D.b, this.onDidChange配置 = this._onDidChange配置.event, this._configuration = new Ut(new Ht, new zt)
        }
        getValue(e, t) {
            return t = xi(e) ? e : xi(t) ? t : {}, this._configuration.getValue("string" == typeof e ? e : void 0, t, void 0)
        }
        updateValues(e) {
            var t = {
                data: this._configuration.toData()
            };
            let i = [];
            for (const t of e) {
                var [n, r] = t;
                this.getValue(n) !== r && (this._configuration.updateValue(n, r), i.push(n))
            }
            if (0 < i.length) {
                const e = new Kt({
                    keys: i,
                    overrides: []
                }, t, this._configuration);
                e.source = 7, e.sourceConfig = null, this._onDidChange配置.fire(e)
            }
            return Promise.resolve()
        }
    }
    class ki {
        constructor(e) {
            this.configurationService = e, this._onDidChange配置 = new D.b, this.configurationService.onDidChange配置(e => {
                this._onDidChange配置.fire({
                    affectedKeys: e.affectedKeys,
                    affects配置: (t, i) => e.affects配置(i)
                })
            })
        }
        getValue(e, t, i) {
            return void 0 === (t = Re.a.isIPosition(t) && t ? "string" == typeof i ? i : void 0 : "string" == typeof t ? t : void 0) ? this.configurationService.getValue() : this.configurationService.getValue(t)
        }
    }
    let Li = class {
        constructor(e) {
            this.configurationService = e
        }
        getEOL(e, t) {
            return (e = this.configurationService.getValue("files.eol", {
                overrideIdentifier: t,
                resource: e
            })) && "string" == typeof e && "auto" !== e ? e : A.d || A.f ? "\n" : "\r\n"
        }
    };
    Li = S([gi(0, Wt.a)], Li);
    class Oi {
        publicLog(e, t) {
            return Promise.resolve(void 0)
        }
        publicLog2(e, t) {
            return this.publicLog(e, t)
        }
    }
    class Ei {
        constructor() {
            var e = h.a.from({
                scheme: Ei.SCHEME,
                authority: "model",
                path: "/"
            });
            this.workspace = {
                id: "4064f6ec-cb38-4ad0-af64-ee6467e63c82",
                folders: [new pi({
                    uri: e,
                    name: "",
                    index: 0
                })]
            }
        }
        getWorkspace() {
            return this.workspace
        }
    }

    function Ni(e, t, i) {
        if (t && e instanceof Si) {
            let n = [];
            Object.keys(t).forEach(e => {
                var r;
                r = e, Bt()["editor." + r] && n.push(["editor." + e, t[e]]), i && (r = e, Bt()["diffEditor." + r]) && n.push(["diffEditor." + e, t[e]])
            }), 0 < n.length && e.updateValues(n)
        }
    }
    Ei.SCHEME = "inmemory";
    class Di {
        constructor(e) {
            this._modelService = e
        }
        hasPreviewHandler() {
            return !1
        }
        apply(e, t) {
            return fi(this, void 0, void 0, (function*() {
                const t = new Map;
                for (var i of e) {
                    if (!(i instanceof _t)) throw new Error("bad edit - only text edits are supported");
                    const e = this._modelService.getModel(i.resource);
                    if (!e) throw new Error("bad edit - model not found");
                    if ("number" == typeof i.versionId && e.getVersionId() !== i.versionId) throw new Error("bad state - model changed in the meantime");
                    let n = t.get(e);
                    n || (n = [], t.set(e, n)), n.push(Vt.a.replaceMove(T.a.lift(i.textEdit.range), i.textEdit.text))
                }
                let n = 0,
                    r = 0;
                for (const [e, i] of t) e.pushStackElement(), e.pushEditOperations([], i, () => []), e.pushStackElement(), r += 1, n += i.length;
                return {
                    ariaSummary: b.v(ci.bulkEditServiceSummary, n, r)
                }
            }))
        }
    }
    class Ii {
        getUriLabel(e, t) {
            return "file" === e.scheme ? e.fsPath : e.path
        }
    }
    class Ti {
        constructor(e, t) {
            this._codeEditorService = e, this._container = t, this.onDidLayout = D.c.None
        }
        get dimension() {
            return this._dimension || (this._dimension = s.w(window.document.body)), this._dimension
        }
        get container() {
            return this._container
        }
        focus() {
            var e;
            null !== (e = this._codeEditorService.getFocusedCodeEditor()) && void 0 !== e && e.focus()
        }
    }
    var Mi = i(91);
    const Pi = Object(_.c)("markerDecorationsService");
    var Ai = i(20);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    (x = class {
        constructor(e, t) {}
        dispose() {}
    }).ID = "editor.contrib.markerDecorations", x = t([ae(1, Pi)], x), Object(Ai.k)(x.ID, x), i(388);
    var Ri = i(37);
    class Fi {
        constructor(e, t) {
            this.chr = e, this.type = t, this.width = 0
        }
        fulfill(e) {
            this.width = e
        }
    }
    class ji {
        constructor(e, t) {
            this._bareFontInfo = e, this._requests = t, this._container = null, this._testElements = null
        }
        read() {
            this._createDomElements(), document.body.appendChild(this._container), this._readFromDomElements(), document.body.removeChild(this._container), this._container = null, this._testElements = null
        }
        _createDomElements() {
            var e = this._bareFontInfo.getMassagedFontFamily(Ri.h ? n.c.fontFamily : null);
            const t = document.createElement("div");
            t.style.position = "absolute", t.style.top = "-50000px", t.style.width = "50000px";
            const i = document.createElement("div");
            i.style.fontFamily = e, i.style.fontWeight = this._bareFontInfo.fontWeight, i.style.fontSize = this._bareFontInfo.fontSize + "px", i.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings, i.style.lineHeight = this._bareFontInfo.lineHeight + "px", i.style.letterSpacing = this._bareFontInfo.letterSpacing + "px", t.appendChild(i);
            const r = document.createElement("div");
            r.style.fontFamily = e, r.style.fontWeight = "bold", r.style.fontSize = this._bareFontInfo.fontSize + "px", r.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings, r.style.lineHeight = this._bareFontInfo.lineHeight + "px", r.style.letterSpacing = this._bareFontInfo.letterSpacing + "px", t.appendChild(r);
            const o = document.createElement("div");
            o.style.fontFamily = e, o.style.fontWeight = this._bareFontInfo.fontWeight, o.style.fontSize = this._bareFontInfo.fontSize + "px", o.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings, o.style.lineHeight = this._bareFontInfo.lineHeight + "px", o.style.letterSpacing = this._bareFontInfo.letterSpacing + "px", o.style.fontStyle = "italic", t.appendChild(o);
            const s = [];
            for (const e of this._requests) {
                let t;
                0 === e.type && (t = i), 2 === e.type && (t = r), 1 === e.type && (t = o), t.appendChild(document.createElement("br"));
                var a = document.createElement("span");
                ji._render(a, e), t.appendChild(a), s.push(a)
            }
            this._container = t, this._testElements = s
        }
        static _render(e, t) {
            if (" " === t.chr) {
                let t = " ";
                for (let e = 0; e < 8; e++) t += t;
                e.innerText = t
            } else {
                let i = t.chr;
                for (let e = 0; e < 8; e++) i += i;
                e.textContent = i
            }
        }
        _readFromDomElements() {
            for (let t = 0, i = this._requests.length; t < i; t++) {
                const i = this._requests[t];
                var e = this._testElements[t];
                i.fulfill(e.offsetWidth / 256)
            }
        }
    }
    class Bi extends v.a {
        constructor(e, t, i) {
            super(), this.referenceDomElement = e, this.changeCallback = i, this.width = -1, this.height = -1, this.resizeObserver = null, this.measureReferenceDomElementToken = -1, this.measureReferenceDomElement(!1, t)
        }
        dispose() {
            this.stopObserving(), super.dispose()
        }
        getWidth() {
            return this.width
        }
        getHeight() {
            return this.height
        }
        startObserving() {
            "undefined" != typeof ResizeObserver ? !this.resizeObserver && this.referenceDomElement && (this.resizeObserver = new ResizeObserver(e => {
                e && e[0] && e[0].contentRect ? this.observe({
                    width: e[0].contentRect.width,
                    height: e[0].contentRect.height
                }) : this.observe()
            }), this.resizeObserver.observe(this.referenceDomElement)) : -1 === this.measureReferenceDomElementToken && (this.measureReferenceDomElementToken = setInterval(() => this.observe(), 100))
        }
        stopObserving() {
            this.resizeObserver && (this.resizeObserver.disconnect(), this.resizeObserver = null), -1 !== this.measureReferenceDomElementToken && (clearInterval(this.measureReferenceDomElementToken), this.measureReferenceDomElementToken = -1)
        }
        observe(e) {
            this.measureReferenceDomElement(!0, e)
        }
        measureReferenceDomElement(e, t) {
            let i = 0,
                n = 0;
            t ? (i = t.width, n = t.height) : this.referenceDomElement && (i = this.referenceDomElement.clientWidth, n = this.referenceDomElement.clientHeight), i = Math.max(5, i), n = Math.max(5, n), this.width === i && this.height === n || (this.width = i, this.height = n, e && this.changeCallback())
        }
    }
    class Vi {
        constructor() {
            this._keys = Object.create(null), this._values = Object.create(null)
        }
        has(e) {
            return e = e.getId(), !!this._values[e]
        }
        get(e) {
            return e = e.getId(), this._values[e]
        }
        put(e, t) {
            var i = e.getId();
            this._keys[i] = e, this._values[i] = t
        }
        remove(e) {
            e = e.getId(), delete this._keys[e], delete this._values[e]
        }
        getValues() {
            return Object.keys(this._keys).map(e => this._values[e])
        }
    }
    class Wi extends v.a {
        constructor() {
            super(), this._onDidChange = this._register(new D.b), this.onDidChange = this._onDidChange.event, this._cache = new Vi, this._evictUntrustedReadingsTimeout = -1
        }
        dispose() {
            -1 !== this._evictUntrustedReadingsTimeout && (clearTimeout(this._evictUntrustedReadingsTimeout), this._evictUntrustedReadingsTimeout = -1), super.dispose()
        }
        clearCache() {
            this._cache = new Vi, this._onDidChange.fire()
        }
        _writeToCache(e, t) {
            this._cache.put(e, t), t.isTrusted || -1 !== this._evictUntrustedReadingsTimeout || (this._evictUntrustedReadingsTimeout = setTimeout(() => {
                this._evictUntrustedReadingsTimeout = -1, this._evictUntrustedReadings()
            }, 5e3))
        }
        _evictUntrustedReadings() {
            let e = !1;
            for (const t of this._cache.getValues()) t.isTrusted || (e = !0, this._cache.remove(t));
            e && this._onDidChange.fire()
        }
        read配置(e) {
            if (!this._cache.has(e)) {
                let t = Wi._actualRead配置(e);
                (t.typicalHalfwidthCharacterWidth <= 2 || t.typicalFullwidthCharacterWidth <= 2 || t.spaceWidth <= 2 || t.maxDigitWidth <= 2) && (t = new B({
                    zoomLevel: Ri.d(),
                    pixelRatio: Ri.a(),
                    fontFamily: t.fontFamily,
                    fontWeight: t.fontWeight,
                    fontSize: t.fontSize,
                    fontFeatureSettings: t.fontFeatureSettings,
                    lineHeight: t.lineHeight,
                    letterSpacing: t.letterSpacing,
                    isMonospace: t.isMonospace,
                    typicalHalfwidthCharacterWidth: Math.max(t.typicalHalfwidthCharacterWidth, 5),
                    typicalFullwidthCharacterWidth: Math.max(t.typicalFullwidthCharacterWidth, 5),
                    canUseHalfwidthRightwardsArrow: t.canUseHalfwidthRightwardsArrow,
                    spaceWidth: Math.max(t.spaceWidth, 5),
                    middotWidth: Math.max(t.middotWidth, 5),
                    wsmiddotWidth: Math.max(t.wsmiddotWidth, 5),
                    maxDigitWidth: Math.max(t.maxDigitWidth, 5)
                }, !1)), this._writeToCache(e, t)
            }
            return this._cache.get(e)
        }
        static createRequest(e, t, i, n) {
            return t = new Fi(e, t), i.push(t), n && n.push(t), t
        }
        static _actualRead配置(e) {
            var t = [],
                i = [],
                r = this.createRequest("n", 0, t, i),
                o = this.createRequest("ｍ", 0, t, null),
                s = this.createRequest(" ", 0, t, i),
                a = this.createRequest("0", 0, t, i),
                l = this.createRequest("1", 0, t, i),
                d = this.createRequest("2", 0, t, i),
                c = this.createRequest("3", 0, t, i),
                h = this.createRequest("4", 0, t, i),
                u = this.createRequest("5", 0, t, i),
                p = this.createRequest("6", 0, t, i),
                g = this.createRequest("7", 0, t, i),
                f = this.createRequest("8", 0, t, i),
                m = this.createRequest("9", 0, t, i),
                v = this.createRequest("→", 0, t, i),
                b = this.createRequest("￫", 0, t, null),
                _ = this.createRequest("·", 0, t, i),
                w = this.createRequest(String.fromCharCode(11825), 0, t, null),
                y = "|/-_ilm%";
            for (let e = 0, n = y.length; e < n; e++) this.createRequest(y.charAt(e), 0, t, i), this.createRequest(y.charAt(e), 1, t, i), this.createRequest(y.charAt(e), 2, t, i);
            ! function(e, t) {
                new ji(e, t).read()
            }(e, t), m = Math.max(a.width, l.width, d.width, c.width, h.width, u.width, p.width, g.width, f.width, m.width);
            let C = e.fontFeatureSettings === n.e.OFF;
            var x = i[0].width;
            for (let e = 1, t = i.length; C && e < t; e++) {
                var S = x - i[e].width;
                if (S < -.001 || .001 < S) {
                    C = !1;
                    break
                }
            }
            let k = !0;
            return C && b.width !== x && (k = !1), b.width > v.width && (k = !1), v = 2e3 < Ri.b(), new B({
                zoomLevel: Ri.d(),
                pixelRatio: Ri.a(),
                fontFamily: e.fontFamily,
                fontWeight: e.fontWeight,
                fontSize: e.fontSize,
                fontFeatureSettings: e.fontFeatureSettings,
                lineHeight: e.lineHeight,
                letterSpacing: e.letterSpacing,
                isMonospace: C,
                typicalHalfwidthCharacterWidth: r.width,
                typicalFullwidthCharacterWidth: o.width,
                canUseHalfwidthRightwardsArrow: k,
                spaceWidth: s.width,
                middotWidth: _.width,
                wsmiddotWidth: w.width,
                maxDigitWidth: m
            }, v)
        }
    }
    Wi.INSTANCE = new Wi;
    class zi extends Tt {
        constructor(e, t, i = null, n) {
            super(e, t), this.accessibilityService = n, this._elementSizeObserver = this._register(new Bi(i, t.dimension, () => this._recomputeOptions())), this._register(Wi.INSTANCE.onDidChange(() => this._recomputeOptions())), this._validatedOptions.get(10) && this._elementSizeObserver.startObserving(), this._register(Ri.l(e => this._recomputeOptions())), this._register(this.accessibilityService.onDidChangeScreenReaderOptimized(() => this._recomputeOptions())), this._recomputeOptions()
        }
        static applyFontInfoSlow(e, t) {
            e.style.fontFamily = t.getMassagedFontFamily(Ri.h ? n.c.fontFamily : null), e.style.fontWeight = t.fontWeight, e.style.fontSize = t.fontSize + "px", e.style.fontFeatureSettings = t.fontFeatureSettings, e.style.lineHeight = t.lineHeight + "px", e.style.letterSpacing = t.letterSpacing + "px"
        }
        static applyFontInfo(e, t) {
            e.setFontFamily(t.getMassagedFontFamily(Ri.h ? n.c.fontFamily : null)), e.setFontWeight(t.fontWeight), e.setFontSize(t.fontSize), e.setFontFeatureSettings(t.fontFeatureSettings), e.setLineHeight(t.lineHeight), e.setLetterSpacing(t.letterSpacing)
        }
        observeReferenceElement(e) {
            this._elementSizeObserver.observe(e)
        }
        updatePixelRatio() {
            this._recomputeOptions()
        }
        static _getExtraEditorClassName() {
            let e = "";
            return Ri.h || Ri.k || (e += "no-user-select "), Ri.h && (e += "no-minimap-shadow "), A.f && (e += "mac "), e
        }
        _getEnv配置() {
            return {
                extraEditorClassName: zi._getExtraEditorClassName(),
                outerWidth: this._elementSizeObserver.getWidth(),
                outerHeight: this._elementSizeObserver.getHeight(),
                emptySelectionClipboard: Ri.j || Ri.g,
                pixelRatio: Ri.a(),
                zoomLevel: Ri.d(),
                accessibilitySupport: this.accessibilityService.isScreenReaderOptimized() ? 2 : this.accessibilityService.getAccessibilitySupport()
            }
        }
        read配置(e) {
            return Wi.INSTANCE.read配置(e)
        }
    }
    var Hi = i(36),
        Ui = i(34),
        Ki = i(50),
        $i = i(66),
        qi = i(118);
    class Gi {
        constructor(e, t) {
            this.x = e, this.y = t, this._pageCoordinatesBrand = void 0
        }
        toClientCoordinates() {
            return new Yi(this.x - s.f.scrollX, this.y - s.f.scrollY)
        }
    }
    class Yi {
        constructor(e, t) {
            this.clientX = e, this.clientY = t, this._clientCoordinatesBrand = void 0
        }
        toPageCoordinates() {
            return new Gi(this.clientX + s.f.scrollX, this.clientY + s.f.scrollY)
        }
    }
    class Zi {
        constructor(e, t, i, n) {
            this.x = e, this.y = t, this.width = i, this.height = n, this._editorPagePositionBrand = void 0
        }
    }

    function Xi(e) {
        return e = s.A(e), new Zi(e.left, e.top, e.width, e.height)
    }
    class Qi extends $i.a {
        constructor(e, t) {
            super(e), this._editorMouseEventBrand = void 0, this.pos = new Gi(this.posx, this.posy), this.editorPos = Xi(t)
        }
    }
    class Ji {
        constructor(e) {
            this._editorViewDomNode = e
        }
        _create(e) {
            return new Qi(e, this._editorViewDomNode)
        }
        onContextMenu(e, t) {
            return s.g(e, "contextmenu", e => {
                t(this._create(e))
            })
        }
        onMouseUp(e, t) {
            return s.g(e, "mouseup", e => {
                t(this._create(e))
            })
        }
        onMouseDown(e, t) {
            return s.g(e, "mousedown", e => {
                t(this._create(e))
            })
        }
        onMouseLeave(e, t) {
            return s.h(e, e => {
                t(this._create(e))
            })
        }
        onMouseMoveThrottled(e, t, i, n) {
            return s.j(e, "mousemove", t, (e, t) => i(e, this._create(t)), n)
        }
    }
    class en {
        constructor(e) {
            this._editorViewDomNode = e
        }
        _create(e) {
            return new Qi(e, this._editorViewDomNode)
        }
        onPointerUp(e, t) {
            return s.g(e, "pointerup", e => {
                t(this._create(e))
            })
        }
        onPointerDown(e, t) {
            return s.g(e, "pointerdown", e => {
                t(this._create(e))
            })
        }
        onPointerLeave(e, t) {
            return s.i(e, e => {
                t(this._create(e))
            })
        }
        onPointerMoveThrottled(e, t, i, n) {
            return s.j(e, "pointermove", t, (e, t) => i(e, this._create(t)), n)
        }
    }
    class tn extends v.a {
        constructor(e) {
            super(), this._editorViewDomNode = e, this._globalMouseMoveMonitor = this._register(new qi.a), this._keydownListener = null
        }
        startMonitoring(e, t, i, n, r) {
            this._keydownListener = s.l(document, "keydown", e => {
                e.toKeybinding().isModifierKey() || this._globalMouseMoveMonitor.stopMonitoring(!0, e.browserEvent)
            }, !0), this._globalMouseMoveMonitor.startMonitoring(e, t, (e, t) => i(e, new Qi(t, this._editorViewDomNode)), n, e => {
                this._keydownListener.dispose(), r(e)
            })
        }
        stopMonitoring() {
            this._globalMouseMoveMonitor.stopMonitoring(!0)
        }
    }
    class nn extends v.a {
        constructor() {
            super(), this._shouldRender = !0
        }
        shouldRender() {
            return this._shouldRender
        }
        forceShouldRender() {
            this._shouldRender = !0
        }
        setShouldRender() {
            this._shouldRender = !0
        }
        onDidRender() {
            this._shouldRender = !1
        }
        onCompositionStart(e) {
            return !1
        }
        onCompositionEnd(e) {
            return !1
        }
        on配置Changed(e) {
            return !1
        }
        onCursorStateChanged(e) {
            return !1
        }
        onDecorationsChanged(e) {
            return !1
        }
        onFlushed(e) {
            return !1
        }
        onFocusChanged(e) {
            return !1
        }
        onLanguage配置Changed(e) {
            return !1
        }
        onLineMappingChanged(e) {
            return !1
        }
        onLinesChanged(e) {
            return !1
        }
        onLinesDeleted(e) {
            return !1
        }
        onLinesInserted(e) {
            return !1
        }
        onRevealRangeRequest(e) {
            return !1
        }
        onScrollChanged(e) {
            return !1
        }
        onThemeChanged(e) {
            return !1
        }
        onTokensChanged(e) {
            return !1
        }
        onTokensColorsChanged(e) {
            return !1
        }
        onZonesChanged(e) {
            return !1
        }
        handleEvents(e) {
            let t = !1;
            for (let n = 0, r = e.length; n < r; n++) {
                var i = e[n];
                switch (i.type) {
                    case 0:
                        this.onCompositionStart(i) && (t = !0);
                        break;
                    case 1:
                        this.onCompositionEnd(i) && (t = !0);
                        break;
                    case 2:
                        this.on配置Changed(i) && (t = !0);
                        break;
                    case 3:
                        this.onCursorStateChanged(i) && (t = !0);
                        break;
                    case 4:
                        this.onDecorationsChanged(i) && (t = !0);
                        break;
                    case 5:
                        this.onFlushed(i) && (t = !0);
                        break;
                    case 6:
                        this.onFocusChanged(i) && (t = !0);
                        break;
                    case 7:
                        this.onLanguage配置Changed(i) && (t = !0);
                        break;
                    case 8:
                        this.onLineMappingChanged(i) && (t = !0);
                        break;
                    case 9:
                        this.onLinesChanged(i) && (t = !0);
                        break;
                    case 10:
                        this.onLinesDeleted(i) && (t = !0);
                        break;
                    case 11:
                        this.onLinesInserted(i) && (t = !0);
                        break;
                    case 12:
                        this.onRevealRangeRequest(i) && (t = !0);
                        break;
                    case 13:
                        this.onScrollChanged(i) && (t = !0);
                        break;
                    case 15:
                        this.onTokensChanged(i) && (t = !0);
                        break;
                    case 14:
                        this.onThemeChanged(i) && (t = !0);
                        break;
                    case 16:
                        this.onTokensColorsChanged(i) && (t = !0);
                        break;
                    case 17:
                        this.onZonesChanged(i) && (t = !0);
                        break;
                    default:
                        console.info("View received unknown event: "), console.info(i)
                }
            }
            t && (this._shouldRender = !0)
        }
    }
    class rn extends nn {
        constructor(e) {
            super(), this._context = e, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), super.dispose()
        }
    }
    class on {
        static write(e, t) {
            Ui.a, e.setAttribute("data-mprt", String(t))
        }
        static read(e) {
            return null === (e = e.getAttribute("data-mprt")) ? 0 : parseInt(e, 10)
        }
        static collect(e, t) {
            let i = [],
                n = 0;
            for (; e && e !== document.body && e !== t;) e.nodeType === e.ELEMENT_NODE && (i[n++] = this.read(e)), e = e.parentElement;
            const r = new Uint8Array(n);
            for (let e = 0; e < n; e++) r[e] = i[n - e - 1];
            return r
        }
    }
    class sn extends class {
        constructor(e, t) {
            this._restrictedRenderingContextBrand = void 0, this._viewLayout = e, this.viewportData = t, this.scrollWidth = this._viewLayout.getScrollWidth(), this.scrollHeight = this._viewLayout.getScrollHeight(), this.visibleRange = this.viewportData.visibleRange, this.bigNumbersDelta = this.viewportData.bigNumbersDelta, t = this._viewLayout.getCurrentViewport(), this.scrollTop = t.top, this.scrollLeft = t.left, this.viewportWidth = t.width, this.viewportHeight = t.height
        }
        getScrolledTopFromAbsoluteTop(e) {
            return e - this.scrollTop
        }
        getVerticalOffsetForLineNumber(e) {
            return this._viewLayout.getVerticalOffsetForLineNumber(e)
        }
        getDecorationsInViewport() {
            return this.viewportData.getDecorationsInViewport()
        }
    } {
        constructor(e, t, i) {
            super(e, t), this._renderingContextBrand = void 0, this._viewLines = i
        }
        linesVisibleRangesForRange(e, t) {
            return this._viewLines.linesVisibleRangesForRange(e, t)
        }
        visibleRangeForPosition(e) {
            return this._viewLines.visibleRangeForPosition(e)
        }
    }
    class an {
        constructor(e, t, i) {
            this.outsideRenderedLine = e, this.lineNumber = t, this.ranges = i
        }
    }
    class ln {
        constructor(e, t) {
            this._horizontalRangeBrand = void 0, this.left = Math.round(e), this.width = Math.round(t)
        }
        static from(e) {
            const t = new Array(e.length);
            for (let n = 0, r = e.length; n < r; n++) {
                var i = e[n];
                t[n] = new ln(i.left, i.width)
            }
            return t
        }
        toString() {
            return `[${this.left},${this.width}]`
        }
    }
    class dn {
        constructor(e, t) {
            this._floatHorizontalRangeBrand = void 0, this.left = e, this.width = t
        }
        toString() {
            return `[${this.left},${this.width}]`
        }
        static compare(e, t) {
            return e.left - t.left
        }
    }
    class cn {
        constructor(e, t) {
            this.outsideRenderedLine = e, this.originalLeft = t, this.left = Math.round(this.originalLeft)
        }
    }
    class hn {
        constructor(e, t) {
            this.outsideRenderedLine = e, this.ranges = t
        }
    }
    class un {
        static _createRange() {
            return this._handyReadyRange || (this._handyReadyRange = document.createRange()), this._handyReadyRange
        }
        static _detachRange(e, t) {
            e.selectNodeContents(t)
        }
        static _readClientRects(e, t, i, n, r) {
            const o = this._createRange();
            try {
                return o.setStart(e, t), o.setEnd(i, n), o.getClientRects()
            } catch (e) {
                return null
            } finally {
                this._detachRange(o, r)
            }
        }
        static _mergeAdjacentRanges(e) {
            if (1 === e.length) return e;
            e.sort(dn.compare);
            let t = [],
                i = 0,
                n = e[0];
            for (let o = 1, s = e.length; o < s; o++) {
                var r = e[o];
                n.left + n.width + .9 >= r.left ? n.width = Math.max(n.width, r.left + r.width - n.left) : (t[i++] = n, n = r)
            }
            return t[i++] = n, t
        }
        static _createHorizontalRangesFromClientRects(e, t) {
            if (!e || 0 === e.length) return null;
            const i = [];
            for (let r = 0, o = e.length; r < o; r++) {
                var n = e[r];
                i[r] = new dn(Math.max(0, n.left - t), n.width)
            }
            return this._mergeAdjacentRanges(i)
        }
        static readHorizontalRanges(e, t, i, n, r, o, s) {
            var a = e.children.length - 1;
            if (a < 0) return null;
            if ((t = Math.min(a, Math.max(0, t))) === (n = Math.min(a, Math.max(0, n))) && i === r && 0 === i && !e.children[t].firstChild) {
                const i = e.children[t].getClientRects();
                return this._createHorizontalRangesFromClientRects(i, o)
            }
            t !== n && 0 < n && 0 === r && (n--, r = 1073741824);
            let l = e.children[t].firstChild,
                d = e.children[n].firstChild;
            if (l && d || (!l && 0 === i && 0 < t && (l = e.children[t - 1].firstChild, i = 1073741824), !d && 0 === r && 0 < n && (d = e.children[n - 1].firstChild, r = 1073741824)), !l || !d) return null;
            i = Math.min(l.textContent.length, Math.max(0, i)), r = Math.min(d.textContent.length, Math.max(0, r));
            const c = this._readClientRects(l, i, d, r, s);
            return this._createHorizontalRangesFromClientRects(c, o)
        }
    }
    var pn = i(119);
    const gn = !!A.g || !(A.d || Ri.g || Ri.h);
    let fn = !0;
    class mn {
        constructor(e, t) {
            this._domNode = e, this._clientRectDeltaLeft = 0, this._clientRectDeltaLeftRead = !1, this.endNode = t
        }
        get clientRectDeltaLeft() {
            return this._clientRectDeltaLeftRead || (this._clientRectDeltaLeftRead = !0, this._clientRectDeltaLeft = this._domNode.getBoundingClientRect().left), this._clientRectDeltaLeft
        }
    }
    class vn {
        constructor(e, t) {
            this.themeType = t;
            const i = e.options;
            e = i.get(43), this.renderWhitespace = i.get(87), this.renderControlCharacters = i.get(82), this.spaceWidth = e.spaceWidth, this.middotWidth = e.middotWidth, this.wsmiddotWidth = e.wsmiddotWidth, this.useMonospaceOptimizations = e.isMonospace && !i.get(29), this.canUseHalfwidthRightwardsArrow = e.canUseHalfwidthRightwardsArrow, this.lineHeight = i.get(58), this.stopRenderingLineAfter = i.get(104), this.fontLigatures = i.get(44)
        }
        equals(e) {
            return this.themeType === e.themeType && this.renderWhitespace === e.renderWhitespace && this.renderControlCharacters === e.renderControlCharacters && this.spaceWidth === e.spaceWidth && this.middotWidth === e.middotWidth && this.wsmiddotWidth === e.wsmiddotWidth && this.useMonospaceOptimizations === e.useMonospaceOptimizations && this.canUseHalfwidthRightwardsArrow === e.canUseHalfwidthRightwardsArrow && this.lineHeight === e.lineHeight && this.stopRenderingLineAfter === e.stopRenderingLineAfter && this.fontLigatures === e.fontLigatures
        }
    }
    class bn {
        constructor(e) {
            this._options = e, this._isMaybeInvalid = !0, this._renderedViewLine = null
        }
        getDomNode() {
            return this._renderedViewLine && this._renderedViewLine.domNode ? this._renderedViewLine.domNode.domNode : null
        }
        setDomNode(e) {
            if (!this._renderedViewLine) throw new Error("I have no rendered view line to set the dom node to...");
            this._renderedViewLine.domNode = Object(Ui.b)(e)
        }
        onContentChanged() {
            this._isMaybeInvalid = !0
        }
        onTokensChanged() {
            this._isMaybeInvalid = !0
        }
        onDecorationsChanged() {
            this._isMaybeInvalid = !0
        }
        onOptionsChanged(e) {
            this._isMaybeInvalid = !0, this._options = e
        }
        onSelectionChanged() {
            return (this._options.themeType === pn.a.HIGH_CONTRAST || "selection" === this._options.renderWhitespace) && (this._isMaybeInvalid = !0)
        }
        renderLine(e, t, i, r) {
            if (!1 === this._isMaybeInvalid) return !1;
            this._isMaybeInvalid = !1;
            var o, s, a = i.getViewLineRenderingData(e),
                l = this._options;
            const d = Ce.filter(a.inlineDecorations, e, a.minColumn, a.maxColumn);
            let c = null;
            if (l.themeType === pn.a.HIGH_CONTRAST || "selection" === this._options.renderWhitespace)
                for (const t of i.selections) t.endLineNumber < e || t.startLineNumber > e || (o = t.startLineNumber === e ? t.startColumn : a.minColumn) < (s = t.endLineNumber === e ? t.endColumn : a.maxColumn) && (l.themeType === pn.a.HIGH_CONTRAST || "selection" !== this._options.renderWhitespace ? d.push(new Ce(o, s, "inline-selected-text", 0)) : (c = c || [], c.push(new Le(o - 1, s - 1))));
            const h = new Oe(l.useMonospaceOptimizations, l.canUseHalfwidthRightwardsArrow, a.content, a.continuesWithWrappedLine, a.isBasicASCII, a.containsRTL, a.minColumn - 1, a.tokens, d, a.tabSize, a.startVisibleColumn, l.spaceWidth, l.middotWidth, l.wsmiddotWidth, l.stopRenderingLineAfter, l.renderWhitespace, l.renderControlCharacters, l.fontLigatures !== n.e.OFF, c);
            if (this._renderedViewLine && this._renderedViewLine.input.equals(h)) return !1;
            r.appendASCIIString('<div style="top:'), r.appendASCIIString(String(t)), r.appendASCIIString("px;height:"), r.appendASCIIString(String(this._options.lineHeight)), r.appendASCIIString('px;" class="'), r.appendASCIIString(bn.CLASS_NAME), r.appendASCIIString('">'), t = Ie(h, r), r.appendASCIIString("</div>");
            let u = null;
            return fn && gn && a.isBasicASCII && l.useMonospaceOptimizations && 0 === t.containsForeignElements && a.content.length < 300 && h.lineTokens.getCount() < 100 && (u = new _n(this._renderedViewLine ? this._renderedViewLine.domNode : null, h, t.characterMapping)), u = u || Cn(this._renderedViewLine ? this._renderedViewLine.domNode : null, h, t.characterMapping, t.containsRTL, t.containsForeignElements), this._renderedViewLine = u, !0
        }
        layoutLine(e, t) {
            this._renderedViewLine && this._renderedViewLine.domNode && (this._renderedViewLine.domNode.setTop(t), this._renderedViewLine.domNode.setHeight(this._options.lineHeight))
        }
        getWidth() {
            return this._renderedViewLine ? this._renderedViewLine.getWidth() : 0
        }
        getWidthIsFast() {
            return !this._renderedViewLine || this._renderedViewLine.getWidthIsFast()
        }
        needsMonospaceFontCheck() {
            return !!this._renderedViewLine && this._renderedViewLine instanceof _n
        }
        monospaceAssumptionsAreValid() {
            return this._renderedViewLine && this._renderedViewLine instanceof _n ? this._renderedViewLine.monospaceAssumptionsAreValid() : fn
        }
        onMonospaceAssumptionsInvalidated() {
            this._renderedViewLine && this._renderedViewLine instanceof _n && (this._renderedViewLine = this._renderedViewLine.toSlowRenderedLine())
        }
        getVisibleRangesForRange(e, t, i, n) {
            if (!this._renderedViewLine) return null;
            t |= 0, i |= 0, t = Math.min(this._renderedViewLine.input.lineContent.length + 1, Math.max(1, t)), i = Math.min(this._renderedViewLine.input.lineContent.length + 1, Math.max(1, i));
            var r = 0 | this._renderedViewLine.input.stopRenderingLineAfter;
            let o = -1 != r && 1 + r < t && 1 + r < i;
            return (n = this._renderedViewLine.getVisibleRangesForRange(e, t = -1 != r && 1 + r < t ? 1 + r : t, i = -1 != r && 1 + r < i ? 1 + r : i, n)) && 0 < n.length ? new hn(o, n) : null
        }
        getColumnOfNodeOffset(e, t, i) {
            return this._renderedViewLine ? this._renderedViewLine.getColumnOfNodeOffset(e, t, i) : 1
        }
    }
    bn.CLASS_NAME = "view-line";
    class _n {
        constructor(e, t, i) {
            this.domNode = e, this.input = t, this._characterMapping = i, this._charWidth = t.spaceWidth
        }
        getWidth() {
            return Math.round(this._getCharPosition(this._characterMapping.length))
        }
        getWidthIsFast() {
            return !0
        }
        monospaceAssumptionsAreValid() {
            if (!this.domNode) return fn;
            var e = this.getWidth(),
                t = this.domNode.domNode.firstChild.offsetWidth;
            return 2 <= Math.abs(e - t) && (console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"), fn = !1), fn
        }
        toSlowRenderedLine() {
            return Cn(this.domNode, this.input, this._characterMapping, !1, 0)
        }
        getVisibleRangesForRange(e, t, i, n) {
            return t = this._getCharPosition(t), i = this._getCharPosition(i), [new dn(t, i - t)]
        }
        _getCharPosition(e) {
            return e = this._characterMapping.getAbsoluteOffset(e), this._charWidth * e
        }
        getColumnOfNodeOffset(e, t, i) {
            var n = t.textContent.length;
            let r = -1;
            for (; t;) t = t.previousSibling, r++;
            return this._characterMapping.getColumn(new Ee(r, i), n)
        }
    }
    class wn {
        constructor(e, t, i, n, r) {
            if (this.domNode = e, this.input = t, this._characterMapping = i, this._isWhitespaceOnly = /^\s*$/.test(t.lineContent), this._containsForeignElements = r, this._cachedWidth = -1, this._pixelOffsetCache = null, !n || 0 === this._characterMapping.length) {
                this._pixelOffsetCache = new Float32Array(Math.max(2, this._characterMapping.length + 1));
                for (let e = 0, t = this._characterMapping.length; e <= t; e++) this._pixelOffsetCache[e] = -1
            }
        }
        _getReadingTarget(e) {
            return e.domNode.firstChild
        }
        getWidth() {
            return this.domNode ? (-1 === this._cachedWidth && (this._cachedWidth = this._getReadingTarget(this.domNode).offsetWidth), this._cachedWidth) : 0
        }
        getWidthIsFast() {
            return -1 !== this._cachedWidth
        }
        getVisibleRangesForRange(e, t, i, n) {
            return this.domNode ? null === this._pixelOffsetCache ? this._readVisibleRangesForRange(this.domNode, e, t, i, n) : -1 === (t = this._readPixelOffset(this.domNode, e, t, n)) || -1 === (n = this._readPixelOffset(this.domNode, e, i, n)) ? null : [new dn(t, n - t)] : null
        }
        _readVisibleRangesForRange(e, t, i, n, r) {
            return i !== n ? this._readRawVisibleRangesForRange(e, i, n, r) : -1 === (r = this._readPixelOffset(e, t, i, r)) ? null : [new dn(r, 0)]
        }
        _readPixelOffset(e, t, i, n) {
            if (0 === this._characterMapping.length) {
                if (0 === this._containsForeignElements) return 0;
                if (2 === this._containsForeignElements) return 0;
                if (1 === this._containsForeignElements) return this.getWidth();
                var r = this._getReadingTarget(e);
                return r.firstChild ? r.firstChild.offsetWidth : 0
            }
            return null === this._pixelOffsetCache ? this._actualReadPixelOffset(e, t, i, n) : -1 !== (r = this._pixelOffsetCache[i]) ? r : (n = this._actualReadPixelOffset(e, t, i, n), this._pixelOffsetCache[i] = n)
        }
        _actualReadPixelOffset(e, t, i, n) {
            if (0 === this._characterMapping.length) {
                const t = un.readHorizontalRanges(this._getReadingTarget(e), 0, 0, 0, 0, n.clientRectDeltaLeft, n.endNode);
                return t && 0 !== t.length ? t[0].left : -1
            }
            if (i === this._characterMapping.length && this._isWhitespaceOnly && 0 === this._containsForeignElements) return this.getWidth();
            var r = this._characterMapping.getDomPosition(i);
            const o = un.readHorizontalRanges(this._getReadingTarget(e), r.partIndex, r.charIndex, r.partIndex, r.charIndex, n.clientRectDeltaLeft, n.endNode);
            return o && 0 !== o.length ? (n = o[0].left, this.input.isBasicASCII && (i = this._characterMapping.getAbsoluteOffset(i), i = Math.round(this.input.spaceWidth * i), Math.abs(i - n) <= 1) ? i : n) : -1
        }
        _readRawVisibleRangesForRange(e, t, i, n) {
            return 1 === t && i === this._characterMapping.length ? [new dn(0, this.getWidth())] : (t = this._characterMapping.getDomPosition(t), i = this._characterMapping.getDomPosition(i), un.readHorizontalRanges(this._getReadingTarget(e), t.partIndex, t.charIndex, i.partIndex, i.charIndex, n.clientRectDeltaLeft, n.endNode))
        }
        getColumnOfNodeOffset(e, t, i) {
            var n = t.textContent.length;
            let r = -1;
            for (; t;) t = t.previousSibling, r++;
            return this._characterMapping.getColumn(new Ee(r, i), n)
        }
    }
    class yn extends wn {
        _readVisibleRangesForRange(e, t, i, n, r) {
            var o = super._readVisibleRangesForRange(e, t, i, n, r);
            if (!o || 0 === o.length || i === n || 1 === i && n === this._characterMapping.length) return o;
            if (!this.input.containsRTL && -1 !== (r = this._readPixelOffset(e, t, n, r))) {
                const e = o[o.length - 1];
                e.left < r && (e.width = r - e.left)
            }
            return o
        }
    }
    const Cn = Ri.j ? function(e, t, i, n, r) {
        return new yn(e, t, i, n, r)
    } : function(e, t, i, n, r) {
        return new wn(e, t, i, n, r)
    };
    var xn, Sn = i(14),
        kn = i(160);
    class Ln {
        constructor(e = null) {
            this.hitTarget = e, this.type = 0
        }
    }
    class On {
        constructor(e, t, i) {
            this.position = e, this.spanNode = t, this.injectedText = i, this.type = 1
        }
    }(xn || (xn = {})).createFromDOMInfo = function(e, t, i) {
        return (i = e.getPositionFromDOMInfo(t, i)) ? new On(i, t, null) : new Ln(t)
    };
    class En {
        constructor(e, t) {
            this.lastViewCursorsRenderData = e, this.lastTextareaPosition = t
        }
    }
    class Nn {
        constructor(e, t, i = 0, n = null, r = null, o = null) {
            this.element = e, this.type = t, this.mouseColumn = i, this.position = n, !r && n && (r = new T.a(n.lineNumber, n.column, n.lineNumber, n.column)), this.range = r, this.detail = o
        }
        static _typeToString(e) {
            return 1 === e ? "TEXTAREA" : 2 === e ? "GUTTER_GLYPH_MARGIN" : 3 === e ? "GUTTER_LINE_NUMBERS" : 4 === e ? "GUTTER_LINE_DECORATIONS" : 5 === e ? "GUTTER_VIEW_ZONE" : 6 === e ? "CONTENT_TEXT" : 7 === e ? "CONTENT_EMPTY" : 8 === e ? "CONTENT_VIEW_ZONE" : 9 === e ? "CONTENT_WIDGET" : 10 === e ? "OVERVIEW_RULER" : 11 === e ? "SCROLLBAR" : 12 === e ? "OVERLAY_WIDGET" : "UNKNOWN"
        }
        static toString(e) {
            return this._typeToString(e.type) + ": " + e.position + " - " + e.range + " - " + e.detail
        }
        toString() {
            return Nn.toString(this)
        }
    }
    class Dn {
        static isTextArea(e) {
            return 2 === e.length && 3 === e[0] && 6 === e[1]
        }
        static isChildOfViewLines(e) {
            return 4 <= e.length && 3 === e[0] && 7 === e[3]
        }
        static isStrictChildOfViewLines(e) {
            return 4 < e.length && 3 === e[0] && 7 === e[3]
        }
        static isChildOfScrollableElement(e) {
            return 2 <= e.length && 3 === e[0] && 5 === e[1]
        }
        static isChildOfMinimap(e) {
            return 2 <= e.length && 3 === e[0] && 8 === e[1]
        }
        static isChildOfContentWidgets(e) {
            return 4 <= e.length && 3 === e[0] && 1 === e[3]
        }
        static isChildOfOverflowingContentWidgets(e) {
            return 1 <= e.length && 2 === e[0]
        }
        static isChildOfOverlayWidgets(e) {
            return 2 <= e.length && 3 === e[0] && 4 === e[1]
        }
    }
    class In {
        constructor(e, t, i) {
            this.model = e.model;
            const n = e.configuration.options;
            this.layoutInfo = n.get(129), this.viewDomNode = t.viewDomNode, this.lineHeight = n.get(58), this.stickyTabStops = n.get(103), this.typicalHalfwidthCharacterWidth = n.get(43).typicalHalfwidthCharacterWidth, this.lastRenderData = i, this._context = e, this._viewHelper = t
        }
        getZoneAtCoord(e) {
            return In.getZoneAtCoord(this._context, e)
        }
        static getZoneAtCoord(e, t) {
            var i = e.viewLayout.getWhitespaceAtVerticalOffset(t);
            if (i) {
                var n = i.verticalOffset + i.height / 2,
                    r = e.model.getLineCount();
                let o, s = null,
                    a = null;
                return i.afterLineNumber !== r && (a = new Re.a(i.afterLineNumber + 1, 1)), 0 < i.afterLineNumber && (s = new Re.a(i.afterLineNumber, e.model.getLineMaxColumn(i.afterLineNumber))), o = null === a || null !== s && t < n ? s : a, {
                    viewZoneId: i.id,
                    afterLineNumber: i.afterLineNumber,
                    positionBefore: s,
                    positionAfter: a,
                    position: o
                }
            }
            return null
        }
        getFullLineRangeAtCoord(e) {
            if (this._context.viewLayout.isAfterLines(e)) {
                const e = this._context.model.getLineCount(),
                    t = this._context.model.getLineMaxColumn(e);
                return {
                    range: new T.a(e, t, e, t),
                    isAfterLines: !0
                }
            }
            const t = this._context.viewLayout.getLineNumberAtVerticalOffset(e),
                i = this._context.model.getLineMaxColumn(t);
            return {
                range: new T.a(t, 1, t, i),
                isAfterLines: !1
            }
        }
        getLineNumberAtVerticalOffset(e) {
            return this._context.viewLayout.getLineNumberAtVerticalOffset(e)
        }
        isAfterLines(e) {
            return this._context.viewLayout.isAfterLines(e)
        }
        isInTopPadding(e) {
            return this._context.viewLayout.isInTopPadding(e)
        }
        isInBottomPadding(e) {
            return this._context.viewLayout.isInBottomPadding(e)
        }
        getVerticalOffsetForLineNumber(e) {
            return this._context.viewLayout.getVerticalOffsetForLineNumber(e)
        }
        findAttribute(e, t) {
            return In._findAttribute(e, t, this._viewHelper.viewDomNode)
        }
        static _findAttribute(e, t, i) {
            for (; e && e !== document.body;) {
                if (e.hasAttribute && e.hasAttribute(t)) return e.getAttribute(t);
                if (e === i) return null;
                e = e.parentNode
            }
            return null
        }
        getLineWidth(e) {
            return this._viewHelper.getLineWidth(e)
        }
        visibleRangeForPosition(e, t) {
            return this._viewHelper.visibleRangeForPosition(e, t)
        }
        getPositionFromDOMInfo(e, t) {
            return this._viewHelper.getPositionFromDOMInfo(e, t)
        }
        getCurrentScrollTop() {
            return this._context.viewLayout.getCurrentScrollTop()
        }
        getCurrentScrollLeft() {
            return this._context.viewLayout.getCurrentScrollLeft()
        }
    }
    class Tn extends class {
        constructor(e, t, i) {
            this.editorPos = t, this.pos = i, this.mouseVerticalOffset = Math.max(0, e.getCurrentScrollTop() + i.y - t.y), this.mouseContentHorizontalOffset = e.getCurrentScrollLeft() + i.x - t.x - e.layoutInfo.contentLeft, this.isInMarginArea = i.x - t.x < e.layoutInfo.contentLeft && i.x - t.x >= e.layoutInfo.glyphMarginLeft, this.isInContentArea = !this.isInMarginArea, this.mouseColumn = Math.max(0, An._getMouseColumn(this.mouseContentHorizontalOffset, e.typicalHalfwidthCharacterWidth))
        }
    } {
        constructor(e, t, i, n) {
            super(e, t, i), this._ctx = e, n ? (this.target = n, this.targetPath = on.collect(n, e.viewDomNode)) : (this.target = null, this.targetPath = new Uint8Array(0))
        }
        toString() {
            return `pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}\n\ttarget: ${this.target?this.target.outerHTML:null}`
        }
        fulfill(e, t = null, i = null, n = null) {
            let r = this.mouseColumn;
            return t && t.column < this._ctx.model.getLineMaxColumn(t.lineNumber) && (r = Sn.a.visibleColumnFromColumn(this._ctx.model.getLineContent(t.lineNumber), t.column, this._ctx.model.getTextModelOptions().tabSize) + 1), new Nn(this.target, e, r, t, i, n)
        }
        withTarget(e) {
            return new Tn(this._ctx, this.editorPos, this.pos, e)
        }
    }
    const Mn = {
        isAfterLines: !0
    };

    function Pn(e) {
        return {
            isAfterLines: !1,
            horizontalDistanceToText: e
        }
    }
    class An {
        constructor(e, t) {
            this._context = e, this._viewHelper = t
        }
        mouseTargetIsWidget(e) {
            return e = e.target, e = on.collect(e, this._viewHelper.viewDomNode), !(!Dn.isChildOfContentWidgets(e) && !Dn.isChildOfOverflowingContentWidgets(e) && !Dn.isChildOfOverlayWidgets(e))
        }
        createMouseTarget(e, t, i, n) {
            e = new In(this._context, this._viewHelper, e);
            const r = new Tn(e, t, i, n);
            try {
                return An._createMouseTarget(e, r, !1)
            } catch (e) {
                return r.fulfill(0)
            }
        }
        static _createMouseTarget(e, t, i) {
            if (null === t.target) {
                if (i) return t.fulfill(0);
                var n = An._doHitTest(e, t);
                return 1 === n.type ? An.createMouseTargetFromHitTestPosition(e, t, n.spanNode, n.position, n.injectedText) : this._createMouseTarget(e, t.withTarget(n.hitTarget), !0)
            }
            return n = t, An._hitTestContentWidget(e, n) || An._hitTestOverlayWidget(e, n) || An._hitTestMinimap(e, n) || An._hitTestScrollbarSlider(e, n) || An._hitTestViewZone(e, n) || An._hitTestMargin(e, n) || An._hitTestViewCursor(e, n) || An._hitTestTextArea(e, n) || An._hitTestViewLines(e, n, i) || An._hitTestScrollbar(e, n) || t.fulfill(0)
        }
        static _hitTestContentWidget(e, t) {
            return Dn.isChildOfContentWidgets(t.targetPath) || Dn.isChildOfOverflowingContentWidgets(t.targetPath) ? (e = e.findAttribute(t.target, "widgetId")) ? t.fulfill(9, null, null, e) : t.fulfill(0) : null
        }
        static _hitTestOverlayWidget(e, t) {
            return Dn.isChildOfOverlayWidgets(t.targetPath) ? (e = e.findAttribute(t.target, "widgetId")) ? t.fulfill(12, null, null, e) : t.fulfill(0) : null
        }
        static _hitTestViewCursor(e, t) {
            if (t.target)
                for (const i of e.lastRenderData.lastViewCursorsRenderData)
                    if (t.target === i.domNode) return t.fulfill(6, i.position, null, {
                        mightBeForeignElement: !1
                    });
            if (t.isInContentArea) {
                var i = e.lastRenderData.lastViewCursorsRenderData,
                    n = t.mouseContentHorizontalOffset,
                    r = t.mouseVerticalOffset;
                for (const s of i)
                    if (!(n < s.contentLeft || n > s.contentLeft + s.width)) {
                        var o = e.getVerticalOffsetForLineNumber(s.position.lineNumber);
                        if (o <= r && r <= o + s.height) return t.fulfill(6, s.position, null, {
                            mightBeForeignElement: !1
                        })
                    }
            }
            return null
        }
        static _hitTestViewZone(e, t) {
            var i = e.getZoneAtCoord(t.mouseVerticalOffset);
            return i ? (e = t.isInContentArea ? 8 : 5, t.fulfill(e, i.position, null, i)) : null
        }
        static _hitTestTextArea(e, t) {
            return Dn.isTextArea(t.targetPath) ? e.lastRenderData.lastTextareaPosition ? t.fulfill(6, e.lastRenderData.lastTextareaPosition, null, {
                mightBeForeignElement: !1
            }) : t.fulfill(1, e.lastRenderData.lastTextareaPosition) : null
        }
        static _hitTestMargin(e, t) {
            if (t.isInMarginArea) {
                const o = e.getFullLineRangeAtCoord(t.mouseVerticalOffset);
                var i = o.range.getStartPosition(),
                    n = Math.abs(t.pos.x - t.editorPos.x),
                    r = {
                        isAfterLines: o.isAfterLines,
                        glyphMarginLeft: e.layoutInfo.glyphMarginLeft,
                        glyphMarginWidth: e.layoutInfo.glyphMarginWidth,
                        lineNumbersWidth: e.layoutInfo.lineNumbersWidth,
                        offsetX: n
                    };
                return (n -= e.layoutInfo.glyphMarginLeft) <= e.layoutInfo.glyphMarginWidth ? t.fulfill(2, i, o.range, r) : (n -= e.layoutInfo.glyphMarginWidth) <= e.layoutInfo.lineNumbersWidth ? t.fulfill(3, i, o.range, r) : (e.layoutInfo.lineNumbersWidth, t.fulfill(4, i, o.range, r))
            }
            return null
        }
        static _hitTestViewLines(e, t, i) {
            if (!Dn.isChildOfViewLines(t.targetPath)) return null;
            if (e.isInTopPadding(t.mouseVerticalOffset)) return t.fulfill(7, new Re.a(1, 1), null, Mn);
            if (e.isAfterLines(t.mouseVerticalOffset) || e.isInBottomPadding(t.mouseVerticalOffset)) {
                var n = e.model.getLineCount(),
                    r = e.model.getLineMaxColumn(n);
                return t.fulfill(7, new Re.a(n, r), null, Mn)
            }
            if (i) {
                if (Dn.isStrictChildOfViewLines(t.targetPath)) {
                    if (i = e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset), 0 === e.model.getLineLength(i)) {
                        var o = e.getLineWidth(i);
                        o = Pn(t.mouseContentHorizontalOffset - o);
                        return t.fulfill(7, new Re.a(i, 1), null, o)
                    }
                    if (o = e.getLineWidth(i), t.mouseContentHorizontalOffset >= o) {
                        var s = Pn(t.mouseContentHorizontalOffset - o);
                        i = new Re.a(i, e.model.getLineMaxColumn(i));
                        return t.fulfill(7, i, null, s)
                    }
                }
                return t.fulfill(0)
            }
            return 1 === (s = An._doHitTest(e, t)).type ? An.createMouseTargetFromHitTestPosition(e, t, s.spanNode, s.position, s.injectedText) : this._createMouseTarget(e, t.withTarget(s.hitTarget), !0)
        }
        static _hitTestMinimap(e, t) {
            if (Dn.isChildOfMinimap(t.targetPath)) {
                var i = e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);
                e = e.model.getLineMaxColumn(i);
                return t.fulfill(11, new Re.a(i, e))
            }
            return null
        }
        static _hitTestScrollbarSlider(e, t) {
            if (Dn.isChildOfScrollableElement(t.targetPath) && t.target && 1 === t.target.nodeType) {
                var i = t.target.className;
                if (i && /\b(slider|scrollbar)\b/.test(i)) return i = e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset), e = e.model.getLineMaxColumn(i), t.fulfill(11, new Re.a(i, e))
            }
            return null
        }
        static _hitTestScrollbar(e, t) {
            if (Dn.isChildOfScrollableElement(t.targetPath)) {
                var i = e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);
                e = e.model.getLineMaxColumn(i);
                return t.fulfill(11, new Re.a(i, e))
            }
            return null
        }
        getMouseColumn(e, t) {
            const i = this._context.configuration.options;
            var n = i.get(129);
            n = this._context.viewLayout.getCurrentScrollLeft() + t.x - e.x - n.contentLeft;
            return An._getMouseColumn(n, i.get(43).typicalHalfwidthCharacterWidth)
        }
        static _getMouseColumn(e, t) {
            return e < 0 ? 1 : Math.round(e / t) + 1
        }
        static createMouseTargetFromHitTestPosition(e, t, i, n, r) {
            var o = n.lineNumber,
                s = n.column,
                a = e.getLineWidth(o);
            if (t.mouseContentHorizontalOffset > a) {
                var l = Pn(t.mouseContentHorizontalOffset - a);
                return t.fulfill(7, n, null, l)
            }
            const d = e.visibleRangeForPosition(o, s);
            if (!d) return t.fulfill(0, n);
            if (l = d.left, t.mouseContentHorizontalOffset === l) return t.fulfill(6, n, null, {
                mightBeForeignElement: !!r
            });
            const c = [];
            if (c.push({
                    offset: d.left,
                    column: s
                }), 1 < s) {
                const t = e.visibleRangeForPosition(o, s - 1);
                t && c.push({
                    offset: t.left,
                    column: s - 1
                })
            }
            if (s < e.model.getLineMaxColumn(o)) {
                const t = e.visibleRangeForPosition(o, s + 1);
                t && c.push({
                    offset: t.left,
                    column: s + 1
                })
            }
            c.sort((e, t) => e.offset - t.offset);
            s = t.pos.toClientCoordinates();
            var h = (i = i.getBoundingClientRect()).left <= s.clientX && s.clientX <= i.right;
            for (let e = 1; e < c.length; e++) {
                var u = c[e - 1],
                    p = c[e];
                if (u.offset <= t.mouseContentHorizontalOffset && t.mouseContentHorizontalOffset <= p.offset) return p = new T.a(o, u.column, o, p.column), t.fulfill(6, n, p, {
                    mightBeForeignElement: !h || !!r
                })
            }
            return t.fulfill(6, n, null, {
                mightBeForeignElement: !h || !!r
            })
        }
        static _doHitTestWithCaretRangeFromPoint(e, t) {
            var i = e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);
            i = e.getVerticalOffsetForLineNumber(i) + Math.floor(e.lineHeight / 2);
            let n = t.pos.y + (i - t.mouseVerticalOffset);
            n <= t.editorPos.y && (n = t.editorPos.y + 1), n >= t.editorPos.y + e.layoutInfo.height && (n = t.editorPos.y + e.layoutInfo.height - 1);
            const r = new Gi(t.pos.x, n);
            return 1 === (i = this._actualDoHitTestWithCaretRangeFromPoint(e, r.toClientCoordinates())).type ? i : this._actualDoHitTestWithCaretRangeFromPoint(e, t.pos.toClientCoordinates())
        }
        static _actualDoHitTestWithCaretRangeFromPoint(e, t) {
            const i = s.C(e.viewDomNode);
            let n;
            if (n = i ? void 0 === i.caretRangeFromPoint ? function(e, t, i) {
                    const n = document.createRange();
                    let r = e.elementFromPoint(t, i);
                    if (null !== r) {
                        for (; r && r.firstChild && r.firstChild.nodeType !== r.firstChild.TEXT_NODE && r.lastChild && r.lastChild.firstChild;) r = r.lastChild;
                        i = r.getBoundingClientRect();
                        var o, s = window.getComputedStyle(r, null).getPropertyValue("font");
                        const e = r.innerText;
                        let a = i.left,
                            l = 0;
                        if (t > i.left + i.width) l = e.length;
                        else {
                            const i = Rn.getInstance();
                            for (let n = 0; n < e.length + 1; n++) {
                                if (a += o = i.getCharWidth(e.charAt(n), s) / 2, t < a) {
                                    l = n;
                                    break
                                }
                                a += o
                            }
                        }
                        n.setStart(r.firstChild, l), n.setEnd(r.firstChild, l)
                    }
                    return n
                }(i, t.clientX, t.clientY) : i.caretRangeFromPoint(t.clientX, t.clientY) : document.caretRangeFromPoint(t.clientX, t.clientY), !n || !n.startContainer) return new Ln;
            var r = n.startContainer;
            if (r.nodeType === r.TEXT_NODE) {
                var o = r.parentNode;
                return ((t = (t = o ? o.parentNode : null) ? t.parentNode : null) && t.nodeType === t.ELEMENT_NODE ? t.className : null) === bn.CLASS_NAME ? xn.createFromDOMInfo(e, o, n.startOffset) : new Ln(r.parentNode)
            }
            return r.nodeType !== r.ELEMENT_NODE ? new Ln : ((o = (o = r.parentNode) ? o.parentNode : null) && o.nodeType === o.ELEMENT_NODE ? o.className : null) === bn.CLASS_NAME ? xn.createFromDOMInfo(e, r, r.textContent.length) : new Ln(r)
        }
        static _doHitTestWithCaretPositionFromPoint(e, t) {
            if ((t = document.caretPositionFromPoint(t.clientX, t.clientY)).offsetNode.nodeType === t.offsetNode.TEXT_NODE) {
                var i, n = (i = t.offsetNode.parentNode) ? i.parentNode : null;
                return ((i = n ? n.parentNode : null) && i.nodeType === i.ELEMENT_NODE ? i.className : null) === bn.CLASS_NAME ? xn.createFromDOMInfo(e, t.offsetNode.parentNode, t.offset) : new Ln(t.offsetNode.parentNode)
            }
            if (t.offsetNode.nodeType === t.offsetNode.ELEMENT_NODE)
                if (i = (n = t.offsetNode.parentNode) && n.nodeType === n.ELEMENT_NODE ? n.className : null, n = (n = n ? n.parentNode : null) && n.nodeType === n.ELEMENT_NODE ? n.className : null, i === bn.CLASS_NAME) {
                    if (i = t.offsetNode.childNodes[Math.min(t.offset, t.offsetNode.childNodes.length - 1)]) return xn.createFromDOMInfo(e, i, 0)
                } else if (n === bn.CLASS_NAME) return xn.createFromDOMInfo(e, t.offsetNode, 0);
            return new Ln(t.offsetNode)
        }
        static _snapToSoftTabBoundary(e, t) {
            var i = t.getLineContent(e.lineNumber),
                {
                    tabSize: t
                } = t.getTextModelOptions();
            return -1 !== (t = kn.a.atomicPosition(i, e.column - 1, t, 2)) ? new Re.a(e.lineNumber, t + 1) : e
        }
        static _doHitTest(e, t) {
            let i = new Ln;
            if ("function" == typeof document.caretRangeFromPoint ? i = this._doHitTestWithCaretRangeFromPoint(e, t) : document.caretPositionFromPoint && (i = this._doHitTestWithCaretPositionFromPoint(e, t.pos.toClientCoordinates())), 1 === i.type) {
                t = e.model.getInjectedTextAt(i.position);
                const n = e.model.normalizePosition(i.position, 2);
                !t && n.equals(i.position) || (i = new On(n, i.spanNode, t))
            }
            return 1 === i.type && e.stickyTabStops && (i = new On(this._snapToSoftTabBoundary(i.position, e.model), i.spanNode, i.injectedText)), i
        }
    }
    class Rn {
        constructor() {
            this._cache = {}, this._canvas = document.createElement("canvas")
        }
        static getInstance() {
            return Rn._INSTANCE || (Rn._INSTANCE = new Rn), Rn._INSTANCE
        }
        getCharWidth(e, t) {
            var i = e + t;
            if (this._cache[i]) return this._cache[i];
            const n = this._canvas.getContext("2d");
            return n.font = t, e = n.measureText(e).width, this._cache[i] = e
        }
    }

    function Fn(e) {
        return function(t, i) {
            let n = !1;
            return e && (n = e.mouseTargetIsWidget(i)), n || i.preventDefault(), i
        }
    }
    Rn._INSTANCE = null;
    class jn extends nn {
        constructor(e, t, i) {
            super(), this._context = e, this.viewController = t, this.viewHelper = i, this.mouseTargetFactory = new An(this._context, i), this._mouseDownOperation = this._register(new Bn(this._context, this.viewController, this.viewHelper, (e, t) => this._createMouseTarget(e, t), e => this._getMouseColumn(e))), this.lastMouseLeaveTime = -1, this._height = this._context.configuration.options.get(129).height;
            const n = new Ji(this.viewHelper.viewDomNode);
            this._register(n.onContextMenu(this.viewHelper.viewDomNode, e => this._onContextMenu(e, !0))), this._register(n.onMouseMoveThrottled(this.viewHelper.viewDomNode, e => this._onMouseMove(e), Fn(this.mouseTargetFactory), jn.MOUSE_MOVE_MINIMUM_TIME)), this._register(n.onMouseUp(this.viewHelper.viewDomNode, e => this._onMouseUp(e))), this._register(n.onMouseLeave(this.viewHelper.viewDomNode, e => this._onMouseLeave(e))), this._register(n.onMouseDown(this.viewHelper.viewDomNode, e => this._onMouseDown(e))), this._register(s.g(this.viewHelper.viewDomNode, s.d.MOUSE_WHEEL, e => {
                if (this.viewController.emitMouseWheel(e), this._context.configuration.options.get(67)) {
                    const i = new $i.b(e);
                    var t;
                    (A.f ? (e.metaKey || e.ctrlKey) && !e.shiftKey && !e.altKey : e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey) && (t = R.getZoomLevel(), e = 0 < i.deltaY ? 1 : -1, R.setZoomLevel(t + e), i.preventDefault(), i.stopPropagation())
                }
            }, {
                capture: !0,
                passive: !1
            })), this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), super.dispose()
        }
        on配置Changed(e) {
            return e.hasChanged(129) && (e = this._context.configuration.options.get(129).height, this._height !== e && (this._height = e, this._mouseDownOperation.onHeightChanged())), !1
        }
        onCursorStateChanged(e) {
            return this._mouseDownOperation.onCursorStateChanged(e), !1
        }
        onFocusChanged(e) {
            return !1
        }
        onScrollChanged(e) {
            return this._mouseDownOperation.onScrollChanged(), !1
        }
        getTargetAtClientPoint(e, t) {
            return e = new Yi(e, t).toPageCoordinates(), t = Xi(this.viewHelper.viewDomNode), e.y < t.y || e.y > t.y + t.height || e.x < t.x || e.x > t.x + t.width ? null : this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), t, e, null)
        }
        _createMouseTarget(e, t) {
            let i = e.target;
            if (!this.viewHelper.viewDomNode.contains(i)) {
                const t = s.C(this.viewHelper.viewDomNode);
                t && (i = t.elementsFromPoint(e.posx, e.posy).find(e => this.viewHelper.viewDomNode.contains(e)))
            }
            return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, t ? i : null)
        }
        _getMouseColumn(e) {
            return this.mouseTargetFactory.getMouseColumn(e.editorPos, e.pos)
        }
        _onContextMenu(e, t) {
            this.viewController.emitContextMenu({
                event: e,
                target: this._createMouseTarget(e, t)
            })
        }
        _onMouseMove(e) {
            this._mouseDownOperation.isActive() || e.timestamp < this.lastMouseLeaveTime || this.viewController.emitMouseMove({
                event: e,
                target: this._createMouseTarget(e, !0)
            })
        }
        _onMouseLeave(e) {
            this.lastMouseLeaveTime = (new Date).getTime(), this.viewController.emitMouseLeave({
                event: e,
                target: null
            })
        }
        _onMouseUp(e) {
            this.viewController.emitMouseUp({
                event: e,
                target: this._createMouseTarget(e, !0)
            })
        }
        _onMouseDown(e) {
            var t = this._createMouseTarget(e, !0),
                i = 6 === t.type || 7 === t.type,
                n = 2 === t.type || 3 === t.type || 4 === t.type,
                r = 3 === t.type,
                o = this._context.configuration.options.get(97),
                s = 8 === t.type || 5 === t.type,
                a = 9 === t.type;
            let l = e.leftButton || e.middleButton;
            A.f && e.leftButton && e.ctrlKey && (l = !1);
            var d = () => {
                e.preventDefault(), this.viewHelper.focusTextArea()
            };
            l && (i || r && o) ? (d(), this._mouseDownOperation.start(t.type, e)) : n ? e.preventDefault() : s ? (s = t.detail, this.viewHelper.shouldSuppressMouseDownOnViewZone(s.viewZoneId) && (d(), this._mouseDownOperation.start(t.type, e), e.preventDefault())) : a && this.viewHelper.shouldSuppressMouseDownOnWidget(t.detail) && (d(), e.preventDefault()), this.viewController.emitMouseDown({
                event: e,
                target: t
            })
        }
    }
    jn.MOUSE_MOVE_MINIMUM_TIME = 100;
    class Bn extends v.a {
        constructor(e, t, i, n, r) {
            super(), this._context = e, this._viewController = t, this._viewHelper = i, this._createMouseTarget = n, this._getMouseColumn = r, this._mouseMoveMonitor = this._register(new tn(this._viewHelper.viewDomNode)), this._onScrollTimeout = this._register(new q.g), this._mouseState = new Vn, this._currentSelection = new Hi.a(1, 1, 1, 1), this._isActive = !1, this._lastMouseEvent = null
        }
        dispose() {
            super.dispose()
        }
        isActive() {
            return this._isActive
        }
        _onMouseDownThenMove(e) {
            this._lastMouseEvent = e, this._mouseState.setModifiers(e);
            var t = this._findMousePosition(e, !0);
            t && (this._mouseState.isDragAndDrop ? this._viewController.emitMouseDrag({
                event: e,
                target: t
            }) : this._dispatchMouse(t, !0))
        }
        start(e, t) {
            if (this._lastMouseEvent = t, this._mouseState.setStartedOnLineNumbers(3 === e), this._mouseState.setStartButtons(t), this._mouseState.setModifiers(t), (e = this._findMousePosition(t, !0)) && e.position) {
                this._mouseState.trySetCount(t.detail, e.position), t.detail = this._mouseState.count;
                const i = this._context.configuration.options;
                if (!i.get(80) && i.get(31) && !i.get(18) && !this._mouseState.altKey && t.detail < 2 && !this._isActive && !this._currentSelection.isEmpty() && 6 === e.type && e.position && this._currentSelection.containsPosition(e.position)) return this._mouseState.isDragAndDrop = !0, this._isActive = !0, void this._mouseMoveMonitor.startMonitoring(t.target, t.buttons, Fn(null), e => this._onMouseDownThenMove(e), e => {
                    var t = this._findMousePosition(this._lastMouseEvent, !0);
                    e && e instanceof KeyboardEvent ? this._viewController.emitMouseDropCanceled() : this._viewController.emitMouseDrop({
                        event: this._lastMouseEvent,
                        target: t ? this._createMouseTarget(this._lastMouseEvent, !0) : null
                    }), this._stop()
                });
                this._mouseState.isDragAndDrop = !1, this._dispatchMouse(e, t.shiftKey), this._isActive || (this._isActive = !0, this._mouseMoveMonitor.startMonitoring(t.target, t.buttons, Fn(null), e => this._onMouseDownThenMove(e), () => this._stop()))
            }
        }
        _stop() {
            this._isActive = !1, this._onScrollTimeout.cancel()
        }
        onHeightChanged() {
            this._mouseMoveMonitor.stopMonitoring()
        }
        onScrollChanged() {
            this._isActive && this._onScrollTimeout.setIfNotSet(() => {
                var e;
                !this._lastMouseEvent || (e = this._findMousePosition(this._lastMouseEvent, !1)) && (this._mouseState.isDragAndDrop || this._dispatchMouse(e, !0))
            }, 10)
        }
        onCursorStateChanged(e) {
            this._currentSelection = e.selections[0]
        }
        _getPositionOutsideEditor(e) {
            var t = e.editorPos;
            const i = this._context.model,
                n = this._context.viewLayout;
            var r = this._getMouseColumn(e);
            if (e.posy < t.y) {
                var o = Math.max(n.getCurrentScrollTop() - (t.y - e.posy), 0),
                    s = In.getZoneAtCoord(this._context, o);
                return s && (s = this._helpPositionJumpOverViewZone(s)) ? new Nn(null, 13, r, s) : (o = n.getLineNumberAtVerticalOffset(o), new Nn(null, 13, r, new Re.a(o, 1)))
            }
            if (e.posy > t.y + t.height) {
                var a = n.getCurrentScrollTop() + (e.posy - t.y);
                return (o = In.getZoneAtCoord(this._context, a)) && (o = this._helpPositionJumpOverViewZone(o)) ? new Nn(null, 13, r, o) : (a = n.getLineNumberAtVerticalOffset(a), new Nn(null, 13, r, new Re.a(a, i.getLineMaxColumn(a))))
            }
            return a = n.getLineNumberAtVerticalOffset(n.getCurrentScrollTop() + (e.posy - t.y)), e.posx < t.x ? new Nn(null, 13, r, new Re.a(a, 1)) : e.posx > t.x + t.width ? new Nn(null, 13, r, new Re.a(a, i.getLineMaxColumn(a))) : null
        }
        _findMousePosition(e, t) {
            var i = this._getPositionOutsideEditor(e);
            return i || ((e = this._createMouseTarget(e, t)).position ? 8 !== e.type && 5 !== e.type || !(t = this._helpPositionJumpOverViewZone(e.detail)) ? e : new Nn(e.element, e.type, e.mouseColumn, t, null, e.detail) : null)
        }
        _helpPositionJumpOverViewZone(e) {
            var t = new Re.a(this._currentSelection.selectionStartLineNumber, this._currentSelection.selectionStartColumn);
            const i = e.positionBefore;
            return e = e.positionAfter, i && e ? i.isBefore(t) ? i : e : null
        }
        _dispatchMouse(e, t) {
            e.position && this._viewController.dispatchMouse({
                position: e.position,
                mouseColumn: e.mouseColumn,
                startedOnLineNumbers: this._mouseState.startedOnLineNumbers,
                inSelectionMode: t,
                mouseDownCount: this._mouseState.count,
                altKey: this._mouseState.altKey,
                ctrlKey: this._mouseState.ctrlKey,
                metaKey: this._mouseState.metaKey,
                shiftKey: this._mouseState.shiftKey,
                leftButton: this._mouseState.leftButton,
                middleButton: this._mouseState.middleButton
            })
        }
    }
    class Vn {
        constructor() {
            this._altKey = !1, this._ctrlKey = !1, this._metaKey = !1, this._shiftKey = !1, this._leftButton = !1, this._middleButton = !1, this._startedOnLineNumbers = !1, this._lastMouseDownPosition = null, this._lastMouseDownPositionEqualCount = 0, this._lastMouseDownCount = 0, this._lastSetMouseDownCountTime = 0, this.isDragAndDrop = !1
        }
        get altKey() {
            return this._altKey
        }
        get ctrlKey() {
            return this._ctrlKey
        }
        get metaKey() {
            return this._metaKey
        }
        get shiftKey() {
            return this._shiftKey
        }
        get leftButton() {
            return this._leftButton
        }
        get middleButton() {
            return this._middleButton
        }
        get startedOnLineNumbers() {
            return this._startedOnLineNumbers
        }
        get count() {
            return this._lastMouseDownCount
        }
        setModifiers(e) {
            this._altKey = e.altKey, this._ctrlKey = e.ctrlKey, this._metaKey = e.metaKey, this._shiftKey = e.shiftKey
        }
        setStartButtons(e) {
            this._leftButton = e.leftButton, this._middleButton = e.middleButton
        }
        setStartedOnLineNumbers(e) {
            this._startedOnLineNumbers = e
        }
        trySetCount(e, t) {
            var i = (new Date).getTime();
            i - this._lastSetMouseDownCountTime > Vn.CLEAR_MOUSE_DOWN_COUNT_TIME && (e = 1), this._lastSetMouseDownCountTime = i, e > this._lastMouseDownCount + 1 && (e = this._lastMouseDownCount + 1), this._lastMouseDownPosition && this._lastMouseDownPosition.equals(t) ? this._lastMouseDownPositionEqualCount++ : this._lastMouseDownPositionEqualCount = 1, this._lastMouseDownPosition = t, this._lastMouseDownCount = Math.min(e, this._lastMouseDownPositionEqualCount)
        }
    }
    Vn.CLEAR_MOUSE_DOWN_COUNT_TIME = 400;
    var Wn, zn = i(138),
        Hn = i(98);
    class Un {
        constructor(e, t, i, n, r) {
            this.value = e, this.selectionStart = t, this.selectionEnd = i, this.selectionStartPosition = n, this.selectionEndPosition = r
        }
        toString() {
            return "[ <" + this.value + ">, selectionStart: " + this.selectionStart + ", selectionEnd: " + this.selectionEnd + "]"
        }
        static readFromTextArea(e) {
            return new Un(e.getValue(), e.getSelectionStart(), e.getSelectionEnd(), null, null)
        }
        collapseSelection() {
            return new Un(this.value, this.value.length, this.value.length, null, null)
        }
        writeToTextArea(e, t, i) {
            t.setValue(e, this.value), i && t.setSelectionRange(e, this.selectionStart, this.selectionEnd)
        }
        deduceEditorPosition(e) {
            if (e <= this.selectionStart) {
                var t = this.value.substring(e, this.selectionStart);
                return this._finishDeduceEditorPosition(this.selectionStartPosition, t, -1)
            }
            if (e >= this.selectionEnd) return t = this.value.substring(this.selectionEnd, e), this._finishDeduceEditorPosition(this.selectionEndPosition, t, 1);
            const i = this.value.substring(this.selectionStart, e);
            return -1 === i.indexOf(String.fromCharCode(8230)) ? this._finishDeduceEditorPosition(this.selectionStartPosition, i, 1) : (e = this.value.substring(e, this.selectionEnd), this._finishDeduceEditorPosition(this.selectionEndPosition, e, -1))
        }
        _finishDeduceEditorPosition(e, t, i) {
            let n = 0,
                r = -1;
            for (; - 1 !== (r = t.indexOf("\n", r + 1));) n++;
            return [e, i * t.length, n]
        }
        static selectedText(e) {
            return new Un(e, 0, e.length, null, null)
        }
        static deduceInput(e, t, i) {
            if (!e) return {
                text: "",
                replacePrevCharCnt: 0,
                replaceNextCharCnt: 0,
                positionDelta: 0
            };
            let n = e.value;
            var r = e.selectionStart,
                o = e.selectionEnd;
            let s = t.value;
            var a = t.selectionStart,
                l = t.selectionEnd;
            e = n.substring(o), t = s.substring(l), e = b.e(e, t);
            if (s = s.substring(0, s.length - e), n = n.substring(0, n.length - e), t = n.substring(0, r), e = s.substring(0, a), e = b.d(t, e), s = s.substring(e), n = n.substring(e), a -= e, r -= e, l -= e, o -= e, i && a == l && 0 < n.length) {
                let e = null;
                if (a === s.length ? s.startsWith(n) && (e = s.substring(n.length)) : s.endsWith(n) && (e = s.substring(0, s.length - n.length)), null !== e && 0 < e.length && (/\uFE0F/.test(e) || b.k(e))) return {
                    text: e,
                    replacePrevCharCnt: 0,
                    replaceNextCharCnt: 0,
                    positionDelta: 0
                }
            }
            if (a == l) {
                if (n === s && 0 == r && o === n.length && a === s.length && -1 === s.indexOf("\n") && b.l(s)) return {
                    text: "",
                    replacePrevCharCnt: 0,
                    replaceNextCharCnt: 0,
                    positionDelta: 0
                };
                return {
                    text: s,
                    replacePrevCharCnt: t.length - e,
                    replaceNextCharCnt: 0,
                    positionDelta: 0
                }
            }
            return {
                text: s,
                replacePrevCharCnt: o - r,
                replaceNextCharCnt: 0,
                positionDelta: 0
            }
        }
        static deduceAndroidCompositionInput(e, t) {
            if (!e) return {
                text: "",
                replacePrevCharCnt: 0,
                replaceNextCharCnt: 0,
                positionDelta: 0
            };
            if (e.value === t.value) return {
                text: "",
                replacePrevCharCnt: 0,
                replaceNextCharCnt: 0,
                positionDelta: t.selectionEnd - e.selectionEnd
            };
            var i = Math.min(b.d(e.value, t.value), e.selectionEnd),
                n = Math.min(b.e(e.value, t.value), e.value.length - e.selectionEnd),
                r = e.value.substring(i, e.value.length - n);
            n = t.value.substring(i, t.value.length - n), e.selectionStart, e = e.selectionEnd - i, t.selectionStart, i = t.selectionEnd - i;
            return {
                text: n,
                replacePrevCharCnt: e,
                replaceNextCharCnt: r.length - e,
                positionDelta: i - n.length
            }
        }
    }
    Un.EMPTY = new Un("", 0, 0, null, null);
    class Kn {
        static _getPageOfLine(e, t) {
            return Math.floor((e - 1) / t)
        }
        static _getRangeForPage(e, t) {
            return e *= t, new T.a(1 + e, 1, e + t + 1, 1)
        }
        static fromEditorSelection(e, t, i, n, r) {
            var o = Kn._getPageOfLine(i.startLineNumber, n);
            const s = Kn._getRangeForPage(o, n);
            var a = Kn._getPageOfLine(i.endLineNumber, n);
            const l = Kn._getRangeForPage(a, n);
            var d = s.intersectRanges(new T.a(1, 1, i.startLineNumber, i.startColumn));
            let c = t.getValueInRange(d, 1);
            n = t.getLineCount(), d = t.getLineMaxColumn(n), d = l.intersectRanges(new T.a(i.endLineNumber, i.endColumn, n, d));
            let h, u = t.getValueInRange(d, 1);
            return h = o === a || o + 1 === a ? t.getValueInRange(i, 1) : (o = s.intersectRanges(i), a = l.intersectRanges(i), t.getValueInRange(o, 1) + String.fromCharCode(8230) + t.getValueInRange(a, 1)), r && (500 < c.length && (c = c.substring(c.length - 500, c.length)), 500 < u.length && (u = u.substring(0, 500)), 1e3 < h.length && (h = h.substring(0, 500) + String.fromCharCode(8230) + h.substring(h.length - 500, h.length))), new Un(c + h + u, c.length, c.length + h.length, new Re.a(i.startLineNumber, i.startColumn), new Re.a(i.endLineNumber, i.endColumn))
        }
    }
    const $n = !((Wn = Wn || {}).Tap = "-monaco-textarea-synthetic-tap");
    class qn {
        constructor() {
            this._lastState = null
        }
        set(e, t) {
            this._lastState = {
                lastCopiedValue: e,
                data: t
            }
        }
        get(e) {
            return this._lastState && this._lastState.lastCopiedValue === e ? this._lastState.data : this._lastState = null
        }
    }
    qn.INSTANCE = new qn;
    class Gn extends v.a {
        constructor(e, t) {
            super(), this.textArea = t, this._onFocus = this._register(new D.b), this.onFocus = this._onFocus.event, this._onBlur = this._register(new D.b), this.onBlur = this._onBlur.event, this._onKeyDown = this._register(new D.b), this.onKeyDown = this._onKeyDown.event, this._onKeyUp = this._register(new D.b), this.onKeyUp = this._onKeyUp.event, this._onCut = this._register(new D.b), this.onCut = this._onCut.event, this._onPaste = this._register(new D.b), this.onPaste = this._onPaste.event, this._onType = this._register(new D.b), this.onType = this._onType.event, this._onCompositionStart = this._register(new D.b), this.onCompositionStart = this._onCompositionStart.event, this._onCompositionUpdate = this._register(new D.b), this.onCompositionUpdate = this._onCompositionUpdate.event, this._onCompositionEnd = this._register(new D.b), this.onCompositionEnd = this._onCompositionEnd.event, this._onSelectionChangeRequest = this._register(new D.b), this.onSelectionChangeRequest = this._onSelectionChangeRequest.event, this._host = e, this._textArea = this._register(new Zn(t)), this._asyncTriggerCut = this._register(new q.e(() => this._onCut.fire(), 0)), this._asyncFocusGainWriteScreenReaderContent = this._register(new q.e(() => this.writeScreenReaderContent("asyncFocusGain"), 0)), this._textAreaState = Un.EMPTY, this._selectionChangeListener = null, this.writeScreenReaderContent("ctor"), this._hasFocus = !1, this._isDoingComposition = !1, this._nextCommand = 0;
            let i = null;
            this._register(s.l(t.domNode, "keydown", e => {
                (109 === e.keyCode || this._isDoingComposition && 1 === e.keyCode) && e.stopPropagation(), e.equals(9) && e.preventDefault(), i = e, this._onKeyDown.fire(e)
            })), this._register(s.l(t.domNode, "keyup", e => {
                this._onKeyUp.fire(e)
            })), this._register(s.g(t.domNode, "compositionstart", e => {
                if (!this._isDoingComposition) {
                    if (this._isDoingComposition = !0, A.f && this._textAreaState.selectionStart === this._textAreaState.selectionEnd && 0 < this._textAreaState.selectionStart && this._textAreaState.value.substr(this._textAreaState.selectionStart - 1, 1) === e.data && (i && i.equals(109) && ("ArrowRight" === i.code || "ArrowLeft" === i.code) || Ri.g)) return this._textAreaState = new Un(this._textAreaState.value, this._textAreaState.selectionStart - 1, this._textAreaState.selectionEnd, this._textAreaState.selectionStartPosition ? new Re.a(this._textAreaState.selectionStartPosition.lineNumber, this._textAreaState.selectionStartPosition.column - 1) : null, this._textAreaState.selectionEndPosition), void this._onCompositionStart.fire({
                        revealDeltaColumns: -1
                    });
                    Ri.e ? this._onCompositionStart.fire({
                        revealDeltaColumns: -this._textAreaState.selectionStart
                    }) : (this._setAndWriteTextAreaState("compositionstart", Un.EMPTY), this._onCompositionStart.fire({
                        revealDeltaColumns: 0
                    }))
                }
            }));
            const n = e => {
                    var t = this._textAreaState,
                        i = Un.readFromTextArea(this._textArea);
                    return [i, Un.deduceInput(t, i, e)]
                },
                r = () => {
                    var e = this._textAreaState,
                        t = Un.readFromTextArea(this._textArea);
                    return [t, Un.deduceAndroidCompositionInput(e, t)]
                },
                o = e => {
                    var t = this._textAreaState;
                    return [e = Un.selectedText(e), {
                        text: e.value,
                        replacePrevCharCnt: t.selectionEnd - t.selectionStart,
                        replaceNextCharCnt: 0,
                        positionDelta: 0
                    }]
                };
            this._register(s.g(t.domNode, "compositionupdate", e => {
                if (Ri.e) {
                    const [t, i] = r();
                    return this._textAreaState = t, this._onType.fire(i), void this._onCompositionUpdate.fire(e)
                }
                const [t, i] = o(e.data || "");
                this._textAreaState = t, this._onType.fire(i), this._onCompositionUpdate.fire(e)
            })), this._register(s.g(t.domNode, "compositionend", e => {
                if (this._isDoingComposition) {
                    if (this._isDoingComposition = !1, Ri.e) {
                        const [e, t] = r();
                        return this._textAreaState = e, this._onType.fire(t), void this._onCompositionEnd.fire()
                    }
                    const [t, i] = o(e.data || "");
                    this._textAreaState = t, this._onType.fire(i), (Ri.f || Ri.g) && (this._textAreaState = Un.readFromTextArea(this._textArea)), this._onCompositionEnd.fire()
                }
            })), this._register(s.g(t.domNode, "input", () => {
                if (this._textArea.setIgnoreSelectionChangeTime("received input event"), !this._isDoingComposition) {
                    const [e, t] = n(A.f);
                    0 === t.replacePrevCharCnt && 1 === t.text.length && b.E(t.text.charCodeAt(0)) || (this._textAreaState = e, 0 === this._nextCommand ? "" === t.text && 0 === t.replacePrevCharCnt || this._onType.fire(t) : ("" === t.text && 0 === t.replacePrevCharCnt || this._firePaste(t.text, null), this._nextCommand = 0))
                }
            })), this._register(s.g(t.domNode, "cut", e => {
                this._textArea.setIgnoreSelectionChangeTime("received cut event"), this._ensureClipboardGetsEditorSelection(e), this._asyncTriggerCut.schedule()
            })), this._register(s.g(t.domNode, "copy", e => {
                this._ensureClipboardGetsEditorSelection(e)
            })), this._register(s.g(t.domNode, "paste", e => {
                var t;
                this._textArea.setIgnoreSelectionChangeTime("received paste event"), Yn.canUseTextData(e) ? ([t, e] = Yn.getTextData(e), "" !== t && this._firePaste(t, e)) : (this._textArea.getSelectionStart() !== this._textArea.getSelectionEnd() && this._setAndWriteTextAreaState("paste", Un.EMPTY), this._nextCommand = 1)
            })), this._register(s.g(t.domNode, "focus", () => {
                var e = this._hasFocus;
                this._setHasFocus(!0), Ri.h && !e && this._hasFocus && this._asyncFocusGainWriteScreenReaderContent.schedule()
            })), this._register(s.g(t.domNode, "blur", () => {
                this._isDoingComposition && (this._isDoingComposition = !1, this.writeScreenReaderContent("blurWithoutCompositionEnd"), this._onCompositionEnd.fire()), this._setHasFocus(!1)
            })), this._register(s.g(t.domNode, Wn.Tap, () => {
                Ri.e && this._isDoingComposition && (this._isDoingComposition = !1, this.writeScreenReaderContent("tapWithoutCompositionEnd"), this._onCompositionEnd.fire())
            }))
        }
        _installSelectionChangeListener() {
            let e = 0;
            return s.g(document, "selectionchange", t => {
                var i, n;
                this._hasFocus && (this._isDoingComposition || Ri.f && (i = (n = Date.now()) - e, e = n, i < 5 || (i = n - this._textArea.getIgnoreSelectionChangeTime(), this._textArea.resetSelectionChangeTime(), i < 100 || this._textAreaState.selectionStartPosition && this._textAreaState.selectionEndPosition && (n = this._textArea.getValue(), this._textAreaState.value === n && (i = this._textArea.getSelectionStart(), n = this._textArea.getSelectionEnd(), this._textAreaState.selectionStart === i && this._textAreaState.selectionEnd === n || (i = this._textAreaState.deduceEditorPosition(i), i = this._host.deduceModelPosition(i[0], i[1], i[2]), n = this._textAreaState.deduceEditorPosition(n), n = this._host.deduceModelPosition(n[0], n[1], n[2]), n = new Hi.a(i.lineNumber, i.column, n.lineNumber, n.column), this._onSelectionChangeRequest.fire(n)))))))
            })
        }
        dispose() {
            super.dispose(), this._selectionChangeListener && (this._selectionChangeListener.dispose(), this._selectionChangeListener = null)
        }
        focusTextArea() {
            this._setHasFocus(!0), this.refreshFocusState()
        }
        isFocused() {
            return this._hasFocus
        }
        refreshFocusState() {
            var e = s.C(this.textArea.domNode);
            e ? this._setHasFocus(e.activeElement === this.textArea.domNode) : s.K(this.textArea.domNode) ? this._setHasFocus(document.activeElement === this.textArea.domNode) : this._setHasFocus(!1)
        }
        _setHasFocus(e) {
            this._hasFocus !== e && (this._hasFocus = e, this._selectionChangeListener && (this._selectionChangeListener.dispose(), this._selectionChangeListener = null), this._hasFocus && (this._selectionChangeListener = this._installSelectionChangeListener()), this._hasFocus && this.writeScreenReaderContent("focusgain"), (this._hasFocus ? this._onFocus : this._onBlur).fire())
        }
        _setAndWriteTextAreaState(e, t) {
            (t = this._hasFocus ? t : t.collapseSelection()).writeToTextArea(e, this._textArea, this._hasFocus), this._textAreaState = t
        }
        writeScreenReaderContent(e) {
            this._isDoingComposition || this._setAndWriteTextAreaState(e, this._host.getScreenReaderContent(this._textAreaState))
        }
        _ensureClipboardGetsEditorSelection(e) {
            const t = this._host.getDataToCopy(Yn.canUseTextData(e));
            var i = {
                version: 1,
                isFromEmptySelection: t.isFromEmptySelection,
                multicursorText: t.multicursorText,
                mode: t.mode
            };
            qn.INSTANCE.set(Ri.g ? t.text.replace(/\r\n/g, "\n") : t.text, i), Yn.canUseTextData(e) ? Yn.setTextData(e, t.text, t.html, i) : this._setAndWriteTextAreaState("copy or cut", Un.selectedText(t.text))
        }
        _firePaste(e, t) {
            t = t || qn.INSTANCE.get(e), this._onPaste.fire({
                text: e,
                metadata: t
            })
        }
    }
    class Yn {
        static canUseTextData(e) {
            return !!e.clipboardData
        }
        static getTextData(e) {
            if (e.clipboardData) {
                e.preventDefault();
                var t = e.clipboardData.getData(Hn.a.text);
                let i = null;
                if ("string" == typeof(e = e.clipboardData.getData("vscode-editor-data"))) try {
                    i = JSON.parse(e), 1 !== i.version && (i = null)
                } catch (e) {}
                return [t, i]
            }
            throw new Error("ClipboardEventUtils.getTextData: Cannot use text data!")
        }
        static setTextData(e, t, i, n) {
            if (e.clipboardData) return e.clipboardData.setData(Hn.a.text, t), "string" == typeof i && e.clipboardData.setData("text/html", i), e.clipboardData.setData("vscode-editor-data", JSON.stringify(n)), void e.preventDefault();
            throw new Error("ClipboardEventUtils.setTextData: Cannot use text data!")
        }
    }
    class Zn extends v.a {
        constructor(e) {
            super(), this._actual = e, this._ignoreSelectionChangeTime = 0
        }
        setIgnoreSelectionChangeTime(e) {
            this._ignoreSelectionChangeTime = Date.now()
        }
        getIgnoreSelectionChangeTime() {
            return this._ignoreSelectionChangeTime
        }
        resetSelectionChangeTime() {
            this._ignoreSelectionChangeTime = 0
        }
        getValue() {
            return this._actual.domNode.value
        }
        setValue(e, t) {
            const i = this._actual.domNode;
            i.value !== t && (this.setIgnoreSelectionChangeTime("setValue"), i.value = t)
        }
        getSelectionStart() {
            return "backward" === this._actual.domNode.selectionDirection ? this._actual.domNode.selectionEnd : this._actual.domNode.selectionStart
        }
        getSelectionEnd() {
            return "backward" === this._actual.domNode.selectionDirection ? this._actual.domNode.selectionStart : this._actual.domNode.selectionEnd
        }
        setSelectionRange(e, t, i) {
            const n = this._actual.domNode;
            let r = null;
            r = ((l = s.C(n)) || document).activeElement;
            var o = r === n,
                a = n.selectionStart,
                l = n.selectionEnd;
            if (o && a === t && l === i) Ri.g && window.parent !== window && n.focus();
            else {
                if (o) return this.setIgnoreSelectionChangeTime("setSelectionRange"), n.setSelectionRange(t, i), void(Ri.g && window.parent !== window && n.focus());
                try {
                    var d = s.Q(n);
                    this.setIgnoreSelectionChangeTime("setSelectionRange"), n.focus(), n.setSelectionRange(t, i), s.O(n, d)
                } catch (e) {}
            }
        }
    }
    class Xn extends jn {
        constructor(e, t, i) {
            super(e, t, i), this._register(Ki.b.addTarget(this.viewHelper.linesContentDomNode)), this._register(s.g(this.viewHelper.linesContentDomNode, Ki.a.Tap, e => this.onTap(e))), this._register(s.g(this.viewHelper.linesContentDomNode, Ki.a.Change, e => this.onChange(e))), this._register(s.g(this.viewHelper.linesContentDomNode, Ki.a.Contextmenu, e => this._onContextMenu(new Qi(e, this.viewHelper.viewDomNode), !1))), this._lastPointerType = "mouse", this._register(s.g(this.viewHelper.linesContentDomNode, "pointerdown", e => {
                e = e.pointerType, this._lastPointerType = "mouse" === e ? "mouse" : "touch" === e ? "touch" : "pen"
            }));
            const n = new en(this.viewHelper.viewDomNode);
            this._register(n.onPointerMoveThrottled(this.viewHelper.viewDomNode, e => this._onMouseMove(e), Fn(this.mouseTargetFactory), jn.MOUSE_MOVE_MINIMUM_TIME)), this._register(n.onPointerUp(this.viewHelper.viewDomNode, e => this._onMouseUp(e))), this._register(n.onPointerLeave(this.viewHelper.viewDomNode, e => this._onMouseLeave(e))), this._register(n.onPointerDown(this.viewHelper.viewDomNode, e => this._onMouseDown(e)))
        }
        onTap(e) {
            var t;
            e.initialTarget && this.viewHelper.linesContentDomNode.contains(e.initialTarget) && (e.preventDefault(), this.viewHelper.focusTextArea(), (t = this._createMouseTarget(new Qi(e, this.viewHelper.viewDomNode), !1)).position && this.viewController.dispatchMouse({
                position: t.position,
                mouseColumn: t.position.column,
                startedOnLineNumbers: !1,
                mouseDownCount: e.tapCount,
                inSelectionMode: !1,
                altKey: !1,
                ctrlKey: !1,
                metaKey: !1,
                shiftKey: !1,
                leftButton: !1,
                middleButton: !1
            }))
        }
        onChange(e) {
            "touch" === this._lastPointerType && this._context.model.deltaScrollNow(-e.translationX, -e.translationY)
        }
        _onMouseDown(e) {
            "touch" !== e.browserEvent.pointerType && super._onMouseDown(e)
        }
    }
    class Qn extends jn {
        constructor(e, t, i) {
            super(e, t, i), this._register(Ki.b.addTarget(this.viewHelper.linesContentDomNode)), this._register(s.g(this.viewHelper.linesContentDomNode, Ki.a.Tap, e => this.onTap(e))), this._register(s.g(this.viewHelper.linesContentDomNode, Ki.a.Change, e => this.onChange(e))), this._register(s.g(this.viewHelper.linesContentDomNode, Ki.a.Contextmenu, e => this._onContextMenu(new Qi(e, this.viewHelper.viewDomNode), !1)))
        }
        onTap(e) {
            if (e.preventDefault(), this.viewHelper.focusTextArea(), (e = this._createMouseTarget(new Qi(e, this.viewHelper.viewDomNode), !1)).position) {
                const t = document.createEvent("CustomEvent");
                t.initEvent(Wn.Tap, !1, !0), this.viewHelper.dispatchTextAreaEvent(t), this.viewController.moveTo(e.position)
            }
        }
        onChange(e) {
            this._context.model.deltaScrollNow(-e.translationX, -e.translationY)
        }
    }
    class Jn extends v.a {
        constructor(e, t, i) {
            super(), A.c && zn.a.pointerEvents ? this.handler = this._register(new Xn(e, t, i)) : window.TouchEvent ? this.handler = this._register(new Qn(e, t, i)) : this.handler = this._register(new jn(e, t, i))
        }
        getTargetAtClientPoint(e, t) {
            return this.handler.getTargetAtClientPoint(e, t)
        }
    }
    i(390), i(392);
    class er extends nn {}
    var tr = i(41),
        ir = i(23);
    class nr extends er {
        constructor(e) {
            super(), this._context = e, this._readConfig(), this._lastCursorModelPosition = new Re.a(1, 1), this._renderResult = null, this._activeLineNumber = 1, this._context.addEventHandler(this)
        }
        _readConfig() {
            const e = this._context.configuration.options;
            this._lineHeight = e.get(58);
            var t = e.get(59);
            this._renderLineNumbers = t.renderType, this._renderCustomLineNumbers = t.renderFn, this._renderFinalNewline = e.get(83), t = e.get(129), this._lineNumbersLeft = t.lineNumbersLeft, this._lineNumbersWidth = t.lineNumbersWidth
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            return this._readConfig(), !0
        }
        onCursorStateChanged(e) {
            e = e.selections[0].getPosition(), this._lastCursorModelPosition = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(e);
            let t = !1;
            return this._activeLineNumber !== e.lineNumber && (this._activeLineNumber = e.lineNumber, t = !0), 2 !== this._renderLineNumbers && 3 !== this._renderLineNumbers || (t = !0), t
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        _getLineRenderLineNumber(e) {
            var t = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Re.a(e, 1));
            return 1 !== t.column ? "" : (e = t.lineNumber, this._renderCustomLineNumbers ? this._renderCustomLineNumbers(e) : 2 !== this._renderLineNumbers ? 3 !== this._renderLineNumbers || this._lastCursorModelPosition.lineNumber === e || e % 10 == 0 ? String(e) : "" : 0 === (t = Math.abs(this._lastCursorModelPosition.lineNumber - e)) ? '<span class="relative-current-line-number">' + e + "</span>" : String(t))
        }
        prepareRender(e) {
            if (0 !== this._renderLineNumbers) {
                var t = A.d ? this._lineHeight % 2 == 0 ? " lh-even" : " lh-odd" : "",
                    i = e.visibleRange.startLineNumber,
                    n = e.visibleRange.endLineNumber,
                    r = '<div class="' + nr.CLASS_NAME + t + '" style="left:' + this._lineNumbersLeft + "px;width:" + this._lineNumbersWidth + 'px;">',
                    o = this._context.model.getLineCount();
                const l = [];
                for (let e = i; e <= n; e++) {
                    var s, a = e - i;
                    (this._renderFinalNewline || e !== o || 0 !== this._context.model.getLineLength(e)) && (s = this._getLineRenderLineNumber(e)) ? e === this._activeLineNumber ? l[a] = '<div class="active-line-number ' + nr.CLASS_NAME + t + '" style="left:' + this._lineNumbersLeft + "px;width:" + this._lineNumbersWidth + 'px;">' + s + "</div>" : l[a] = r + s + "</div>": l[a] = ""
                }
                this._renderResult = l
            } else this._renderResult = null
        }
        render(e, t) {
            return this._renderResult ? (e = t - e) < 0 || e >= this._renderResult.length ? "" : this._renderResult[e] : ""
        }
    }
    nr.CLASS_NAME = "line-numbers", Object(ir.f)((e, t) => {
        var i = e.getColor(tr.A);
        i && t.addRule(`.monaco-editor .line-numbers { color: ${i}; }`), (e = e.getColor(tr.b)) && t.addRule(`.monaco-editor .line-numbers.active-line-number { color: ${e}; }`)
    });
    class rr extends rn {
        constructor(e) {
            super(e);
            const t = this._context.configuration.options;
            e = t.get(129), this._canUseLayerHinting = !t.get(28), this._contentLeft = e.contentLeft, this._glyphMarginLeft = e.glyphMarginLeft, this._glyphMarginWidth = e.glyphMarginWidth, this._domNode = Object(Ui.b)(document.createElement("div")), this._domNode.setClassName(rr.OUTER_CLASS_NAME), this._domNode.setPosition("absolute"), this._domNode.setAttribute("role", "presentation"), this._domNode.setAttribute("aria-hidden", "true"), this._glyphMarginBackgroundDomNode = Object(Ui.b)(document.createElement("div")), this._glyphMarginBackgroundDomNode.setClassName(rr.CLASS_NAME), this._domNode.appendChild(this._glyphMarginBackgroundDomNode)
        }
        dispose() {
            super.dispose()
        }
        getDomNode() {
            return this._domNode
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(129);
            return this._canUseLayerHinting = !t.get(28), this._contentLeft = i.contentLeft, this._glyphMarginLeft = i.glyphMarginLeft, this._glyphMarginWidth = i.glyphMarginWidth, !0
        }
        onScrollChanged(e) {
            return super.onScrollChanged(e) || e.scrollTopChanged
        }
        prepareRender(e) {}
        render(e) {
            this._domNode.setLayerHinting(this._canUseLayerHinting), this._domNode.setContain("strict");
            var t = e.scrollTop - e.bigNumbersDelta;
            this._domNode.setTop(-t), e = Math.min(e.scrollHeight, 1e6), this._domNode.setHeight(e), this._domNode.setWidth(this._contentLeft), this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft), this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth), this._glyphMarginBackgroundDomNode.setHeight(e)
        }
    }
    rr.CLASS_NAME = "glyph-margin", rr.OUTER_CLASS_NAME = "margin";
    var or = i(122);
    i(394);
    const sr = "monaco-mouse-cursor-text";
    class ar {
        constructor(e, t, i) {
            this._visibleTextAreaBrand = void 0, this.top = e, this.left = t, this.width = i
        }
        setWidth(e) {
            return new ar(this.top, this.left, e)
        }
    }
    const lr = Ri.g;
    class dr extends rn {
        constructor(e, t, i) {
            super(e), this._primaryCursorPosition = new Re.a(1, 1), this._primaryCursorVisibleRange = null, this._viewController = t, this._viewHelper = i, this._scrollLeft = 0, this._scrollTop = 0;
            const n = this._context.configuration.options;
            i = n.get(129), this._setAccessibilityOptions(n), this._contentLeft = i.contentLeft, this._contentWidth = i.contentWidth, this._contentHeight = i.height, this._fontInfo = n.get(43), this._lineHeight = n.get(58), this._emptySelectionClipboard = n.get(32), this._copyWithSyntaxHighlighting = n.get(21), this._visibleTextArea = null, this._selections = [new Hi.a(1, 1, 1, 1)], this._modelSelections = [new Hi.a(1, 1, 1, 1)], this._lastRenderPosition = null, this.textArea = Object(Ui.b)(document.createElement("textarea")), on.write(this.textArea, 6), this.textArea.setClassName("inputarea " + sr), this.textArea.setAttribute("wrap", "off"), this.textArea.setAttribute("autocorrect", "off"), this.textArea.setAttribute("autocapitalize", "off"), this.textArea.setAttribute("autocomplete", "off"), this.textArea.setAttribute("spellcheck", "false"), this.textArea.setAttribute("aria-label", this._getAriaLabel(n)), this.textArea.setAttribute("tabindex", String(n.get(111))), this.textArea.setAttribute("role", "textbox"), this.textArea.setAttribute("aria-roledescription", yt.a("editor", "editor")), this.textArea.setAttribute("aria-multiline", "true"), this.textArea.setAttribute("aria-haspopup", "false"), this.textArea.setAttribute("aria-autocomplete", "both"), n.get(30) && n.get(80) && this.textArea.setAttribute("readonly", "true"), this.textAreaCover = Object(Ui.b)(document.createElement("div")), this.textAreaCover.setPosition("absolute");
            const r = {
                getLineCount: () => this._context.model.getLineCount(),
                getLineMaxColumn: e => this._context.model.getLineMaxColumn(e),
                getValueInRange: (e, t) => this._context.model.getValueInRange(e, t)
            };
            i = {
                getDataToCopy: e => {
                    const t = this._context.model.getPlainTextToCopy(this._modelSelections, this._emptySelectionClipboard, A.i);
                    var i = this._context.model.getEOL(),
                        n = this._emptySelectionClipboard && 1 === this._modelSelections.length && this._modelSelections[0].isEmpty(),
                        r = Array.isArray(t) ? t : null;
                    i = Array.isArray(t) ? t.join(i) : t;
                    let o = void 0,
                        s = null;
                    return e && (!($n || this._copyWithSyntaxHighlighting && i.length < 65536) || (e = this._context.model.getRichTextToCopy(this._modelSelections, this._emptySelectionClipboard)) && (o = e.html, s = e.mode)), {
                        isFromEmptySelection: n,
                        multicursorText: r,
                        text: i,
                        html: o,
                        mode: s
                    }
                },
                getScreenReaderContent: e => {
                    if (1 === this._accessibilitySupport) {
                        if (A.f) {
                            const e = this._selections[0];
                            if (e.isEmpty()) {
                                var t = e.getStartPosition();
                                let i = this._getWordBeforePosition(t);
                                if (0 === i.length && (i = this._getCharacterBeforePosition(t)), 0 < i.length) return new Un(i, i.length, i.length, t, t)
                            }
                        }
                        return Un.EMPTY
                    }
                    if (Ri.e) {
                        const e = this._selections[0];
                        if (e.isEmpty()) {
                            var i = e.getStartPosition(),
                                [n, t] = this._getAndroidWordAtPosition(i);
                            if (0 < n.length) return new Un(n, t, t, i, i)
                        }
                        return Un.EMPTY
                    }
                    return Kn.fromEditorSelection(e, r, this._selections[0], this._accessibilityPageSize, 0 === this._accessibilitySupport)
                },
                deduceModelPosition: (e, t, i) => this._context.model.deduceModelPositionRelativeToViewPosition(e, t, i)
            }, this._textAreaInput = this._register(new Gn(i, this.textArea)), this._register(this._textAreaInput.onKeyDown(e => {
                this._viewController.emitKeyDown(e)
            })), this._register(this._textAreaInput.onKeyUp(e => {
                this._viewController.emitKeyUp(e)
            })), this._register(this._textAreaInput.onPaste(e => {
                let t = !1,
                    i = null,
                    n = null;
                e.metadata && (t = this._emptySelectionClipboard && !!e.metadata.isFromEmptySelection, i = void 0 !== e.metadata.multicursorText ? e.metadata.multicursorText : null, n = e.metadata.mode), this._viewController.paste(e.text, t, i, n)
            })), this._register(this._textAreaInput.onCut(() => {
                this._viewController.cut()
            })), this._register(this._textAreaInput.onType(e => {
                e.replacePrevCharCnt || e.replaceNextCharCnt || e.positionDelta ? this._viewController.compositionType(e.text, e.replacePrevCharCnt, e.replaceNextCharCnt, e.positionDelta) : this._viewController.type(e.text)
            })), this._register(this._textAreaInput.onSelectionChangeRequest(e => {
                this._viewController.setSelection(e)
            })), this._register(this._textAreaInput.onCompositionStart(e => {
                var t = this._selections[0].startLineNumber;
                e = this._selections[0].startColumn + e.revealDeltaColumns;
                this._context.model.revealRange("keyboard", !0, new T.a(t, e, t, e), 0, 1), (e = this._viewHelper.visibleRangeForPositionRelativeToEditor(t, e)) && (this._visibleTextArea = new ar(this._context.viewLayout.getVerticalOffsetForLineNumber(t), e.left, lr ? 0 : 1), this._render()), this.textArea.setClassName(`inputarea ${sr} ime-input`), this._viewController.compositionStart(), this._context.model.onCompositionStart()
            })), this._register(this._textAreaInput.onCompositionUpdate(e => {
                this._visibleTextArea && (this._visibleTextArea = this._visibleTextArea.setWidth(function(e, t) {
                    const i = document.createElement("canvas").getContext("2d");
                    return i.font = function(e) {
                        return `normal normal ${e.fontWeight} ${e.fontSize}px / ${e.lineHeight}px ${e.fontFamily}`
                    }(t), e = i.measureText(e), Ri.g ? e.width + 2 : e.width
                }(e.data, this._fontInfo)), this._render())
            })), this._register(this._textAreaInput.onCompositionEnd(() => {
                this._visibleTextArea = null, this._render(), this.textArea.setClassName("inputarea " + sr), this._viewController.compositionEnd(), this._context.model.onCompositionEnd()
            })), this._register(this._textAreaInput.onFocus(() => {
                this._context.model.setHasFocus(!0)
            })), this._register(this._textAreaInput.onBlur(() => {
                this._context.model.setHasFocus(!1)
            }))
        }
        dispose() {
            super.dispose()
        }
        _getAndroidWordAtPosition(e) {
            var t;
            const i = this._context.model.getLineContent(e.lineNumber),
                n = Object(or.a)('`~!@#$%^&*()-=+[{]}\\|;:",.<>/?');
            let r = !0,
                o = e.column,
                s = !0,
                a = e.column,
                l = 0;
            for (; l < 50 && (r || s);) r && o <= 1 && (r = !1), r && (t = i.charCodeAt(o - 2), 0 !== n.get(t) ? r = !1 : o--), s && a > i.length && (s = !1), s && (t = i.charCodeAt(a - 1), 0 !== n.get(t) ? s = !1 : a++), l++;
            return [i.substring(o - 1, a - 1), e.column - o]
        }
        _getWordBeforePosition(e) {
            const t = this._context.model.getLineContent(e.lineNumber),
                i = Object(or.a)(this._context.configuration.options.get(115));
            let n = e.column,
                r = 0;
            for (; 1 < n;) {
                var o = t.charCodeAt(n - 2);
                if (0 !== i.get(o) || 50 < r) return t.substring(n - 1, e.column - 1);
                r++, n--
            }
            return t.substring(0, e.column - 1)
        }
        _getCharacterBeforePosition(e) {
            if (1 < e.column) {
                const t = this._context.model.getLineContent(e.lineNumber).charAt(e.column - 2);
                if (!b.E(t.charCodeAt(0))) return t
            }
            return ""
        }
        _getAriaLabel(e) {
            return 1 === e.get(2) ? yt.a("accessibilityOffAriaLabel", "The editor is not accessible at this time. Press {0} for options.", A.d ? "Shift+Alt+F1" : "Alt+F1") : e.get(4)
        }
        _setAccessibilityOptions(e) {
            this._accessibilitySupport = e.get(2), e = e.get(3), 2 === this._accessibilitySupport && e === n.g.accessibilityPageSize.defaultValue ? this._accessibilityPageSize = 500 : this._accessibilityPageSize = e
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(129);
            return this._setAccessibilityOptions(t), this._contentLeft = i.contentLeft, this._contentWidth = i.contentWidth, this._contentHeight = i.height, this._fontInfo = t.get(43), this._lineHeight = t.get(58), this._emptySelectionClipboard = t.get(32), this._copyWithSyntaxHighlighting = t.get(21), this.textArea.setAttribute("aria-label", this._getAriaLabel(t)), this.textArea.setAttribute("tabindex", String(t.get(111))), (e.hasChanged(30) || e.hasChanged(80)) && (t.get(30) && t.get(80) ? this.textArea.setAttribute("readonly", "true") : this.textArea.removeAttribute("readonly")), e.hasChanged(2) && this._textAreaInput.writeScreenReaderContent("strategy changed"), !0
        }
        onCursorStateChanged(e) {
            return this._selections = e.selections.slice(0), this._modelSelections = e.modelSelections.slice(0), this._textAreaInput.writeScreenReaderContent("selection changed"), !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return this._scrollLeft = e.scrollLeft, this._scrollTop = e.scrollTop, !0
        }
        onZonesChanged(e) {
            return !0
        }
        isFocused() {
            return this._textAreaInput.isFocused()
        }
        focusTextArea() {
            this._textAreaInput.focusTextArea()
        }
        getLastRenderData() {
            return this._lastRenderPosition
        }
        setAriaOptions(e) {
            e.activeDescendant ? (this.textArea.setAttribute("aria-haspopup", "true"), this.textArea.setAttribute("aria-autocomplete", "list"), this.textArea.setAttribute("aria-activedescendant", e.activeDescendant)) : (this.textArea.setAttribute("aria-haspopup", "false"), this.textArea.setAttribute("aria-autocomplete", "both"), this.textArea.removeAttribute("aria-activedescendant")), e.role && this.textArea.setAttribute("role", e.role)
        }
        prepareRender(e) {
            this._primaryCursorPosition = new Re.a(this._selections[0].positionLineNumber, this._selections[0].positionColumn), this._primaryCursorVisibleRange = e.visibleRangeForPosition(this._primaryCursorPosition)
        }
        render(e) {
            this._textAreaInput.writeScreenReaderContent("render"), this._render()
        }
        _render() {
            var e, t;
            this._visibleTextArea ? this._renderInsideEditor(null, this._visibleTextArea.top - this._scrollTop, this._contentLeft + this._visibleTextArea.left - this._scrollLeft, this._visibleTextArea.width, this._lineHeight) : !this._primaryCursorVisibleRange || (e = this._contentLeft + this._primaryCursorVisibleRange.left - this._scrollLeft) < this._contentLeft || e > this._contentLeft + this._contentWidth || (t = this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber) - this._scrollTop) < 0 || t > this._contentHeight ? this._renderAtTopLeft() : A.f ? this._renderInsideEditor(this._primaryCursorPosition, t, e, lr ? 0 : 1, this._lineHeight) : this._renderInsideEditor(this._primaryCursorPosition, t, e, lr ? 0 : 1, lr ? 0 : 1)
        }
        _renderInsideEditor(e, t, i, n, r) {
            this._lastRenderPosition = e;
            const o = this.textArea,
                s = this.textAreaCover;
            zi.applyFontInfo(o, this._fontInfo), o.setTop(t), o.setLeft(i), o.setWidth(n), o.setHeight(r), s.setTop(0), s.setLeft(0), s.setWidth(0), s.setHeight(0)
        }
        _renderAtTopLeft() {
            this._lastRenderPosition = null;
            const e = this.textArea,
                t = this.textAreaCover;
            if (zi.applyFontInfo(e, this._fontInfo), e.setTop(0), e.setLeft(0), t.setTop(0), t.setLeft(0), lr) return e.setWidth(0), e.setHeight(0), t.setWidth(0), void t.setHeight(0);
            e.setWidth(1), e.setHeight(1), t.setWidth(1), t.setHeight(1);
            const i = this._context.configuration.options;
            i.get(49) ? t.setClassName("monaco-editor-background textAreaCover " + rr.OUTER_CLASS_NAME) : 0 !== i.get(59).renderType ? t.setClassName("monaco-editor-background textAreaCover " + nr.CLASS_NAME) : t.setClassName("monaco-editor-background textAreaCover")
        }
    }
    var cr = i(103);
    class hr {
        constructor(e, t, i, n) {
            this.configuration = e, this.viewModel = t, this.userInputEvents = i, this.commandDelegate = n
        }
        paste(e, t, i, n) {
            this.commandDelegate.paste(e, t, i, n)
        }
        type(e) {
            this.commandDelegate.type(e)
        }
        compositionType(e, t, i, n) {
            this.commandDelegate.compositionType(e, t, i, n)
        }
        compositionStart() {
            this.commandDelegate.startComposition()
        }
        compositionEnd() {
            this.commandDelegate.endComposition()
        }
        cut() {
            this.commandDelegate.cut()
        }
        setSelection(e) {
            cr.a.SetSelection.runCoreEditorCommand(this.viewModel, {
                source: "keyboard",
                selection: e
            })
        }
        _validateViewColumn(e) {
            var t = this.viewModel.getLineMinColumn(e.lineNumber);
            return e.column < t ? new Re.a(e.lineNumber, t) : e
        }
        _hasMulticursorModifier(e) {
            switch (this.configuration.options.get(69)) {
                case "altKey":
                    return e.altKey;
                case "ctrlKey":
                    return e.ctrlKey;
                case "metaKey":
                    return e.metaKey;
                default:
                    return !1
            }
        }
        _hasNonMulticursorModifier(e) {
            switch (this.configuration.options.get(69)) {
                case "altKey":
                    return e.ctrlKey || e.metaKey;
                case "ctrlKey":
                    return e.altKey || e.metaKey;
                case "metaKey":
                    return e.ctrlKey || e.altKey;
                default:
                    return !1
            }
        }
        dispatchMouse(e) {
            const t = this.configuration.options;
            var i = A.d && t.get(95),
                n = t.get(18);
            e.middleButton && !i ? this._columnSelect(e.position, e.mouseColumn, e.inSelectionMode) : e.startedOnLineNumbers ? this._hasMulticursorModifier(e) ? e.inSelectionMode ? this._lastCursorLineSelect(e.position) : this._createCursor(e.position, !0) : e.inSelectionMode ? this._lineSelectDrag(e.position) : this._lineSelect(e.position) : 4 <= e.mouseDownCount ? this._selectAll() : 3 === e.mouseDownCount ? this._hasMulticursorModifier(e) ? e.inSelectionMode ? this._lastCursorLineSelectDrag(e.position) : this._lastCursorLineSelect(e.position) : e.inSelectionMode ? this._lineSelectDrag(e.position) : this._lineSelect(e.position) : 2 === e.mouseDownCount ? this._hasMulticursorModifier(e) ? this._lastCursorWordSelect(e.position) : e.inSelectionMode ? this._wordSelectDrag(e.position) : this._wordSelect(e.position) : this._hasMulticursorModifier(e) ? this._hasNonMulticursorModifier(e) || (e.shiftKey ? this._columnSelect(e.position, e.mouseColumn, !0) : e.inSelectionMode ? this._lastCursorMoveToSelect(e.position) : this._createCursor(e.position, !1)) : e.inSelectionMode ? e.altKey || n ? this._columnSelect(e.position, e.mouseColumn, !0) : this._moveToSelect(e.position) : this.moveTo(e.position)
        }
        _usualArgs(e) {
            return e = this._validateViewColumn(e), {
                source: "mouse",
                position: this._convertViewToModelPosition(e),
                viewPosition: e
            }
        }
        moveTo(e) {
            cr.a.MoveTo.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _moveToSelect(e) {
            cr.a.MoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _columnSelect(e, t, i) {
            e = this._validateViewColumn(e), cr.a.ColumnSelect.runCoreEditorCommand(this.viewModel, {
                source: "mouse",
                position: this._convertViewToModelPosition(e),
                viewPosition: e,
                mouseColumn: t,
                doColumnSelect: i
            })
        }
        _createCursor(e, t) {
            e = this._validateViewColumn(e), cr.a.CreateCursor.runCoreEditorCommand(this.viewModel, {
                source: "mouse",
                position: this._convertViewToModelPosition(e),
                viewPosition: e,
                wholeLine: t
            })
        }
        _lastCursorMoveToSelect(e) {
            cr.a.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _wordSelect(e) {
            cr.a.WordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _wordSelectDrag(e) {
            cr.a.WordSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _lastCursorWordSelect(e) {
            cr.a.LastCursorWordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _lineSelect(e) {
            cr.a.LineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _lineSelectDrag(e) {
            cr.a.LineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _lastCursorLineSelect(e) {
            cr.a.LastCursorLineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _lastCursorLineSelectDrag(e) {
            cr.a.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(e))
        }
        _selectAll() {
            cr.a.SelectAll.runCoreEditorCommand(this.viewModel, {
                source: "mouse"
            })
        }
        _convertViewToModelPosition(e) {
            return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)
        }
        emitKeyDown(e) {
            this.userInputEvents.emitKeyDown(e)
        }
        emitKeyUp(e) {
            this.userInputEvents.emitKeyUp(e)
        }
        emitContextMenu(e) {
            this.userInputEvents.emitContextMenu(e)
        }
        emitMouseMove(e) {
            this.userInputEvents.emitMouseMove(e)
        }
        emitMouseLeave(e) {
            this.userInputEvents.emitMouseLeave(e)
        }
        emitMouseUp(e) {
            this.userInputEvents.emitMouseUp(e)
        }
        emitMouseDown(e) {
            this.userInputEvents.emitMouseDown(e)
        }
        emitMouseDrag(e) {
            this.userInputEvents.emitMouseDrag(e)
        }
        emitMouseDrop(e) {
            this.userInputEvents.emitMouseDrop(e)
        }
        emitMouseDropCanceled() {
            this.userInputEvents.emitMouseDropCanceled()
        }
        emitMouseWheel(e) {
            this.userInputEvents.emitMouseWheel(e)
        }
    }
    class ur {
        constructor(e) {
            this.onKeyDown = null, this.onKeyUp = null, this.onContextMenu = null, this.onMouseMove = null, this.onMouseLeave = null, this.onMouseDown = null, this.onMouseUp = null, this.onMouseDrag = null, this.onMouseDrop = null, this.onMouseDropCanceled = null, this.onMouseWheel = null, this._coordinatesConverter = e
        }
        emitKeyDown(e) {
            this.onKeyDown && this.onKeyDown(e)
        }
        emitKeyUp(e) {
            this.onKeyUp && this.onKeyUp(e)
        }
        emitContextMenu(e) {
            this.onContextMenu && this.onContextMenu(this._convertViewToModelMouseEvent(e))
        }
        emitMouseMove(e) {
            this.onMouseMove && this.onMouseMove(this._convertViewToModelMouseEvent(e))
        }
        emitMouseLeave(e) {
            this.onMouseLeave && this.onMouseLeave(this._convertViewToModelMouseEvent(e))
        }
        emitMouseDown(e) {
            this.onMouseDown && this.onMouseDown(this._convertViewToModelMouseEvent(e))
        }
        emitMouseUp(e) {
            this.onMouseUp && this.onMouseUp(this._convertViewToModelMouseEvent(e))
        }
        emitMouseDrag(e) {
            this.onMouseDrag && this.onMouseDrag(this._convertViewToModelMouseEvent(e))
        }
        emitMouseDrop(e) {
            this.onMouseDrop && this.onMouseDrop(this._convertViewToModelMouseEvent(e))
        }
        emitMouseDropCanceled() {
            this.onMouseDropCanceled && this.onMouseDropCanceled()
        }
        emitMouseWheel(e) {
            this.onMouseWheel && this.onMouseWheel(e)
        }
        _convertViewToModelMouseEvent(e) {
            return e.target ? {
                event: e.event,
                target: this._convertViewToModelMouseTarget(e.target)
            } : e
        }
        _convertViewToModelMouseTarget(e) {
            return ur.convertViewToModelMouseTarget(e, this._coordinatesConverter)
        }
        static convertViewToModelMouseTarget(e, t) {
            return new pr(e.element, e.type, e.mouseColumn, e.position ? t.convertViewPositionToModelPosition(e.position) : null, e.range ? t.convertViewRangeToModelRange(e.range) : null, e.detail)
        }
    }
    class pr {
        constructor(e, t, i, n, r, o) {
            this.element = e, this.type = t, this.mouseColumn = i, this.position = n, this.range = r, this.detail = o
        }
        toString() {
            return Nn.toString(this)
        }
    }
    class gr {
        constructor(e) {
            this._createLine = e, this._set(1, [])
        }
        flush() {
            this._set(1, [])
        }
        _set(e, t) {
            this._lines = t, this._rendLineNumberStart = e
        }
        _get() {
            return {
                rendLineNumberStart: this._rendLineNumberStart,
                lines: this._lines
            }
        }
        getStartLineNumber() {
            return this._rendLineNumberStart
        }
        getEndLineNumber() {
            return this._rendLineNumberStart + this._lines.length - 1
        }
        getCount() {
            return this._lines.length
        }
        getLine(e) {
            if ((e -= this._rendLineNumberStart) < 0 || e >= this._lines.length) throw new Error("Illegal value for lineNumber");
            return this._lines[e]
        }
        onLinesDeleted(e, t) {
            if (0 === this.getCount()) return null;
            var i = this.getStartLineNumber(),
                n = this.getEndLineNumber();
            if (t < i) return this._rendLineNumberStart -= t - e + 1, null;
            if (n < e) return null;
            let r = 0,
                o = 0;
            for (let a = i; a <= n; a++) {
                var s = a - this._rendLineNumberStart;
                e <= a && a <= t && (0 === o ? (r = s, o = 1) : o++)
            }
            if (e < i) {
                let n = 0;
                n = t < i ? t - e + 1 : i - e, this._rendLineNumberStart -= n
            }
            return this._lines.splice(r, o)
        }
        onLinesChanged(e, t) {
            if (0 === this.getCount()) return !1;
            var i = this.getStartLineNumber(),
                n = this.getEndLineNumber();
            let r = !1;
            for (let o = e; o <= t; o++) o >= i && o <= n && (this._lines[o - this._rendLineNumberStart].onContentChanged(), r = !0);
            return r
        }
        onLinesInserted(e, t) {
            if (0 === this.getCount()) return null;
            var i = t - e + 1,
                n = this.getStartLineNumber();
            t = this.getEndLineNumber();
            if (e <= n) return this._rendLineNumberStart += i, null;
            if (t < e) return null;
            if (t < i + e) return this._lines.splice(e - this._rendLineNumberStart, t - e + 1);
            const r = [];
            for (let e = 0; e < i; e++) r[e] = this._createLine();
            t = e - this._rendLineNumberStart;
            const o = this._lines.slice(0, t);
            return e = this._lines.slice(t, this._lines.length - i), t = this._lines.slice(this._lines.length - i, this._lines.length), this._lines = o.concat(r).concat(e), t
        }
        onTokensChanged(e) {
            if (0 === this.getCount()) return !1;
            var t = this.getStartLineNumber(),
                i = this.getEndLineNumber();
            let n = !1;
            for (let l = 0, d = e.length; l < d; l++) {
                var r = e[l];
                if (!(r.toLineNumber < t || r.fromLineNumber > i)) {
                    var o = Math.max(t, r.fromLineNumber),
                        s = Math.min(i, r.toLineNumber);
                    for (let e = o; e <= s; e++) {
                        var a = e - this._rendLineNumberStart;
                        this._lines[a].onTokensChanged(), n = !0
                    }
                }
            }
            return n
        }
    }
    class fr {
        constructor(e) {
            this._host = e, this.domNode = this._createDomNode(), this._linesCollection = new gr(() => this._host.createVisibleLine())
        }
        _createDomNode() {
            const e = Object(Ui.b)(document.createElement("div"));
            return e.setClassName("view-layer"), e.setPosition("absolute"), e.domNode.setAttribute("role", "presentation"), e.domNode.setAttribute("aria-hidden", "true"), e
        }
        on配置Changed(e) {
            return !!e.hasChanged(129)
        }
        onFlushed(e) {
            return this._linesCollection.flush(), !0
        }
        onLinesChanged(e) {
            return this._linesCollection.onLinesChanged(e.fromLineNumber, e.toLineNumber)
        }
        onLinesDeleted(e) {
            const t = this._linesCollection.onLinesDeleted(e.fromLineNumber, e.toLineNumber);
            if (t)
                for (let e = 0, n = t.length; e < n; e++) {
                    var i = t[e].getDomNode();
                    i && this.domNode.domNode.removeChild(i)
                }
            return !0
        }
        onLinesInserted(e) {
            const t = this._linesCollection.onLinesInserted(e.fromLineNumber, e.toLineNumber);
            if (t)
                for (let e = 0, n = t.length; e < n; e++) {
                    var i = t[e].getDomNode();
                    i && this.domNode.domNode.removeChild(i)
                }
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onTokensChanged(e) {
            return this._linesCollection.onTokensChanged(e.ranges)
        }
        onZonesChanged(e) {
            return !0
        }
        getStartLineNumber() {
            return this._linesCollection.getStartLineNumber()
        }
        getEndLineNumber() {
            return this._linesCollection.getEndLineNumber()
        }
        getVisibleLine(e) {
            return this._linesCollection.getLine(e)
        }
        renderLines(e) {
            var t = this._linesCollection._get();
            const i = new mr(this.domNode.domNode, this._host, e);
            t = {
                rendLineNumberStart: t.rendLineNumberStart,
                lines: t.lines,
                linesLength: t.lines.length
            }, e = i.render(t, e.startLineNumber, e.endLineNumber, e.relativeVerticalOffset), this._linesCollection._set(e.rendLineNumberStart, e.lines)
        }
    }
    class mr {
        constructor(e, t, i) {
            this.domNode = e, this.host = t, this.viewportData = i
        }
        render(e, t, i, n) {
            const r = {
                rendLineNumberStart: e.rendLineNumberStart,
                lines: e.lines.slice(0),
                linesLength: e.linesLength
            };
            if (r.rendLineNumberStart + r.linesLength - 1 < t || i < r.rendLineNumberStart) {
                r.rendLineNumberStart = t, r.linesLength = i - t + 1, r.lines = [];
                for (let e = t; e <= i; e++) r.lines[e - t] = this.host.createVisibleLine();
                return this._finishRendering(r, !0, n), r
            }
            var o, s, a;
            return this._renderUntouchedLines(r, Math.max(t - r.rendLineNumberStart, 0), Math.min(i - r.rendLineNumberStart, r.linesLength - 1), n, t), r.rendLineNumberStart > t ? (o = t) <= (e = Math.min(i, r.rendLineNumberStart - 1)) && (this._insertLinesBefore(r, o, e, n, t), r.linesLength += e - o + 1) : r.rendLineNumberStart < t && 0 < (s = Math.min(r.linesLength, t - r.rendLineNumberStart)) && (this._removeLinesBefore(r, s), r.linesLength -= s), r.rendLineNumberStart = t, r.rendLineNumberStart + r.linesLength - 1 < i ? (a = r.rendLineNumberStart + r.linesLength) <= (s = i) && (this._insertLinesAfter(r, a, s, n, t), r.linesLength += s - a + 1) : r.rendLineNumberStart + r.linesLength - 1 > i && (a = Math.max(0, i - r.rendLineNumberStart + 1), 0 < (a = r.linesLength - 1 - a + 1) && (this._removeLinesAfter(r, a), r.linesLength -= a)), this._finishRendering(r, !1, n), r
        }
        _renderUntouchedLines(e, t, i, n, r) {
            var o = e.rendLineNumberStart;
            const s = e.lines;
            for (let e = t; e <= i; e++) {
                var a = o + e;
                s[e].layoutLine(a, n[a - r])
            }
        }
        _insertLinesBefore(e, t, i, n, r) {
            const o = [];
            let s = 0;
            for (let e = t; e <= i; e++) o[s++] = this.host.createVisibleLine();
            e.lines = o.concat(e.lines)
        }
        _removeLinesBefore(e, t) {
            for (let n = 0; n < t; n++) {
                var i = e.lines[n].getDomNode();
                i && this.domNode.removeChild(i)
            }
            e.lines.splice(0, t)
        }
        _insertLinesAfter(e, t, i, n, r) {
            const o = [];
            let s = 0;
            for (let e = t; e <= i; e++) o[s++] = this.host.createVisibleLine();
            e.lines = e.lines.concat(o)
        }
        _removeLinesAfter(e, t) {
            var i = e.linesLength - t;
            for (let r = 0; r < t; r++) {
                var n = e.lines[i + r].getDomNode();
                n && this.domNode.removeChild(n)
            }
            e.lines.splice(i, t)
        }
        _finishRenderingNewLines(e, t, i, n) {
            mr._ttPolicy && (i = mr._ttPolicy.createHTML(i));
            const r = this.domNode.lastChild;
            t || !r ? this.domNode.innerHTML = i : r.insertAdjacentHTML("afterend", i);
            let o = this.domNode.lastChild;
            for (let t = e.linesLength - 1; 0 <= t; t--) {
                const i = e.lines[t];
                n[t] && (i.setDomNode(o), o = o.previousSibling)
            }
        }
        _finishRenderingInvalidLines(e, t, i) {
            const n = document.createElement("div");
            mr._ttPolicy && (t = mr._ttPolicy.createHTML(t)), n.innerHTML = t;
            for (let t = 0; t < e.linesLength; t++) {
                const o = e.lines[t];
                if (i[t]) {
                    var r = n.firstChild;
                    const e = o.getDomNode();
                    e.parentNode.replaceChild(r, e), o.setDomNode(r)
                }
            }
        }
        _finishRendering(e, t, i) {
            const n = mr._sb;
            var r = e.linesLength,
                o = e.lines,
                s = e.rendLineNumberStart;
            const a = []; {
                n.reset();
                let l = !1;
                for (let e = 0; e < r; e++) {
                    const t = o[e];
                    a[e] = !1, t.getDomNode() || t.renderLine(e + s, i[e], this.viewportData, n) && (a[e] = !0, l = !0)
                }
                l && this._finishRenderingNewLines(e, t, n.build(), a)
            } {
                n.reset();
                let t = !1;
                const l = [];
                for (let e = 0; e < r; e++) {
                    const r = o[e];
                    l[e] = !1, a[e] || r.renderLine(e + s, i[e], this.viewportData, n) && (l[e] = !0, t = !0)
                }
                t && this._finishRenderingInvalidLines(e, n.build(), l)
            }
        }
    }
    mr._ttPolicy = null === (S = window.trustedTypes) || void 0 === S ? void 0 : S.createPolicy("editorViewLayer", {
        createHTML: e => e
    }), mr._sb = Object(ye.a)(1e5);
    class vr extends rn {
        constructor(e) {
            super(e), this._visibleLines = new fr(this), this.domNode = this._visibleLines.domNode, this._dynamicOverlays = [], this._isFocused = !1, this.domNode.setClassName("view-overlays")
        }
        shouldRender() {
            if (super.shouldRender()) return !0;
            for (let e = 0, t = this._dynamicOverlays.length; e < t; e++) {
                if (this._dynamicOverlays[e].shouldRender()) return !0
            }
            return !1
        }
        dispose() {
            super.dispose();
            for (let e = 0, t = this._dynamicOverlays.length; e < t; e++) {
                this._dynamicOverlays[e].dispose()
            }
            this._dynamicOverlays = []
        }
        getDomNode() {
            return this.domNode
        }
        createVisibleLine() {
            return new br(this._context.configuration, this._dynamicOverlays)
        }
        addDynamicOverlay(e) {
            this._dynamicOverlays.push(e)
        }
        on配置Changed(e) {
            this._visibleLines.on配置Changed(e);
            var t = this._visibleLines.getStartLineNumber(),
                i = this._visibleLines.getEndLineNumber();
            for (let n = t; n <= i; n++) {
                this._visibleLines.getVisibleLine(n).on配置Changed(e)
            }
            return !0
        }
        onFlushed(e) {
            return this._visibleLines.onFlushed(e)
        }
        onFocusChanged(e) {
            return this._isFocused = e.isFocused, !0
        }
        onLinesChanged(e) {
            return this._visibleLines.onLinesChanged(e)
        }
        onLinesDeleted(e) {
            return this._visibleLines.onLinesDeleted(e)
        }
        onLinesInserted(e) {
            return this._visibleLines.onLinesInserted(e)
        }
        onScrollChanged(e) {
            return this._visibleLines.onScrollChanged(e) || !0
        }
        onTokensChanged(e) {
            return this._visibleLines.onTokensChanged(e)
        }
        onZonesChanged(e) {
            return this._visibleLines.onZonesChanged(e)
        }
        prepareRender(e) {
            var t = this._dynamicOverlays.filter(e => e.shouldRender());
            for (let i = 0, n = t.length; i < n; i++) {
                const n = t[i];
                n.prepareRender(e), n.onDidRender()
            }
        }
        render(e) {
            this._viewOverlaysRender(e), this.domNode.toggleClassName("focused", this._isFocused)
        }
        _viewOverlaysRender(e) {
            this._visibleLines.renderLines(e.viewportData)
        }
    }
    class br {
        constructor(e, t) {
            this._configuration = e, this._lineHeight = this._configuration.options.get(58), this._dynamicOverlays = t, this._domNode = null, this._renderedContent = null
        }
        getDomNode() {
            return this._domNode ? this._domNode.domNode : null
        }
        setDomNode(e) {
            this._domNode = Object(Ui.b)(e)
        }
        onContentChanged() {}
        onTokensChanged() {}
        on配置Changed(e) {
            this._lineHeight = this._configuration.options.get(58)
        }
        renderLine(e, t, i, n) {
            let r = "";
            for (let t = 0, n = this._dynamicOverlays.length; t < n; t++) {
                r += this._dynamicOverlays[t].render(i.startLineNumber, e)
            }
            return this._renderedContent !== r && (this._renderedContent = r, n.appendASCIIString('<div style="position:absolute;top:'), n.appendASCIIString(String(t)), n.appendASCIIString("px;width:100%;height:"), n.appendASCIIString(String(this._lineHeight)), n.appendASCIIString('px;">'), n.appendASCIIString(r), n.appendASCIIString("</div>"), !0)
        }
        layoutLine(e, t) {
            this._domNode && (this._domNode.setTop(t), this._domNode.setHeight(this._lineHeight))
        }
    }
    class _r extends vr {
        constructor(e) {
            super(e);
            e = this._context.configuration.options.get(129), this._contentWidth = e.contentWidth, this.domNode.setHeight(0)
        }
        on配置Changed(e) {
            var t = this._context.configuration.options.get(129);
            return this._contentWidth = t.contentWidth, super.on配置Changed(e) || !0
        }
        onScrollChanged(e) {
            return super.onScrollChanged(e) || e.scrollWidthChanged
        }
        _viewOverlaysRender(e) {
            super._viewOverlaysRender(e), this.domNode.setWidth(Math.max(e.scrollWidth, this._contentWidth))
        }
    }
    class wr extends vr {
        constructor(e) {
            super(e);
            const t = this._context.configuration.options;
            e = t.get(129), this._contentLeft = e.contentLeft, this.domNode.setClassName("margin-view-overlays"), this.domNode.setWidth(1), zi.applyFontInfo(this.domNode, t.get(43))
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            zi.applyFontInfo(this.domNode, t.get(43));
            var i = t.get(129);
            return this._contentLeft = i.contentLeft, super.on配置Changed(e) || !0
        }
        onScrollChanged(e) {
            return super.onScrollChanged(e) || e.scrollHeightChanged
        }
        _viewOverlaysRender(e) {
            super._viewOverlaysRender(e), e = Math.min(e.scrollHeight, 1e6), this.domNode.setHeight(e), this.domNode.setWidth(this._contentLeft)
        }
    }
    class yr {
        constructor(e, t) {
            this._coordinateBrand = void 0, this.top = e, this.left = t
        }
    }
    class Cr extends rn {
        constructor(e, t) {
            super(e), this._viewDomNode = t, this._widgets = {}, this.domNode = Object(Ui.b)(document.createElement("div")), on.write(this.domNode, 1), this.domNode.setClassName("contentWidgets"), this.domNode.setPosition("absolute"), this.domNode.setTop(0), this.overflowingContentWidgetsDomNode = Object(Ui.b)(document.createElement("div")), on.write(this.overflowingContentWidgetsDomNode, 2), this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")
        }
        dispose() {
            super.dispose(), this._widgets = {}
        }
        on配置Changed(e) {
            for (const t of Object.keys(this._widgets)) this._widgets[t].on配置Changed(e);
            return !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLineMappingChanged(e) {
            for (const t of Object.keys(this._widgets)) this._widgets[t].onLineMappingChanged(e);
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return !0
        }
        onZonesChanged(e) {
            return !0
        }
        addWidget(e) {
            e = new xr(this._context, this._viewDomNode, e), ((this._widgets[e.id] = e).allowEditorOverflow ? this.overflowingContentWidgetsDomNode : this.domNode).appendChild(e.domNode), this.setShouldRender()
        }
        setWidgetPosition(e, t, i) {
            this._widgets[e.getId()].setPosition(t, i), this.setShouldRender()
        }
        removeWidget(e) {
            var t = e.getId();
            if (this._widgets.hasOwnProperty(t)) {
                e = this._widgets[t], delete this._widgets[t];
                const i = e.domNode.domNode;
                i.parentNode.removeChild(i), i.removeAttribute("monaco-visible-content-widget"), this.setShouldRender()
            }
        }
        shouldSuppressMouseDownOnWidget(e) {
            return !!this._widgets.hasOwnProperty(e) && this._widgets[e].suppressMouseDown
        }
        onBeforeRender(e) {
            for (const t of Object.keys(this._widgets)) this._widgets[t].onBeforeRender(e)
        }
        prepareRender(e) {
            for (const t of Object.keys(this._widgets)) this._widgets[t].prepareRender(e)
        }
        render(e) {
            for (const t of Object.keys(this._widgets)) this._widgets[t].render(e)
        }
    }
    class xr {
        constructor(e, t, i) {
            this._context = e, this._viewDomNode = t, this._actual = i, this.domNode = Object(Ui.b)(this._actual.getDomNode()), this.id = this._actual.getId(), this.allowEditorOverflow = this._actual.allowEditorOverflow || !1, this.suppressMouseDown = this._actual.suppressMouseDown || !1;
            const n = this._context.configuration.options;
            i = n.get(129), this._fixedOverflowWidgets = n.get(36), this._contentWidth = i.contentWidth, this._contentLeft = i.contentLeft, this._lineHeight = n.get(58), this._range = null, this._viewRange = null, this._preference = [], this._cachedDomNodeClientWidth = -1, this._cachedDomNodeClientHeight = -1, this._maxWidth = this._getMaxWidth(), this._isVisible = !1, this._renderData = null, this.domNode.setPosition(this._fixedOverflowWidgets && this.allowEditorOverflow ? "fixed" : "absolute"), this.domNode.setVisibility("hidden"), this.domNode.setAttribute("widgetId", this.id), this.domNode.setMaxWidth(this._maxWidth)
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            this._lineHeight = t.get(58), e.hasChanged(129) && (e = t.get(129), this._contentLeft = e.contentLeft, this._contentWidth = e.contentWidth, this._maxWidth = this._getMaxWidth())
        }
        onLineMappingChanged(e) {
            this._setPosition(this._range)
        }
        _setPosition(e) {
            if (this._range = e, this._viewRange = null, this._range) {
                const e = this._context.model.validateModelRange(this._range);
                (this._context.model.coordinatesConverter.modelPositionIsVisible(e.getStartPosition()) || this._context.model.coordinatesConverter.modelPositionIsVisible(e.getEndPosition())) && (this._viewRange = this._context.model.coordinatesConverter.convertModelRangeToViewRange(e))
            }
        }
        _getMaxWidth() {
            return this.allowEditorOverflow ? window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth : this._contentWidth
        }
        setPosition(e, t) {
            this._setPosition(e), this._preference = t, this._cachedDomNodeClientWidth = -1, this._cachedDomNodeClientHeight = -1
        }
        _layoutBoxInViewport(e, t, i, n, r) {
            var o = e.top,
                s = t.top + this._lineHeight,
                a = r.viewportHeight - s;
            let l = e.left,
                d = t.left;
            return l + i > r.scrollLeft + r.viewportWidth && (l = r.scrollLeft + r.viewportWidth - i), d + i > r.scrollLeft + r.viewportWidth && (d = r.scrollLeft + r.viewportWidth - i), l < r.scrollLeft && (l = r.scrollLeft), d < r.scrollLeft && (d = r.scrollLeft), {
                fitsAbove: n <= o,
                aboveTop: o - n,
                aboveLeft: l,
                fitsBelow: n <= a,
                belowTop: s,
                belowLeft: d
            }
        }
        _layoutHorizontalSegmentInPage(e, t, i, n) {
            var r = Math.max(0, t.left - n);
            e = Math.min(t.left + t.width + n, e.width);
            let o = t.left + i - s.f.scrollX;
            return o + n > e && (o -= n = o - (e - n), i -= n), o < r && (o -= r = o - r, i -= r), [i, o]
        }
        _layoutBoxInPage(e, t, i, n, r) {
            var o = e.top - n,
                a = t.top + this._lineHeight,
                l = s.A(this._viewDomNode.domNode),
                d = l.top + o - s.f.scrollY,
                c = l.top + a - s.f.scrollY,
                h = s.w(document.body),
                [u, e] = this._layoutHorizontalSegmentInPage(h, l, e.left - r.scrollLeft + this._contentLeft, i),
                [t, r] = this._layoutHorizontalSegmentInPage(h, l, t.left - r.scrollLeft + this._contentLeft, i);
            i = 22 <= d, h = c + n <= h.height - 22;
            return this._fixedOverflowWidgets ? {
                fitsAbove: i,
                aboveTop: Math.max(d, 22),
                aboveLeft: e,
                fitsBelow: h,
                belowTop: c,
                belowLeft: r
            } : {
                fitsAbove: i,
                aboveTop: o,
                aboveLeft: u,
                fitsBelow: h,
                belowTop: a,
                belowLeft: t
            }
        }
        _prepareRenderWidgetAtExactPositionOverflowing(e) {
            return new yr(e.top, e.left + this._contentLeft)
        }
        _getTopAndBottomLeft(e) {
            if (!this._viewRange) return [null, null];
            var t = e.linesVisibleRangesForRange(this._viewRange, !1);
            if (!t || 0 === t.length) return [null, null];
            let i = t[0],
                n = t[0];
            for (const e of t) e.lineNumber < i.lineNumber && (i = e), e.lineNumber > n.lineNumber && (n = e);
            let r = 1073741824;
            for (const e of i.ranges) e.left < r && (r = e.left);
            let o = 1073741824;
            for (const e of n.ranges) e.left < o && (o = e.left);
            return t = e.getVerticalOffsetForLineNumber(i.lineNumber) - e.scrollTop, t = new yr(t, r), e = e.getVerticalOffsetForLineNumber(n.lineNumber) - e.scrollTop, [t, new yr(e, o)]
        }
        _prepareRenderWidget(e) {
            var t, [i, n] = this._getTopAndBottomLeft(e);
            if (!i || !n) return null;
            if (-1 === this._cachedDomNodeClientWidth || -1 === this._cachedDomNodeClientHeight) {
                let e = null;
                "function" == typeof this._actual.beforeRender && (e = Sr(this._actual.beforeRender, this._actual)), e ? (this._cachedDomNodeClientWidth = e.width, this._cachedDomNodeClientHeight = e.height) : (t = this.domNode.domNode, this._cachedDomNodeClientWidth = t.clientWidth, this._cachedDomNodeClientHeight = t.clientHeight)
            }
            let r;
            if (r = this.allowEditorOverflow ? this._layoutBoxInPage(i, n, this._cachedDomNodeClientWidth, this._cachedDomNodeClientHeight, e) : this._layoutBoxInViewport(i, n, this._cachedDomNodeClientWidth, this._cachedDomNodeClientHeight, e), this._preference)
                for (let e = 1; e <= 2; e++)
                    for (const t of this._preference)
                        if (1 === t) {
                            if (!r) return null;
                            if (2 === e || r.fitsAbove) return {
                                coordinate: new yr(r.aboveTop, r.aboveLeft),
                                position: 1
                            }
                        } else {
                            if (2 !== t) return this.allowEditorOverflow ? {
                                coordinate: this._prepareRenderWidgetAtExactPositionOverflowing(i),
                                position: 0
                            } : {
                                coordinate: i,
                                position: 0
                            };
                            if (!r) return null;
                            if (2 === e || r.fitsBelow) return {
                                coordinate: new yr(r.belowTop, r.belowLeft),
                                position: 2
                            }
                        } return null
        }
        onBeforeRender(e) {
            this._viewRange && this._preference && (this._viewRange.endLineNumber < e.startLineNumber || this._viewRange.startLineNumber > e.endLineNumber || this.domNode.setMaxWidth(this._maxWidth))
        }
        prepareRender(e) {
            this._renderData = this._prepareRenderWidget(e)
        }
        render(e) {
            if (!this._renderData) return this._isVisible && (this.domNode.removeAttribute("monaco-visible-content-widget"), this._isVisible = !1, this.domNode.setVisibility("hidden")), void("function" == typeof this._actual.afterRender && Sr(this._actual.afterRender, this._actual, null));
            this.allowEditorOverflow ? this.domNode.setTop(this._renderData.coordinate.top) : this.domNode.setTop(this._renderData.coordinate.top + e.scrollTop - e.bigNumbersDelta), this.domNode.setLeft(this._renderData.coordinate.left), this._isVisible || (this.domNode.setVisibility("inherit"), this.domNode.setAttribute("monaco-visible-content-widget", "true"), this._isVisible = !0), "function" == typeof this._actual.afterRender && Sr(this._actual.afterRender, this._actual, this._renderData.position)
        }
    }

    function Sr(e, t, ...i) {
        try {
            return e.call(t, ...i)
        } catch (e) {
            return null
        }
    }
    i(396);
    let kr = !0;
    class Lr extends er {
        constructor(e) {
            super(), this._context = e;
            const t = this._context.configuration.options;
            e = t.get(129), this._lineHeight = t.get(58), this._renderLineHighlight = t.get(84), this._renderLineHighlightOnlyWhenFocus = t.get(85), this._contentLeft = e.contentLeft, this._contentWidth = e.contentWidth, this._selectionIsEmpty = !0, this._focused = !1, this._cursorLineNumbers = [1], this._selections = [new Hi.a(1, 1, 1, 1)], this._renderData = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), super.dispose()
        }
        _readFromSelections() {
            let e = !1;
            const t = kr ? this._selections.slice(0, 1) : this._selections,
                i = t.map(e => e.positionLineNumber);
            i.sort((e, t) => e - t), ne.g(this._cursorLineNumbers, i) || (this._cursorLineNumbers = i, e = !0);
            var n = t.every(e => e.isEmpty());
            return this._selectionIsEmpty !== n && (this._selectionIsEmpty = n, e = !0), e
        }
        onThemeChanged(e) {
            return this._readFromSelections()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(129);
            return this._lineHeight = t.get(58), this._renderLineHighlight = t.get(84), this._renderLineHighlightOnlyWhenFocus = t.get(85), this._contentLeft = i.contentLeft, this._contentWidth = i.contentWidth, !0
        }
        onCursorStateChanged(e) {
            return this._selections = e.selections, this._readFromSelections()
        }
        onFlushed(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollWidthChanged || e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        onFocusChanged(e) {
            return !!this._renderLineHighlightOnlyWhenFocus && (this._focused = e.isFocused, !0)
        }
        prepareRender(e) {
            if (this._shouldRenderThis()) {
                var t = this._renderOne(e),
                    i = e.visibleRange.startLineNumber,
                    n = e.visibleRange.endLineNumber,
                    r = this._cursorLineNumbers.length;
                let s = 0;
                const a = [];
                for (let e = i; e <= n; e++) {
                    for (var o = e - i; s < r && this._cursorLineNumbers[s] < e;) s++;
                    s < r && this._cursorLineNumbers[s] === e ? a[o] = t : a[o] = ""
                }
                this._renderData = a
            } else this._renderData = null
        }
        render(e, t) {
            return this._renderData ? (e = t - e) >= this._renderData.length ? "" : this._renderData[e] : ""
        }
    }
    class Or extends Lr {
        _renderOne(e) {
            return `<div class="${"current-line"+(this._shouldRenderOther()?" current-line-both":"")}" style="width:${Math.max(e.scrollWidth,this._contentWidth)}px; height:${this._lineHeight}px;"></div>`
        }
        _shouldRenderThis() {
            return ("line" === this._renderLineHighlight || "all" === this._renderLineHighlight) && this._selectionIsEmpty && (!this._renderLineHighlightOnlyWhenFocus || this._focused)
        }
        _shouldRenderOther() {
            return ("gutter" === this._renderLineHighlight || "all" === this._renderLineHighlight) && (!this._renderLineHighlightOnlyWhenFocus || this._focused)
        }
    }
    class Er extends Lr {
        _renderOne(e) {
            return `<div class="${"current-line"+(this._shouldRenderMargin()?" current-line-margin":"")+(this._shouldRenderOther()?" current-line-margin-both":"")}" style="width:${this._contentLeft}px; height:${this._lineHeight}px;"></div>`
        }
        _shouldRenderMargin() {
            return ("gutter" === this._renderLineHighlight || "all" === this._renderLineHighlight) && (!this._renderLineHighlightOnlyWhenFocus || this._focused)
        }
        _shouldRenderThis() {
            return !0
        }
        _shouldRenderOther() {
            return ("line" === this._renderLineHighlight || "all" === this._renderLineHighlight) && this._selectionIsEmpty && (!this._renderLineHighlightOnlyWhenFocus || this._focused)
        }
    }
    Object(ir.f)((e, t) => {
        kr = !1;
        const i = e.getColor(tr.y);
        var n;
        i && (t.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${i}; }`), t.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${i}; border: none; }`)), i && !i.isTransparent() && !e.defines(tr.z) || (n = e.getColor(tr.z)) && (kr = !0, t.addRule(`.monaco-editor .view-overlays .current-line { border: 2px solid ${n}; }`), t.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ${n}; }`), "hc" === e.type && (t.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"), t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")))
    }), i(398);
    class Nr extends er {
        constructor(e) {
            super(), this._context = e;
            const t = this._context.configuration.options;
            this._lineHeight = t.get(58), this._typicalHalfwidthCharacterWidth = t.get(43).typicalHalfwidthCharacterWidth, this._renderResult = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            return this._lineHeight = t.get(58), this._typicalHalfwidthCharacterWidth = t.get(43).typicalHalfwidthCharacterWidth, !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged || e.scrollWidthChanged
        }
        onZonesChanged(e) {
            return !0
        }
        prepareRender(e) {
            var t = e.getDecorationsInViewport();
            let i = [],
                n = 0;
            for (let e = 0, o = t.length; e < o; e++) {
                var r = t[e];
                r.options.className && (i[n++] = r)
            }
            i = i.sort((e, t) => {
                if (e.options.zIndex < t.options.zIndex) return -1;
                if (e.options.zIndex > t.options.zIndex) return 1;
                var i = e.options.className,
                    n = t.options.className;
                return i < n ? -1 : n < i ? 1 : T.a.compareRangesUsingStarts(e.range, t.range)
            });
            var o = e.visibleRange.startLineNumber,
                s = e.visibleRange.endLineNumber;
            const a = [];
            for (let e = o; e <= s; e++) {
                a[e - o] = ""
            }
            this._renderWholeLineDecorations(e, i, a), this._renderNormalDecorations(e, i, a), this._renderResult = a
        }
        _renderWholeLineDecorations(e, t, i) {
            var n = String(this._lineHeight),
                r = e.visibleRange.startLineNumber,
                o = e.visibleRange.endLineNumber;
            for (let e = 0, c = t.length; e < c; e++) {
                var s = t[e];
                if (s.options.isWholeLine) {
                    var a = '<div class="cdr ' + s.options.className + '" style="left:0;width:100%;height:' + n + 'px;"></div>',
                        l = Math.max(s.range.startLineNumber, r),
                        d = Math.min(s.range.endLineNumber, o);
                    for (let e = l; e <= d; e++) i[e - r] += a
                }
            }
        }
        _renderNormalDecorations(e, t, i) {
            var n = String(this._lineHeight),
                r = e.visibleRange.startLineNumber;
            let o = null,
                s = !1,
                a = null;
            for (let h = 0, u = t.length; h < u; h++) {
                var l = t[h];
                if (!l.options.isWholeLine) {
                    var d = l.options.className,
                        c = Boolean(l.options.showIfCollapsed);
                    let t = l.range;
                    c && 1 === t.endColumn && t.endLineNumber !== t.startLineNumber && (t = new T.a(t.startLineNumber, t.startColumn, t.endLineNumber - 1, this._context.model.getLineMaxColumn(t.endLineNumber - 1))), a = o === d && s === c && T.a.areIntersectingOrTouching(a, t) ? T.a.plusRange(a, t) : (null !== o && this._renderNormalDecoration(e, a, o, s, n, r, i), o = d, s = c, t)
                }
            }
            null !== o && this._renderNormalDecoration(e, a, o, s, n, r, i)
        }
        _renderNormalDecoration(e, t, i, n, r, o, s) {
            var a = e.linesVisibleRangesForRange(t, "findMatch" === i);
            if (a)
                for (let e = 0, t = a.length; e < t; e++) {
                    const t = a[e];
                    if (!t.outsideRenderedLine) {
                        var l, d = t.lineNumber - o;
                        !n || 1 !== t.ranges.length || 0 === (l = t.ranges[0]).width && (t.ranges[0] = new ln(l.left, this._typicalHalfwidthCharacterWidth));
                        for (let e = 0, n = t.ranges.length; e < n; e++) {
                            var c = t.ranges[e];
                            c = '<div class="cdr ' + i + '" style="left:' + String(c.left) + "px;width:" + String(c.width) + "px;height:" + r + 'px;"></div>';
                            s[d] += c
                        }
                    }
                }
        }
        render(e, t) {
            return this._renderResult ? (e = t - e) < 0 || e >= this._renderResult.length ? "" : this._renderResult[e] : ""
        }
    }
    var Dr = i(112),
        Ir = i(7);
    class Tr extends rn {
        constructor(e, t, i, n) {
            super(e);
            const r = this._context.configuration.options;
            var o = r.get(91),
                a = r.get(66),
                l = r.get(34),
                d = r.get(94);
            o = {
                listenOnDomNode: i.domNode,
                className: "editor-scrollable " + Object(ir.e)(e.theme.type),
                useShadows: !1,
                lazyRender: !0,
                vertical: o.vertical,
                horizontal: o.horizontal,
                verticalHasArrows: o.verticalHasArrows,
                horizontalHasArrows: o.horizontalHasArrows,
                verticalScrollbarSize: o.verticalScrollbarSize,
                verticalSliderSize: o.verticalSliderSize,
                horizontalScrollbarSize: o.horizontalScrollbarSize,
                horizontalSliderSize: o.horizontalSliderSize,
                handleMouseWheel: o.handleMouseWheel,
                alwaysConsumeMouseWheel: o.alwaysConsumeMouseWheel,
                arrowSize: o.arrowSize,
                mouseWheelScrollSensitivity: a,
                fastScrollSensitivity: l,
                scrollPredominantAxis: d,
                scrollByPage: o.scrollByPage
            };
            this.scrollbar = this._register(new Dr.c(t.domNode, o, this._context.viewLayout.getScrollable())), on.write(this.scrollbar.getDomNode(), 5), this.scrollbarDomNode = Object(Ui.b)(this.scrollbar.getDomNode()), this.scrollbarDomNode.setPosition("absolute"), this._setLayout();
            const c = (e, t, i) => {
                const n = {};
                !t || (t = e.scrollTop) && (n.scrollTop = this._context.viewLayout.getCurrentScrollTop() + t, e.scrollTop = 0), !i || (i = e.scrollLeft) && (n.scrollLeft = this._context.viewLayout.getCurrentScrollLeft() + i, e.scrollLeft = 0), this._context.model.setScrollPosition(n, 1)
            };
            this._register(s.g(i.domNode, "scroll", e => c(i.domNode, !0, !0))), this._register(s.g(t.domNode, "scroll", e => c(t.domNode, !0, !1))), this._register(s.g(n.domNode, "scroll", e => c(n.domNode, !0, !1))), this._register(s.g(this.scrollbarDomNode.domNode, "scroll", e => c(this.scrollbarDomNode.domNode, !0, !1)))
        }
        dispose() {
            super.dispose()
        }
        _setLayout() {
            const e = this._context.configuration.options;
            var t = e.get(129);
            this.scrollbarDomNode.setLeft(t.contentLeft), "right" === e.get(64).side ? this.scrollbarDomNode.setWidth(t.contentWidth + t.minimap.minimapWidth) : this.scrollbarDomNode.setWidth(t.contentWidth), this.scrollbarDomNode.setHeight(t.height)
        }
        getOverviewRulerLayoutInfo() {
            return this.scrollbar.getOverviewRulerLayoutInfo()
        }
        getDomNode() {
            return this.scrollbarDomNode
        }
        delegateVerticalScrollbarMouseDown(e) {
            this.scrollbar.delegateVerticalScrollbarMouseDown(e)
        }
        on配置Changed(e) {
            if (e.hasChanged(91) || e.hasChanged(66) || e.hasChanged(34)) {
                const e = this._context.configuration.options;
                var t = e.get(91),
                    i = e.get(66),
                    n = e.get(34),
                    r = e.get(94);
                r = {
                    vertical: t.vertical,
                    horizontal: t.horizontal,
                    verticalScrollbarSize: t.verticalScrollbarSize,
                    horizontalScrollbarSize: t.horizontalScrollbarSize,
                    scrollByPage: t.scrollByPage,
                    handleMouseWheel: t.handleMouseWheel,
                    mouseWheelScrollSensitivity: i,
                    fastScrollSensitivity: n,
                    scrollPredominantAxis: r
                };
                this.scrollbar.updateOptions(r)
            }
            return e.hasChanged(129) && this._setLayout(), !0
        }
        onScrollChanged(e) {
            return !0
        }
        onThemeChanged(e) {
            return this.scrollbar.updateClassName("editor-scrollable " + Object(ir.e)(this._context.theme.type)), !0
        }
        prepareRender(e) {}
        render(e) {
            this.scrollbar.renderNow()
        }
    }
    Object(ir.f)((e, t) => {
        var i = e.getColor(Ir.fc);
        i && t.addRule(`\n\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\tbox-shadow: ${i} 0 6px 6px -6px inset;\n\t\t\t}\n\n\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\tbox-shadow: ${i} 6px 0 6px -6px inset;\n\t\t\t}\n\n\t\t\t.monaco-scrollable-element > .shadow.top.left {\n\t\t\t\tbox-shadow: ${i} 6px 6px 6px -6px inset;\n\t\t\t}\n\t\t`), (i = e.getColor(Ir.hc)) && t.addRule(`\n\t\t\t.monaco-scrollable-element > .scrollbar > .slider {\n\t\t\t\tbackground: ${i};\n\t\t\t}\n\t\t`), (i = e.getColor(Ir.ic)) && t.addRule(`\n\t\t\t.monaco-scrollable-element > .scrollbar > .slider:hover {\n\t\t\t\tbackground: ${i};\n\t\t\t}\n\t\t`), (e = e.getColor(Ir.gc)) && t.addRule(`\n\t\t\t.monaco-scrollable-element > .scrollbar > .slider.active {\n\t\t\t\tbackground: ${e};\n\t\t\t}\n\t\t`)
    }), i(400);
    class Mr {
        constructor(e, t, i) {
            this._decorationToRenderBrand = void 0, this.startLineNumber = +e, this.endLineNumber = +t, this.className = String(i)
        }
    }
    class Pr extends er {
        _render(e, t, i) {
            const n = [];
            for (let i = e; i <= t; i++) {
                n[i - e] = []
            }
            if (0 === i.length) return n;
            i.sort((e, t) => e.className === t.className ? e.startLineNumber === t.startLineNumber ? e.endLineNumber - t.endLineNumber : e.startLineNumber - t.startLineNumber : e.className < t.className ? -1 : 1);
            let r = null,
                o = 0;
            for (let l = 0, d = i.length; l < d; l++) {
                var s = i[l],
                    a = s.className;
                let d = Math.max(s.startLineNumber, e) - e;
                s = Math.min(s.endLineNumber, t) - e, o = r === a ? (d = Math.max(o + 1, d), Math.max(o, s)) : (r = a, s);
                for (let e = d; e <= o; e++) n[e].push(r)
            }
            return n
        }
    }
    class Ar extends Pr {
        constructor(e) {
            super(), this._context = e;
            const t = this._context.configuration.options;
            e = t.get(129), this._lineHeight = t.get(58), this._glyphMargin = t.get(49), this._glyphMarginLeft = e.glyphMarginLeft, this._glyphMarginWidth = e.glyphMarginWidth, this._renderResult = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(129);
            return this._lineHeight = t.get(58), this._glyphMargin = t.get(49), this._glyphMarginLeft = i.glyphMarginLeft, this._glyphMarginWidth = i.glyphMarginWidth, !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        _getDecorations(e) {
            var t = e.getDecorationsInViewport();
            let i = [],
                n = 0;
            for (let e = 0, s = t.length; e < s; e++) {
                var r = t[e],
                    o = r.options.glyphMarginClassName;
                o && (i[n++] = new Mr(r.range.startLineNumber, r.range.endLineNumber, o))
            }
            return i
        }
        prepareRender(e) {
            if (this._glyphMargin) {
                var t = e.visibleRange.startLineNumber,
                    i = e.visibleRange.endLineNumber,
                    n = this._render(t, i, this._getDecorations(e)),
                    r = (e = this._lineHeight.toString(), '" style="left:' + this._glyphMarginLeft.toString() + "px;width:" + this._glyphMarginWidth.toString() + "px;height:" + e + 'px;"></div>');
                const s = [];
                for (let e = t; e <= i; e++) {
                    var o = e - t;
                    const i = n[o];
                    0 === i.length ? s[o] = "" : s[o] = '<div class="cgmr codicon ' + i.join(" ") + r
                }
                this._renderResult = s
            } else this._renderResult = null
        }
        render(e, t) {
            return this._renderResult ? (e = t - e) < 0 || e >= this._renderResult.length ? "" : this._renderResult[e] : ""
        }
    }
    i(402);
    var Rr = i(76);
    class Fr extends er {
        constructor(e) {
            super(), this._context = e, this._primaryPosition = null;
            const t = this._context.configuration.options;
            var i = t.get(130);
            e = t.get(43);
            this._lineHeight = t.get(58), this._spaceWidth = e.spaceWidth, this._maxIndentLeft = -1 === i.wrappingColumn ? -1 : i.wrappingColumn * e.typicalHalfwidthCharacterWidth, this._bracketPairGuideOptions = t.get(13), this._renderResult = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(130),
                n = t.get(43);
            return this._lineHeight = t.get(58), this._spaceWidth = n.spaceWidth, this._maxIndentLeft = -1 === i.wrappingColumn ? -1 : i.wrappingColumn * n.typicalHalfwidthCharacterWidth, this._bracketPairGuideOptions = t.get(13), !0
        }
        onCursorStateChanged(e) {
            var t = e.selections[0].getPosition();
            return !(null !== (e = this._primaryPosition) && void 0 !== e && e.equals(t) || (this._primaryPosition = t, 0))
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        onLanguage配置Changed(e) {
            return !0
        }
        prepareRender(e) {
            var t;
            if (this._bracketPairGuideOptions.indentation || !1 !== this._bracketPairGuideOptions.bracketPairs) {
                var i = e.visibleRange.startLineNumber,
                    n = e.visibleRange.endLineNumber,
                    r = e.scrollWidth,
                    o = this._lineHeight,
                    s = this._primaryPosition,
                    a = this.getGuidesByLine(i, n, s);
                const g = [];
                for (let s = i; s <= n; s++) {
                    var l = s - i,
                        d = a[l];
                    let n = "";
                    var c = null !== (t = null === (t = e.visibleRangeForPosition(new Re.a(s, 1))) || void 0 === t ? void 0 : t.left) && void 0 !== t ? t : 0;
                    for (const t of d) {
                        var h = c + (t.visibleColumn - 1) * this._spaceWidth;
                        if (r < h || 0 < this._maxIndentLeft && h > this._maxIndentLeft) break;
                        var u = t.horizontalLine ? t.horizontalLine.top ? "horizontal-top" : "horizontal-bottom" : "vertical",
                            p = t.horizontalLine ? (null !== (p = null === (p = e.visibleRangeForPosition(new Re.a(s, t.horizontalLine.endColumn))) || void 0 === p ? void 0 : p.left) && void 0 !== p ? p : h + this._spaceWidth) - h : this._spaceWidth;
                        n += `<div class="core-guide ${t.className} ${u}" style="left:${h}px;height:${o}px;width:${p}px"></div>`
                    }
                    g[l] = n
                }
                this._renderResult = g
            } else this._renderResult = null
        }
        getGuidesByLine(e, t, i) {
            var n = !1 !== this._bracketPairGuideOptions.bracketPairs ? this._context.model.getBracketGuidesInRangeByLine(e, t, i, {
                    highlightActive: this._bracketPairGuideOptions.highlightActiveBracketPair,
                    horizontalGuides: !0 === this._bracketPairGuideOptions.bracketPairsHorizontal ? W.c.Enabled : "active" === this._bracketPairGuideOptions.bracketPairsHorizontal ? W.c.EnabledForActive : W.c.Disabled,
                    includeInactive: !0 === this._bracketPairGuideOptions.bracketPairs
                }) : null,
                r = this._bracketPairGuideOptions.indentation ? this._context.model.getLinesIndentGuides(e, t) : null;
            let o = 0,
                s = 0,
                a = 0;
            this._bracketPairGuideOptions.highlightActiveIndentation && i && (o = (i = this._context.model.getActiveIndentGuide(i.lineNumber, e, t)).startLineNumber, s = i.endLineNumber, a = i.indent);
            var {
                indentSize: l
            } = this._context.model.getTextModelOptions();
            const d = [];
            for (let i = e; i <= t; i++) {
                const t = new Array;
                d.push(t);
                var c = n ? n[i - e] : [];
                const g = new ne.a(c);
                var h = r ? r[i - e] : [];
                for (let e = 1; e <= h; e++) {
                    const n = (e - 1) * l + 1;
                    var u = 0 === c.length && o <= i && i <= s && e === a;
                    t.push(...g.takeWhile(e => e.visibleColumn < n) || []);
                    var p = g.peek();
                    p && p.visibleColumn === n && !p.horizontalLine || t.push(new W.d(n, u ? "core-guide-indent-active" : "core-guide-indent", null))
                }
                t.push(...g.takeWhile(e => !0) || [])
            }
            return d
        }
        render(e, t) {
            return this._renderResult ? (e = t - e) < 0 || e >= this._renderResult.length ? "" : this._renderResult[e] : ""
        }
    }

    function jr(e) {
        if (!e || !e.isTransparent()) return e
    }
    Object(ir.f)((e, t) => {
        var i = e.getColor(tr.x);
        i && t.addRule(`.monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 ${i} inset; }`), (i = e.getColor(tr.a) || i) && t.addRule(`.monaco-editor .lines-content .core-guide-indent-active { box-shadow: 1px 0 0 0 ${i} inset; }`);
        const n = [{
                bracketColor: tr.c,
                guideColor: tr.p,
                guideColorActive: tr.j
            }, {
                bracketColor: tr.d,
                guideColor: tr.q,
                guideColorActive: tr.k
            }, {
                bracketColor: tr.e,
                guideColor: tr.r,
                guideColorActive: tr.l
            }, {
                bracketColor: tr.f,
                guideColor: tr.s,
                guideColorActive: tr.m
            }, {
                bracketColor: tr.g,
                guideColor: tr.t,
                guideColorActive: tr.n
            }, {
                bracketColor: tr.h,
                guideColor: tr.u,
                guideColorActive: tr.o
            }],
            r = new Rr.a;
        var o = n.map(t => {
            const i = e.getColor(t.bracketColor);
            var n = e.getColor(t.guideColor);
            t = e.getColor(t.guideColorActive), n = jr(null !== (n = jr(n)) && void 0 !== n ? n : null == i ? void 0 : i.transparent(.3)), t = jr(null !== (t = jr(t)) && void 0 !== t ? t : i);
            if (n && t) return {
                guideColor: n,
                guideColorActive: t
            }
        }).filter(ve.g);
        if (0 < o.length) {
            for (let e = 0; e < 30; e++) {
                const i = o[e % o.length];
                t.addRule(`.monaco-editor .${r.getInlineClassNameOfLevel(e).replace(/ /g,".")} { --guide-color: ${i.guideColor}; --guide-color-active: ${i.guideColorActive}; }`)
            }
            t.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"), t.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"), t.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"), t.addRule(`.monaco-editor .vertical.${r.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`), t.addRule(`.monaco-editor .horizontal-top.${r.activeClassName} { border-top: 1px solid var(--guide-color-active); }`), t.addRule(`.monaco-editor .horizontal-bottom.${r.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)
        }
    }), i(404);
    class Br {
        constructor() {
            this._currentVisibleRange = new T.a(1, 1, 1, 1)
        }
        getCurrentVisibleRange() {
            return this._currentVisibleRange
        }
        setCurrentVisibleRange(e) {
            this._currentVisibleRange = e
        }
    }
    class Vr {
        constructor(e, t, i, n, r, o) {
            this.lineNumber = e, this.startColumn = t, this.endColumn = i, this.startScrollTop = n, this.stopScrollTop = r, this.scrollType = o, this.type = "range", this.minLineNumber = e, this.maxLineNumber = e
        }
    }
    class Wr {
        constructor(e, t, i, n) {
            this.selections = e, this.startScrollTop = t, this.stopScrollTop = i, this.scrollType = n, this.type = "selections";
            let r = e[0].startLineNumber,
                o = e[0].endLineNumber;
            for (let t = 1, i = e.length; t < i; t++) {
                var s = e[t];
                r = Math.min(r, s.startLineNumber), o = Math.max(o, s.endLineNumber)
            }
            this.minLineNumber = r, this.maxLineNumber = o
        }
    }
    class zr extends rn {
        constructor(e, t) {
            super(e), this._linesContent = t, this._textRangeRestingSpot = document.createElement("div"), this._visibleLines = new fr(this), this.domNode = this._visibleLines.domNode;
            var i = this._context.configuration;
            const n = this._context.configuration.options;
            e = n.get(43), t = n.get(130), this._lineHeight = n.get(58), this._typicalHalfwidthCharacterWidth = e.typicalHalfwidthCharacterWidth, this._isViewportWrapping = t.isViewportWrapping, this._revealHorizontalRightPadding = n.get(88), this._cursorSurroundingLines = n.get(25), this._cursorSurroundingLinesStyle = n.get(26), this._canUseLayerHinting = !n.get(28), this._viewLineOptions = new vn(i, this._context.theme.type), on.write(this.domNode, 7), this.domNode.setClassName("view-lines " + sr), zi.applyFontInfo(this.domNode, e), this._maxLineWidth = 0, this._asyncUpdateLineWidths = new q.e(() => {
                this._updateLineWidthsSlow()
            }, 200), this._asyncCheckMonospaceFontAssumptions = new q.e(() => {
                this._checkMonospaceFontAssumptions()
            }, 2e3), this._lastRenderedData = new Br, this._horizontalRevealRequest = null
        }
        dispose() {
            this._asyncUpdateLineWidths.dispose(), this._asyncCheckMonospaceFontAssumptions.dispose(), super.dispose()
        }
        getDomNode() {
            return this.domNode
        }
        createVisibleLine() {
            return new bn(this._viewLineOptions)
        }
        on配置Changed(e) {
            this._visibleLines.on配置Changed(e), e.hasChanged(130) && (this._maxLineWidth = 0);
            const t = this._context.configuration.options;
            var i = t.get(43),
                n = t.get(130);
            return this._lineHeight = t.get(58), this._typicalHalfwidthCharacterWidth = i.typicalHalfwidthCharacterWidth, this._isViewportWrapping = n.isViewportWrapping, this._revealHorizontalRightPadding = t.get(88), this._cursorSurroundingLines = t.get(25), this._cursorSurroundingLinesStyle = t.get(26), this._canUseLayerHinting = !t.get(28), zi.applyFontInfo(this.domNode, i), this._onOptionsMaybeChanged(), e.hasChanged(129) && (this._maxLineWidth = 0), !0
        }
        _onOptionsMaybeChanged() {
            var e = this._context.configuration;
            e = new vn(e, this._context.theme.type);
            if (this._viewLineOptions.equals(e)) return !1;
            this._viewLineOptions = e;
            e = this._visibleLines.getStartLineNumber();
            var t = this._visibleLines.getEndLineNumber();
            for (let i = e; i <= t; i++) {
                this._visibleLines.getVisibleLine(i).onOptionsChanged(this._viewLineOptions)
            }
            return !0
        }
        onCursorStateChanged(e) {
            var t = this._visibleLines.getStartLineNumber(),
                i = this._visibleLines.getEndLineNumber();
            let n = !1;
            for (let e = t; e <= i; e++) n = this._visibleLines.getVisibleLine(e).onSelectionChanged() || n;
            return n
        }
        onDecorationsChanged(e) {
            var t = this._visibleLines.getStartLineNumber(),
                i = this._visibleLines.getEndLineNumber();
            for (let e = t; e <= i; e++) this._visibleLines.getVisibleLine(e).onDecorationsChanged();
            return !0
        }
        onFlushed(e) {
            return e = this._visibleLines.onFlushed(e), this._maxLineWidth = 0, e
        }
        onLinesChanged(e) {
            return this._visibleLines.onLinesChanged(e)
        }
        onLinesDeleted(e) {
            return this._visibleLines.onLinesDeleted(e)
        }
        onLinesInserted(e) {
            return this._visibleLines.onLinesInserted(e)
        }
        onRevealRangeRequest(e) {
            var t = this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(), e.source, e.range, e.selections, e.verticalType);
            if (-1 === t) return !1;
            let i = this._context.viewLayout.validateScrollPosition({
                scrollTop: t
            });
            return e.revealHorizontal ? e.range && e.range.startLineNumber !== e.range.endLineNumber ? i = {
                scrollTop: i.scrollTop,
                scrollLeft: 0
            } : e.range ? this._horizontalRevealRequest = new Vr(e.range.startLineNumber, e.range.startColumn, e.range.endColumn, this._context.viewLayout.getCurrentScrollTop(), i.scrollTop, e.scrollType) : e.selections && 0 < e.selections.length && (this._horizontalRevealRequest = new Wr(e.selections, this._context.viewLayout.getCurrentScrollTop(), i.scrollTop, e.scrollType)) : this._horizontalRevealRequest = null, e = Math.abs(this._context.viewLayout.getCurrentScrollTop() - i.scrollTop) <= this._lineHeight ? 1 : e.scrollType, this._context.model.setScrollPosition(i, e), !0
        }
        onScrollChanged(e) {
            var t, i;
            return this._horizontalRevealRequest && e.scrollLeftChanged && (this._horizontalRevealRequest = null), this._horizontalRevealRequest && e.scrollTopChanged && (t = Math.min(this._horizontalRevealRequest.startScrollTop, this._horizontalRevealRequest.stopScrollTop), i = Math.max(this._horizontalRevealRequest.startScrollTop, this._horizontalRevealRequest.stopScrollTop), (e.scrollTop < t || e.scrollTop > i) && (this._horizontalRevealRequest = null)), this.domNode.setWidth(e.scrollWidth), this._visibleLines.onScrollChanged(e) || !0
        }
        onTokensChanged(e) {
            return this._visibleLines.onTokensChanged(e)
        }
        onZonesChanged(e) {
            return this._context.model.setMaxLineWidth(this._maxLineWidth), this._visibleLines.onZonesChanged(e)
        }
        onThemeChanged(e) {
            return this._onOptionsMaybeChanged()
        }
        getPositionFromDOMInfo(e, t) {
            if (null === (r = this._getViewLineDomNode(e))) return null;
            var i = this._getLineNumberFor(r);
            if (-1 === i) return null;
            if (i < 1 || i > this._context.model.getLineCount()) return null;
            if (1 === this._context.model.getLineMaxColumn(i)) return new Re.a(i, 1);
            var n = this._visibleLines.getStartLineNumber(),
                r = this._visibleLines.getEndLineNumber();
            if (i < n || r < i) return null;
            let o = this._visibleLines.getVisibleLine(i).getColumnOfNodeOffset(i, e, t);
            return o < (t = this._context.model.getLineMinColumn(i)) && (o = t), new Re.a(i, o)
        }
        _getViewLineDomNode(e) {
            for (; e && 1 === e.nodeType;) {
                if (e.className === bn.CLASS_NAME) return e;
                e = e.parentElement
            }
            return null
        }
        _getLineNumberFor(e) {
            var t = this._visibleLines.getStartLineNumber(),
                i = this._visibleLines.getEndLineNumber();
            for (let n = t; n <= i; n++) {
                if (e === this._visibleLines.getVisibleLine(n).getDomNode()) return n
            }
            return -1
        }
        getLineWidth(e) {
            var t = this._visibleLines.getStartLineNumber(),
                i = this._visibleLines.getEndLineNumber();
            return e < t || i < e ? -1 : this._visibleLines.getVisibleLine(e).getWidth()
        }
        linesVisibleRangesForRange(e, t) {
            if (this.shouldRender()) return null;
            var i = e.endLineNumber,
                n = T.a.intersectRanges(e, this._lastRenderedData.getCurrentVisibleRange());
            if (!n) return null;
            let r = [],
                o = 0;
            var s = new mn(this.domNode.domNode, this._textRangeRestingSpot);
            let a = 0;
            t && (a = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Re.a(n.startLineNumber, 1)).lineNumber);
            var l = this._visibleLines.getStartLineNumber(),
                d = this._visibleLines.getEndLineNumber();
            for (let e = n.startLineNumber; e <= n.endLineNumber; e++)
                if (!(e < l || e > d)) {
                    var c = e === n.startLineNumber ? n.startColumn : 1,
                        h = e === n.endLineNumber ? n.endColumn : this._context.model.getLineMaxColumn(e);
                    const l = this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(e, c, h, s);
                    l && (t && e < i && (h = a, a = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Re.a(e + 1, 1)).lineNumber, h !== a && (l.ranges[l.ranges.length - 1].width += this._typicalHalfwidthCharacterWidth)), r[o++] = new an(l.outsideRenderedLine, e, ln.from(l.ranges)))
                } return 0 === o ? null : r
        }
        _visibleRangesForLineRange(e, t, i) {
            return this.shouldRender() || e < this._visibleLines.getStartLineNumber() || e > this._visibleLines.getEndLineNumber() ? null : this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(e, t, i, new mn(this.domNode.domNode, this._textRangeRestingSpot))
        }
        visibleRangeForPosition(e) {
            return (e = this._visibleRangesForLineRange(e.lineNumber, e.column, e.column)) ? new cn(e.outsideRenderedLine, e.ranges[0].left) : null
        }
        updateLineWidths() {
            this._updateLineWidths(!1)
        }
        _updateLineWidthsFast() {
            return this._updateLineWidths(!0)
        }
        _updateLineWidthsSlow() {
            this._updateLineWidths(!1)
        }
        _updateLineWidths(e) {
            var t = this._visibleLines.getStartLineNumber(),
                i = this._visibleLines.getEndLineNumber();
            let n = 1,
                r = !0;
            for (let o = t; o <= i; o++) {
                const t = this._visibleLines.getVisibleLine(o);
                !e || t.getWidthIsFast() ? n = Math.max(n, t.getWidth()) : r = !1
            }
            return r && 1 === t && i === this._context.model.getLineCount() && (this._maxLineWidth = 0), this._ensureMaxLineWidth(n), r
        }
        _checkMonospaceFontAssumptions() {
            let e = -1,
                t = -1;
            var i, n = this._visibleLines.getStartLineNumber(),
                r = this._visibleLines.getEndLineNumber();
            for (let o = n; o <= r; o++) {
                const n = this._visibleLines.getVisibleLine(o);
                !n.needsMonospaceFontCheck() || (i = n.getWidth()) > t && (t = i, e = o)
            }
            if (-1 !== e && !this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())
                for (let e = n; e <= r; e++) {
                    this._visibleLines.getVisibleLine(e).onMonospaceAssumptionsInvalidated()
                }
        }
        prepareRender() {
            throw new Error("Not supported")
        }
        render() {
            throw new Error("Not supported")
        }
        renderText(e) {
            var t;
            if (this._visibleLines.renderLines(e), this._lastRenderedData.setCurrentVisibleRange(e.visibleRange), this.domNode.setWidth(this._context.viewLayout.getScrollWidth()), this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(), 1e6)), this._horizontalRevealRequest && (i = this._horizontalRevealRequest, e.startLineNumber <= i.minLineNumber && i.maxLineNumber <= e.endLineNumber && (this._horizontalRevealRequest = null, this.onDidRender(), (t = this._computeScrollLeftToReveal(i)) && (this._isViewportWrapping || this._ensureMaxLineWidth(t.maxHorizontalOffset), this._context.model.setScrollPosition({
                    scrollLeft: t.scrollLeft
                }, i.scrollType)))), this._updateLineWidthsFast() || this._asyncUpdateLineWidths.schedule(), A.d && !this._asyncCheckMonospaceFontAssumptions.isScheduled()) {
                var i = this._visibleLines.getStartLineNumber(),
                    n = this._visibleLines.getEndLineNumber();
                for (let e = i; e <= n; e++) {
                    if (this._visibleLines.getVisibleLine(e).needsMonospaceFontCheck()) {
                        this._asyncCheckMonospaceFontAssumptions.schedule();
                        break
                    }
                }
            }
            this._linesContent.setLayerHinting(this._canUseLayerHinting), this._linesContent.setContain("strict"), e = this._context.viewLayout.getCurrentScrollTop() - e.bigNumbersDelta, this._linesContent.setTop(-e), this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())
        }
        _ensureMaxLineWidth(e) {
            e = Math.ceil(e), this._maxLineWidth < e && (this._maxLineWidth = e, this._context.model.setMaxLineWidth(this._maxLineWidth))
        }
        _computeScrollTopToRevealRange(e, t, i, n, r) {
            var o, s, a = e.top,
                l = e.height;
            e = a + l;
            let d, c, h, u;
            if (n && 0 < n.length) {
                let e = n[0].startLineNumber,
                    t = n[0].endLineNumber;
                for (let i = 1, r = n.length; i < r; i++) {
                    var p = n[i];
                    e = Math.min(e, p.startLineNumber), t = Math.max(t, p.endLineNumber)
                }
                d = !1, c = this._context.viewLayout.getVerticalOffsetForLineNumber(e), h = this._context.viewLayout.getVerticalOffsetForLineNumber(t) + this._lineHeight
            } else {
                if (!i) return -1;
                d = !0, c = this._context.viewLayout.getVerticalOffsetForLineNumber(i.startLineNumber), h = this._context.viewLayout.getVerticalOffsetForLineNumber(i.endLineNumber) + this._lineHeight
            }
            if ("mouse" === t && "default" === this._cursorSurroundingLinesStyle || (c -= (o = Math.min(l / this._lineHeight / 2, this._cursorSurroundingLines)) * this._lineHeight, h += Math.max(0, o - 1) * this._lineHeight), 0 !== r && 4 !== r || (h += this._lineHeight), h - c > l) {
                if (!d) return -1;
                u = c
            } else u = 5 === r || 6 === r ? 6 === r && a <= c && h <= e ? a : (s = c - (o = Math.max(5 * this._lineHeight, .2 * l)), o = h - l, Math.max(o, s)) : 1 === r || 2 === r ? 2 === r && a <= c && h <= e ? a : (s = (c + h) / 2, Math.max(0, s - l / 2)) : this._computeMinimumScrolling(a, e, c, h, 3 === r, 4 === r);
            return u
        }
        _computeScrollLeftToReveal(e) {
            var t = this._context.viewLayout.getCurrentViewport(),
                i = t.left,
                n = i + t.width;
            let r = 1073741824,
                o = 0;
            if ("range" === e.type) {
                var s = this._visibleRangesForLineRange(e.lineNumber, e.startColumn, e.endColumn);
                if (!s) return null;
                for (const e of s.ranges) r = Math.min(r, Math.round(e.left)), o = Math.max(o, Math.round(e.left + e.width))
            } else
                for (const t of e.selections) {
                    if (t.startLineNumber !== t.endLineNumber) return null;
                    var a = this._visibleRangesForLineRange(t.startLineNumber, t.startColumn, t.endColumn);
                    if (!a) return null;
                    for (const e of a.ranges) r = Math.min(r, Math.round(e.left)), o = Math.max(o, Math.round(e.left + e.width))
                }
            return r = Math.max(0, r - zr.HORIZONTAL_EXTRA_PX), o += this._revealHorizontalRightPadding, "selections" === e.type && o - r > t.width ? null : {
                scrollLeft: this._computeMinimumScrolling(i, n, r, o),
                maxHorizontalOffset: o
            }
        }
        _computeMinimumScrolling(e, t, i, n, r, o) {
            r = !!r, o = !!o;
            var s = (t |= 0) - (e |= 0);
            return (n |= 0) - (i |= 0) < s && !r ? o ? Math.max(0, n - s) : i < e ? i : t < n ? Math.max(0, n - s) : e : i
        }
    }
    zr.HORIZONTAL_EXTRA_PX = 30, i(406);
    class Hr extends Pr {
        constructor(e) {
            super(), this._context = e;
            e = this._context.configuration.options.get(129), this._decorationsLeft = e.decorationsLeft, this._decorationsWidth = e.decorationsWidth, this._renderResult = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            var t = this._context.configuration.options.get(129);
            return this._decorationsLeft = t.decorationsLeft, this._decorationsWidth = t.decorationsWidth, !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        _getDecorations(e) {
            var t = e.getDecorationsInViewport();
            let i = [],
                n = 0;
            for (let e = 0, s = t.length; e < s; e++) {
                var r = t[e],
                    o = r.options.linesDecorationsClassName;
                o && (i[n++] = new Mr(r.range.startLineNumber, r.range.endLineNumber, o)), (o = r.options.firstLineDecorationClassName) && (i[n++] = new Mr(r.range.startLineNumber, r.range.startLineNumber, o))
            }
            return i
        }
        prepareRender(e) {
            var t = e.visibleRange.startLineNumber,
                i = e.visibleRange.endLineNumber,
                n = this._render(t, i, this._getDecorations(e)),
                r = '" style="left:' + this._decorationsLeft.toString() + "px;width:" + this._decorationsWidth.toString() + 'px;"></div>';
            const o = [];
            for (let e = t; e <= i; e++) {
                var s = e - t,
                    a = n[s];
                let i = "";
                for (let e = 0, t = a.length; e < t; e++) i += '<div class="cldr ' + a[e] + r;
                o[s] = i
            }
            this._renderResult = o
        }
        render(e, t) {
            return this._renderResult ? this._renderResult[t - e] : ""
        }
    }
    i(408);
    class Ur extends Pr {
        constructor(e) {
            super(), this._context = e, this._renderResult = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            return !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        _getDecorations(e) {
            var t = e.getDecorationsInViewport();
            let i = [],
                n = 0;
            for (let e = 0, s = t.length; e < s; e++) {
                var r = t[e],
                    o = r.options.marginClassName;
                o && (i[n++] = new Mr(r.range.startLineNumber, r.range.endLineNumber, o))
            }
            return i
        }
        prepareRender(e) {
            var t = e.visibleRange.startLineNumber,
                i = e.visibleRange.endLineNumber,
                n = this._render(t, i, this._getDecorations(e));
            const r = [];
            for (let e = t; e <= i; e++) {
                var o = e - t,
                    s = n[o];
                let i = "";
                for (let e = 0, t = s.length; e < t; e++) i += '<div class="cmdr ' + s[e] + '" style=""></div>';
                r[o] = i
            }
            this._renderResult = r
        }
        render(e, t) {
            return this._renderResult ? this._renderResult[t - e] : ""
        }
    }
    i(410);
    class Kr {
        constructor(e, t, i, n) {
            this._rgba8Brand = void 0, this.r = Kr._clamp(e), this.g = Kr._clamp(t), this.b = Kr._clamp(i), this.a = Kr._clamp(n)
        }
        equals(e) {
            return this.r === e.r && this.g === e.g && this.b === e.b && this.a === e.a
        }
        static _clamp(e) {
            return e < 0 ? 0 : 255 < e ? 255 : 0 | e
        }
    }
    Kr.Empty = new Kr(0, 0, 0, 0);
    class $r extends v.a {
        constructor() {
            super(), this._onDidChange = new D.b, this.onDidChange = this._onDidChange.event, this._updateColorMap(), this._register(z.A.onDidChange(e => {
                e.changedColorMap && this._updateColorMap()
            }))
        }
        static getInstance() {
            return this._INSTANCE || (this._INSTANCE = Object(v.h)(new $r)), this._INSTANCE
        }
        _updateColorMap() {
            const e = z.A.getColorMap();
            if (!e) return this._colors = [Kr.Empty], void(this._backgroundIsLight = !0);
            this._colors = [Kr.Empty];
            for (let i = 1; i < e.length; i++) {
                var t = e[i].rgba;
                this._colors[i] = new Kr(t.r, t.g, t.b, Math.round(255 * t.a))
            }
            var i = e[2].getRelativeLuminance();
            this._backgroundIsLight = .5 <= i, this._onDidChange.fire(void 0)
        }
        getColor(e) {
            return (e < 1 || e >= this._colors.length) && (e = 2), this._colors[e]
        }
        backgroundIsLight() {
            return this._backgroundIsLight
        }
    }
    $r._INSTANCE = null;
    const qr = (() => {
        const e = [];
        for (let t = 32; t <= 126; t++) e.push(t);
        return e.push(65533), e
    })();
    var Gr = i(75);
    class Yr {
        constructor(e, t) {
            this.scale = t, this._minimapCharRendererBrand = void 0, this.charDataNormal = Yr.soften(e, .8), this.charDataLight = Yr.soften(e, 50 / 60)
        }
        static soften(e, t) {
            let i = new Uint8ClampedArray(e.length);
            for (let n = 0, r = e.length; n < r; n++) i[n] = Object(Gr.b)(e[n] * t);
            return i
        }
        renderChar(e, t, i, n, r, o, s, a, l, d, c) {
            var h = +this.scale,
                u = 2 * this.scale,
                p = c ? 1 : u;
            if (t + h > e.width || i + p > e.height) console.warn("bad render request outside image data");
            else {
                var g = d ? this.charDataLight : this.charDataNormal,
                    f = (n = (n = n, l = l, (n -= 32) < 0 || 96 < n ? l <= 2 ? (n + 96) % 96 : 95 : n), 4 * e.width),
                    m = s.r,
                    v = s.g,
                    b = s.b,
                    _ = r.r - m,
                    w = r.g - v,
                    y = r.b - b,
                    C = Math.max(o, a);
                const c = e.data;
                let S = n * h * u,
                    k = i * f + 4 * t;
                for (let e = 0; e < p; e++) {
                    let e = k;
                    for (let t = 0; t < h; t++) {
                        var x = g[S++] / 255 * (o / 255);
                        c[e++] = m + _ * x, c[e++] = v + w * x, c[e++] = b + y * x, c[e++] = C
                    }
                    k += f
                }
            }
        }
        blockRenderChar(e, t, i, n, r, o, s, a) {
            var l = +this.scale,
                d = 2 * this.scale,
                c = a ? 1 : d;
            if (t + l > e.width || i + c > e.height) console.warn("bad render request outside image data");
            else {
                var h = 4 * e.width,
                    u = r / 255 * .5,
                    p = (a = o.r, d = o.g, o = o.b, a + (n.r - a) * u),
                    g = d + (n.g - d) * u,
                    f = o + (n.b - o) * u,
                    m = Math.max(r, s);
                const v = e.data;
                let b = i * h + 4 * t;
                for (let e = 0; e < c; e++) {
                    let e = b;
                    for (let t = 0; t < l; t++) v[e++] = p, v[e++] = g, v[e++] = f, v[e++] = m;
                    b += h
                }
            }
        }
    }
    var Zr = i(104);
    const Xr = {
            0: 0,
            1: 1,
            2: 2,
            3: 3,
            4: 4,
            5: 5,
            6: 6,
            7: 7,
            8: 8,
            9: 9,
            A: 10,
            B: 11,
            C: 12,
            D: 13,
            E: 14,
            F: 15
        },
        Qr = e => {
            const t = new Uint8ClampedArray(e.length / 2);
            for (let i = 0; i < e.length; i += 2) t[i >> 1] = Xr[e[i]] << 4 | 15 & Xr[e[i + 1]];
            return t
        },
        Jr = {
            1: Object(Zr.a)(() => Qr("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")),
            2: Object(Zr.a)(() => Qr("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126"))
        };
    class eo {
        static create(e, t) {
            if (this.lastCreated && e === this.lastCreated.scale && t === this.lastFontFamily) return this.lastCreated;
            let i;
            return i = Jr[e] ? new Yr(Jr[e](), e) : eo.createFromSampleData(eo.createSampleData(t).data, e), this.lastFontFamily = t, this.lastCreated = i, i
        }
        static createSampleData(e) {
            const t = document.createElement("canvas"),
                i = t.getContext("2d");
            t.style.height = "16px", t.height = 16, t.width = 960, t.style.width = "960px", i.fillStyle = "#ffffff", i.font = "bold 16px " + e, i.textBaseline = "middle";
            let n = 0;
            for (const e of qr) i.fillText(String.fromCharCode(e), n, 8), n += 10;
            return i.getImageData(0, 0, 960, 16)
        }
        static createFromSampleData(e, t) {
            if (61440 !== e.length) throw new Error("Unexpected source in MinimapCharRenderer");
            return e = eo._downsample(e, t), new Yr(e, t)
        }
        static _downsampleChar(e, t, i, n, r) {
            var o = +r,
                s = 2 * r;
            let a = n,
                l = 0;
            for (let n = 0; n < s; n++) {
                var d = n / s * 16,
                    c = (n + 1) / s * 16;
                for (let n = 0; n < o; n++) {
                    var h = n / o * 10,
                        u = (n + 1) / o * 10;
                    let r = 0,
                        s = 0;
                    for (let i = d; i < c; i++) {
                        var p = t + 3840 * Math.floor(i),
                            g = 1 - (i - Math.floor(i));
                        for (let t = h; t < u; t++) {
                            var f = 1 - (t - Math.floor(t)),
                                m = p + 4 * Math.floor(t);
                            s += f = f * g, r += e[m] * e[m + 3] / 255 * f
                        }
                    }
                    var v = r / s;
                    l = Math.max(l, v), i[a++] = Object(Gr.b)(v)
                }
            }
            return l
        }
        static _downsample(e, t) {
            var i = 2 * t * 1 * t,
                n = 96 * i;
            const r = new Uint8ClampedArray(n);
            let o = 0,
                s = 0,
                a = 0;
            for (let n = 0; n < 96; n++) a = Math.max(a, this._downsampleChar(e, s, r, o, t)), o += i, s += 40;
            if (0 < a) {
                var l = 255 / a;
                for (let e = 0; e < n; e++) r[e] *= l
            }
            return r
        }
    }
    class to {
        constructor(e, t, i) {
            const n = e.options;
            var r = n.get(127),
                o = n.get(129),
                s = o.minimap;
            const a = n.get(43);
            e = n.get(64), this.renderMinimap = s.renderMinimap, this.size = e.size, this.minimapHeightIsEditorHeight = s.minimapHeightIsEditorHeight, this.scrollBeyondLastLine = n.get(93), this.showSlider = e.showSlider, this.pixelRatio = r, this.typicalHalfwidthCharacterWidth = a.typicalHalfwidthCharacterWidth, this.lineHeight = n.get(58), this.minimapLeft = s.minimapLeft, this.minimapWidth = s.minimapWidth, this.minimapHeight = o.height, this.canvasInnerWidth = s.minimapCanvasInnerWidth, this.canvasInnerHeight = s.minimapCanvasInnerHeight, this.canvasOuterWidth = s.minimapCanvasOuterWidth, this.canvasOuterHeight = s.minimapCanvasOuterHeight, this.isSampling = s.minimapIsSampling, this.editorHeight = o.height, this.fontScale = s.minimapScale, this.minimapLineHeight = s.minimapLineHeight, this.minimapCharWidth = +this.fontScale, this.charRenderer = Object(Zr.a)(() => eo.create(this.fontScale, a.fontFamily)), this.defaultBackgroundColor = i.getColor(2), this.backgroundColor = to._getMinimapBackground(t, this.defaultBackgroundColor), this.foregroundAlpha = to._getMinimapForegroundOpacity(t)
        }
        static _getMinimapBackground(e, t) {
            return (e = e.getColor(Ir.Kb)) ? new Kr(e.rgba.r, e.rgba.g, e.rgba.b, Math.round(255 * e.rgba.a)) : t
        }
        static _getMinimapForegroundOpacity(e) {
            return (e = e.getColor(Ir.Nb)) ? Kr._clamp(Math.round(255 * e.rgba.a)) : 255
        }
        equals(e) {
            return this.renderMinimap === e.renderMinimap && this.size === e.size && this.minimapHeightIsEditorHeight === e.minimapHeightIsEditorHeight && this.scrollBeyondLastLine === e.scrollBeyondLastLine && this.showSlider === e.showSlider && this.pixelRatio === e.pixelRatio && this.typicalHalfwidthCharacterWidth === e.typicalHalfwidthCharacterWidth && this.lineHeight === e.lineHeight && this.minimapLeft === e.minimapLeft && this.minimapWidth === e.minimapWidth && this.minimapHeight === e.minimapHeight && this.canvasInnerWidth === e.canvasInnerWidth && this.canvasInnerHeight === e.canvasInnerHeight && this.canvasOuterWidth === e.canvasOuterWidth && this.canvasOuterHeight === e.canvasOuterHeight && this.isSampling === e.isSampling && this.editorHeight === e.editorHeight && this.fontScale === e.fontScale && this.minimapLineHeight === e.minimapLineHeight && this.minimapCharWidth === e.minimapCharWidth && this.defaultBackgroundColor && this.defaultBackgroundColor.equals(e.defaultBackgroundColor) && this.backgroundColor && this.backgroundColor.equals(e.backgroundColor) && this.foregroundAlpha === e.foregroundAlpha
        }
    }
    class io {
        constructor(e, t, i, n, r, o, s, a) {
            this.scrollTop = e, this.scrollHeight = t, this.sliderNeeded = i, this._computedSliderRatio = n, this.sliderTop = r, this.sliderHeight = o, this.startLineNumber = s, this.endLineNumber = a
        }
        getDesiredScrollTopFromDelta(e) {
            return Math.round(this.scrollTop + e / this._computedSliderRatio)
        }
        getDesiredScrollTopFromTouchLocation(e) {
            return Math.round((e - this.sliderHeight / 2) / this._computedSliderRatio)
        }
        static create(e, t, i, n, r, o, s, a, l, d, c) {
            var h = e.pixelRatio,
                u = e.minimapLineHeight,
                p = Math.floor(e.canvasInnerHeight / u),
                g = e.lineHeight;
            if (e.minimapHeightIsEditorHeight) {
                var f = a * e.lineHeight + (e.scrollBeyondLastLine ? r - e.lineHeight : 0);
                const t = Math.max(1, Math.floor(r * r / f)),
                    i = Math.max(0, e.minimapHeight - t),
                    n = i / (d - r),
                    o = l * n;
                return a = 0 < i, f = Math.floor(e.canvasInnerHeight / e.minimapLineHeight), new io(l, d, a, n, o, t, 1, Math.min(s, f))
            }
            let m, v;
            m = o && i !== s ? Math.floor((i - t + 1) * u / h) : Math.floor(r / g * u / h), v = e.scrollBeyondLastLine ? (s - 1) * u / h : Math.max(0, s * u / h - m), v = Math.min(e.minimapHeight - m, v);
            const b = v / (d - r),
                _ = l * b;
            let w = 0;
            if (e.scrollBeyondLastLine && (w = r / g - 1), p >= s + w) return new io(l, d, r = 0 < v, b, _, m, 1, e = s); {
                let e = Math.max(1, Math.floor(t - _ * h / u));
                return c && c.scrollHeight === d && (c.scrollTop > l && (e = Math.min(e, c.startLineNumber)), c.scrollTop < l && (e = Math.max(e, c.startLineNumber))), p = Math.min(s, e + p - 1), new io(l, d, !0, b, h = (t - e + (l - n) / g) * u / h, m, e, p)
            }
        }
    }
    class no {
        constructor(e) {
            this.dy = e
        }
        onContentChanged() {
            this.dy = -1
        }
        onTokensChanged() {
            this.dy = -1
        }
    }
    no.INVALID = new no(-1);
    class ro {
        constructor(e, t, i) {
            this.renderedLayout = e, this._imageData = t, this._renderedLines = new gr(() => no.INVALID), this._renderedLines._set(e.startLineNumber, i)
        }
        linesEquals(e) {
            if (!this.scrollEquals(e)) return !1;
            var t = this._renderedLines._get().lines;
            for (let e = 0, i = t.length; e < i; e++)
                if (-1 === t[e].dy) return !1;
            return !0
        }
        scrollEquals(e) {
            return this.renderedLayout.startLineNumber === e.startLineNumber && this.renderedLayout.endLineNumber === e.endLineNumber
        }
        _get() {
            var e = this._renderedLines._get();
            return {
                imageData: this._imageData,
                rendLineNumberStart: e.rendLineNumberStart,
                lines: e.lines
            }
        }
        onLinesChanged(e, t) {
            return this._renderedLines.onLinesChanged(e, t)
        }
        onLinesDeleted(e, t) {
            this._renderedLines.onLinesDeleted(e, t)
        }
        onLinesInserted(e, t) {
            this._renderedLines.onLinesInserted(e, t)
        }
        onTokensChanged(e) {
            return this._renderedLines.onTokensChanged(e)
        }
    }
    class oo {
        constructor(e, t, i, n) {
            this._backgroundFillData = oo._createBackgroundFillData(t, i, n), this._buffers = [e.createImageData(t, i), e.createImageData(t, i)], this._lastUsedBuffer = 0
        }
        getBuffer() {
            this._lastUsedBuffer = 1 - this._lastUsedBuffer;
            const e = this._buffers[this._lastUsedBuffer];
            return e.data.set(this._backgroundFillData), e
        }
        static _createBackgroundFillData(e, t, i) {
            var n = i.r,
                r = i.g,
                o = i.b,
                s = i.a;
            const a = new Uint8ClampedArray(e * t * 4);
            let l = 0;
            for (let i = 0; i < t; i++)
                for (let t = 0; t < e; t++) a[l] = n, a[l + 1] = r, a[l + 2] = o, a[l + 3] = s, l += 4;
            return a
        }
    }
    class so {
        constructor(e, t) {
            this.samplingRatio = e, this.minimapLines = t
        }
        static compute(e, t, i) {
            if (0 === e.renderMinimap || !e.isSampling) return [null, []];
            var r = e.pixelRatio,
                o = e.lineHeight,
                s = e.scrollBeyondLastLine,
                {
                    minimapLineCount: a
                } = n.f.computeContainedMinimapLineCount({
                    viewLineCount: t,
                    scrollBeyondLastLine: s,
                    height: e.editorHeight,
                    lineHeight: o,
                    pixelRatio: r
                }),
                l = t / a,
                d = l / 2;
            if (!i || 0 === i.minimapLines.length) {
                let e = [];
                if ((e[0] = 1) < a) {
                    for (let t = 0, i = a - 1; t < i; t++) e[t] = Math.round(t * l + d);
                    e[a - 1] = t
                }
                return [new so(l, e), []]
            }
            var c = i.minimapLines,
                h = c.length;
            let u = [],
                p = 0,
                g = 0,
                f = 1,
                m = [],
                v = null;
            for (let e = 0; e < a; e++) {
                for (var b, _ = Math.max(f, Math.round(e * l)), w = Math.max(_, Math.round((e + 1) * l)); p < h && c[p] < _;) m.length < 10 && (b = p + 1 + g, v && "deleted" === v.type && v._oldIndex === p - 1 ? v.deleteToLineNumber++ : (v = {
                    type: "deleted",
                    _oldIndex: p,
                    deleteFromLineNumber: b,
                    deleteToLineNumber: b
                }, m.push(v)), g--), p++;
                let i;
                p < h && c[p] <= w ? (i = c[p], p++) : (i = 0 === e ? 1 : e + 1 === a ? t : Math.round(e * l + d), m.length < 10 && (w = p + 1 + g, v && "inserted" === v.type && v._i === e - 1 ? v.insertToLineNumber++ : (v = {
                    type: "inserted",
                    _i: e,
                    insertFromLineNumber: w,
                    insertToLineNumber: w
                }, m.push(v)), g++)), u[e] = i, f = i
            }
            if (m.length < 10)
                for (; p < h;) {
                    var y = p + 1 + g;
                    v && "deleted" === v.type && v._oldIndex === p - 1 ? v.deleteToLineNumber++ : (v = {
                        type: "deleted",
                        _oldIndex: p,
                        deleteFromLineNumber: y,
                        deleteToLineNumber: y
                    }, m.push(v)), g--, p++
                } else m = [{
                    type: "flush"
                }];
            return [new so(l, u), m]
        }
        modelLineToMinimapLine(e) {
            return Math.min(this.minimapLines.length, Math.max(1, Math.round(e / this.samplingRatio)))
        }
        modelLineRangeToMinimapLineRange(e, t) {
            let i = this.modelLineToMinimapLine(e) - 1;
            for (; 0 < i && this.minimapLines[i - 1] >= e;) i--;
            let n = this.modelLineToMinimapLine(t) - 1;
            for (; n + 1 < this.minimapLines.length && this.minimapLines[n + 1] <= t;) n++;
            if (i === n) {
                var r = this.minimapLines[i];
                if (r < e || t < r) return null
            }
            return [i + 1, n + 1]
        }
        decorationLineRangeToMinimapLineRange(e, t) {
            let i = this.modelLineToMinimapLine(e),
                n = this.modelLineToMinimapLine(t);
            return e !== t && n === i && (n === this.minimapLines.length ? 1 < i && i-- : n++), [i, n]
        }
        onLinesDeleted(e) {
            var t = e.toLineNumber - e.fromLineNumber + 1;
            let i = this.minimapLines.length,
                n = 0;
            for (let r = this.minimapLines.length - 1; 0 <= r && !(this.minimapLines[r] < e.fromLineNumber); r--) this.minimapLines[r] <= e.toLineNumber ? (this.minimapLines[r] = Math.max(1, e.fromLineNumber - 1), i = Math.min(i, r), n = Math.max(n, r)) : this.minimapLines[r] -= t;
            return [i, n]
        }
        onLinesInserted(e) {
            var t = e.toLineNumber - e.fromLineNumber + 1;
            for (let i = this.minimapLines.length - 1; 0 <= i && !(this.minimapLines[i] < e.fromLineNumber); i--) this.minimapLines[i] += t
        }
    }
    class ao extends rn {
        constructor(e) {
            super(e), this.tokensColorTracker = $r.getInstance(), this._selections = [], this._minimapSelections = null, this.options = new to(this._context.configuration, this._context.theme, this.tokensColorTracker);
            var [t] = so.compute(this.options, this._context.model.getLineCount(), null);
            this._samplingState = t, this._shouldCheckSampling = !1, this._actual = new lo(e.theme, this)
        }
        dispose() {
            this._actual.dispose(), super.dispose()
        }
        getDomNode() {
            return this._actual.getDomNode()
        }
        _onOptionsMaybeChanged() {
            var e = new to(this._context.configuration, this._context.theme, this.tokensColorTracker);
            return !this.options.equals(e) && (this.options = e, this._recreateLineSampling(), this._actual.onDidChangeOptions(), !0)
        }
        on配置Changed(e) {
            return this._onOptionsMaybeChanged()
        }
        onCursorStateChanged(e) {
            return this._selections = e.selections, this._minimapSelections = null, this._actual.onSelectionChanged()
        }
        onDecorationsChanged(e) {
            return !!e.affectsMinimap && this._actual.onDecorationsChanged()
        }
        onFlushed(e) {
            return this._samplingState && (this._shouldCheckSampling = !0), this._actual.onFlushed()
        }
        onLinesChanged(e) {
            if (this._samplingState) {
                var t = this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber, e.toLineNumber);
                return !!t && this._actual.onLinesChanged(t[0], t[1])
            }
            return this._actual.onLinesChanged(e.fromLineNumber, e.toLineNumber)
        }
        onLinesDeleted(e) {
            if (this._samplingState) {
                var [t, i] = this._samplingState.onLinesDeleted(e);
                return t <= i && this._actual.onLinesChanged(t + 1, i + 1), this._shouldCheckSampling = !0
            }
            return this._actual.onLinesDeleted(e.fromLineNumber, e.toLineNumber)
        }
        onLinesInserted(e) {
            return this._samplingState ? (this._samplingState.onLinesInserted(e), this._shouldCheckSampling = !0) : this._actual.onLinesInserted(e.fromLineNumber, e.toLineNumber)
        }
        onScrollChanged(e) {
            return this._actual.onScrollChanged()
        }
        onThemeChanged(e) {
            return this._context.model.invalidateMinimapColorCache(), this._actual.onThemeChanged(), this._onOptionsMaybeChanged(), !0
        }
        onTokensChanged(e) {
            if (this._samplingState) {
                let i = [];
                for (const n of e.ranges) {
                    var t = this._samplingState.modelLineRangeToMinimapLineRange(n.fromLineNumber, n.toLineNumber);
                    t && i.push({
                        fromLineNumber: t[0],
                        toLineNumber: t[1]
                    })
                }
                return !!i.length && this._actual.onTokensChanged(i)
            }
            return this._actual.onTokensChanged(e.ranges)
        }
        onTokensColorsChanged(e) {
            return this._onOptionsMaybeChanged(), this._actual.onTokensColorsChanged()
        }
        onZonesChanged(e) {
            return this._actual.onZonesChanged()
        }
        prepareRender(e) {
            this._shouldCheckSampling && (this._shouldCheckSampling = !1, this._recreateLineSampling())
        }
        render(e) {
            let t = e.visibleRange.startLineNumber,
                i = e.visibleRange.endLineNumber;
            this._samplingState && (t = this._samplingState.modelLineToMinimapLine(t), i = this._samplingState.modelLineToMinimapLine(i)), e = {
                viewportContainsWhitespaceGaps: 0 < e.viewportData.whitespaceViewportData.length,
                scrollWidth: e.scrollWidth,
                scrollHeight: e.scrollHeight,
                viewportStartLineNumber: t,
                viewportEndLineNumber: i,
                viewportStartLineNumberVerticalOffset: e.getVerticalOffsetForLineNumber(t),
                scrollTop: e.scrollTop,
                scrollLeft: e.scrollLeft,
                viewportWidth: e.viewportWidth,
                viewportHeight: e.viewportHeight
            }, this._actual.render(e)
        }
        _recreateLineSampling() {
            this._minimapSelections = null;
            var e = Boolean(this._samplingState),
                [t, i] = so.compute(this.options, this._context.model.getLineCount(), this._samplingState);
            if (this._samplingState = t, e && this._samplingState)
                for (const e of i) switch (e.type) {
                    case "deleted":
                        this._actual.onLinesDeleted(e.deleteFromLineNumber, e.deleteToLineNumber);
                        break;
                    case "inserted":
                        this._actual.onLinesInserted(e.insertFromLineNumber, e.insertToLineNumber);
                        break;
                    case "flush":
                        this._actual.onFlushed()
                }
        }
        getLineCount() {
            return this._samplingState ? this._samplingState.minimapLines.length : this._context.model.getLineCount()
        }
        getRealLineCount() {
            return this._context.model.getLineCount()
        }
        getLineContent(e) {
            return this._samplingState ? this._context.model.getLineContent(this._samplingState.minimapLines[e - 1]) : this._context.model.getLineContent(e)
        }
        getLineMaxColumn(e) {
            return this._samplingState ? this._context.model.getLineMaxColumn(this._samplingState.minimapLines[e - 1]) : this._context.model.getLineMaxColumn(e)
        }
        getMinimapLinesRenderingData(e, t, i) {
            if (this._samplingState) {
                let n = [];
                for (let r = 0, o = t - e + 1; r < o; r++) i[r] ? n[r] = this._context.model.getViewLineData(this._samplingState.minimapLines[e + r - 1]) : n[r] = null;
                return n
            }
            return this._context.model.getMinimapLinesRenderingData(e, t, i).data
        }
        getSelections() {
            if (null === this._minimapSelections)
                if (this._samplingState) {
                    this._minimapSelections = [];
                    for (const i of this._selections) {
                        var [e, t] = this._samplingState.decorationLineRangeToMinimapLineRange(i.startLineNumber, i.endLineNumber);
                        this._minimapSelections.push(new Hi.a(e, i.startColumn, t, i.endColumn))
                    }
                } else this._minimapSelections = this._selections;
            return this._minimapSelections
        }
        getMinimapDecorationsInViewport(e, t) {
            let i;
            var n, r;
            i = this._samplingState ? (n = this._samplingState.minimapLines[e - 1], r = this._samplingState.minimapLines[t - 1], new T.a(n, 1, r, this._context.model.getLineMaxColumn(r))) : new T.a(e, 1, t, this._context.model.getLineMaxColumn(t));
            var o, s, a;
            t = this._context.model.getDecorationsInViewport(i);
            if (this._samplingState) {
                let e = [];
                for (const i of t) i.options.minimap && (o = i.range, s = this._samplingState.modelLineToMinimapLine(o.startLineNumber), a = this._samplingState.modelLineToMinimapLine(o.endLineNumber), e.push(new Ke(new T.a(s, o.startColumn, a, o.endColumn), i.options)));
                return e
            }
            return t
        }
        getOptions() {
            return this._context.model.getTextModelOptions()
        }
        revealLineNumber(e) {
            this._samplingState && (e = this._samplingState.minimapLines[e - 1]), this._context.model.revealRange("mouse", !1, new T.a(e, 1, e, 1), 1, 0)
        }
        setScrollTop(e) {
            this._context.model.setScrollPosition({
                scrollTop: e
            }, 1)
        }
    }
    class lo extends v.a {
        constructor(e, t) {
            super(), this._renderDecorations = !1, this._gestureInProgress = !1, this._theme = e, this._model = t, this._lastRenderData = null, this._buffers = null, this._selectionColor = this._theme.getColor(Ir.Ob), this._domNode = Object(Ui.b)(document.createElement("div")), on.write(this._domNode, 8), this._domNode.setClassName(this._getMinimapDomNodeClassName()), this._domNode.setPosition("absolute"), this._domNode.setAttribute("role", "presentation"), this._domNode.setAttribute("aria-hidden", "true"), this._shadow = Object(Ui.b)(document.createElement("div")), this._shadow.setClassName("minimap-shadow-hidden"), this._domNode.appendChild(this._shadow), this._canvas = Object(Ui.b)(document.createElement("canvas")), this._canvas.setPosition("absolute"), this._canvas.setLeft(0), this._domNode.appendChild(this._canvas), this._decorationsCanvas = Object(Ui.b)(document.createElement("canvas")), this._decorationsCanvas.setPosition("absolute"), this._decorationsCanvas.setClassName("minimap-decorations-layer"), this._decorationsCanvas.setLeft(0), this._domNode.appendChild(this._decorationsCanvas), this._slider = Object(Ui.b)(document.createElement("div")), this._slider.setPosition("absolute"), this._slider.setClassName("minimap-slider"), this._slider.setLayerHinting(!0), this._slider.setContain("strict"), this._domNode.appendChild(this._slider), this._sliderHorizontal = Object(Ui.b)(document.createElement("div")), this._sliderHorizontal.setPosition("absolute"), this._sliderHorizontal.setClassName("minimap-slider-horizontal"), this._slider.appendChild(this._sliderHorizontal), this._applyLayout(), this._mouseDownListener = s.l(this._domNode.domNode, "mousedown", e => {
                var t, i;
                e.preventDefault(), 0 !== this._model.options.renderMinimap && this._lastRenderData && ("proportional" === this._model.options.size ? (i = this._model.options.minimapLineHeight, t = this._model.options.canvasInnerHeight / this._model.options.canvasOuterHeight * e.browserEvent.offsetY, i = Math.floor(t / i) + this._lastRenderData.renderedLayout.startLineNumber, i = Math.min(i, this._model.getLineCount()), this._model.revealLineNumber(i)) : e.leftButton && this._lastRenderData && (i = (i = s.A(this._slider.domNode)).top + i.height / 2, this._startSliderDragging(e.buttons, e.posx, i, e.posy, this._lastRenderData.renderedLayout)))
            }), this._sliderMouseMoveMonitor = new qi.a, this._sliderMouseDownListener = s.l(this._slider.domNode, "mousedown", e => {
                e.preventDefault(), e.stopPropagation(), e.leftButton && this._lastRenderData && this._startSliderDragging(e.buttons, e.posx, e.posy, e.posy, this._lastRenderData.renderedLayout)
            }), this._gestureDisposable = Ki.b.addTarget(this._domNode.domNode), this._sliderTouchStartListener = s.g(this._domNode.domNode, Ki.a.Start, e => {
                e.preventDefault(), e.stopPropagation(), this._lastRenderData && (this._slider.toggleClassName("active", !0), this._gestureInProgress = !0, this.scrollDueToTouchEvent(e))
            }, {
                passive: !1
            }), this._sliderTouchMoveListener = s.g(this._domNode.domNode, Ki.a.Change, e => {
                e.preventDefault(), e.stopPropagation(), this._lastRenderData && this._gestureInProgress && this.scrollDueToTouchEvent(e)
            }, {
                passive: !1
            }), this._sliderTouchEndListener = s.l(this._domNode.domNode, Ki.a.End, e => {
                e.preventDefault(), e.stopPropagation(), this._gestureInProgress = !1, this._slider.toggleClassName("active", !1)
            })
        }
        _startSliderDragging(e, t, i, n, r) {
            this._slider.toggleClassName("active", !0);
            const o = (e, n) => {
                n = Math.abs(n - t), A.i && 140 < n ? this._model.setScrollTop(r.scrollTop) : this._model.setScrollTop(r.getDesiredScrollTopFromDelta(e - i))
            };
            n !== i && o(n, t), this._sliderMouseMoveMonitor.startMonitoring(this._slider.domNode, e, qi.b, e => o(e.posy, e.posx), () => {
                this._slider.toggleClassName("active", !1)
            })
        }
        scrollDueToTouchEvent(e) {
            var t = this._domNode.domNode.getBoundingClientRect().top;
            t = this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY - t);
            this._model.setScrollTop(t)
        }
        dispose() {
            this._mouseDownListener.dispose(), this._sliderMouseMoveMonitor.dispose(), this._sliderMouseDownListener.dispose(), this._gestureDisposable.dispose(), this._sliderTouchStartListener.dispose(), this._sliderTouchMoveListener.dispose(), this._sliderTouchEndListener.dispose(), super.dispose()
        }
        _getMinimapDomNodeClassName() {
            return "always" === this._model.options.showSlider ? "minimap slider-always" : "minimap slider-mouseover"
        }
        getDomNode() {
            return this._domNode
        }
        _applyLayout() {
            this._domNode.setLeft(this._model.options.minimapLeft), this._domNode.setWidth(this._model.options.minimapWidth), this._domNode.setHeight(this._model.options.minimapHeight), this._shadow.setHeight(this._model.options.minimapHeight), this._canvas.setWidth(this._model.options.canvasOuterWidth), this._canvas.setHeight(this._model.options.canvasOuterHeight), this._canvas.domNode.width = this._model.options.canvasInnerWidth, this._canvas.domNode.height = this._model.options.canvasInnerHeight, this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth), this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight), this._decorationsCanvas.domNode.width = this._model.options.canvasInnerWidth, this._decorationsCanvas.domNode.height = this._model.options.canvasInnerHeight, this._slider.setWidth(this._model.options.minimapWidth)
        }
        _getBuffer() {
            return this._buffers || 0 < this._model.options.canvasInnerWidth && 0 < this._model.options.canvasInnerHeight && (this._buffers = new oo(this._canvas.domNode.getContext("2d"), this._model.options.canvasInnerWidth, this._model.options.canvasInnerHeight, this._model.options.backgroundColor)), this._buffers ? this._buffers.getBuffer() : null
        }
        onDidChangeOptions() {
            this._lastRenderData = null, this._buffers = null, this._applyLayout(), this._domNode.setClassName(this._getMinimapDomNodeClassName())
        }
        onSelectionChanged() {
            return this._renderDecorations = !0
        }
        onDecorationsChanged() {
            return this._renderDecorations = !0
        }
        onFlushed() {
            return !(this._lastRenderData = null)
        }
        onLinesChanged(e, t) {
            return !!this._lastRenderData && this._lastRenderData.onLinesChanged(e, t)
        }
        onLinesDeleted(e, t) {
            return this._lastRenderData && this._lastRenderData.onLinesDeleted(e, t), !0
        }
        onLinesInserted(e, t) {
            return this._lastRenderData && this._lastRenderData.onLinesInserted(e, t), !0
        }
        onScrollChanged() {
            return this._renderDecorations = !0
        }
        onThemeChanged() {
            return this._selectionColor = this._theme.getColor(Ir.Ob), this._renderDecorations = !0
        }
        onTokensChanged(e) {
            return !!this._lastRenderData && this._lastRenderData.onTokensChanged(e)
        }
        onTokensColorsChanged() {
            return this._lastRenderData = null, !(this._buffers = null)
        }
        onZonesChanged() {
            return !(this._lastRenderData = null)
        }
        render(e) {
            if (0 === this._model.options.renderMinimap) return this._shadow.setClassName("minimap-shadow-hidden"), this._sliderHorizontal.setWidth(0), void this._sliderHorizontal.setHeight(0);
            e.scrollLeft + e.viewportWidth >= e.scrollWidth ? this._shadow.setClassName("minimap-shadow-hidden") : this._shadow.setClassName("minimap-shadow-visible"), e = io.create(this._model.options, e.viewportStartLineNumber, e.viewportEndLineNumber, e.viewportStartLineNumberVerticalOffset, e.viewportHeight, e.viewportContainsWhitespaceGaps, this._model.getLineCount(), this._model.getRealLineCount(), e.scrollTop, e.scrollHeight, this._lastRenderData ? this._lastRenderData.renderedLayout : null), this._slider.setDisplay(e.sliderNeeded ? "block" : "none"), this._slider.setTop(e.sliderTop), this._slider.setHeight(e.sliderHeight), this._sliderHorizontal.setLeft(0), this._sliderHorizontal.setWidth(this._model.options.minimapWidth), this._sliderHorizontal.setTop(0), this._sliderHorizontal.setHeight(e.sliderHeight), this.renderDecorations(e), this._lastRenderData = this.renderLines(e)
        }
        renderDecorations(e) {
            if (this._renderDecorations) {
                this._renderDecorations = !1;
                const s = this._model.getSelections();
                s.sort(T.a.compareRangesUsingStarts);
                const a = this._model.getMinimapDecorationsInViewport(e.startLineNumber, e.endLineNumber);
                a.sort((e, t) => (e.options.zIndex || 0) - (t.options.zIndex || 0));
                var {
                    canvasInnerWidth: t,
                    canvasInnerHeight: i
                } = this._model.options, n = this._model.options.minimapLineHeight, r = this._model.options.minimapCharWidth, o = this._model.getOptions().tabSize;
                const l = this._decorationsCanvas.domNode.getContext("2d");
                l.clearRect(0, 0, t, i), i = new co(e.startLineNumber, e.endLineNumber, !1), this._renderSelectionLineHighlights(l, s, i, e, n), this._renderDecorationsLineHighlights(l, a, i, e, n), i = new co(e.startLineNumber, e.endLineNumber, null), this._renderSelectionsHighlights(l, s, i, e, n, o, r, t), this._renderDecorationsHighlights(l, a, i, e, n, o, r, t)
            }
        }
        _renderSelectionLineHighlights(e, t, i, r, o) {
            if (this._selectionColor && !this._selectionColor.isTransparent()) {
                e.fillStyle = this._selectionColor.transparent(.5).toString();
                let d = 0,
                    c = 0;
                for (const h of t) {
                    var s = Math.max(r.startLineNumber, h.startLineNumber),
                        a = Math.min(r.endLineNumber, h.endLineNumber);
                    if (!(a < s)) {
                        for (let e = s; e <= a; e++) i.set(e, !0);
                        var l = (s - r.startLineNumber) * o;
                        s = (a - r.startLineNumber) * o + o;
                        c >= l || (c > d && e.fillRect(n.h, d, e.canvas.width, c - d), d = l), c = s
                    }
                }
                c > d && e.fillRect(n.h, d, e.canvas.width, c - d)
            }
        }
        _renderDecorationsLineHighlights(e, t, i, r, o) {
            const s = new Map;
            for (let h = t.length - 1; 0 <= h; h--) {
                var a = t[h];
                const u = a.options.minimap;
                if (u && u.position === W.f.Inline) {
                    var l, d = Math.max(r.startLineNumber, a.range.startLineNumber),
                        c = Math.min(r.endLineNumber, a.range.endLineNumber);
                    if (!(c < d)) {
                        const t = u.getColor(this._theme);
                        if (t && !t.isTransparent()) {
                            let a = s.get(t.toString());
                            a || (a = t.transparent(.5).toString(), s.set(t.toString(), a)), e.fillStyle = a;
                            for (let t = d; t <= c; t++) i.has(t) || (i.set(t, !0), l = (d - r.startLineNumber) * o, e.fillRect(n.h, l, e.canvas.width, o))
                        }
                    }
                }
            }
        }
        _renderSelectionsHighlights(e, t, i, n, r, o, s, a) {
            if (this._selectionColor && !this._selectionColor.isTransparent())
                for (const c of t) {
                    var l = Math.max(n.startLineNumber, c.startLineNumber),
                        d = Math.min(n.endLineNumber, c.endLineNumber);
                    if (!(d < l))
                        for (let t = l; t <= d; t++) this.renderDecorationOnLine(e, i, c, this._selectionColor, n, t, r, r, o, s, a)
                }
        }
        _renderDecorationsHighlights(e, t, i, n, r, o, s, a) {
            for (const h of t) {
                const t = h.options.minimap;
                if (t) {
                    var l = Math.max(n.startLineNumber, h.range.startLineNumber),
                        d = Math.min(n.endLineNumber, h.range.endLineNumber);
                    if (!(d < l)) {
                        const u = t.getColor(this._theme);
                        if (u && !u.isTransparent())
                            for (let p = l; p <= d; p++) switch (t.position) {
                                case W.f.Inline:
                                    this.renderDecorationOnLine(e, i, h.range, u, n, p, r, r, o, s, a);
                                    continue;
                                case W.f.Gutter:
                                    var c = (p - n.startLineNumber) * r;
                                    this.renderDecoration(e, u, 2, c, 2, r);
                                    continue
                            }
                    }
                }
            }
        }
        renderDecorationOnLine(e, t, i, n, r, o, s, a, l, d, c) {
            var h = (o - r.startLineNumber) * a;
            h + s < 0 || h > this._model.options.canvasInnerHeight || (({
                startLineNumber: r,
                endLineNumber: a
            } = i), r = r === o ? i.startColumn : 1, i = a === o ? i.endColumn : this._model.getLineMaxColumn(o), r = this.getXOffsetForPosition(t, o, r, l, d, c), c = this.getXOffsetForPosition(t, o, i, l, d, c), this.renderDecoration(e, n, r, h, c - r, s))
        }
        getXOffsetForPosition(e, t, i, r, o, s) {
            if (1 === i) return n.h;
            if (s <= (i - 1) * o) return s;
            let a = e.get(t);
            if (!a) {
                const i = this._model.getLineContent(t);
                a = [n.h];
                let d = n.h;
                for (let e = 1; e < i.length + 1; e++) {
                    var l;
                    if (s <= (l = d + (l = 9 === (l = i.charCodeAt(e - 1)) ? r * o : b.D(l) ? 2 * o : o))) {
                        a[e] = s;
                        break
                    }
                    a[e] = l, d = l
                }
                e.set(t, a)
            }
            return i - 1 < a.length ? a[i - 1] : s
        }
        renderDecoration(e, t, i, n, r, o) {
            e.fillStyle = t && t.toString() || "", e.fillRect(i, n, r, o)
        }
        renderLines(e) {
            var t = e.startLineNumber,
                i = e.endLineNumber,
                n = this._model.options.minimapLineHeight;
            if (this._lastRenderData && this._lastRenderData.linesEquals(e)) {
                var r = this._lastRenderData._get();
                return new ro(e, r.imageData, r.lines)
            }
            var o = this._getBuffer();
            if (!o) return null;
            var [s, a, l] = lo._renderUntouchedLines(o, t, i, n, this._lastRenderData), d = this._model.getMinimapLinesRenderingData(t, i, l), c = this._model.getOptions().tabSize, h = this._model.options.defaultBackgroundColor, u = this._model.options.backgroundColor, p = this._model.options.foregroundAlpha;
            const g = this._model.tokensColorTracker;
            var f = g.backgroundIsLight(),
                m = this._model.options.renderMinimap,
                v = this._model.options.charRenderer(),
                b = this._model.options.fontScale,
                _ = this._model.options.minimapCharWidth,
                w = (r = (1 === m ? 2 : 3) * b) < n ? Math.floor((n - r) / 2) : 0,
                y = (r = u.a / 255, new Kr(Math.round((u.r - h.r) * r + h.r), Math.round((u.g - h.g) * r + h.g), Math.round((u.b - h.b) * r + h.b), 255));
            let C = 0;
            const x = [];
            for (let e = 0, r = i - t + 1; e < r; e++) l[e] && lo._renderLine(o, y, u.a, f, m, _, g, p, v, C, w, c, d[e], b, n), x[e] = new no(C), C += n;
            s = -1 === s ? 0 : s, a = (-1 === a ? o.height : a) - s;
            return this._canvas.domNode.getContext("2d").putImageData(o, 0, 0, 0, s, o.width, a), new ro(e, o, x)
        }
        static _renderUntouchedLines(e, t, i, n, r) {
            const o = [];
            if (!r) {
                for (let e = 0, n = i - t + 1; e < n; e++) o[e] = !0;
                return [-1, -1, o]
            }
            const s = (r = r._get()).imageData.data;
            var a = r.rendLineNumberStart,
                l = r.lines,
                d = l.length,
                c = e.width;
            const h = e.data;
            var u = (i - t + 1) * n * c * 4;
            let p = -1,
                g = -1,
                f = -1,
                m = -1,
                v = -1,
                b = -1,
                _ = 0;
            for (let e = t; e <= i; e++) {
                var w, y, C = e - t,
                    x = e - a,
                    S = 0 <= x && x < d ? l[x].dy : -1; - 1 !== S ? (w = S * c * 4, y = (S + n) * c * 4, x = _ * c * 4, S = (_ + n) * c * 4, m === w && b === x ? m = y : (-1 !== f && (h.set(s.subarray(f, m), v), -1 === p && 0 === f && f === v && (p = m), -1 === g && m === u && f === v && (g = f)), f = w, m = y, v = x), b = S, o[C] = !1, _ += n) : (o[C] = !0, _ += n)
            }
            return -1 !== f && (h.set(s.subarray(f, m), v), -1 === p && 0 === f && f === v && (p = m), -1 === g && m === u && f === v && (g = f)), [-1 === p ? -1 : p / (4 * c), -1 === g ? -1 : g / (4 * c), o]
        }
        static _renderLine(e, t, i, r, o, s, a, l, d, c, h, u, p, g, f) {
            const m = p.content,
                v = p.tokens;
            var _ = e.width - s,
                w = 1 === f;
            let y = n.h,
                C = 0,
                x = 0;
            for (let n = 0, p = v.getCount(); n < p; n++)
                for (var S = v.getEndOffset(n), k = v.getForeground(n), L = a.getColor(k); C < S; C++) {
                    if (y > _) return;
                    var O = m.charCodeAt(C);
                    if (9 === O) {
                        var E = u - (C + x) % u;
                        x += E - 1, y += E * s
                    } else if (32 === O) y += s;
                    else {
                        var N = b.D(O) ? 2 : 1;
                        for (let n = 0; n < N; n++)
                            if (2 === o ? d.blockRenderChar(e, y, c + h, L, l, t, i, w) : d.renderChar(e, y, c + h, O, L, l, t, i, g, r, w), y += s, y > _) return
                    }
                }
        }
    }
    class co {
        constructor(e, t, i) {
            this._startLineNumber = e, this._endLineNumber = t, this._defaultValue = i, this._values = [];
            for (let e = 0, t = this._endLineNumber - this._startLineNumber + 1; e < t; e++) this._values[e] = i
        }
        has(e) {
            return this.get(e) !== this._defaultValue
        }
        set(e, t) {
            e < this._startLineNumber || e > this._endLineNumber || (this._values[e - this._startLineNumber] = t)
        }
        get(e) {
            return e < this._startLineNumber || e > this._endLineNumber ? this._defaultValue : this._values[e - this._startLineNumber]
        }
    }
    Object(ir.f)((e, t) => {
        var i = e.getColor(Ir.Qb);
        i && t.addRule(`.monaco-editor .minimap-slider .minimap-slider-horizontal { background: ${i}; }`), (i = e.getColor(Ir.Rb)) && t.addRule(`.monaco-editor .minimap-slider:hover .minimap-slider-horizontal { background: ${i}; }`), (i = e.getColor(Ir.Pb)) && t.addRule(`.monaco-editor .minimap-slider.active .minimap-slider-horizontal { background: ${i}; }`), (e = e.getColor(Ir.fc)) && t.addRule(`.monaco-editor .minimap-shadow-visible { box-shadow: ${e} -6px 0 6px -6px inset; }`)
    }), i(412);
    class ho extends rn {
        constructor(e) {
            super(e);
            e = this._context.configuration.options.get(129), this._widgets = {}, this._verticalScrollbarWidth = e.verticalScrollbarWidth, this._minimapWidth = e.minimap.minimapWidth, this._horizontalScrollbarHeight = e.horizontalScrollbarHeight, this._editorHeight = e.height, this._editorWidth = e.width, this._domNode = Object(Ui.b)(document.createElement("div")), on.write(this._domNode, 4), this._domNode.setClassName("overlayWidgets")
        }
        dispose() {
            super.dispose(), this._widgets = {}
        }
        getDomNode() {
            return this._domNode
        }
        on配置Changed(e) {
            var t = this._context.configuration.options.get(129);
            return this._verticalScrollbarWidth = t.verticalScrollbarWidth, this._minimapWidth = t.minimap.minimapWidth, this._horizontalScrollbarHeight = t.horizontalScrollbarHeight, this._editorHeight = t.height, this._editorWidth = t.width, !0
        }
        addWidget(e) {
            const t = Object(Ui.b)(e.getDomNode());
            this._widgets[e.getId()] = {
                widget: e,
                preference: null,
                domNode: t
            }, t.setPosition("absolute"), t.setAttribute("widgetId", e.getId()), this._domNode.appendChild(t), this.setShouldRender()
        }
        setWidgetPosition(e, t) {
            const i = this._widgets[e.getId()];
            return i.preference !== t && (i.preference = t, this.setShouldRender(), !0)
        }
        removeWidget(e) {
            if (e = e.getId(), this._widgets.hasOwnProperty(e)) {
                const t = this._widgets[e].domNode.domNode;
                delete this._widgets[e], t.parentNode.removeChild(t), this.setShouldRender()
            }
        }
        _renderWidget(e) {
            const t = e.domNode;
            var i;
            null !== e.preference ? 0 === e.preference ? (t.setTop(0), t.setRight(2 * this._verticalScrollbarWidth + this._minimapWidth)) : 1 === e.preference ? (i = t.domNode.clientHeight, t.setTop(this._editorHeight - i - 2 * this._horizontalScrollbarHeight), t.setRight(2 * this._verticalScrollbarWidth + this._minimapWidth)) : 2 === e.preference && (t.setTop(0), t.domNode.style.right = "50%") : t.unsetTop()
        }
        prepareRender(e) {}
        render(e) {
            this._domNode.setWidth(this._editorWidth);
            var t = Object.keys(this._widgets);
            for (let e = 0, n = t.length; e < n; e++) {
                var i = t[e];
                this._renderWidget(this._widgets[i])
            }
        }
    }
    var uo = i(11);
    class po {
        constructor(e, t) {
            const i = e.options;
            this.lineHeight = i.get(58), this.pixelRatio = i.get(127), this.overviewRulerLanes = i.get(73), this.renderBorder = i.get(72);
            const n = t.getColor(tr.C);
            this.borderColor = n ? n.toString() : null, this.hideCursor = i.get(51);
            const r = t.getColor(tr.w);
            this.cursorColor = r ? r.transparent(.7).toString() : null, this.themeType = t.type;
            e = (o = i.get(64)).enabled;
            var o = o.side;
            t = e ? t.getColor(tr.B) || z.A.getDefaultBackground() : null;
            this.backgroundColor = null === t || "left" === o ? null : uo.a.Format.CSS.formatHex(t), o = i.get(129).overviewRuler, this.top = o.top, this.right = o.right, this.domWidth = o.width, this.domHeight = o.height, 0 === this.overviewRulerLanes ? (this.canvasWidth = 0, this.canvasHeight = 0) : (this.canvasWidth = this.domWidth * this.pixelRatio | 0, this.canvasHeight = this.domHeight * this.pixelRatio | 0);
            var [t, o] = this._initLanes(1, this.canvasWidth, this.overviewRulerLanes);
            this.x = t, this.w = o
        }
        _initLanes(e, t, i) {
            var n = t - e;
            if (3 <= i) {
                var r = Math.floor(n / 3),
                    o = Math.floor(n / 3),
                    s = n - r - o;
                return [
                    [0, e, t = e + r, e, e + r + s, e, t, e],
                    [0, r, s, r + s, o, r + s + o, s + o, r + s + o]
                ]
            }
            return 2 !== i ? [
                [0, e, e, e, e, e, e, e],
                [0, n, n, n, n, n, n, n]
            ] : [
                [0, e, e, e, e + (i = Math.floor(n / 2)), e, e, e],
                [0, i, i, i, n -= i, i + n, i + n, i + n]
            ]
        }
        equals(e) {
            return this.lineHeight === e.lineHeight && this.pixelRatio === e.pixelRatio && this.overviewRulerLanes === e.overviewRulerLanes && this.renderBorder === e.renderBorder && this.borderColor === e.borderColor && this.hideCursor === e.hideCursor && this.cursorColor === e.cursorColor && this.themeType === e.themeType && this.backgroundColor === e.backgroundColor && this.top === e.top && this.right === e.right && this.domWidth === e.domWidth && this.domHeight === e.domHeight && this.canvasWidth === e.canvasWidth && this.canvasHeight === e.canvasHeight
        }
    }
    class go extends rn {
        constructor(e) {
            super(e), this._domNode = Object(Ui.b)(document.createElement("canvas")), this._domNode.setClassName("decorationsOverviewRuler"), this._domNode.setPosition("absolute"), this._domNode.setLayerHinting(!0), this._domNode.setContain("strict"), this._domNode.setAttribute("aria-hidden", "true"), this._updateSettings(!1), this._tokensColorTrackerListener = z.A.onDidChange(e => {
                e.changedColorMap && this._updateSettings(!0)
            }), this._cursorPositions = []
        }
        dispose() {
            super.dispose(), this._tokensColorTrackerListener.dispose()
        }
        _updateSettings(e) {
            var t = new po(this._context.configuration, this._context.theme);
            return !(this._settings && this._settings.equals(t) || (this._settings = t, this._domNode.setTop(this._settings.top), this._domNode.setRight(this._settings.right), this._domNode.setWidth(this._settings.domWidth), this._domNode.setHeight(this._settings.domHeight), this._domNode.domNode.width = this._settings.canvasWidth, this._domNode.domNode.height = this._settings.canvasHeight, e && this._render(), 0))
        }
        on配置Changed(e) {
            return this._updateSettings(!1)
        }
        onCursorStateChanged(e) {
            this._cursorPositions = [];
            for (let t = 0, i = e.selections.length; t < i; t++) this._cursorPositions[t] = e.selections[t].getPosition();
            return this._cursorPositions.sort(Re.a.compare), !0
        }
        onDecorationsChanged(e) {
            return !!e.affectsOverviewRuler
        }
        onFlushed(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollHeightChanged
        }
        onZonesChanged(e) {
            return !0
        }
        onThemeChanged(e) {
            return this._context.model.invalidateOverviewRulerColorCache(), this._updateSettings(!1)
        }
        getDomNode() {
            return this._domNode.domNode
        }
        prepareRender(e) {}
        render(e) {
            this._render()
        }
        _render() {
            if (0 !== this._settings.overviewRulerLanes) {
                var e = this._settings.canvasWidth,
                    t = this._settings.canvasHeight,
                    i = this._settings.lineHeight;
                const _ = this._context.viewLayout;
                var n = t / this._context.viewLayout.getScrollHeight();
                const w = this._context.model.getAllOverviewRulerDecorations(this._context.theme);
                var r = 6 * this._settings.pixelRatio | 0,
                    o = r / 2 | 0;
                const y = this._domNode.domNode.getContext("2d");
                null === this._settings.backgroundColor ? y.clearRect(0, 0, e, t) : (y.fillStyle = this._settings.backgroundColor, y.fillRect(0, 0, e, t));
                var s = this._settings.x,
                    a = this._settings.w;
                w.sort($e.cmp);
                for (const e of w) {
                    var l = e.color,
                        d = e.data;
                    y.fillStyle = l;
                    let p = 0,
                        g = 0,
                        f = 0;
                    for (let e = 0, l = d.length / 3; e < l; e++) {
                        var c = d[3 * e],
                            h = d[3 * e + 1],
                            u = d[3 * e + 2];
                        let l = _.getVerticalOffsetForLineNumber(h) * n | 0,
                            m = (_.getVerticalOffsetForLineNumber(u) + i) * n | 0;
                        if (m - l < r) {
                            let e = (l + m) / 2 | 0;
                            e < o ? e = o : e + o > t && (e = t - o), l = e - o, m = e + o
                        }
                        l > f + 1 || c !== p ? (0 !== e && y.fillRect(s[p], g, a[p], f - g), p = c, g = l, f = m) : m > f && (f = m)
                    }
                    y.fillRect(s[p], g, a[p], f - g)
                }
                if (!this._settings.hideCursor && this._settings.cursorColor) {
                    var p = 2 * this._settings.pixelRatio | 0,
                        g = p / 2 | 0,
                        f = this._settings.x[7],
                        m = this._settings.w[7];
                    y.fillStyle = this._settings.cursorColor;
                    let e = -100,
                        i = -100;
                    for (let r = 0, o = this._cursorPositions.length; r < o; r++) {
                        var v = this._cursorPositions[r];
                        let o = _.getVerticalOffsetForLineNumber(v.lineNumber) * n | 0;
                        o < g ? o = g : o + g > t && (o = t - g);
                        var b = o - g;
                        v = b + p;
                        b > i + 1 ? (0 !== r && y.fillRect(f, e, m, i - e), e = b, i = v) : v > i && (i = v)
                    }
                    y.fillRect(f, e, m, i - e)
                }
                this._settings.renderBorder && this._settings.borderColor && 0 < this._settings.overviewRulerLanes && (y.beginPath(), y.lineWidth = 1, y.strokeStyle = this._settings.borderColor, y.moveTo(0, 0), y.lineTo(0, t), y.stroke(), y.moveTo(0, 0), y.lineTo(e, 0), y.stroke())
            } else this._domNode.setBackgroundColor(this._settings.backgroundColor || "")
        }
    }
    class fo {
        constructor(e, t, i) {
            this._colorZoneBrand = void 0, this.from = 0 | e, this.to = 0 | t, this.colorId = 0 | i
        }
        static compare(e, t) {
            return e.colorId === t.colorId ? e.from === t.from ? e.to - t.to : e.from - t.from : e.colorId - t.colorId
        }
    }
    class mo {
        constructor(e, t, i) {
            this._overviewRulerZoneBrand = void 0, this.startLineNumber = e, this.endLineNumber = t, this.color = i, this._colorZone = null
        }
        static compare(e, t) {
            return e.color === t.color ? e.startLineNumber === t.startLineNumber ? e.endLineNumber - t.endLineNumber : e.startLineNumber - t.startLineNumber : e.color < t.color ? -1 : 1
        }
        setColorZone(e) {
            this._colorZone = e
        }
        getColorZones() {
            return this._colorZone
        }
    }
    class vo {
        constructor(e) {
            this._getVerticalOffsetForLine = e, this._zones = [], this._colorZonesInvalid = !1, this._lineHeight = 0, this._domWidth = 0, this._domHeight = 0, this._outerHeight = 0, this._pixelRatio = 1, this._lastAssignedId = 0, this._color2Id = Object.create(null), this._id2Color = []
        }
        getId2Color() {
            return this._id2Color
        }
        setZones(e) {
            this._zones = e, this._zones.sort(mo.compare)
        }
        setLineHeight(e) {
            return this._lineHeight !== e && (this._lineHeight = e, this._colorZonesInvalid = !0)
        }
        setPixelRatio(e) {
            this._pixelRatio = e, this._colorZonesInvalid = !0
        }
        getDOMWidth() {
            return this._domWidth
        }
        getCanvasWidth() {
            return this._domWidth * this._pixelRatio
        }
        setDOMWidth(e) {
            return this._domWidth !== e && (this._domWidth = e, this._colorZonesInvalid = !0)
        }
        getDOMHeight() {
            return this._domHeight
        }
        getCanvasHeight() {
            return this._domHeight * this._pixelRatio
        }
        setDOMHeight(e) {
            return this._domHeight !== e && (this._domHeight = e, this._colorZonesInvalid = !0)
        }
        getOuterHeight() {
            return this._outerHeight
        }
        setOuterHeight(e) {
            return this._outerHeight !== e && (this._outerHeight = e, this._colorZonesInvalid = !0)
        }
        resolveColorZones() {
            var e = this._colorZonesInvalid,
                t = Math.floor(this._lineHeight),
                i = Math.floor(this.getCanvasHeight()),
                n = i / Math.floor(this._outerHeight),
                r = Math.floor(4 * this._pixelRatio / 2);
            let o = [];
            for (let l = 0, d = this._zones.length; l < d; l++) {
                const d = this._zones[l];
                if (!e)
                    if (a = d.getColorZones()) {
                        o.push(a);
                        continue
                    } var s = Math.floor(n * this._getVerticalOffsetForLine(d.startLineNumber)),
                    a = Math.floor(n * (this._getVerticalOffsetForLine(d.endLineNumber) + t));
                let c = Math.floor((s + a) / 2),
                    h = a - c;
                h < r && (h = r), c - h < 0 && (c = h), c + h > i && (c = i - h), a = d.color;
                let u = this._color2Id[a];
                u || (u = ++this._lastAssignedId, this._color2Id[a] = u, this._id2Color[u] = a), a = new fo(c - h, c + h, u), d.setColorZone(a), o.push(a)
            }
            return this._colorZonesInvalid = !1, o.sort(fo.compare), o
        }
    }
    class bo extends nn {
        constructor(e, t) {
            super(), this._context = e;
            const i = this._context.configuration.options;
            this._domNode = Object(Ui.b)(document.createElement("canvas")), this._domNode.setClassName(t), this._domNode.setPosition("absolute"), this._domNode.setLayerHinting(!0), this._domNode.setContain("strict"), this._zoneManager = new vo(e => this._context.viewLayout.getVerticalOffsetForLineNumber(e)), this._zoneManager.setDOMWidth(0), this._zoneManager.setDOMHeight(0), this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()), this._zoneManager.setLineHeight(i.get(58)), this._zoneManager.setPixelRatio(i.get(127)), this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), super.dispose()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            return e.hasChanged(58) && (this._zoneManager.setLineHeight(t.get(58)), this._render()), e.hasChanged(127) && (this._zoneManager.setPixelRatio(t.get(127)), this._domNode.setWidth(this._zoneManager.getDOMWidth()), this._domNode.setHeight(this._zoneManager.getDOMHeight()), this._domNode.domNode.width = this._zoneManager.getCanvasWidth(), this._domNode.domNode.height = this._zoneManager.getCanvasHeight(), this._render()), !0
        }
        onFlushed(e) {
            return this._render(), !0
        }
        onScrollChanged(e) {
            return e.scrollHeightChanged && (this._zoneManager.setOuterHeight(e.scrollHeight), this._render()), !0
        }
        onZonesChanged(e) {
            return this._render(), !0
        }
        getDomNode() {
            return this._domNode.domNode
        }
        setLayout(e) {
            this._domNode.setTop(e.top), this._domNode.setRight(e.right);
            let t = !1;
            t = this._zoneManager.setDOMWidth(e.width) || t, t = this._zoneManager.setDOMHeight(e.height) || t, t && (this._domNode.setWidth(this._zoneManager.getDOMWidth()), this._domNode.setHeight(this._zoneManager.getDOMHeight()), this._domNode.domNode.width = this._zoneManager.getCanvasWidth(), this._domNode.domNode.height = this._zoneManager.getCanvasHeight(), this._render())
        }
        setZones(e) {
            this._zoneManager.setZones(e), this._render()
        }
        _render() {
            if (0 === this._zoneManager.getOuterHeight()) return !1;
            var e = this._zoneManager.getCanvasWidth(),
                t = this._zoneManager.getCanvasHeight(),
                i = this._zoneManager.resolveColorZones(),
                n = this._zoneManager.getId2Color();
            const r = this._domNode.domNode.getContext("2d");
            return r.clearRect(0, 0, e, t), 0 < i.length && this._renderOneLane(r, i, n, e), !0
        }
        _renderOneLane(e, t, i, n) {
            let r = 0,
                o = 0,
                s = 0;
            for (const c of t) {
                var a = c.colorId,
                    l = c.from,
                    d = c.to;
                s = a !== r ? (e.fillRect(0, o, n, s - o), r = a, e.fillStyle = i[r], o = l, d) : s >= l ? Math.max(s, d) : (e.fillRect(0, o, n, s - o), o = l, d)
            }
            e.fillRect(0, o, n, s - o)
        }
    }
    i(414);
    class _o extends rn {
        constructor(e) {
            super(e), this.domNode = Object(Ui.b)(document.createElement("div")), this.domNode.setAttribute("role", "presentation"), this.domNode.setAttribute("aria-hidden", "true"), this.domNode.setClassName("view-rulers"), this._renderedRulers = [];
            const t = this._context.configuration.options;
            this._rulers = t.get(90), this._typicalHalfwidthCharacterWidth = t.get(43).typicalHalfwidthCharacterWidth
        }
        dispose() {
            super.dispose()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            return this._rulers = t.get(90), this._typicalHalfwidthCharacterWidth = t.get(43).typicalHalfwidthCharacterWidth, !0
        }
        onScrollChanged(e) {
            return e.scrollHeightChanged
        }
        prepareRender(e) {}
        _ensureRulersCount() {
            var e = this._renderedRulers.length,
                t = this._rulers.length;
            if (e !== t)
                if (e < t) {
                    var {
                        tabSize: i
                    } = this._context.model.getTextModelOptions(), n = i;
                    let r = t - e;
                    for (; 0 < r;) {
                        const e = Object(Ui.b)(document.createElement("div"));
                        e.setClassName("view-ruler"), e.setWidth(n), this.domNode.appendChild(e), this._renderedRulers.push(e), r--
                    }
                } else {
                    let i = e - t;
                    for (; 0 < i;) {
                        var r = this._renderedRulers.pop();
                        this.domNode.removeChild(r), i--
                    }
                }
        }
        render(e) {
            this._ensureRulersCount();
            for (let i = 0, n = this._rulers.length; i < n; i++) {
                const n = this._renderedRulers[i];
                var t = this._rulers[i];
                n.setBoxShadow(t.color ? `1px 0 0 0 ${t.color} inset` : ""), n.setHeight(Math.min(e.scrollHeight, 1e6)), n.setLeft(t.column * this._typicalHalfwidthCharacterWidth)
            }
        }
    }
    Object(ir.f)((e, t) => {
        (e = e.getColor(tr.D)) && t.addRule(`.monaco-editor .view-ruler { box-shadow: 1px 0 0 0 ${e} inset; }`)
    }), i(416);
    class wo extends rn {
        constructor(e) {
            super(e), this._scrollTop = 0, this._width = 0, this._updateWidth(), this._shouldShow = !1;
            e = this._context.configuration.options.get(91), this._useShadows = e.useShadows, this._domNode = Object(Ui.b)(document.createElement("div")), this._domNode.setAttribute("role", "presentation"), this._domNode.setAttribute("aria-hidden", "true")
        }
        dispose() {
            super.dispose()
        }
        _updateShouldShow() {
            var e = this._useShadows && 0 < this._scrollTop;
            return this._shouldShow !== e && (this._shouldShow = e, !0)
        }
        getDomNode() {
            return this._domNode
        }
        _updateWidth() {
            var e = this._context.configuration.options.get(129);
            0 === e.minimap.renderMinimap || 0 < e.minimap.minimapWidth && 0 === e.minimap.minimapLeft ? this._width = e.width : this._width = e.width - e.minimap.minimapWidth - e.verticalScrollbarWidth
        }
        on配置Changed(e) {
            var t = this._context.configuration.options.get(91);
            return this._useShadows = t.useShadows, this._updateWidth(), this._updateShouldShow(), !0
        }
        onScrollChanged(e) {
            return this._scrollTop = e.scrollTop, this._updateShouldShow()
        }
        prepareRender(e) {}
        render(e) {
            this._domNode.setWidth(this._width), this._domNode.setClassName(this._shouldShow ? "scroll-decoration" : "")
        }
    }
    Object(ir.f)((e, t) => {
        (e = e.getColor(Ir.fc)) && t.addRule(`.monaco-editor .scroll-decoration { box-shadow: ${e} 0 6px 6px -6px inset; }`)
    }), i(418);
    class yo {
        constructor(e) {
            this.left = e.left, this.width = e.width, this.startStyle = null, this.endStyle = null
        }
    }
    class Co {
        constructor(e, t) {
            this.lineNumber = e, this.ranges = t
        }
    }

    function xo(e) {
        return new yo(e)
    }

    function So(e) {
        return new Co(e.lineNumber, e.ranges.map(xo))
    }
    class ko extends er {
        constructor(e) {
            super(), this._previousFrameVisibleRangesWithStyle = [], this._context = e;
            const t = this._context.configuration.options;
            this._lineHeight = t.get(58), this._roundedSelection = t.get(89), this._typicalHalfwidthCharacterWidth = t.get(43).typicalHalfwidthCharacterWidth, this._selections = [], this._renderResult = null, this._context.addEventHandler(this)
        }
        dispose() {
            this._context.removeEventHandler(this), this._renderResult = null, super.dispose()
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            return this._lineHeight = t.get(58), this._roundedSelection = t.get(89), this._typicalHalfwidthCharacterWidth = t.get(43).typicalHalfwidthCharacterWidth, !0
        }
        onCursorStateChanged(e) {
            return this._selections = e.selections.slice(0), !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged
        }
        onZonesChanged(e) {
            return !0
        }
        _visibleRangesHaveGaps(e) {
            for (let t = 0, i = e.length; t < i; t++)
                if (1 < e[t].ranges.length) return !0;
            return !1
        }
        _enrichVisibleRangesWithStyle(e, t, i) {
            var n = this._typicalHalfwidthCharacterWidth / 4;
            let r = null,
                o = null;
            if (i && 0 < i.length && 0 < t.length) {
                var s = t[0].lineNumber;
                if (s === e.startLineNumber)
                    for (let e = 0; !r && e < i.length; e++) i[e].lineNumber === s && (r = i[e].ranges[0]);
                var a = t[t.length - 1].lineNumber;
                if (a === e.endLineNumber)
                    for (let e = i.length - 1; !o && 0 <= e; e--) i[e].lineNumber === a && (o = i[e].ranges[0]);
                r && !r.startStyle && (r = null), o && !o.startStyle && (o = null)
            }
            for (let e = 0, i = t.length; e < i; e++) {
                const s = t[e].ranges[0];
                var l, d, c = s.left,
                    h = s.left + s.width;
                const a = {
                        top: 0,
                        bottom: 0
                    },
                    u = {
                        top: 0,
                        bottom: 0
                    };
                0 < e ? (l = t[e - 1].ranges[0].left, d = t[e - 1].ranges[0].left + t[e - 1].ranges[0].width, Lo(c - l) < n ? a.top = 2 : l < c && (a.top = 1), Lo(h - d) < n ? u.top = 2 : l < h && h < d && (u.top = 1)) : r && (a.top = r.startStyle.top, u.top = r.endStyle.top), e + 1 < i ? (l = t[e + 1].ranges[0].left, d = t[e + 1].ranges[0].left + t[e + 1].ranges[0].width, Lo(c - l) < n ? a.bottom = 2 : l < c && c < d && (a.bottom = 1), Lo(h - d) < n ? u.bottom = 2 : h < d && (u.bottom = 1)) : o && (a.bottom = o.startStyle.bottom, u.bottom = o.endStyle.bottom), s.startStyle = a, s.endStyle = u
            }
        }
        _getVisibleRangesWithStyle(e, t, i) {
            return e = (t.linesVisibleRangesForRange(e, !0) || []).map(So), !this._visibleRangesHaveGaps(e) && this._roundedSelection && this._enrichVisibleRangesWithStyle(t.visibleRange, e, i), e
        }
        _createSelectionPiece(e, t, i, n, r) {
            return '<div class="cslr ' + i + '" style="top:' + e.toString() + "px;left:" + n.toString() + "px;width:" + r.toString() + "px;height:" + t + 'px;"></div>'
        }
        _actualRenderOneSelection(e, t, i, n) {
            if (0 !== n.length) {
                var r = !!n[0].ranges[0].startStyle,
                    o = this._lineHeight.toString(),
                    s = (this._lineHeight - 1).toString(),
                    a = n[0].lineNumber,
                    l = n[n.length - 1].lineNumber;
                for (let v = 0, b = n.length; v < b; v++) {
                    var d = n[v],
                        c = d.lineNumber,
                        h = c - t,
                        u = !i || c !== l && c !== a ? o : s,
                        p = i && c === a ? 1 : 0;
                    let b = "",
                        _ = "";
                    for (let e = 0, t = d.ranges.length; e < t; e++) {
                        var g = d.ranges[e];
                        if (r) {
                            var f = g.startStyle,
                                m = g.endStyle;
                            if (1 === f.top || 1 === f.bottom) {
                                b += this._createSelectionPiece(p, u, ko.SELECTION_CLASS_NAME, g.left - ko.ROUNDED_PIECE_WIDTH, ko.ROUNDED_PIECE_WIDTH);
                                let e = ko.EDITOR_BACKGROUND_CLASS_NAME;
                                1 === f.top && (e += " " + ko.SELECTION_TOP_RIGHT), 1 === f.bottom && (e += " " + ko.SELECTION_BOTTOM_RIGHT), b += this._createSelectionPiece(p, u, e, g.left - ko.ROUNDED_PIECE_WIDTH, ko.ROUNDED_PIECE_WIDTH)
                            }
                            if (1 === m.top || 1 === m.bottom) {
                                b += this._createSelectionPiece(p, u, ko.SELECTION_CLASS_NAME, g.left + g.width, ko.ROUNDED_PIECE_WIDTH);
                                let e = ko.EDITOR_BACKGROUND_CLASS_NAME;
                                1 === m.top && (e += " " + ko.SELECTION_TOP_LEFT), 1 === m.bottom && (e += " " + ko.SELECTION_BOTTOM_LEFT), b += this._createSelectionPiece(p, u, e, g.left + g.width, ko.ROUNDED_PIECE_WIDTH)
                            }
                        }
                        let t = ko.SELECTION_CLASS_NAME;
                        r && (f = g.startStyle, m = g.endStyle, 0 === f.top && (t += " " + ko.SELECTION_TOP_LEFT), 0 === f.bottom && (t += " " + ko.SELECTION_BOTTOM_LEFT), 0 === m.top && (t += " " + ko.SELECTION_TOP_RIGHT), 0 === m.bottom && (t += " " + ko.SELECTION_BOTTOM_RIGHT)), _ += this._createSelectionPiece(p, u, t, g.left, g.width)
                    }
                    e[h][0] += b, e[h][1] += _
                }
            }
        }
        prepareRender(e) {
            const t = [];
            var i, n = e.visibleRange.startLineNumber,
                r = e.visibleRange.endLineNumber;
            for (let e = n; e <= r; e++) {
                t[e - n] = ["", ""]
            }
            const o = [];
            for (let r = 0, s = this._selections.length; r < s; r++) {
                const s = this._selections[r];
                s.isEmpty() ? o[r] = null : (i = this._getVisibleRangesWithStyle(s, e, this._previousFrameVisibleRangesWithStyle[r]), o[r] = i, this._actualRenderOneSelection(t, n, 1 < this._selections.length, i))
            }
            this._previousFrameVisibleRangesWithStyle = o, this._renderResult = t.map(([e, t]) => e + t)
        }
        render(e, t) {
            return this._renderResult ? (e = t - e) < 0 || e >= this._renderResult.length ? "" : this._renderResult[e] : ""
        }
    }

    function Lo(e) {
        return e < 0 ? -e : e
    }
    ko.SELECTION_CLASS_NAME = "selected-text", ko.SELECTION_TOP_LEFT = "top-left-radius", ko.SELECTION_BOTTOM_LEFT = "bottom-left-radius", ko.SELECTION_TOP_RIGHT = "top-right-radius", ko.SELECTION_BOTTOM_RIGHT = "bottom-right-radius", ko.EDITOR_BACKGROUND_CLASS_NAME = "monaco-editor-background", ko.ROUNDED_PIECE_WIDTH = 10, Object(ir.f)((e, t) => {
        var i = e.getColor(Ir.H);
        i && t.addRule(`.monaco-editor .focused .selected-text { background-color: ${i}; }`), (i = e.getColor(Ir.D)) && t.addRule(`.monaco-editor .selected-text { background-color: ${i}; }`);
        const n = e.getColor(Ir.I);
        n && !n.isTransparent() && t.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${n}; }`)
    }), i(420);
    class Oo {
        constructor(e, t, i, n, r, o) {
            this.top = e, this.left = t, this.width = i, this.height = n, this.textContent = r, this.textContentClassName = o
        }
    }
    class Eo {
        constructor(e) {
            this._context = e;
            const t = this._context.configuration.options;
            e = t.get(43), this._cursorStyle = t.get(24), this._lineHeight = t.get(58), this._typicalHalfwidthCharacterWidth = e.typicalHalfwidthCharacterWidth, this._lineCursorWidth = Math.min(t.get(27), this._typicalHalfwidthCharacterWidth), this._isVisible = !0, this._domNode = Object(Ui.b)(document.createElement("div")), this._domNode.setClassName("cursor " + sr), this._domNode.setHeight(this._lineHeight), this._domNode.setTop(0), this._domNode.setLeft(0), zi.applyFontInfo(this._domNode, e), this._domNode.setDisplay("none"), this._position = new Re.a(1, 1), this._lastRenderedContent = "", this._renderData = null
        }
        getDomNode() {
            return this._domNode
        }
        getPosition() {
            return this._position
        }
        show() {
            this._isVisible || (this._domNode.setVisibility("inherit"), this._isVisible = !0)
        }
        hide() {
            this._isVisible && (this._domNode.setVisibility("hidden"), this._isVisible = !1)
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(43);
            return this._cursorStyle = t.get(24), this._lineHeight = t.get(58), this._typicalHalfwidthCharacterWidth = i.typicalHalfwidthCharacterWidth, this._lineCursorWidth = Math.min(t.get(27), this._typicalHalfwidthCharacterWidth), zi.applyFontInfo(this._domNode, i), !0
        }
        onCursorPositionChanged(e) {
            return this._position = e, !0
        }
        _prepareRender(e) {
            let t = "";
            if (this._cursorStyle === n.i.Line || this._cursorStyle === n.i.LineThin) {
                var i = e.visibleRangeForPosition(this._position);
                if (!i || i.outsideRenderedLine) return null;
                let r;
                if (this._cursorStyle === n.i.Line) {
                    if (r = s.r(0 < this._lineCursorWidth ? this._lineCursorWidth : 2), 2 < r) {
                        const e = this._context.model.getLineContent(this._position.lineNumber),
                            i = b.K(e, this._position.column - 1);
                        t = e.substr(this._position.column - 1, i)
                    }
                } else r = s.r(1);
                let o = i.left;
                2 <= r && 1 <= o && --o;
                const a = e.getVerticalOffsetForLineNumber(this._position.lineNumber) - e.bigNumbersDelta;
                return new Oo(a, o, r, this._lineHeight, t, "")
            }
            const r = this._context.model.getLineContent(this._position.lineNumber),
                o = b.K(r, this._position.column - 1);
            var a = e.linesVisibleRangesForRange(new T.a(this._position.lineNumber, this._position.column, this._position.lineNumber, this._position.column + o), !1);
            if (!a || 0 === a.length) return null;
            var l = a[0];
            if (l.outsideRenderedLine || 0 === l.ranges.length) return null;
            a = (i = l.ranges[0]).width < 1 ? this._typicalHalfwidthCharacterWidth : i.width;
            let d = "";
            if (this._cursorStyle === n.i.Block) {
                const e = this._context.model.getViewLineData(this._position.lineNumber);
                t = r.substr(this._position.column - 1, o), l = e.tokens.findTokenIndexAtOffset(this._position.column - 1), d = e.tokens.getClassName(l)
            }
            let c = e.getVerticalOffsetForLineNumber(this._position.lineNumber) - e.bigNumbersDelta,
                h = this._lineHeight;
            return this._cursorStyle !== n.i.Underline && this._cursorStyle !== n.i.UnderlineThin || (c += this._lineHeight - 2, h = 2), new Oo(c, i.left, a, h, t, d)
        }
        prepareRender(e) {
            this._renderData = this._prepareRender(e)
        }
        render(e) {
            return this._renderData ? (this._lastRenderedContent !== this._renderData.textContent && (this._lastRenderedContent = this._renderData.textContent, this._domNode.domNode.textContent = this._lastRenderedContent), this._domNode.setClassName(`cursor ${sr} ${this._renderData.textContentClassName}`), this._domNode.setDisplay("block"), this._domNode.setTop(this._renderData.top), this._domNode.setLeft(this._renderData.left), this._domNode.setWidth(this._renderData.width), this._domNode.setLineHeight(this._renderData.height), this._domNode.setHeight(this._renderData.height), {
                domNode: this._domNode.domNode,
                position: this._position,
                contentLeft: this._renderData.left,
                height: this._renderData.height,
                width: 2
            }) : (this._domNode.setDisplay("none"), null)
        }
    }
    class No extends rn {
        constructor(e) {
            super(e);
            const t = this._context.configuration.options;
            this._readOnly = t.get(80), this._cursorBlinking = t.get(22), this._cursorStyle = t.get(24), this._cursorSmoothCaretAnimation = t.get(23), this._selectionIsEmpty = !0, this._isComposingInput = !1, this._isVisible = !1, this._primaryCursor = new Eo(this._context), this._secondaryCursors = [], this._renderData = [], this._domNode = Object(Ui.b)(document.createElement("div")), this._domNode.setAttribute("role", "presentation"), this._domNode.setAttribute("aria-hidden", "true"), this._updateDomClassName(), this._domNode.appendChild(this._primaryCursor.getDomNode()), this._startCursorBlinkAnimation = new q.g, this._cursorFlatBlinkInterval = new q.c, this._blinkingEnabled = !1, this._editorHasFocus = !1, this._updateBlinking()
        }
        dispose() {
            super.dispose(), this._startCursorBlinkAnimation.dispose(), this._cursorFlatBlinkInterval.dispose()
        }
        getDomNode() {
            return this._domNode
        }
        onCompositionStart(e) {
            return this._isComposingInput = !0, this._updateBlinking(), !0
        }
        onCompositionEnd(e) {
            return this._isComposingInput = !1, this._updateBlinking(), !0
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            this._readOnly = t.get(80), this._cursorBlinking = t.get(22), this._cursorStyle = t.get(24), this._cursorSmoothCaretAnimation = t.get(23), this._updateBlinking(), this._updateDomClassName(), this._primaryCursor.on配置Changed(e);
            for (let t = 0, i = this._secondaryCursors.length; t < i; t++) this._secondaryCursors[t].on配置Changed(e);
            return !0
        }
        _onCursorPositionChanged(e, t) {
            if (this._primaryCursor.onCursorPositionChanged(e), this._updateBlinking(), this._secondaryCursors.length < t.length) {
                var i = t.length - this._secondaryCursors.length;
                for (let e = 0; e < i; e++) {
                    const e = new Eo(this._context);
                    this._domNode.domNode.insertBefore(e.getDomNode().domNode, this._primaryCursor.getDomNode().domNode.nextSibling), this._secondaryCursors.push(e)
                }
            } else if (this._secondaryCursors.length > t.length) {
                var n = this._secondaryCursors.length - t.length;
                for (let e = 0; e < n; e++) this._domNode.removeChild(this._secondaryCursors[0].getDomNode()), this._secondaryCursors.splice(0, 1)
            }
            for (let e = 0; e < t.length; e++) this._secondaryCursors[e].onCursorPositionChanged(t[e])
        }
        onCursorStateChanged(e) {
            const t = [];
            for (let i = 0, n = e.selections.length; i < n; i++) t[i] = e.selections[i].getPosition();
            this._onCursorPositionChanged(t[0], t.slice(1));
            var i = e.selections[0].isEmpty();
            return this._selectionIsEmpty !== i && (this._selectionIsEmpty = i, this._updateDomClassName()), !0
        }
        onDecorationsChanged(e) {
            return !0
        }
        onFlushed(e) {
            return !0
        }
        onFocusChanged(e) {
            return this._editorHasFocus = e.isFocused, this._updateBlinking(), !1
        }
        onLinesChanged(e) {
            return !0
        }
        onLinesDeleted(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        onScrollChanged(e) {
            return !0
        }
        onTokensChanged(e) {
            var t = t => {
                for (let i = 0, n = e.ranges.length; i < n; i++)
                    if (e.ranges[i].fromLineNumber <= t.lineNumber && t.lineNumber <= e.ranges[i].toLineNumber) return !0;
                return !1
            };
            if (t(this._primaryCursor.getPosition())) return !0;
            for (const e of this._secondaryCursors)
                if (t(e.getPosition())) return !0;
            return !1
        }
        onZonesChanged(e) {
            return !0
        }
        _getCursorBlinking() {
            return !this._isComposingInput && this._editorHasFocus ? this._readOnly ? 5 : this._cursorBlinking : 0
        }
        _updateBlinking() {
            this._startCursorBlinkAnimation.cancel(), this._cursorFlatBlinkInterval.cancel();
            var e = this._getCursorBlinking(),
                t = 0 === e,
                i = 5 === e;
            t ? this._hide() : this._show(), this._blinkingEnabled = !1, this._updateDomClassName(), t || i || (1 === e ? this._cursorFlatBlinkInterval.cancelAndSet(() => {
                this._isVisible ? this._hide() : this._show()
            }, No.BLINK_INTERVAL) : this._startCursorBlinkAnimation.setIfNotSet(() => {
                this._blinkingEnabled = !0, this._updateDomClassName()
            }, No.BLINK_INTERVAL))
        }
        _updateDomClassName() {
            this._domNode.setClassName(this._getClassName())
        }
        _getClassName() {
            let e = "cursors-layer";
            switch (this._selectionIsEmpty || (e += " has-selection"), this._cursorStyle) {
                case n.i.Line:
                    e += " cursor-line-style";
                    break;
                case n.i.Block:
                    e += " cursor-block-style";
                    break;
                case n.i.Underline:
                    e += " cursor-underline-style";
                    break;
                case n.i.LineThin:
                    e += " cursor-line-thin-style";
                    break;
                case n.i.BlockOutline:
                    e += " cursor-block-outline-style";
                    break;
                case n.i.UnderlineThin:
                    e += " cursor-underline-thin-style";
                    break;
                default:
                    e += " cursor-line-style"
            }
            if (this._blinkingEnabled) switch (this._getCursorBlinking()) {
                case 1:
                    e += " cursor-blink";
                    break;
                case 2:
                    e += " cursor-smooth";
                    break;
                case 3:
                    e += " cursor-phase";
                    break;
                case 4:
                    e += " cursor-expand";
                    break;
                default:
                    e += " cursor-solid"
            } else e += " cursor-solid";
            return this._cursorSmoothCaretAnimation && (e += " cursor-smooth-caret-animation"), e
        }
        _show() {
            this._primaryCursor.show();
            for (let e = 0, t = this._secondaryCursors.length; e < t; e++) this._secondaryCursors[e].show();
            this._isVisible = !0
        }
        _hide() {
            this._primaryCursor.hide();
            for (let e = 0, t = this._secondaryCursors.length; e < t; e++) this._secondaryCursors[e].hide();
            this._isVisible = !1
        }
        prepareRender(e) {
            this._primaryCursor.prepareRender(e);
            for (let t = 0, i = this._secondaryCursors.length; t < i; t++) this._secondaryCursors[t].prepareRender(e)
        }
        render(e) {
            let t = [],
                i = 0;
            var n = this._primaryCursor.render(e);
            n && (t[i++] = n);
            for (let n = 0, o = this._secondaryCursors.length; n < o; n++) {
                var r = this._secondaryCursors[n].render(e);
                r && (t[i++] = r)
            }
            this._renderData = t
        }
        getLastRenderData() {
            return this._renderData
        }
    }
    No.BLINK_INTERVAL = 500, Object(ir.f)((e, t) => {
        const i = e.getColor(tr.w);
        if (i) {
            let n = e.getColor(tr.v);
            n = n || i.opposite(), t.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${i}; border-color: ${i}; color: ${n}; }`), "hc" === e.type && t.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${n}; border-right: 1px solid ${n}; }`)
        }
    });
    const Do = () => {
        throw new Error("Invalid change accessor")
    };
    class Io extends rn {
        constructor(e) {
            super(e);
            const t = this._context.configuration.options;
            e = t.get(129), this._lineHeight = t.get(58), this._contentWidth = e.contentWidth, this._contentLeft = e.contentLeft, this.domNode = Object(Ui.b)(document.createElement("div")), this.domNode.setClassName("view-zones"), this.domNode.setPosition("absolute"), this.domNode.setAttribute("role", "presentation"), this.domNode.setAttribute("aria-hidden", "true"), this.marginDomNode = Object(Ui.b)(document.createElement("div")), this.marginDomNode.setClassName("margin-view-zones"), this.marginDomNode.setPosition("absolute"), this.marginDomNode.setAttribute("role", "presentation"), this.marginDomNode.setAttribute("aria-hidden", "true"), this._zones = {}
        }
        dispose() {
            super.dispose(), this._zones = {}
        }
        _recomputeWhitespacesProps() {
            var e = this._context.viewLayout.getWhitespaces();
            const t = new Map;
            for (const i of e) t.set(i.id, i);
            let i = !1;
            return this._context.model.changeWhitespace(e => {
                var n = Object.keys(this._zones);
                for (let a = 0, l = n.length; a < l; a++) {
                    var r = n[a];
                    const l = this._zones[r];
                    var o = this._computeWhitespaceProps(l.delegate);
                    l.isInHiddenArea = o.isInHiddenArea;
                    var s = t.get(r);
                    !s || s.afterLineNumber === o.afterViewLineNumber && s.height === o.heightInPx || (e.changeOneWhitespace(r, o.afterViewLineNumber, o.heightInPx), this._safeCallOnComputedHeight(l.delegate, o.heightInPx), i = !0)
                }
            }), i
        }
        on配置Changed(e) {
            const t = this._context.configuration.options;
            var i = t.get(129);
            return this._lineHeight = t.get(58), this._contentWidth = i.contentWidth, this._contentLeft = i.contentLeft, e.hasChanged(58) && this._recomputeWhitespacesProps(), !0
        }
        onLineMappingChanged(e) {
            return this._recomputeWhitespacesProps()
        }
        onLinesDeleted(e) {
            return !0
        }
        onScrollChanged(e) {
            return e.scrollTopChanged || e.scrollWidthChanged
        }
        onZonesChanged(e) {
            return !0
        }
        onLinesInserted(e) {
            return !0
        }
        _getZoneOrdinal(e) {
            return void 0 !== e.afterColumn ? e.afterColumn : 1e4
        }
        _computeWhitespaceProps(e) {
            if (0 === e.afterLineNumber) return {
                isInHiddenArea: !1,
                afterViewLineNumber: 0,
                heightInPx: this._heightInPixels(e),
                minWidthInPx: this._minWidthInPixels(e)
            };
            let t, i;
            t = void 0 !== e.afterColumn ? this._context.model.validateModelPosition({
                lineNumber: e.afterLineNumber,
                column: e.afterColumn
            }) : (r = this._context.model.validateModelPosition({
                lineNumber: e.afterLineNumber,
                column: 1
            }).lineNumber, new Re.a(r, this._context.model.getModelLineMaxColumn(r))), i = t.column === this._context.model.getModelLineMaxColumn(t.lineNumber) ? this._context.model.validateModelPosition({
                lineNumber: t.lineNumber + 1,
                column: 1
            }) : this._context.model.validateModelPosition({
                lineNumber: t.lineNumber,
                column: t.column + 1
            });
            var n = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(t),
                r = this._context.model.coordinatesConverter.modelPositionIsVisible(i);
            return {
                isInHiddenArea: !r,
                afterViewLineNumber: n.lineNumber,
                heightInPx: r ? this._heightInPixels(e) : 0,
                minWidthInPx: this._minWidthInPixels(e)
            }
        }
        changeViewZones(e) {
            let t = !1;
            return this._context.model.changeWhitespace(i => {
                const n = {
                    addZone: e => (t = !0, this._addZone(i, e)),
                    removeZone: e => {
                        e && (t = this._removeZone(i, e) || t)
                    },
                    layoutZone: e => {
                        e && (t = this._layoutZone(i, e) || t)
                    }
                };
                ! function(e, t) {
                    try {
                        e(t)
                    } catch (e) {
                        Object(se.f)(e)
                    }
                }(e, n), n.addZone = Do, n.removeZone = Do, n.layoutZone = Do
            }), t
        }
        _addZone(e, t) {
            var i = this._computeWhitespaceProps(t);
            const n = {
                whitespaceId: e.insertWhitespace(i.afterViewLineNumber, this._getZoneOrdinal(t), i.heightInPx, i.minWidthInPx),
                delegate: t,
                isInHiddenArea: i.isInHiddenArea,
                isVisible: !1,
                domNode: Object(Ui.b)(t.domNode),
                marginDomNode: t.marginDomNode ? Object(Ui.b)(t.marginDomNode) : null
            };
            return this._safeCallOnComputedHeight(n.delegate, i.heightInPx), n.domNode.setPosition("absolute"), n.domNode.domNode.style.width = "100%", n.domNode.setDisplay("none"), n.domNode.setAttribute("monaco-view-zone", n.whitespaceId), this.domNode.appendChild(n.domNode), n.marginDomNode && (n.marginDomNode.setPosition("absolute"), n.marginDomNode.domNode.style.width = "100%", n.marginDomNode.setDisplay("none"), n.marginDomNode.setAttribute("monaco-view-zone", n.whitespaceId), this.marginDomNode.appendChild(n.marginDomNode)), this._zones[n.whitespaceId] = n, this.setShouldRender(), n.whitespaceId
        }
        _removeZone(e, t) {
            if (this._zones.hasOwnProperty(t)) {
                const i = this._zones[t];
                return delete this._zones[t], e.removeWhitespace(i.whitespaceId), i.domNode.removeAttribute("monaco-visible-view-zone"), i.domNode.removeAttribute("monaco-view-zone"), i.domNode.domNode.parentNode.removeChild(i.domNode.domNode), i.marginDomNode && (i.marginDomNode.removeAttribute("monaco-visible-view-zone"), i.marginDomNode.removeAttribute("monaco-view-zone"), i.marginDomNode.domNode.parentNode.removeChild(i.marginDomNode.domNode)), this.setShouldRender(), !0
            }
            return !1
        }
        _layoutZone(e, t) {
            if (this._zones.hasOwnProperty(t)) {
                const i = this._zones[t];
                return t = this._computeWhitespaceProps(i.delegate), i.isInHiddenArea = t.isInHiddenArea, e.changeOneWhitespace(i.whitespaceId, t.afterViewLineNumber, t.heightInPx), this._safeCallOnComputedHeight(i.delegate, t.heightInPx), this.setShouldRender(), !0
            }
            return !1
        }
        shouldSuppressMouseDownOnViewZone(e) {
            return !!this._zones.hasOwnProperty(e) && (e = this._zones[e], Boolean(e.delegate.suppressMouseDown))
        }
        _heightInPixels(e) {
            return "number" == typeof e.heightInPx ? e.heightInPx : "number" == typeof e.heightInLines ? this._lineHeight * e.heightInLines : this._lineHeight
        }
        _minWidthInPixels(e) {
            return "number" == typeof e.minWidthInPx ? e.minWidthInPx : 0
        }
        _safeCallOnComputedHeight(e, t) {
            if ("function" == typeof e.onComputedHeight) try {
                e.onComputedHeight(t)
            } catch (e) {
                Object(se.f)(e)
            }
        }
        _safeCallOnDomNodeTop(e, t) {
            if ("function" == typeof e.onDomNodeTop) try {
                e.onDomNodeTop(t)
            } catch (e) {
                Object(se.f)(e)
            }
        }
        prepareRender(e) {}
        render(e) {
            const t = {};
            let i = !1;
            for (const n of e.viewportData.whitespaceViewportData) this._zones[n.id].isInHiddenArea || (t[n.id] = n, i = !0);
            var n = Object.keys(this._zones);
            for (let i = 0, o = n.length; i < o; i++) {
                var r = n[i];
                const o = this._zones[r];
                let s = 0,
                    a = 0,
                    l = "none";
                t.hasOwnProperty(r) ? (s = t[r].verticalOffset - e.bigNumbersDelta, a = t[r].height, l = "block", o.isVisible || (o.domNode.setAttribute("monaco-visible-view-zone", "true"), o.isVisible = !0), this._safeCallOnDomNodeTop(o.delegate, e.getScrolledTopFromAbsoluteTop(t[r].verticalOffset))) : (o.isVisible && (o.domNode.removeAttribute("monaco-visible-view-zone"), o.isVisible = !1), this._safeCallOnDomNodeTop(o.delegate, e.getScrolledTopFromAbsoluteTop(-1e6))), o.domNode.setTop(s), o.domNode.setHeight(a), o.domNode.setDisplay(l), o.marginDomNode && (o.marginDomNode.setTop(s), o.marginDomNode.setHeight(a), o.marginDomNode.setDisplay(l))
            }
            i && (this.domNode.setWidth(Math.max(e.scrollWidth, this._contentWidth)), this.marginDomNode.setWidth(this._contentLeft))
        }
    }
    class To {
        constructor(e) {
            this._theme = e
        }
        get type() {
            return this._theme.type
        }
        update(e) {
            this._theme = e
        }
        getColor(e) {
            return this._theme.getColor(e)
        }
    }
    class Mo {
        constructor(e, t, i) {
            this.configuration = e, this.theme = new To(t), this.model = i, this.viewLayout = i.viewLayout
        }
        addEventHandler(e) {
            this.model.addViewEventHandler(e)
        }
        removeEventHandler(e) {
            this.model.removeViewEventHandler(e)
        }
    }
    class Po {
        constructor(e, t, i, n) {
            this.selections = e, this.startLineNumber = 0 | t.startLineNumber, this.endLineNumber = 0 | t.endLineNumber, this.relativeVerticalOffset = t.relativeVerticalOffset, this.bigNumbersDelta = 0 | t.bigNumbersDelta, this.whitespaceViewportData = i, this._model = n, this.visibleRange = new T.a(t.startLineNumber, this._model.getLineMinColumn(t.startLineNumber), t.endLineNumber, this._model.getLineMaxColumn(t.endLineNumber))
        }
        getViewLineRenderingData(e) {
            return this._model.getViewLineRenderingData(this.visibleRange, e)
        }
        getDecorationsInViewport() {
            return this._model.getDecorationsInViewport(this.visibleRange)
        }
    }
    class Ao extends nn {
        constructor(e, t, i, n, r, o) {
            super(), this._selections = [new Hi.a(1, 1, 1, 1)], this._renderAnimationFrame = null, e = new hr(t, n, r, e), this._context = new Mo(t, i.getColorTheme(), n), this._configPixelRatio = this._context.configuration.options.get(127), this._context.addEventHandler(this), this._register(i.onDidColorThemeChange(e => {
                this._context.theme.update(e), this._context.model.onDidColorThemeChange(), this.render(!0, !1)
            })), this._viewParts = [], this._textAreaHandler = new dr(this._context, e, this._createTextAreaHandlerHelper()), this._viewParts.push(this._textAreaHandler), this._linesContent = Object(Ui.b)(document.createElement("div")), this._linesContent.setClassName("lines-content monaco-editor-background"), this._linesContent.setPosition("absolute"), this.domNode = Object(Ui.b)(document.createElement("div")), this.domNode.setClassName(this._getEditorClassName()), this.domNode.setAttribute("role", "code"), this._overflowGuardContainer = Object(Ui.b)(document.createElement("div")), on.write(this._overflowGuardContainer, 3), this._overflowGuardContainer.setClassName("overflow-guard"), this._scrollbar = new Tr(this._context, this._linesContent, this.domNode, this._overflowGuardContainer), this._viewParts.push(this._scrollbar), this._viewLines = new zr(this._context, this._linesContent), this._viewZones = new Io(this._context), this._viewParts.push(this._viewZones);
            const s = new go(this._context);
            this._viewParts.push(s);
            const a = new wo(this._context);
            this._viewParts.push(a);
            const l = new _r(this._context);
            this._viewParts.push(l), l.addDynamicOverlay(new Or(this._context)), l.addDynamicOverlay(new ko(this._context)), l.addDynamicOverlay(new Fr(this._context)), l.addDynamicOverlay(new Nr(this._context));
            const d = new wr(this._context);
            this._viewParts.push(d), d.addDynamicOverlay(new Er(this._context)), d.addDynamicOverlay(new Ar(this._context)), d.addDynamicOverlay(new Ur(this._context)), d.addDynamicOverlay(new Hr(this._context)), d.addDynamicOverlay(new nr(this._context));
            const c = new rr(this._context);
            c.getDomNode().appendChild(this._viewZones.marginDomNode), c.getDomNode().appendChild(d.getDomNode()), this._viewParts.push(c), this._contentWidgets = new Cr(this._context, this.domNode), this._viewParts.push(this._contentWidgets), this._viewCursors = new No(this._context), this._viewParts.push(this._viewCursors), this._overlayWidgets = new ho(this._context), this._viewParts.push(this._overlayWidgets), i = new _o(this._context), this._viewParts.push(i);
            const h = new ao(this._context);
            if (this._viewParts.push(h), s) {
                const e = this._scrollbar.getOverviewRulerLayoutInfo();
                e.parent.insertBefore(s.getDomNode(), e.insertBefore)
            }
            this._linesContent.appendChild(l.getDomNode()), this._linesContent.appendChild(i.domNode), this._linesContent.appendChild(this._viewZones.domNode), this._linesContent.appendChild(this._viewLines.getDomNode()), this._linesContent.appendChild(this._contentWidgets.domNode), this._linesContent.appendChild(this._viewCursors.getDomNode()), this._overflowGuardContainer.appendChild(c.getDomNode()), this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()), this._overflowGuardContainer.appendChild(a.getDomNode()), this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea), this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover), this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()), this._overflowGuardContainer.appendChild(h.getDomNode()), this.domNode.appendChild(this._overflowGuardContainer), o ? o.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode) : this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode), this._applyLayout(), this._pointerHandler = this._register(new Jn(this._context, e, this._createPointerHandlerHelper()))
        }
        _flushAccumulatedAndRenderNow() {
            this._renderNow()
        }
        _createPointerHandlerHelper() {
            return {
                viewDomNode: this.domNode.domNode,
                linesContentDomNode: this._linesContent.domNode,
                focusTextArea: () => {
                    this.focus()
                },
                dispatchTextAreaEvent: e => {
                    this._textAreaHandler.textArea.domNode.dispatchEvent(e)
                },
                getLastRenderData: () => {
                    var e = this._viewCursors.getLastRenderData() || [],
                        t = this._textAreaHandler.getLastRenderData();
                    return new En(e, t)
                },
                shouldSuppressMouseDownOnViewZone: e => this._viewZones.shouldSuppressMouseDownOnViewZone(e),
                shouldSuppressMouseDownOnWidget: e => this._contentWidgets.shouldSuppressMouseDownOnWidget(e),
                getPositionFromDOMInfo: (e, t) => (this._flushAccumulatedAndRenderNow(), this._viewLines.getPositionFromDOMInfo(e, t)),
                visibleRangeForPosition: (e, t) => (this._flushAccumulatedAndRenderNow(), this._viewLines.visibleRangeForPosition(new Re.a(e, t))),
                getLineWidth: e => (this._flushAccumulatedAndRenderNow(), this._viewLines.getLineWidth(e))
            }
        }
        _createTextAreaHandlerHelper() {
            return {
                visibleRangeForPositionRelativeToEditor: (e, t) => (this._flushAccumulatedAndRenderNow(), this._viewLines.visibleRangeForPosition(new Re.a(e, t)))
            }
        }
        _applyLayout() {
            var e = this._context.configuration.options.get(129);
            this.domNode.setWidth(e.width), this.domNode.setHeight(e.height), this._overflowGuardContainer.setWidth(e.width), this._overflowGuardContainer.setHeight(e.height), this._linesContent.setWidth(1e6), this._linesContent.setHeight(1e6)
        }
        _getEditorClassName() {
            var e = this._textAreaHandler.isFocused() ? " focused" : "";
            return this._context.configuration.options.get(126) + " " + Object(ir.e)(this._context.theme.type) + e
        }
        handleEvents(e) {
            super.handleEvents(e), this._scheduleRender()
        }
        on配置Changed(e) {
            return this._configPixelRatio = this._context.configuration.options.get(127), this.domNode.setClassName(this._getEditorClassName()), this._applyLayout(), !1
        }
        onCursorStateChanged(e) {
            return this._selections = e.selections, !1
        }
        onFocusChanged(e) {
            return this.domNode.setClassName(this._getEditorClassName()), !1
        }
        onThemeChanged(e) {
            return this.domNode.setClassName(this._getEditorClassName()), !1
        }
        dispose() {
            null !== this._renderAnimationFrame && (this._renderAnimationFrame.dispose(), this._renderAnimationFrame = null), this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(), this._context.removeEventHandler(this), this._viewLines.dispose();
            for (const e of this._viewParts) e.dispose();
            super.dispose()
        }
        _scheduleRender() {
            null === this._renderAnimationFrame && (this._renderAnimationFrame = s.P(this._onRenderScheduled.bind(this), 100))
        }
        _onRenderScheduled() {
            this._renderAnimationFrame = null, this._flushAccumulatedAndRenderNow()
        }
        _renderNow() {
            ! function(e) {
                try {
                    e()
                } catch (e) {
                    Object(se.f)(e)
                }
            }(() => this._actualRender())
        }
        _getViewPartsToRender() {
            let e = [],
                t = 0;
            for (const i of this._viewParts) i.shouldRender() && (e[t++] = i);
            return e
        }
        _actualRender() {
            if (s.K(this.domNode.domNode)) {
                let i = this._getViewPartsToRender();
                if (this._viewLines.shouldRender() || 0 !== i.length) {
                    var e = this._context.viewLayout.getLinesViewportData();
                    this._context.model.setViewport(e.startLineNumber, e.endLineNumber, e.centeredLineNumber), e = new Po(this._selections, e, this._context.viewLayout.getWhitespaceViewportData(), this._context.model), this._contentWidgets.shouldRender() && this._contentWidgets.onBeforeRender(e), this._viewLines.shouldRender() && (this._viewLines.renderText(e), this._viewLines.onDidRender(), i = this._getViewPartsToRender());
                    var t = new sn(this._context.viewLayout, e, this._viewLines);
                    for (const e of i) e.prepareRender(t);
                    for (const e of i) e.render(t), e.onDidRender();
                    .001 < Math.abs(Ri.a() - this._configPixelRatio) && this._context.configuration.updatePixelRatio()
                }
            }
        }
        delegateVerticalScrollbarMouseDown(e) {
            this._scrollbar.delegateVerticalScrollbarMouseDown(e)
        }
        restoreState(e) {
            this._context.model.setScrollPosition({
                scrollTop: e.scrollTop
            }, 1), this._context.model.tokenizeViewport(), this._renderNow(), this._viewLines.updateLineWidths(), this._context.model.setScrollPosition({
                scrollLeft: e.scrollLeft
            }, 1)
        }
        getOffsetForColumn(e, t) {
            return t = this._context.model.validateModelPosition({
                lineNumber: e,
                column: t
            }), t = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(t), this._flushAccumulatedAndRenderNow(), (t = this._viewLines.visibleRangeForPosition(new Re.a(t.lineNumber, t.column))) ? t.left : -1
        }
        getTargetAtClientPoint(e, t) {
            return (t = this._pointerHandler.getTargetAtClientPoint(e, t)) ? ur.convertViewToModelMouseTarget(t, this._context.model.coordinatesConverter) : null
        }
        createOverviewRuler(e) {
            return new bo(this._context, e)
        }
        change(e) {
            this._viewZones.changeViewZones(e), this._scheduleRender()
        }
        render(e, t) {
            if (t) {
                this._viewLines.forceShouldRender();
                for (const e of this._viewParts) e.forceShouldRender()
            }
            e ? this._flushAccumulatedAndRenderNow() : this._scheduleRender()
        }
        focus() {
            this._textAreaHandler.focusTextArea()
        }
        isFocused() {
            return this._textAreaHandler.isFocused()
        }
        setAriaOptions(e) {
            this._textAreaHandler.setAriaOptions(e)
        }
        addContentWidget(e) {
            this._contentWidgets.addWidget(e.widget), this.layoutContentWidget(e), this._scheduleRender()
        }
        layoutContentWidget(e) {
            let t = e.position && e.position.range || null;
            null !== t || null !== (i = e.position ? e.position.position : null) && (t = new T.a(i.lineNumber, i.column, i.lineNumber, i.column));
            var i = e.position ? e.position.preference : null;
            this._contentWidgets.setWidgetPosition(e.widget, t, i), this._scheduleRender()
        }
        removeContentWidget(e) {
            this._contentWidgets.removeWidget(e.widget), this._scheduleRender()
        }
        addOverlayWidget(e) {
            this._overlayWidgets.addWidget(e.widget), this.layoutOverlayWidget(e), this._scheduleRender()
        }
        layoutOverlayWidget(e) {
            var t = e.position ? e.position.preference : null;
            this._overlayWidgets.setWidgetPosition(e.widget, t) && this._scheduleRender()
        }
        removeOverlayWidget(e) {
            this._overlayWidgets.removeWidget(e.widget), this._scheduleRender()
        }
    }
    class Ro {
        constructor(e) {
            this._selTrackedRange = null, this._trackSelection = !0, this._setState(e, new Sn.f(new T.a(1, 1, 1, 1), 0, new Re.a(1, 1), 0), new Sn.f(new T.a(1, 1, 1, 1), 0, new Re.a(1, 1), 0))
        }
        dispose(e) {
            this._removeTrackedRange(e)
        }
        startTrackingSelection(e) {
            this._trackSelection = !0, this._updateTrackedRange(e)
        }
        stopTrackingSelection(e) {
            this._trackSelection = !1, this._removeTrackedRange(e)
        }
        _updateTrackedRange(e) {
            this._trackSelection && (this._selTrackedRange = e.model._setTrackedRange(this._selTrackedRange, this.modelState.selection, 0))
        }
        _removeTrackedRange(e) {
            this._selTrackedRange = e.model._setTrackedRange(this._selTrackedRange, null, 0)
        }
        asCursorState() {
            return new Sn.d(this.modelState, this.viewState)
        }
        readSelectionFromMarkers(e) {
            return e = e.model._getTrackedRange(this._selTrackedRange), 0 === this.modelState.selection.getDirection() ? new Hi.a(e.startLineNumber, e.startColumn, e.endLineNumber, e.endColumn) : new Hi.a(e.endLineNumber, e.endColumn, e.startLineNumber, e.startColumn)
        }
        ensureValidState(e) {
            this._setState(e, this.modelState, this.viewState)
        }
        setState(e, t, i) {
            this._setState(e, t, i)
        }
        static _validatePositionWithCache(e, t, i, n) {
            return t.equals(i) ? n : e.normalizePosition(t, 2)
        }
        static _validateViewState(e, t) {
            const i = t.position,
                n = t.selectionStart.getStartPosition(),
                r = t.selectionStart.getEndPosition();
            var o = e.normalizePosition(i, 2),
                s = this._validatePositionWithCache(e, n, i, o);
            e = this._validatePositionWithCache(e, r, n, s);
            return i.equals(o) && n.equals(s) && r.equals(e) ? t : new Sn.f(T.a.fromPositions(s, e), t.selectionStartLeftoverVisibleColumns + n.column - s.column, o, t.leftoverVisibleColumns + i.column - o.column)
        }
        _setState(e, t, i) {
            if (i = i && Ro._validateViewState(e.viewModel, i), t) {
                var n = e.model.validateRange(t.selectionStart),
                    r = t.selectionStart.equalsRange(n) ? t.selectionStartLeftoverVisibleColumns : 0,
                    o = e.model.validatePosition(t.position),
                    s = t.position.equals(o) ? t.leftoverVisibleColumns : 0;
                t = new Sn.f(n, r, o, s)
            } else {
                if (!i) return;
                o = e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(i.selectionStart)), s = e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(i.position)), t = new Sn.f(o, i.selectionStartLeftoverVisibleColumns, s, i.leftoverVisibleColumns)
            }
            var a, l;
            i = i ? (a = e.coordinatesConverter.validateViewRange(i.selectionStart, t.selectionStart), l = e.coordinatesConverter.validateViewPosition(i.position, t.position), new Sn.f(a, t.selectionStartLeftoverVisibleColumns, l, t.leftoverVisibleColumns)) : (a = e.coordinatesConverter.convertModelPositionToViewPosition(new Re.a(t.selectionStart.startLineNumber, t.selectionStart.startColumn)), l = e.coordinatesConverter.convertModelPositionToViewPosition(new Re.a(t.selectionStart.endLineNumber, t.selectionStart.endColumn)), a = new T.a(a.lineNumber, a.column, l.lineNumber, l.column), l = e.coordinatesConverter.convertModelPositionToViewPosition(t.position), new Sn.f(a, t.selectionStartLeftoverVisibleColumns, l, t.leftoverVisibleColumns)), this.modelState = t, this.viewState = i, this._updateTrackedRange(e)
        }
    }
    class Fo {
        constructor(e) {
            this.context = e, this.primaryCursor = new Ro(e), this.secondaryCursors = [], this.lastAddedCursorIndex = 0
        }
        dispose() {
            this.primaryCursor.dispose(this.context), this.killSecondaryCursors()
        }
        startTrackingSelections() {
            this.primaryCursor.startTrackingSelection(this.context);
            for (let e = 0, t = this.secondaryCursors.length; e < t; e++) this.secondaryCursors[e].startTrackingSelection(this.context)
        }
        stopTrackingSelections() {
            this.primaryCursor.stopTrackingSelection(this.context);
            for (let e = 0, t = this.secondaryCursors.length; e < t; e++) this.secondaryCursors[e].stopTrackingSelection(this.context)
        }
        updateContext(e) {
            this.context = e
        }
        ensureValidState() {
            this.primaryCursor.ensureValidState(this.context);
            for (let e = 0, t = this.secondaryCursors.length; e < t; e++) this.secondaryCursors[e].ensureValidState(this.context)
        }
        readSelectionFromMarkers() {
            let e = [];
            e[0] = this.primaryCursor.readSelectionFromMarkers(this.context);
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) e[t + 1] = this.secondaryCursors[t].readSelectionFromMarkers(this.context);
            return e
        }
        getAll() {
            let e = [];
            e[0] = this.primaryCursor.asCursorState();
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) e[t + 1] = this.secondaryCursors[t].asCursorState();
            return e
        }
        getViewPositions() {
            let e = [];
            e[0] = this.primaryCursor.viewState.position;
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) e[t + 1] = this.secondaryCursors[t].viewState.position;
            return e
        }
        getTopMostViewPosition() {
            let e = this.primaryCursor.viewState.position;
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) {
                const i = this.secondaryCursors[t].viewState.position;
                i.isBefore(e) && (e = i)
            }
            return e
        }
        getBottomMostViewPosition() {
            let e = this.primaryCursor.viewState.position;
            for (let i = 0, n = this.secondaryCursors.length; i < n; i++) {
                var t = this.secondaryCursors[i].viewState.position;
                e.isBeforeOrEqual(t) && (e = t)
            }
            return e
        }
        getSelections() {
            let e = [];
            e[0] = this.primaryCursor.modelState.selection;
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) e[t + 1] = this.secondaryCursors[t].modelState.selection;
            return e
        }
        getViewSelections() {
            let e = [];
            e[0] = this.primaryCursor.viewState.selection;
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) e[t + 1] = this.secondaryCursors[t].viewState.selection;
            return e
        }
        setSelections(e) {
            this.setStates(Sn.d.fromModelSelections(e))
        }
        getPrimaryCursor() {
            return this.primaryCursor.asCursorState()
        }
        setStates(e) {
            null !== e && (this.primaryCursor.setState(this.context, e[0].modelState, e[0].viewState), this._setSecondaryStates(e.slice(1)))
        }
        _setSecondaryStates(e) {
            var t = this.secondaryCursors.length,
                i = e.length;
            if (t < i) {
                var n = i - t;
                for (let e = 0; e < n; e++) this._addSecondaryCursor()
            } else if (i < t) {
                var r = t - i;
                for (let e = 0; e < r; e++) this._removeSecondaryCursor(this.secondaryCursors.length - 1)
            }
            for (let t = 0; t < i; t++) this.secondaryCursors[t].setState(this.context, e[t].modelState, e[t].viewState)
        }
        killSecondaryCursors() {
            this._setSecondaryStates([])
        }
        _addSecondaryCursor() {
            this.secondaryCursors.push(new Ro(this.context)), this.lastAddedCursorIndex = this.secondaryCursors.length
        }
        getLastAddedCursorIndex() {
            return 0 === this.secondaryCursors.length || 0 === this.lastAddedCursorIndex ? 0 : this.lastAddedCursorIndex
        }
        _removeSecondaryCursor(e) {
            this.lastAddedCursorIndex >= e + 1 && this.lastAddedCursorIndex--, this.secondaryCursors[e].dispose(this.context), this.secondaryCursors.splice(e, 1)
        }
        _getAll() {
            let e = [];
            e[0] = this.primaryCursor;
            for (let t = 0, i = this.secondaryCursors.length; t < i; t++) e[t + 1] = this.secondaryCursors[t];
            return e
        }
        normalize() {
            if (0 !== this.secondaryCursors.length) {
                let a = this._getAll(),
                    l = [];
                for (let e = 0, t = a.length; e < t; e++) l.push({
                    index: e,
                    selection: a[e].modelState.selection
                });
                l.sort((e, t) => e.selection.startLineNumber === t.selection.startLineNumber ? e.selection.startColumn - t.selection.startColumn : e.selection.startLineNumber - t.selection.startLineNumber);
                for (let d = 0; d < l.length - 1; d++) {
                    var e = l[d],
                        t = l[d + 1];
                    const c = e.selection,
                        h = t.selection;
                    if (this.context.cursorConfig.multiCursorMergeOverlapping) {
                        let u;
                        if (u = h.isEmpty() || c.isEmpty() ? h.getStartPosition().isBeforeOrEqual(c.getEndPosition()) : h.getStartPosition().isBefore(c.getEndPosition()), u) {
                            var i = e.index < t.index ? d : d + 1,
                                n = e.index < t.index ? d + 1 : d,
                                r = l[n].index,
                                o = l[i].index;
                            const c = l[n].selection;
                            var s = l[i].selection;
                            if (!c.equalsSelection(s)) {
                                let n, d;
                                e = c.plusRange(s), t = c.selectionStartLineNumber === c.startLineNumber && c.selectionStartColumn === c.startColumn, s = s.selectionStartLineNumber === s.startLineNumber && s.selectionStartColumn === s.startColumn, r === this.lastAddedCursorIndex ? (n = t, this.lastAddedCursorIndex = o) : n = s, d = n ? new Hi.a(e.startLineNumber, e.startColumn, e.endLineNumber, e.endColumn) : new Hi.a(e.endLineNumber, e.endColumn, e.startLineNumber, e.startColumn), l[i].selection = d, i = Sn.d.fromModelSelection(d), a[o].setState(this.context, i.modelState, i.viewState)
                            }
                            for (const e of l) e.index > r && e.index--;
                            a.splice(r, 1), l.splice(n, 1), this._removeSecondaryCursor(r - 1), d--
                        }
                    }
                }
            }
        }
    }
    var jo = i(141),
        Bo = i(120),
        Vo = i(72);
    class Wo {
        constructor() {
            this.type = 0
        }
    }
    class zo {
        constructor() {
            this.type = 1
        }
    }
    class Ho {
        constructor(e) {
            this.type = 2, this._source = e
        }
        hasChanged(e) {
            return this._source.hasChanged(e)
        }
    }
    class Uo {
        constructor(e, t) {
            this.type = 3, this.selections = e, this.modelSelections = t
        }
    }
    class Ko {
        constructor(e) {
            this.type = 4, e ? (this.affectsMinimap = e.affectsMinimap, this.affectsOverviewRuler = e.affectsOverviewRuler) : (this.affectsMinimap = !0, this.affectsOverviewRuler = !0)
        }
    }
    class $o {
        constructor() {
            this.type = 5
        }
    }
    class qo {
        constructor(e) {
            this.type = 6, this.isFocused = e
        }
    }
    class Go {
        constructor() {
            this.type = 7
        }
    }
    class Yo {
        constructor() {
            this.type = 8
        }
    }
    class Zo {
        constructor(e, t) {
            this.type = 9, this.fromLineNumber = e, this.toLineNumber = t
        }
    }
    class Xo {
        constructor(e, t) {
            this.type = 10, this.fromLineNumber = e, this.toLineNumber = t
        }
    }
    class Qo {
        constructor(e, t) {
            this.type = 11, this.fromLineNumber = e, this.toLineNumber = t
        }
    }
    class Jo {
        constructor(e, t, i, n, r, o) {
            this.type = 12, this.source = e, this.range = t, this.selections = i, this.verticalType = n, this.revealHorizontal = r, this.scrollType = o
        }
    }
    class es {
        constructor(e) {
            this.type = 13, this.scrollWidth = e.scrollWidth, this.scrollLeft = e.scrollLeft, this.scrollHeight = e.scrollHeight, this.scrollTop = e.scrollTop, this.scrollWidthChanged = e.scrollWidthChanged, this.scrollLeftChanged = e.scrollLeftChanged, this.scrollHeightChanged = e.scrollHeightChanged, this.scrollTopChanged = e.scrollTopChanged
        }
    }
    class ts {
        constructor() {
            this.type = 14
        }
    }
    class is {
        constructor(e) {
            this.type = 15, this.ranges = e
        }
    }
    class ns {
        constructor() {
            this.type = 16
        }
    }
    class rs {
        constructor() {
            this.type = 17
        }
    }
    class os extends v.a {
        constructor() {
            super(), this._onEvent = this._register(new D.b), this.onEvent = this._onEvent.event, this._eventHandlers = [], this._viewEventQueue = null, this._isConsumingViewEventQueue = !1, this._collector = null, this._collectorCnt = 0, this._outgoingEvents = []
        }
        emitOutgoingEvent(e) {
            this._addOutgoingEvent(e), this._emitOutgoingEvents()
        }
        _addOutgoingEvent(e) {
            for (let t = 0, i = this._outgoingEvents.length; t < i; t++)
                if (this._outgoingEvents[t].kind === e.kind) return void(this._outgoingEvents[t] = this._outgoingEvents[t].merge(e));
            this._outgoingEvents.push(e)
        }
        _emitOutgoingEvents() {
            for (; 0 < this._outgoingEvents.length;) {
                if (this._collector || this._isConsumingViewEventQueue) return;
                const e = this._outgoingEvents.shift();
                e.isNoOp() || this._onEvent.fire(e)
            }
        }
        addViewEventHandler(e) {
            for (let t = 0, i = this._eventHandlers.length; t < i; t++) this._eventHandlers[t] === e && console.warn("Detected duplicate listener in ViewEventDispatcher", e);
            this._eventHandlers.push(e)
        }
        removeViewEventHandler(e) {
            for (let t = 0; t < this._eventHandlers.length; t++)
                if (this._eventHandlers[t] === e) {
                    this._eventHandlers.splice(t, 1);
                    break
                }
        }
        beginEmitViewEvents() {
            return this._collectorCnt++, 1 === this._collectorCnt && (this._collector = new ss), this._collector
        }
        endEmitViewEvents() {
            if (this._collectorCnt--, 0 === this._collectorCnt) {
                var e = this._collector.outgoingEvents,
                    t = this._collector.viewEvents;
                this._collector = null;
                for (const t of e) this._addOutgoingEvent(t);
                0 < t.length && this._emitMany(t)
            }
            this._emitOutgoingEvents()
        }
        emitSingleViewEvent(e) {
            try {
                this.beginEmitViewEvents().emitViewEvent(e)
            } finally {
                this.endEmitViewEvents()
            }
        }
        _emitMany(e) {
            this._viewEventQueue ? this._viewEventQueue = this._viewEventQueue.concat(e) : this._viewEventQueue = e, this._isConsumingViewEventQueue || this._consumeViewEventQueue()
        }
        _consumeViewEventQueue() {
            try {
                this._isConsumingViewEventQueue = !0, this._doConsumeQueue()
            } finally {
                this._isConsumingViewEventQueue = !1
            }
        }
        _doConsumeQueue() {
            for (; this._viewEventQueue;) {
                var e = this._viewEventQueue;
                this._viewEventQueue = null;
                for (const t of this._eventHandlers.slice(0)) t.handleEvents(e)
            }
        }
    }
    class ss {
        constructor() {
            this.viewEvents = [], this.outgoingEvents = []
        }
        emitViewEvent(e) {
            this.viewEvents.push(e)
        }
        emitOutgoingEvent(e) {
            this.outgoingEvents.push(e)
        }
    }
    class as {
        constructor(e, t, i, n) {
            this.kind = 0, this._oldContentWidth = e, this._oldContentHeight = t, this.contentWidth = i, this.contentHeight = n, this.contentWidthChanged = this._oldContentWidth !== this.contentWidth, this.contentHeightChanged = this._oldContentHeight !== this.contentHeight
        }
        isNoOp() {
            return !this.contentWidthChanged && !this.contentHeightChanged
        }
        merge(e) {
            return 0 !== e.kind ? this : new as(this._oldContentWidth, this._oldContentHeight, e.contentWidth, e.contentHeight)
        }
    }
    class ls {
        constructor(e, t) {
            this.kind = 1, this.oldHasFocus = e, this.hasFocus = t
        }
        isNoOp() {
            return this.oldHasFocus === this.hasFocus
        }
        merge(e) {
            return 1 !== e.kind ? this : new ls(this.oldHasFocus, e.hasFocus)
        }
    }
    class ds {
        constructor(e, t, i, n, r, o, s, a) {
            this.kind = 2, this._oldScrollWidth = e, this._oldScrollLeft = t, this._oldScrollHeight = i, this._oldScrollTop = n, this.scrollWidth = r, this.scrollLeft = o, this.scrollHeight = s, this.scrollTop = a, this.scrollWidthChanged = this._oldScrollWidth !== this.scrollWidth, this.scrollLeftChanged = this._oldScrollLeft !== this.scrollLeft, this.scrollHeightChanged = this._oldScrollHeight !== this.scrollHeight, this.scrollTopChanged = this._oldScrollTop !== this.scrollTop
        }
        isNoOp() {
            return !(this.scrollWidthChanged || this.scrollLeftChanged || this.scrollHeightChanged || this.scrollTopChanged)
        }
        merge(e) {
            return 2 !== e.kind ? this : new ds(this._oldScrollWidth, this._oldScrollLeft, this._oldScrollHeight, this._oldScrollTop, e.scrollWidth, e.scrollLeft, e.scrollHeight, e.scrollTop)
        }
    }
    class cs {
        constructor() {
            this.kind = 3
        }
        isNoOp() {
            return !1
        }
        merge(e) {
            return this
        }
    }
    class hs {
        constructor(e, t, i, n, r, o, s) {
            this.kind = 6, this.oldSelections = e, this.selections = t, this.oldModelVersionId = i, this.modelVersionId = n, this.source = r, this.reason = o, this.reachedMaxCursorCount = s
        }
        static _selectionsAreEqual(e, t) {
            if (!e && !t) return !0;
            if (!e || !t) return !1;
            var i = e.length;
            if (i !== t.length) return !1;
            for (let n = 0; n < i; n++)
                if (!e[n].equalsSelection(t[n])) return !1;
            return !0
        }
        isNoOp() {
            return hs._selectionsAreEqual(this.oldSelections, this.selections) && this.oldModelVersionId === this.modelVersionId
        }
        merge(e) {
            return 6 !== e.kind ? this : new hs(this.oldSelections, e.selections, this.oldModelVersionId, e.modelVersionId, e.source, e.reason, this.reachedMaxCursorCount || e.reachedMaxCursorCount)
        }
    }
    class us {
        constructor() {
            this.kind = 5
        }
        isNoOp() {
            return !1
        }
        merge(e) {
            return this
        }
    }
    class ps {
        constructor(e, t) {
            this.modelVersionId = e.getVersionId(), this.cursorState = t.getCursorStates()
        }
        equals(e) {
            if (!e) return !1;
            if (this.modelVersionId !== e.modelVersionId) return !1;
            if (this.cursorState.length !== e.cursorState.length) return !1;
            for (let t = 0, i = this.cursorState.length; t < i; t++)
                if (!this.cursorState[t].equals(e.cursorState[t])) return !1;
            return !0
        }
    }
    class gs {
        constructor(e, t, i) {
            this._model = e, this._autoClosedCharactersDecorations = t, this._autoClosedEnclosingDecorations = i
        }
        static getAllAutoClosedCharacters(e) {
            let t = [];
            for (const i of e) t = t.concat(i.getAutoClosedCharactersRanges());
            return t
        }
        dispose() {
            this._autoClosedCharactersDecorations = this._model.deltaDecorations(this._autoClosedCharactersDecorations, []), this._autoClosedEnclosingDecorations = this._model.deltaDecorations(this._autoClosedEnclosingDecorations, [])
        }
        getAutoClosedCharactersRanges() {
            let e = [];
            for (let i = 0; i < this._autoClosedCharactersDecorations.length; i++) {
                var t = this._model.getDecorationRange(this._autoClosedCharactersDecorations[i]);
                t && e.push(t)
            }
            return e
        }
        isValid(e) {
            let t = [];
            for (let e = 0; e < this._autoClosedEnclosingDecorations.length; e++) {
                var i = this._model.getDecorationRange(this._autoClosedEnclosingDecorations[e]);
                if (i && (t.push(i), i.startLineNumber !== i.endLineNumber)) return !1
            }
            t.sort(T.a.compareRangesUsingStarts), e.sort(T.a.compareRangesUsingStarts);
            for (let i = 0; i < e.length; i++) {
                if (i >= t.length) return !1;
                if (!t[i].strictContainsRange(e[i])) return !1
            }
            return !0
        }
    }
    class fs extends v.a {
        constructor(e, t, i, n) {
            super(), this._model = e, this._knownModelVersionId = this._model.getVersionId(), this._viewModel = t, this._coordinatesConverter = i, this.context = new Sn.c(this._model, this._viewModel, this._coordinatesConverter, n), this._cursors = new Fo(this.context), this._hasFocus = !1, this._isHandling = !1, this._isDoingComposition = !1, this._selectionsWhenCompositionStarted = null, this._columnSelectData = null, this._autoClosedActions = [], this._prevEditOperationType = 0
        }
        dispose() {
            this._cursors.dispose(), this._autoClosedActions = Object(v.f)(this._autoClosedActions), super.dispose()
        }
        update配置(e) {
            this.context = new Sn.c(this._model, this._viewModel, this._coordinatesConverter, e), this._cursors.updateContext(this.context)
        }
        onLineMappingChanged(e) {
            this._knownModelVersionId === this._model.getVersionId() && this.setStates(e, "viewModel", 0, this.getCursorStates())
        }
        setHasFocus(e) {
            this._hasFocus = e
        }
        _validateAutoClosedActions() {
            if (0 < this._autoClosedActions.length) {
                var e = this._cursors.getSelections();
                for (let t = 0; t < this._autoClosedActions.length; t++) {
                    const i = this._autoClosedActions[t];
                    i.isValid(e) || (i.dispose(), this._autoClosedActions.splice(t, 1), t--)
                }
            }
        }
        getPrimaryCursorState() {
            return this._cursors.getPrimaryCursor()
        }
        getLastAddedCursorIndex() {
            return this._cursors.getLastAddedCursorIndex()
        }
        getCursorStates() {
            return this._cursors.getAll()
        }
        setStates(e, t, i, n) {
            let r = !1;
            null !== n && n.length > fs.MAX_CURSOR_COUNT && (n = n.slice(0, fs.MAX_CURSOR_COUNT), r = !0);
            var o = new ps(this._model, this);
            return this._cursors.setStates(n), this._cursors.normalize(), this._columnSelectData = null, this._validateAutoClosedActions(), this._emitStateChangedIfNecessary(e, t, i, o, r)
        }
        setCursorColumnSelectData(e) {
            this._columnSelectData = e
        }
        revealPrimary(e, t, i, n) {
            var r = this._cursors.getViewPositions();
            1 < r.length ? this._emitCursorRevealRange(e, t, null, this._cursors.getViewSelections(), 0, i, n) : (r = r[0], r = new T.a(r.lineNumber, r.column, r.lineNumber, r.column), this._emitCursorRevealRange(e, t, r, null, 0, i, n))
        }
        _revealPrimaryCursor(e, t, i, n, r) {
            var o = this._cursors.getViewPositions();
            1 < o.length ? this._emitCursorRevealRange(e, t, null, this._cursors.getViewSelections(), i, n, r) : (o = o[0], o = new T.a(o.lineNumber, o.column, o.lineNumber, o.column), this._emitCursorRevealRange(e, t, o, null, i, n, r))
        }
        _emitCursorRevealRange(e, t, i, n, r, o, s) {
            e.emitViewEvent(new Jo(t, i, n, r, o, s))
        }
        saveState() {
            let e = [];
            var t = this._cursors.getSelections();
            for (let i = 0, n = t.length; i < n; i++) {
                const n = t[i];
                e.push({
                    inSelectionMode: !n.isEmpty(),
                    selectionStart: {
                        lineNumber: n.selectionStartLineNumber,
                        column: n.selectionStartColumn
                    },
                    position: {
                        lineNumber: n.positionLineNumber,
                        column: n.positionColumn
                    }
                })
            }
            return e
        }
        restoreState(e, t) {
            let i = [];
            for (let e = 0, r = t.length; e < r; e++) {
                var n = t[e];
                let r = 1,
                    o = 1;
                n.position && n.position.lineNumber && (r = n.position.lineNumber), n.position && n.position.column && (o = n.position.column);
                let s = r,
                    a = o;
                n.selectionStart && n.selectionStart.lineNumber && (s = n.selectionStart.lineNumber), n.selectionStart && n.selectionStart.column && (a = n.selectionStart.column), i.push({
                    selectionStartLineNumber: s,
                    selectionStartColumn: a,
                    positionLineNumber: r,
                    positionColumn: o
                })
            }
            this.setStates(e, "restoreState", 0, Sn.d.fromModelSelections(i)), this.revealPrimary(e, "restoreState", !0, 1)
        }
        onModelContentChanged(e, t) {
            var i, n;
            if (t instanceof Vo.c) {
                if (!this._isHandling) {
                    this._isHandling = !0;
                    try {
                        this.setStates(e, "modelChange", 0, this.getCursorStates())
                    } finally {
                        this._isHandling = !1
                    }
                }
            } else this._knownModelVersionId = t.versionId, this._isHandling || (i = t.containsEvent(1), this._prevEditOperationType = 0, i ? (this._cursors.dispose(), this._cursors = new Fo(this.context), this._validateAutoClosedActions(), this._emitStateChangedIfNecessary(e, "model", 1, null, !1)) : this._hasFocus && t.resultingSelection && 0 < t.resultingSelection.length ? (n = Sn.d.fromModelSelections(t.resultingSelection), this.setStates(e, "modelChange", t.isUndoing ? 5 : t.isRedoing ? 6 : 2, n) && this._revealPrimaryCursor(e, "modelChange", 0, !0, 0)) : (n = this._cursors.readSelectionFromMarkers(), this.setStates(e, "modelChange", 2, Sn.d.fromModelSelections(n))))
        }
        getSelection() {
            return this._cursors.getPrimaryCursor().modelState.selection
        }
        getTopMostViewPosition() {
            return this._cursors.getTopMostViewPosition()
        }
        getBottomMostViewPosition() {
            return this._cursors.getBottomMostViewPosition()
        }
        getCursorColumnSelectData() {
            if (this._columnSelectData) return this._columnSelectData;
            const e = this._cursors.getPrimaryCursor();
            var t = e.viewState.selectionStart.getStartPosition(),
                i = e.viewState.position;
            return {
                isReal: !1,
                fromViewLineNumber: t.lineNumber,
                fromViewVisualColumn: Sn.a.visibleColumnFromColumn2(this.context.cursorConfig, this._viewModel, t),
                toViewLineNumber: i.lineNumber,
                toViewVisualColumn: Sn.a.visibleColumnFromColumn2(this.context.cursorConfig, this._viewModel, i)
            }
        }
        getSelections() {
            return this._cursors.getSelections()
        }
        setSelections(e, t, i, n) {
            this.setStates(e, t, n, Sn.d.fromModelSelections(i))
        }
        getPrevEditOperationType() {
            return this._prevEditOperationType
        }
        setPrevEditOperationType(e) {
            this._prevEditOperationType = e
        }
        _pushAutoClosedAction(e, t) {
            let i = [],
                n = [];
            for (let r = 0, o = e.length; r < o; r++) i.push({
                range: e[r],
                options: {
                    description: "auto-closed-character",
                    inlineClassName: "auto-closed-character",
                    stickiness: 1
                }
            }), n.push({
                range: t[r],
                options: {
                    description: "auto-closed-enclosing",
                    stickiness: 1
                }
            });
            var r = this._model.deltaDecorations([], i),
                o = this._model.deltaDecorations([], n);
            this._autoClosedActions.push(new gs(this._model, r, o))
        }
        _executeEditOperation(e) {
            if (e) {
                e.shouldPushStackElementBefore && this._model.pushStackElement();
                var t = class {
                    static executeCommands(e, t, i) {
                        const n = {
                            model: e,
                            selectionsBefore: t,
                            trackedRanges: [],
                            trackedRangesDirection: []
                        };
                        i = this._innerExecuteCommands(n, i);
                        for (let e = 0, t = n.trackedRanges.length; e < t; e++) n.model._setTrackedRange(n.trackedRanges[e], null, 0);
                        return i
                    }
                    static _innerExecuteCommands(e, t) {
                        if (this._arrayIsEmpty(t)) return null;
                        var i, n = this._getEditOperations(e, t);
                        if (0 === n.operations.length) return null;
                        const r = n.operations,
                            o = this._getLoserCursorMap(r);
                        if (o.hasOwnProperty("0")) return console.warn("Ignoring commands"), null;
                        let s = [];
                        for (let e = 0, t = r.length; e < t; e++) o.hasOwnProperty(r[e].identifier.major.toString()) || s.push(r[e]);
                        n.hadTrackedEditOperation && 0 < s.length && (s[0]._isTracked = !0);
                        let a = e.model.pushEditOperations(e.selectionsBefore, s, i => {
                            let n = [];
                            for (let t = 0; t < e.selectionsBefore.length; t++) n[t] = [];
                            for (const e of i) e.identifier && n[e.identifier.major].push(e);
                            var r = (e, t) => e.identifier.minor - t.identifier.minor;
                            let o = [];
                            for (let i = 0; i < e.selectionsBefore.length; i++) 0 < n[i].length ? (n[i].sort(r), o[i] = t[i].computeCursorState(e.model, {
                                getInverseEditOperations: () => n[i],
                                getTrackedSelection: t => {
                                    var i = parseInt(t, 10);
                                    t = e.model._getTrackedRange(e.trackedRanges[i]);
                                    return 0 === e.trackedRangesDirection[i] ? new Hi.a(t.startLineNumber, t.startColumn, t.endLineNumber, t.endColumn) : new Hi.a(t.endLineNumber, t.endColumn, t.startLineNumber, t.startColumn)
                                }
                            })) : o[i] = e.selectionsBefore[i];
                            return o
                        });
                        a = a || e.selectionsBefore;
                        let l = [];
                        for (i in o) o.hasOwnProperty(i) && l.push(parseInt(i, 10));
                        l.sort((e, t) => t - e);
                        for (const e of l) a.splice(e, 1);
                        return a
                    }
                    static _arrayIsEmpty(e) {
                        for (let t = 0, i = e.length; t < i; t++)
                            if (e[t]) return !1;
                        return !0
                    }
                    static _getEditOperations(e, t) {
                        let i = [],
                            n = !1;
                        for (let o = 0, s = t.length; o < s; o++) {
                            var r = t[o];
                            r && (r = this._getEditOperationsFromCommand(e, o, r), i = i.concat(r.operations), n = n || r.hadTrackedEditOperation)
                        }
                        return {
                            operations: i,
                            hadTrackedEditOperation: n
                        }
                    }
                    static _getEditOperationsFromCommand(e, t, i) {
                        let n = [],
                            r = 0;
                        const o = (e, o, s = !1) => {
                            T.a.isEmpty(e) && "" === o || n.push({
                                identifier: {
                                    major: t,
                                    minor: r++
                                },
                                range: e,
                                text: o,
                                forceMoveMarkers: s,
                                isAutoWhitespaceEdit: i.insertsAutoWhitespace
                            })
                        };
                        let s = !1;
                        var a = {
                            addEditOperation: o,
                            addTrackedEditOperation: (e, t, i) => {
                                s = !0, o(e, t, i)
                            },
                            trackSelection: (t, i) => {
                                const n = Hi.a.liftSelection(t);
                                let r;
                                r = n.isEmpty() ? "boolean" == typeof i ? i ? 2 : 3 : (s = e.model.getLineMaxColumn(n.startLineNumber), n.startColumn === s ? 2 : 3) : 1;
                                const o = e.trackedRanges.length;
                                var s = e.model._setTrackedRange(null, n, r);
                                return e.trackedRanges[o] = s, e.trackedRangesDirection[o] = n.getDirection(), o.toString()
                            }
                        };
                        try {
                            i.getEditOperations(e.model, a)
                        } catch (a) {
                            return Object(se.f)(a), {
                                operations: [],
                                hadTrackedEditOperation: !1
                            }
                        }
                        return {
                            operations: n,
                            hadTrackedEditOperation: s
                        }
                    }
                    static _getLoserCursorMap(e) {
                        (e = e.slice(0)).sort((e, t) => -T.a.compareRangesUsingEnds(e.range, t.range));
                        let t = {};
                        for (let r = 1; r < e.length; r++) {
                            var i = e[r - 1],
                                n = e[r];
                            if (T.a.getStartPosition(i.range).isBefore(T.a.getEndPosition(n.range))) {
                                let o;
                                o = (i.identifier.major > n.identifier.major ? i : n).identifier.major, t[o.toString()] = !0;
                                for (let t = 0; t < e.length; t++) e[t].identifier.major === o && (e.splice(t, 1), t < r && r--, t--);
                                0 < r && r--
                            }
                        }
                        return t
                    }
                }.executeCommands(this._model, this._cursors.getSelections(), e.commands);
                if (t) {
                    this._interpretCommandResult(t);
                    let n = [],
                        r = [];
                    for (let t = 0; t < e.commands.length; t++) {
                        var i = e.commands[t];
                        i instanceof Bo.b && i.enclosingRange && i.closeCharacterRange && (n.push(i.closeCharacterRange), r.push(i.enclosingRange))
                    }
                    0 < n.length && this._pushAutoClosedAction(n, r), this._prevEditOperationType = e.type
                }
                e.shouldPushStackElementAfter && this._model.pushStackElement()
            }
        }
        _interpretCommandResult(e) {
            e && 0 !== e.length || (e = this._cursors.readSelectionFromMarkers()), this._columnSelectData = null, this._cursors.setSelections(e), this._cursors.normalize()
        }
        _emitStateChangedIfNecessary(e, t, i, n, r) {
            const o = new ps(this._model, this);
            if (o.equals(n)) return !1;
            var s, a = this._cursors.getSelections(),
                l = this._cursors.getViewSelections();
            return e.emitViewEvent(new Uo(l, a)), n && n.cursorState.length === o.cursorState.length && !o.cursorState.some((e, t) => !e.modelState.equals(n.cursorState[t].modelState)) || (s = n ? n.cursorState.map(e => e.modelState.selection) : null, l = n ? n.modelVersionId : 0, e.emitOutgoingEvent(new hs(s, a, l, o.modelVersionId, t || "keyboard", i, r))), !0
        }
        _findAutoClosingPairs(e) {
            if (!e.length) return null;
            let t = [];
            for (let r = 0, o = e.length; r < o; r++) {
                const o = e[r];
                if (!o.text || 0 <= o.text.indexOf("\n")) return null;
                var i = o.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);
                if (!i) return null;
                var n = i[1];
                if (!(n = this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(n)) || 1 !== n.length) return null;
                if (n = n[0].open, i = o.text.length - i[2].length - 1, -1 === (n = o.text.lastIndexOf(n, i - 1))) return null;
                t.push([n, i])
            }
            return t
        }
        executeEdits(e, t, i, n) {
            let r = null;
            "snippet" === t && (r = this._findAutoClosingPairs(i)), r && (i[0]._isTracked = !0);
            let o = [],
                s = [];
            (i = this._model.pushEditOperations(this.getSelections(), i, e => {
                if (r)
                    for (let n = 0, d = r.length; n < d; n++) {
                        var [t, i] = r[n], a = e[n], l = a.range.startLineNumber, t = a.range.startColumn - 1 + t, i = a.range.startColumn - 1 + i;
                        o.push(new T.a(l, i + 1, l, i + 2)), s.push(new T.a(l, t + 1, l, i + 2))
                    }
                var d = n(e);
                return d && (this._isHandling = !0), d
            })) && (this._isHandling = !1, this.setSelections(e, t, i, 0)), 0 < o.length && this._pushAutoClosedAction(o, s)
        }
        _executeEdit(e, t, i, n = 0) {
            if (!this.context.cursorConfig.readOnly) {
                var r = new ps(this._model, this);
                this._cursors.stopTrackingSelections(), this._isHandling = !0;
                try {
                    this._cursors.ensureValidState(), e()
                } catch (e) {
                    Object(se.f)(e)
                }
                this._isHandling = !1, this._cursors.startTrackingSelections(), this._validateAutoClosedActions(), this._emitStateChangedIfNecessary(t, i, n, r, !1) && this._revealPrimaryCursor(t, i, 0, !0, 0)
            }
        }
        setIsDoingComposition(e) {
            this._isDoingComposition = e
        }
        getAutoClosedCharacters() {
            return gs.getAllAutoClosedCharacters(this._autoClosedActions)
        }
        startComposition(e) {
            this._selectionsWhenCompositionStarted = this.getSelections().slice(0)
        }
        endComposition(e, t) {
            this._executeEdit(() => {
                "keyboard" === t && (this._executeEditOperation(Bo.a.compositionEndWithInterceptors(this._prevEditOperationType, this.context.cursorConfig, this._model, this._selectionsWhenCompositionStarted, this.getSelections(), this.getAutoClosedCharacters())), this._selectionsWhenCompositionStarted = null)
            }, e, t)
        }
        type(e, t, i) {
            this._executeEdit(() => {
                if ("keyboard" === i) {
                    var e = t.length;
                    let i = 0;
                    for (; i < e;) {
                        var n = b.K(t, i),
                            r = t.substr(i, n);
                        this._executeEditOperation(Bo.a.typeWithInterceptors(this._isDoingComposition, this._prevEditOperationType, this.context.cursorConfig, this._model, this.getSelections(), this.getAutoClosedCharacters(), r)), i += n
                    }
                } else this._executeEditOperation(Bo.a.typeWithoutInterceptors(this._prevEditOperationType, this.context.cursorConfig, this._model, this.getSelections(), t))
            }, e, i)
        }
        compositionType(e, t, i, n, r, o) {
            var s;
            0 !== t.length || 0 !== i || 0 !== n ? this._executeEdit(() => {
                this._executeEditOperation(Bo.a.compositionType(this._prevEditOperationType, this.context.cursorConfig, this._model, this.getSelections(), t, i, n, r))
            }, e, o) : 0 !== r && (s = this.getSelections().map(e => (e = e.getPosition(), new Hi.a(e.lineNumber, e.column + r, e.lineNumber, e.column + r))), this.setSelections(e, o, s, 0))
        }
        paste(e, t, i, n, r) {
            this._executeEdit(() => {
                this._executeEditOperation(Bo.a.paste(this.context.cursorConfig, this._model, this.getSelections(), t, i, n || []))
            }, e, r, 4)
        }
        cut(e, t) {
            this._executeEdit(() => {
                this._executeEditOperation(jo.a.cut(this.context.cursorConfig, this._model, this.getSelections()))
            }, e, t)
        }
        executeCommand(e, t, i) {
            this._executeEdit(() => {
                this._cursors.killSecondaryCursors(), this._executeEditOperation(new Sn.e(0, [t], {
                    shouldPushStackElementBefore: !1,
                    shouldPushStackElementAfter: !1
                }))
            }, e, i)
        }
        executeCommands(e, t, i) {
            this._executeEdit(() => {
                this._executeEditOperation(new Sn.e(0, t, {
                    shouldPushStackElementBefore: !1,
                    shouldPushStackElementAfter: !1
                }))
            }, e, i)
        }
    }
    fs.MAX_CURSOR_COUNT = 1e4;
    class ms {
        constructor(e, t, i, n, r, o) {
            this.id = e, this.label = t, this.alias = i, this._precondition = n, this._run = r, this._contextKeyService = o
        }
        isSupported() {
            return this._contextKeyService.contextMatchesRules(this._precondition)
        }
        run() {
            return this.isSupported() ? this._run() : Promise.resolve(void 0)
        }
    }
    var vs = i(21),
        bs = i(133);
    class _s {
        constructor() {
            this._hasPending = !1, this._inserts = [], this._changes = [], this._removes = []
        }
        insert(e) {
            this._hasPending = !0, this._inserts.push(e)
        }
        change(e) {
            this._hasPending = !0, this._changes.push(e)
        }
        remove(e) {
            this._hasPending = !0, this._removes.push(e)
        }
        mustCommit() {
            return this._hasPending
        }
        commit(e) {
            var t, i, n;
            this._hasPending && (t = this._inserts, i = this._changes, n = this._removes, this._hasPending = !1, this._inserts = [], this._changes = [], this._removes = [], e._commitPendingChanges(t, i, n))
        }
    }
    class ws {
        constructor(e, t, i, n, r) {
            this.id = e, this.afterLineNumber = t, this.ordinal = i, this.height = n, this.minWidth = r, this.prefixSum = 0
        }
    }
    class ys {
        constructor(e, t, i, n) {
            this._instanceId = b.P(++ys.INSTANCE_COUNT), this._pendingChanges = new _s, this._lastWhitespaceId = 0, this._arr = [], this._prefixSumValidIndex = -1, this._minWidth = -1, this._lineCount = e, this._lineHeight = t, this._paddingTop = i, this._paddingBottom = n
        }
        static findInsertionIndex(e, t, i) {
            let n = 0,
                r = e.length;
            for (; n < r;) {
                var o = n + r >>> 1;
                t === e[o].afterLineNumber ? i < e[o].ordinal ? r = o : n = 1 + o : t < e[o].afterLineNumber ? r = o : n = 1 + o
            }
            return n
        }
        setLineHeight(e) {
            this._checkPendingChanges(), this._lineHeight = e
        }
        setPadding(e, t) {
            this._paddingTop = e, this._paddingBottom = t
        }
        onFlushed(e) {
            this._checkPendingChanges(), this._lineCount = e
        }
        changeWhitespace(e) {
            let t = !1;
            try {
                e({
                    insertWhitespace: (e, i, n, r) => {
                        t = !0, e |= 0, i |= 0, n |= 0, r |= 0;
                        var o = this._instanceId + ++this._lastWhitespaceId;
                        return this._pendingChanges.insert(new ws(o, e, i, n, r)), o
                    },
                    changeOneWhitespace: (e, i, n) => {
                        t = !0, this._pendingChanges.change({
                            id: e,
                            newAfterLineNumber: i |= 0,
                            newHeight: n |= 0
                        })
                    },
                    removeWhitespace: e => {
                        t = !0, this._pendingChanges.remove({
                            id: e
                        })
                    }
                })
            } finally {
                this._pendingChanges.commit(this)
            }
            return t
        }
        _commitPendingChanges(e, t, i) {
            if ((0 < e.length || 0 < i.length) && (this._minWidth = -1), e.length + t.length + i.length <= 1) {
                for (const t of e) this._insertWhitespace(t);
                for (const e of t) this._changeOneWhitespace(e.id, e.newAfterLineNumber, e.newHeight);
                for (const e of i) {
                    var n = this._findWhitespaceIndex(e.id); - 1 !== n && this._removeWhitespace(n)
                }
            } else {
                const n = new Set;
                for (const e of i) n.add(e.id);
                const r = new Map;
                for (const e of t) r.set(e.id, e);
                const o = (t = e => {
                    let t = [];
                    for (const o of e) {
                        var i;
                        n.has(o.id) || (r.has(o.id) && (i = r.get(o.id), o.afterLineNumber = i.newAfterLineNumber, o.height = i.newHeight), t.push(o))
                    }
                    return t
                })(this._arr).concat(t(e));
                o.sort((e, t) => e.afterLineNumber === t.afterLineNumber ? e.ordinal - t.ordinal : e.afterLineNumber - t.afterLineNumber), this._arr = o, this._prefixSumValidIndex = -1
            }
        }
        _checkPendingChanges() {
            this._pendingChanges.mustCommit() && this._pendingChanges.commit(this)
        }
        _insertWhitespace(e) {
            var t = ys.findInsertionIndex(this._arr, e.afterLineNumber, e.ordinal);
            this._arr.splice(t, 0, e), this._prefixSumValidIndex = Math.min(this._prefixSumValidIndex, t - 1)
        }
        _findWhitespaceIndex(e) {
            var t = this._arr;
            for (let i = 0, n = t.length; i < n; i++)
                if (t[i].id === e) return i;
            return -1
        }
        _changeOneWhitespace(e, t, i) {
            if (-1 !== (e = this._findWhitespaceIndex(e)) && (this._arr[e].height !== i && (this._arr[e].height = i, this._prefixSumValidIndex = Math.min(this._prefixSumValidIndex, e - 1)), this._arr[e].afterLineNumber !== t)) {
                const i = this._arr[e];
                this._removeWhitespace(e), i.afterLineNumber = t, this._insertWhitespace(i)
            }
        }
        _removeWhitespace(e) {
            this._arr.splice(e, 1), this._prefixSumValidIndex = Math.min(this._prefixSumValidIndex, e - 1)
        }
        onLinesDeleted(e, t) {
            this._checkPendingChanges(), this._lineCount -= (t |= 0) - (e |= 0) + 1;
            for (let n = 0, r = this._arr.length; n < r; n++) {
                var i = this._arr[n].afterLineNumber;
                e <= i && i <= t ? this._arr[n].afterLineNumber = e - 1 : t < i && (this._arr[n].afterLineNumber -= t - e + 1)
            }
        }
        onLinesInserted(e, t) {
            this._checkPendingChanges(), this._lineCount += (t |= 0) - (e |= 0) + 1;
            for (let i = 0, n = this._arr.length; i < n; i++) e <= this._arr[i].afterLineNumber && (this._arr[i].afterLineNumber += t - e + 1)
        }
        getWhitespacesTotalHeight() {
            return this._checkPendingChanges(), 0 === this._arr.length ? 0 : this.getWhitespacesAccumulatedHeight(this._arr.length - 1)
        }
        getWhitespacesAccumulatedHeight(e) {
            this._checkPendingChanges(), e |= 0;
            let t = Math.max(0, this._prefixSumValidIndex + 1);
            0 === t && (this._arr[0].prefixSum = this._arr[0].height, t++);
            for (let i = t; i <= e; i++) this._arr[i].prefixSum = this._arr[i - 1].prefixSum + this._arr[i].height;
            return this._prefixSumValidIndex = Math.max(this._prefixSumValidIndex, e), this._arr[e].prefixSum
        }
        getLinesTotalHeight() {
            return this._checkPendingChanges(), this._lineHeight * this._lineCount + this.getWhitespacesTotalHeight() + this._paddingTop + this._paddingBottom
        }
        getWhitespaceAccumulatedHeightBeforeLineNumber(e) {
            return this._checkPendingChanges(), -1 === (e = this._findLastWhitespaceBeforeLineNumber(e |= 0)) ? 0 : this.getWhitespacesAccumulatedHeight(e)
        }
        _findLastWhitespaceBeforeLineNumber(e) {
            e |= 0;
            var t = this._arr;
            let i = 0,
                n = t.length - 1;
            for (; i <= n;) {
                var r;
                if (t[r = i + ((r = n - i | 0) / 2 | 0) | 0].afterLineNumber < e) {
                    if (1 + r >= t.length || t[1 + r].afterLineNumber >= e) return r;
                    i = 1 + r | 0
                } else n = r - 1 | 0
            }
            return -1
        }
        _findFirstWhitespaceAfterLineNumber(e) {
            return (e = this._findLastWhitespaceBeforeLineNumber(e |= 0) + 1) < this._arr.length ? e : -1
        }
        getFirstWhitespaceIndexAfterLineNumber(e) {
            return this._checkPendingChanges(), this._findFirstWhitespaceAfterLineNumber(e |= 0)
        }
        getVerticalOffsetForLineNumber(e) {
            let t;
            return this._checkPendingChanges(), t = 1 < (e |= 0) ? this._lineHeight * (e - 1) : 0, t + (e = this.getWhitespaceAccumulatedHeightBeforeLineNumber(e)) + this._paddingTop
        }
        getWhitespaceMinWidth() {
            if (this._checkPendingChanges(), -1 === this._minWidth) {
                let e = 0;
                for (let t = 0, i = this._arr.length; t < i; t++) e = Math.max(e, this._arr[t].minWidth);
                this._minWidth = e
            }
            return this._minWidth
        }
        isAfterLines(e) {
            return this._checkPendingChanges(), this.getLinesTotalHeight() < e
        }
        isInTopPadding(e) {
            return 0 !== this._paddingTop && (this._checkPendingChanges(), e < this._paddingTop)
        }
        isInBottomPadding(e) {
            return 0 !== this._paddingBottom && (this._checkPendingChanges(), e >= this.getLinesTotalHeight() - this._paddingBottom)
        }
        getLineNumberAtOrAfterVerticalOffset(e) {
            if (this._checkPendingChanges(), (e |= 0) < 0) return 1;
            var t = 0 | this._lineCount,
                i = this._lineHeight;
            let n = 1,
                r = t;
            for (; n < r;) {
                var o = (n + r) / 2 | 0,
                    s = 0 | this.getVerticalOffsetForLineNumber(o);
                if (s + i <= e) n = 1 + o;
                else {
                    if (s <= e) return o;
                    r = o
                }
            }
            return n > t ? t : n
        }
        getLinesViewportData(e, t) {
            this._checkPendingChanges(), t |= 0;
            var i = this._lineHeight,
                n = 0 | this.getLineNumberAtOrAfterVerticalOffset(e |= 0),
                r = 0 | this.getVerticalOffsetForLineNumber(n);
            let o = 0 | this._lineCount,
                s = 0 | this.getFirstWhitespaceIndexAfterLineNumber(n);
            var a = 0 | this.getWhitespacesCount();
            let l, d;
            l = -1 === s ? (s = a, d = o + 1, 0) : (d = 0 | this.getAfterLineNumberForWhitespaceIndex(s), 0 | this.getHeightForWhitespaceIndex(s));
            let c = r,
                h = c,
                u = 0;
            5e5 <= r && (u = 5e5 * Math.floor(r / 5e5), u = Math.floor(u / i) * i, h -= u);
            const p = [];
            var g, f = e + (t - e) / 2;
            let m = -1;
            for (let e = n; e <= o; e++) {
                for (-1 === m && (((g = c) <= f && f < c + i || f < g) && (m = e)), c += i, p[e - n] = h, h += i; d === e;) h += l, c += l, s++, s >= a ? d = o + 1 : (d = 0 | this.getAfterLineNumberForWhitespaceIndex(s), l = 0 | this.getHeightForWhitespaceIndex(s));
                if (c >= t) {
                    o = e;
                    break
                }
            } - 1 === m && (m = o);
            var v = 0 | this.getVerticalOffsetForLineNumber(o);
            let b = n,
                _ = o;
            return b < _ && r < e && b++, b < _ && t < v + i && _--, {
                bigNumbersDelta: u,
                startLineNumber: n,
                endLineNumber: o,
                relativeVerticalOffset: p,
                centeredLineNumber: m,
                completelyVisibleStartLineNumber: b,
                completelyVisibleEndLineNumber: _
            }
        }
        getVerticalOffsetForWhitespaceIndex(e) {
            this._checkPendingChanges();
            var t = this.getAfterLineNumberForWhitespaceIndex(e |= 0);
            let i, n;
            return i = 1 <= t ? this._lineHeight * t : 0, n = 0 < e ? this.getWhitespacesAccumulatedHeight(e - 1) : 0, i + n + this._paddingTop
        }
        getWhitespaceIndexAtOrAfterVerticallOffset(e) {
            this._checkPendingChanges(), e |= 0;
            let t = 0,
                i = this.getWhitespacesCount() - 1;
            if (i < 0) return -1;
            if (this.getVerticalOffsetForWhitespaceIndex(i) + this.getHeightForWhitespaceIndex(i) <= e) return -1;
            for (; t < i;) {
                var n = Math.floor((t + i) / 2),
                    r = this.getVerticalOffsetForWhitespaceIndex(n);
                if (r + this.getHeightForWhitespaceIndex(n) <= e) t = n + 1;
                else {
                    if (r <= e) return n;
                    i = n
                }
            }
            return t
        }
        getWhitespaceAtVerticalOffset(e) {
            this._checkPendingChanges();
            var t = this.getWhitespaceIndexAtOrAfterVerticallOffset(e |= 0);
            if (t < 0) return null;
            if (t >= this.getWhitespacesCount()) return null;
            var i = this.getVerticalOffsetForWhitespaceIndex(t);
            return e < i ? null : (e = this.getHeightForWhitespaceIndex(t), {
                id: this.getIdForWhitespaceIndex(t),
                afterLineNumber: this.getAfterLineNumberForWhitespaceIndex(t),
                verticalOffset: i,
                height: e
            })
        }
        getWhitespaceViewportData(e, t) {
            this._checkPendingChanges(), t |= 0;
            e = this.getWhitespaceIndexAtOrAfterVerticallOffset(e |= 0);
            var i = this.getWhitespacesCount() - 1;
            if (e < 0) return [];
            let n = [];
            for (let s = e; s <= i; s++) {
                var r = this.getVerticalOffsetForWhitespaceIndex(s),
                    o = this.getHeightForWhitespaceIndex(s);
                if (t <= r) break;
                n.push({
                    id: this.getIdForWhitespaceIndex(s),
                    afterLineNumber: this.getAfterLineNumberForWhitespaceIndex(s),
                    verticalOffset: r,
                    height: o
                })
            }
            return n
        }
        getWhitespaces() {
            return this._checkPendingChanges(), this._arr.slice(0)
        }
        getWhitespacesCount() {
            return this._checkPendingChanges(), this._arr.length
        }
        getIdForWhitespaceIndex(e) {
            return this._checkPendingChanges(), this._arr[e |= 0].id
        }
        getAfterLineNumberForWhitespaceIndex(e) {
            return this._checkPendingChanges(), this._arr[e |= 0].afterLineNumber
        }
        getHeightForWhitespaceIndex(e) {
            return this._checkPendingChanges(), this._arr[e |= 0].height
        }
    }
    ys.INSTANCE_COUNT = 0;
    class Cs {
        constructor(e, t, i, n) {
            (t |= 0) < 0 && (t = 0), (i |= 0) < 0 && (i = 0), (n |= 0) < 0 && (n = 0), this.width = e = (e |= 0) < 0 ? 0 : e, this.contentWidth = t, this.scrollWidth = Math.max(e, t), this.height = i, this.contentHeight = n, this.scrollHeight = Math.max(i, n)
        }
        equals(e) {
            return this.width === e.width && this.contentWidth === e.contentWidth && this.height === e.height && this.contentHeight === e.contentHeight
        }
    }
    class xs extends v.a {
        constructor(e, t) {
            super(), this._onDidContentSizeChange = this._register(new D.b), this.onDidContentSizeChange = this._onDidContentSizeChange.event, this._dimensions = new Cs(0, 0, 0, 0), this._scrollable = this._register(new bs.a(e, t)), this.onDidScroll = this._scrollable.onScroll
        }
        getScrollable() {
            return this._scrollable
        }
        setSmoothScrollDuration(e) {
            this._scrollable.setSmoothScrollDuration(e)
        }
        validateScrollPosition(e) {
            return this._scrollable.validateScrollPosition(e)
        }
        getScrollDimensions() {
            return this._dimensions
        }
        setScrollDimensions(e) {
            var t, i, n;
            this._dimensions.equals(e) || (t = this._dimensions, this._dimensions = e, this._scrollable.setScrollDimensions({
                width: e.width,
                scrollWidth: e.scrollWidth,
                height: e.height,
                scrollHeight: e.scrollHeight
            }, !0), i = t.contentWidth !== e.contentWidth, n = t.contentHeight !== e.contentHeight, (i || n) && this._onDidContentSizeChange.fire(new as(t.contentWidth, t.contentHeight, e.contentWidth, e.contentHeight)))
        }
        getFutureScrollPosition() {
            return this._scrollable.getFutureScrollPosition()
        }
        getCurrentScrollPosition() {
            return this._scrollable.getCurrentScrollPosition()
        }
        setScrollPositionNow(e) {
            this._scrollable.setScrollPositionNow(e)
        }
        setScrollPositionSmooth(e) {
            this._scrollable.setScrollPositionSmooth(e)
        }
    }
    class Ss extends v.a {
        constructor(e, t, i) {
            super(), this._configuration = e;
            const n = this._configuration.options;
            var r = n.get(129);
            e = n.get(74);
            this._linesLayout = new ys(t, n.get(58), e.top, e.bottom), this._scrollable = this._register(new xs(0, i)), this._configureSmoothScrollDuration(), this._scrollable.setScrollDimensions(new Cs(r.contentWidth, 0, r.height, 0)), this.onDidScroll = this._scrollable.onDidScroll, this.onDidContentSizeChange = this._scrollable.onDidContentSizeChange, this._updateHeight()
        }
        dispose() {
            super.dispose()
        }
        getScrollable() {
            return this._scrollable.getScrollable()
        }
        onHeightMaybeChanged() {
            this._updateHeight()
        }
        _configureSmoothScrollDuration() {
            this._scrollable.setSmoothScrollDuration(this._configuration.options.get(102) ? 125 : 0)
        }
        on配置Changed(e) {
            const t = this._configuration.options;
            var i, n, r, o;
            e.hasChanged(58) && this._linesLayout.setLineHeight(t.get(58)), e.hasChanged(74) && (r = t.get(74), this._linesLayout.setPadding(r.top, r.bottom)), e.hasChanged(129) ? (i = (o = t.get(129)).contentWidth, n = o.height, o = (r = this._scrollable.getScrollDimensions()).contentWidth, this._scrollable.setScrollDimensions(new Cs(i, r.contentWidth, n, this._getContentHeight(i, n, o)))) : this._updateHeight(), e.hasChanged(102) && this._configureSmoothScrollDuration()
        }
        onFlushed(e) {
            this._linesLayout.onFlushed(e)
        }
        onLinesDeleted(e, t) {
            this._linesLayout.onLinesDeleted(e, t)
        }
        onLinesInserted(e, t) {
            this._linesLayout.onLinesInserted(e, t)
        }
        _getHorizontalScrollbarHeight(e, t) {
            var i = this._configuration.options.get(91);
            return 2 === i.horizontal || t <= e ? 0 : i.horizontalScrollbarSize
        }
        _getContentHeight(e, t, i) {
            const n = this._configuration.options;
            let r = this._linesLayout.getLinesTotalHeight();
            return n.get(93) ? r += Math.max(0, t - n.get(58) - n.get(74).bottom) : r += this._getHorizontalScrollbarHeight(e, i), r
        }
        _updateHeight() {
            var e = this._scrollable.getScrollDimensions(),
                t = e.width,
                i = e.height,
                n = e.contentWidth;
            this._scrollable.setScrollDimensions(new Cs(t, e.contentWidth, i, this._getContentHeight(t, i, n)))
        }
        getCurrentViewport() {
            var e = this._scrollable.getScrollDimensions(),
                t = this._scrollable.getCurrentScrollPosition();
            return new Fe(t.scrollTop, t.scrollLeft, e.width, e.height)
        }
        getFutureViewport() {
            var e = this._scrollable.getScrollDimensions(),
                t = this._scrollable.getFutureScrollPosition();
            return new Fe(t.scrollTop, t.scrollLeft, e.width, e.height)
        }
        _computeContentWidth(e) {
            const t = this._configuration.options;
            var i = t.get(130),
                n = t.get(43);
            if (i.isViewportWrapping) {
                var r = t.get(129);
                i = t.get(64);
                return e > r.contentWidth + n.typicalHalfwidthCharacterWidth && i.enabled && "right" === i.side ? e + r.verticalScrollbarWidth : e
            }
            return r = t.get(92) * n.typicalHalfwidthCharacterWidth, n = this._linesLayout.getWhitespaceMinWidth(), Math.max(e + r, n)
        }
        setMaxLineWidth(e) {
            var t = this._scrollable.getScrollDimensions();
            this._scrollable.setScrollDimensions(new Cs(t.width, this._computeContentWidth(e), t.height, t.contentHeight)), this._updateHeight()
        }
        saveState() {
            var e = this._scrollable.getFutureScrollPosition(),
                t = e.scrollTop,
                i = this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t);
            return {
                scrollTop: t,
                scrollTopWithoutViewZones: t - this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(i),
                scrollLeft: e.scrollLeft
            }
        }
        changeWhitespace(e) {
            return (e = this._linesLayout.changeWhitespace(e)) && this.onHeightMaybeChanged(), e
        }
        getVerticalOffsetForLineNumber(e) {
            return this._linesLayout.getVerticalOffsetForLineNumber(e)
        }
        isAfterLines(e) {
            return this._linesLayout.isAfterLines(e)
        }
        isInTopPadding(e) {
            return this._linesLayout.isInTopPadding(e)
        }
        isInBottomPadding(e) {
            return this._linesLayout.isInBottomPadding(e)
        }
        getLineNumberAtVerticalOffset(e) {
            return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)
        }
        getWhitespaceAtVerticalOffset(e) {
            return this._linesLayout.getWhitespaceAtVerticalOffset(e)
        }
        getLinesViewportData() {
            var e = this.getCurrentViewport();
            return this._linesLayout.getLinesViewportData(e.top, e.top + e.height)
        }
        getLinesViewportDataAtScrollTop(e) {
            var t = this._scrollable.getScrollDimensions();
            return e + t.height > t.scrollHeight && (e = t.scrollHeight - t.height), this._linesLayout.getLinesViewportData(e = e < 0 ? 0 : e, e + t.height)
        }
        getWhitespaceViewportData() {
            var e = this.getCurrentViewport();
            return this._linesLayout.getWhitespaceViewportData(e.top, e.top + e.height)
        }
        getWhitespaces() {
            return this._linesLayout.getWhitespaces()
        }
        getContentWidth() {
            return this._scrollable.getScrollDimensions().contentWidth
        }
        getScrollWidth() {
            return this._scrollable.getScrollDimensions().scrollWidth
        }
        getContentHeight() {
            return this._scrollable.getScrollDimensions().contentHeight
        }
        getScrollHeight() {
            return this._scrollable.getScrollDimensions().scrollHeight
        }
        getCurrentScrollLeft() {
            return this._scrollable.getCurrentScrollPosition().scrollLeft
        }
        getCurrentScrollTop() {
            return this._scrollable.getCurrentScrollPosition().scrollTop
        }
        validateScrollPosition(e) {
            return this._scrollable.validateScrollPosition(e)
        }
        setScrollPosition(e, t) {
            1 === t ? this._scrollable.setScrollPositionNow(e) : this._scrollable.setScrollPositionSmooth(e)
        }
        deltaScrollNow(e, t) {
            var i = this._scrollable.getCurrentScrollPosition();
            this._scrollable.setScrollPositionNow({
                scrollLeft: i.scrollLeft + e,
                scrollTop: i.scrollTop + t
            })
        }
    }
    var ks = i(137);
    class Ls {
        constructor(e) {
            this._lines = e
        }
        convertViewPositionToModelPosition(e) {
            return this._lines.convertViewPositionToModelPosition(e.lineNumber, e.column)
        }
        convertViewRangeToModelRange(e) {
            return this._lines.convertViewRangeToModelRange(e)
        }
        validateViewPosition(e, t) {
            return this._lines.validateViewPosition(e.lineNumber, e.column, t)
        }
        validateViewRange(e, t) {
            return this._lines.validateViewRange(e, t)
        }
        convertModelPositionToViewPosition(e, t) {
            return this._lines.convertModelPositionToViewPosition(e.lineNumber, e.column, t)
        }
        convertModelRangeToViewRange(e, t) {
            return this._lines.convertModelRangeToViewRange(e, t)
        }
        modelPositionIsVisible(e) {
            return this._lines.modelPositionIsVisible(e.lineNumber, e.column)
        }
        getModelLineViewLineCount(e) {
            return this._lines.getModelLineViewLineCount(e)
        }
        getViewLineNumberOfModelPosition(e, t) {
            return this._lines.getViewLineNumberOfModelPosition(e, t)
        }
    }
    class Os {
        constructor(e) {
            this._counts = e, this._isValid = !1, this._validEndIndex = -1, this._modelToView = [], this._viewToModel = []
        }
        _invalidate(e) {
            this._isValid = !1, this._validEndIndex = Math.min(this._validEndIndex, e - 1)
        }
        _ensureValid() {
            if (!this._isValid) {
                for (let i = this._validEndIndex + 1, n = this._counts.length; i < n; i++) {
                    var e = this._counts[i],
                        t = 0 < i ? this._modelToView[i - 1] : 0;
                    this._modelToView[i] = t + e;
                    for (let n = 0; n < e; n++) this._viewToModel[t + n] = i
                }
                this._modelToView.length = this._counts.length, this._viewToModel.length = this._modelToView[this._modelToView.length - 1], this._isValid = !0, this._validEndIndex = this._counts.length - 1
            }
        }
        changeValue(e, t) {
            this._counts[e] !== t && (this._counts[e] = t, this._invalidate(e))
        }
        removeValues(e, t) {
            this._counts.splice(e, t), this._invalidate(e)
        }
        insertValues(e, t) {
            this._counts = ne.b(this._counts, e, t), this._invalidate(e)
        }
        getTotalValue() {
            return this._ensureValid(), this._viewToModel.length
        }
        getAccumulatedValue(e) {
            return this._ensureValid(), this._modelToView[e]
        }
        getIndexOf(e) {
            this._ensureValid();
            var t = this._viewToModel[e],
                i = 0 < t ? this._modelToView[t - 1] : 0;
            return new ks.b(t, e - i)
        }
    }
    class Es {
        constructor(e, t, i, n, r, o, s, a, l) {
            this._editorId = e, this.model = t, this._validModelVersionId = -1, this._domLineBreaksComputerFactory = i, this._monospaceLineBreaksComputerFactory = n, this.fontInfo = r, this.tabSize = o, this.wrappingStrategy = s, this.wrappingColumn = a, this.wrappingIndent = l, this._constructLines(!0, null)
        }
        dispose() {
            this.hiddenAreasIds = this.model.deltaDecorations(this.hiddenAreasIds, [])
        }
        createCoordinatesConverter() {
            return new Ls(this)
        }
        _constructLines(e, t) {
            this.lines = [], e && (this.hiddenAreasIds = []);
            var i = this.model.getLinesContent(),
                n = (e = this.model.getInjectedTextDecorations(this._editorId), i.length);
            const r = this.createLineBreaksComputer(),
                o = new ne.a(Vo.b.fromDecorations(e));
            for (let e = 0; e < n; e++) {
                var s = o.takeWhile(t => t.lineNumber === e + 1);
                r.addRequest(i[e], s, t ? t[e] : null)
            }
            var a = r.finalize();
            let l = [];
            var d = this.hiddenAreasIds.map(e => this.model.getDecorationRange(e)).sort(T.a.compareRangesUsingStarts);
            let c = 1,
                h = 0,
                u = -1,
                p = u + 1 < d.length ? h + 1 : n + 2;
            for (let e = 0; e < n; e++) {
                var g = e + 1;
                g === p && (u++, c = d[u].startLineNumber, h = d[u].endLineNumber, p = u + 1 < d.length ? h + 1 : n + 2), g = g >= c && g <= h;
                let t = Rs(a[e], !g);
                l[e] = t.getViewLineCount(), this.lines[e] = t
            }
            this._validModelVersionId = this.model.getVersionId(), this.prefixSumComputer = new Os(l)
        }
        getHiddenAreas() {
            return this.hiddenAreasIds.map(e => this.model.getDecorationRange(e))
        }
        _reduceRanges(e) {
            if (0 === e.length) return [];
            var t = e.map(e => this.model.validateRange(e)).sort(T.a.compareRangesUsingStarts);
            let i = [],
                n = t[0].startLineNumber,
                r = t[0].endLineNumber;
            for (let e = 1, s = t.length; e < s; e++) {
                var o = t[e];
                o.startLineNumber > r + 1 ? (i.push(new T.a(n, 1, r, 1)), n = o.startLineNumber, r = o.endLineNumber) : o.endLineNumber > r && (r = o.endLineNumber)
            }
            return i.push(new T.a(n, 1, r, 1)), i
        }
        setHiddenAreas(e) {
            let t = this._reduceRanges(e);
            var i = this.hiddenAreasIds.map(e => this.model.getDecorationRange(e)).sort(T.a.compareRangesUsingStarts);
            if (t.length === i.length) {
                let e = !1;
                for (let n = 0; n < t.length; n++)
                    if (!t[n].equalsRange(i[n])) {
                        e = !0;
                        break
                    } if (!e) return !1
            }
            let n = [];
            for (const e of t) n.push({
                range: e,
                options: Rr.b.EMPTY
            });
            this.hiddenAreasIds = this.model.deltaDecorations(this.hiddenAreasIds, n);
            var r = t;
            let o = 1,
                s = 0,
                a = -1,
                l = a + 1 < r.length ? s + 1 : this.lines.length + 2,
                d = !1;
            for (let e = 0; e < this.lines.length; e++) {
                var c = e + 1;
                c === l && (a++, o = r[a].startLineNumber, s = r[a].endLineNumber, l = a + 1 < r.length ? s + 1 : this.lines.length + 2);
                let t = !1;
                c >= o && c <= s ? this.lines[e].isVisible() && (this.lines[e] = this.lines[e].setVisible(!1), t = !0) : (d = !0, this.lines[e].isVisible() || (this.lines[e] = this.lines[e].setVisible(!0), t = !0)), t && (c = this.lines[e].getViewLineCount(), this.prefixSumComputer.changeValue(e, c))
            }
            return d || this.setHiddenAreas([]), !0
        }
        modelPositionIsVisible(e, t) {
            return !(e < 1 || e > this.lines.length) && this.lines[e - 1].isVisible()
        }
        getModelLineViewLineCount(e) {
            return e < 1 || e > this.lines.length ? 1 : this.lines[e - 1].getViewLineCount()
        }
        setTabSize(e) {
            return this.tabSize !== e && (this.tabSize = e, this._constructLines(!1, null), !0)
        }
        setWrappingSettings(e, t, i, n) {
            var r = this.fontInfo.equals(e),
                o = this.wrappingStrategy === t,
                s = this.wrappingColumn === i,
                a = this.wrappingIndent === n;
            if (r && o && s && a) return !1;
            a = r && o && !s && a, this.fontInfo = e, this.wrappingStrategy = t, this.wrappingColumn = i, this.wrappingIndent = n;
            let l = null;
            if (a) {
                l = [];
                for (let e = 0, t = this.lines.length; e < t; e++) l[e] = this.lines[e].getLineBreakData()
            }
            return this._constructLines(!1, l), !0
        }
        createLineBreaksComputer() {
            return ("advanced" === this.wrappingStrategy ? this._domLineBreaksComputerFactory : this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo, this.tabSize, this.wrappingColumn, this.wrappingIndent)
        }
        onModelFlushed() {
            this._constructLines(!0, null)
        }
        onModelLinesDeleted(e, t, i) {
            if (!e || e <= this._validModelVersionId) return null;
            var n = 1 === t ? 1 : this.prefixSumComputer.getAccumulatedValue(t - 2) + 1;
            e = this.prefixSumComputer.getAccumulatedValue(i - 1);
            return this.lines.splice(t - 1, i - t + 1), this.prefixSumComputer.removeValues(t - 1, i - t + 1), new Xo(n, e)
        }
        onModelLinesInserted(e, t, i, n) {
            if (!e || e <= this._validModelVersionId) return null;
            var r = 2 < t && !this.lines[t - 2].isVisible();
            e = 1 === t ? 1 : this.prefixSumComputer.getAccumulatedValue(t - 2) + 1;
            let o = 0,
                s = [],
                a = [];
            for (let e = 0, t = n.length; e < t; e++) {
                let t = Rs(n[e], !r);
                s.push(t);
                var l = t.getViewLineCount();
                o += l, a[e] = l
            }
            return this.lines = this.lines.slice(0, t - 1).concat(s).concat(this.lines.slice(t - 1)), this.prefixSumComputer.insertValues(t - 1, a), new Qo(e, e + o - 1)
        }
        onModelLineChanged(e, t, i) {
            if (null !== e && e <= this._validModelVersionId) return [!1, null, null, null];
            var n = t - 1;
            e = this.lines[n].getViewLineCount(), i = Rs(i, this.lines[n].isVisible());
            this.lines[n] = i;
            let r = !1,
                o = 0,
                s = -1,
                a = 0,
                l = -1,
                d = 0,
                c = -1;
            return (i = this.lines[n].getViewLineCount()) < e ? (o = 1 === t ? 1 : this.prefixSumComputer.getAccumulatedValue(t - 2) + 1, s = o + i - 1, d = s + 1, c = d + (e - i) - 1, r = !0) : e < i ? (o = 1 === t ? 1 : this.prefixSumComputer.getAccumulatedValue(t - 2) + 1, s = o + e - 1, a = s + 1, l = a + (i - e) - 1, r = !0) : (o = 1 === t ? 1 : this.prefixSumComputer.getAccumulatedValue(t - 2) + 1, s = o + i - 1), this.prefixSumComputer.changeValue(n, i), [r, t = o <= s ? new Zo(o, s) : null, n = a <= l ? new Qo(a, l) : null, i = d <= c ? new Xo(d, c) : null]
        }
        acceptVersionId(e) {
            this._validModelVersionId = e, 1 !== this.lines.length || this.lines[0].isVisible() || this.setHiddenAreas([])
        }
        getViewLineCount() {
            return this.prefixSumComputer.getTotalValue()
        }
        _toValidViewLineNumber(e) {
            if (e < 1) return 1;
            var t = this.getViewLineCount();
            return t < e ? t : 0 | e
        }
        getActiveIndentGuide(e, t, i) {
            return e = this._toValidViewLineNumber(e), t = this._toValidViewLineNumber(t), i = this._toValidViewLineNumber(i), e = this.convertViewPositionToModelPosition(e, this.getViewLineMinColumn(e)), t = this.convertViewPositionToModelPosition(t, this.getViewLineMinColumn(t)), i = this.convertViewPositionToModelPosition(i, this.getViewLineMinColumn(i)), e = this.model.getActiveIndentGuide(e.lineNumber, t.lineNumber, i.lineNumber), t = this.convertModelPositionToViewPosition(e.startLineNumber, 1), i = this.convertModelPositionToViewPosition(e.endLineNumber, this.model.getLineMaxColumn(e.endLineNumber)), {
                startLineNumber: t.lineNumber,
                endLineNumber: i.lineNumber,
                indent: e.indent
            }
        }
        getViewLineInfo(e) {
            e = this._toValidViewLineNumber(e);
            e = (t = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var t = t.remainder;
            return new Ns(e + 1, t)
        }
        getMinColumnOfViewLine(e) {
            return this.lines[e.modelLineNumber - 1].getViewLineMinColumn(this.model, e.modelLineNumber, e.modelLineWrappedLineIdx)
        }
        getModelStartPositionOfViewLine(e) {
            const t = this.lines[e.modelLineNumber - 1];
            var i = t.getViewLineMinColumn(this.model, e.modelLineNumber, e.modelLineWrappedLineIdx);
            i = t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx, i);
            return new Re.a(e.modelLineNumber, i)
        }
        getModelEndPositionOfViewLine(e) {
            const t = this.lines[e.modelLineNumber - 1];
            var i = t.getViewLineMaxColumn(this.model, e.modelLineNumber, e.modelLineWrappedLineIdx);
            i = t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx, i);
            return new Re.a(e.modelLineNumber, i)
        }
        getViewLineInfosGroupedByModelRanges(e, t) {
            var i = this.getViewLineInfo(e),
                n = this.getViewLineInfo(t);
            const r = new Array;
            let o = this.getModelStartPositionOfViewLine(i),
                s = new Array;
            for (let e = i.modelLineNumber; e <= n.modelLineNumber; e++) {
                const t = this.lines[e - 1];
                if (t.isVisible()) {
                    var a = e === i.modelLineNumber ? i.modelLineWrappedLineIdx : 0,
                        l = e === n.modelLineNumber ? n.modelLineWrappedLineIdx + 1 : t.getViewLineCount();
                    for (let t = a; t < l; t++) s.push(new Ns(e, t))
                }!t.isVisible() && o ? (a = new Re.a(e - 1, this.model.getLineMaxColumn(e - 1) + 1), a = T.a.fromPositions(o, a), r.push(new Ds(a, s)), s = [], o = null) : t.isVisible() && !o && (o = new Re.a(e, 1))
            }
            return o && (t = T.a.fromPositions(o, this.getModelEndPositionOfViewLine(n)), r.push(new Ds(t, s))), r
        }
        getViewLinesBracketGuides(e, t, i, n) {
            var r = i ? this.convertViewPositionToModelPosition(i.lineNumber, i.column) : null;
            const o = [];
            for (const i of this.getViewLineInfosGroupedByModelRanges(e, t)) {
                var s = i.modelRange.startLineNumber,
                    a = this.model.getLinesBracketGuides(s, i.modelRange.endLineNumber, r, n);
                for (const e of i.viewLines)
                    if (e.isWrappedLineContinuation && 1 === this.getMinColumnOfViewLine(e)) o.push([]);
                    else {
                        let t = a[e.modelLineNumber - s];
                        t = t.map(t => t.horizontalLine ? new W.d(t.visibleColumn, t.className, new W.e(t.horizontalLine.top, this.convertModelPositionToViewPosition(e.modelLineNumber, t.horizontalLine.endColumn).column)) : t), o.push(t)
                    }
            }
            return o
        }
        getViewLinesIndentGuides(e, t) {
            e = this._toValidViewLineNumber(e), t = this._toValidViewLineNumber(t);
            var i = this.convertViewPositionToModelPosition(e, this.getViewLineMinColumn(e)),
                n = this.convertViewPositionToModelPosition(t, this.getViewLineMaxColumn(t));
            let r = [],
                o = [],
                s = [];
            var a = i.lineNumber - 1,
                l = n.lineNumber - 1;
            let d = null;
            for (let e = a; e <= l; e++) {
                const t = this.lines[e];
                if (t.isVisible()) {
                    var c = t.getViewLineNumberOfModelPosition(0, e === a ? i.column : 1),
                        h = t.getViewLineNumberOfModelPosition(0, this.model.getLineMaxColumn(e + 1)),
                        u = h - c + 1;
                    let n = 0;
                    1 < u && 1 === t.getViewLineMinColumn(this.model, e + 1, h) && (n = 0 === c ? 1 : 2), o.push(u), s.push(n), null === d && (d = new Re.a(e + 1, 0))
                } else null !== d && (r = r.concat(this.model.getLinesIndentGuides(d.lineNumber, e)), d = null)
            }
            null !== d && (r = r.concat(this.model.getLinesIndentGuides(d.lineNumber, n.lineNumber)), d = null);
            var p = t - e + 1;
            let g = new Array(p),
                f = 0;
            for (let e = 0, t = r.length; e < t; e++) {
                let t = r[e];
                var m = Math.min(p - f, o[e]),
                    v = s[e];
                let i;
                i = 2 === v ? 0 : 1 === v ? 1 : m;
                for (let e = 0; e < m; e++) e === i && (t = 0), g[f++] = t
            }
            return g
        }
        getViewLineContent(e) {
            e = this._toValidViewLineNumber(e);
            e = (t = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var t = t.remainder;
            return this.lines[e].getViewLineContent(this.model, e + 1, t)
        }
        getViewLineLength(e) {
            e = this._toValidViewLineNumber(e);
            e = (t = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var t = t.remainder;
            return this.lines[e].getViewLineLength(this.model, e + 1, t)
        }
        getViewLineMinColumn(e) {
            e = this._toValidViewLineNumber(e);
            e = (t = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var t = t.remainder;
            return this.lines[e].getViewLineMinColumn(this.model, e + 1, t)
        }
        getViewLineMaxColumn(e) {
            e = this._toValidViewLineNumber(e);
            e = (t = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var t = t.remainder;
            return this.lines[e].getViewLineMaxColumn(this.model, e + 1, t)
        }
        getViewLineData(e) {
            e = this._toValidViewLineNumber(e);
            e = (t = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var t = t.remainder;
            return this.lines[e].getViewLineData(this.model, e + 1, t)
        }
        getViewLinesData(e, t, i) {
            e = this._toValidViewLineNumber(e), t = this._toValidViewLineNumber(t);
            var n = this.prefixSumComputer.getIndexOf(e - 1);
            let r = e;
            var o = n.index,
                s = n.remainder,
                a = [];
            for (let n = o, c = this.model.getLineCount(); n < c; n++) {
                let c = this.lines[n];
                if (c.isVisible()) {
                    var l = n === o ? s : 0;
                    let h = c.getViewLineCount() - l,
                        u = !1;
                    r + h > t && (u = !0, h = t - r + 1);
                    var d = l + h;
                    if (c.getViewLinesData(this.model, n + 1, l, d, r - e, i, a), r += h, u) break
                }
            }
            return a
        }
        validateViewPosition(e, t, i) {
            e = this._toValidViewLineNumber(e);
            var n = (s = this.prefixSumComputer.getIndexOf(e - 1)).index,
                r = s.remainder;
            let o = this.lines[n];
            var s, a = o.getViewLineMinColumn(this.model, n + 1, r);
            return (s = o.getViewLineMaxColumn(this.model, n + 1, r)) < (t = t < a ? a : t) && (t = s), r = o.getModelColumnOfViewPosition(r, t), this.model.validatePosition(new Re.a(n + 1, r)).equals(i) ? new Re.a(e, t) : this.convertModelPositionToViewPosition(i.lineNumber, i.column)
        }
        validateViewRange(e, t) {
            var i = this.validateViewPosition(e.startLineNumber, e.startColumn, t.getStartPosition());
            t = this.validateViewPosition(e.endLineNumber, e.endColumn, t.getEndPosition());
            return new T.a(i.lineNumber, i.column, t.lineNumber, t.column)
        }
        convertViewPositionToModelPosition(e, t) {
            e = this._toValidViewLineNumber(e);
            e = (i = this.prefixSumComputer.getIndexOf(e - 1)).index;
            var i = i.remainder;
            t = this.lines[e].getModelColumnOfViewPosition(i, t);
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.validatePosition(new Re.a(e + 1, t))
        }
        convertViewRangeToModelRange(e) {
            var t = this.convertViewPositionToModelPosition(e.startLineNumber, e.startColumn);
            e = this.convertViewPositionToModelPosition(e.endLineNumber, e.endColumn);
            return new T.a(t.lineNumber, t.column, e.lineNumber, e.column)
        }
        convertModelPositionToViewPosition(e, t, i = 2) {
            var n = this.model.validatePosition(new Re.a(e, t));
            e = n.lineNumber, t = n.column;
            let r, o = e - 1,
                s = !1;
            for (; 0 < o && !this.lines[o].isVisible();) o--, s = !0;
            return 0 !== o || this.lines[o].isVisible() ? (n = 1 + (0 === o ? 0 : this.prefixSumComputer.getAccumulatedValue(o - 1)), r = s ? this.lines[o].getViewPositionOfModelPosition(n, this.model.getLineMaxColumn(o + 1), i) : this.lines[e - 1].getViewPositionOfModelPosition(n, t, i), r) : new Re.a(1, 1)
        }
        convertModelRangeToViewRange(e, t = 0) {
            if (e.isEmpty()) {
                var i = this.convertModelPositionToViewPosition(e.startLineNumber, e.startColumn, t);
                return T.a.fromPositions(i)
            }
            return i = this.convertModelPositionToViewPosition(e.startLineNumber, e.startColumn, 1), e = this.convertModelPositionToViewPosition(e.endLineNumber, e.endColumn, 0), new T.a(i.lineNumber, i.column, e.lineNumber, e.column)
        }
        getViewLineNumberOfModelPosition(e, t) {
            let i = e - 1;
            if (this.lines[i].isVisible()) {
                const e = 1 + (0 === i ? 0 : this.prefixSumComputer.getAccumulatedValue(i - 1));
                return this.lines[i].getViewLineNumberOfModelPosition(e, t)
            }
            for (; 0 < i && !this.lines[i].isVisible();) i--;
            if (0 === i && !this.lines[i].isVisible()) return 1;
            const n = 1 + (0 === i ? 0 : this.prefixSumComputer.getAccumulatedValue(i - 1));
            return this.lines[i].getViewLineNumberOfModelPosition(n, this.model.getLineMaxColumn(i + 1))
        }
        getDecorationsInRange(e, t, i) {
            var n = this.convertViewPositionToModelPosition(e.startLineNumber, e.startColumn),
                r = this.convertViewPositionToModelPosition(e.endLineNumber, e.endColumn);
            if (r.lineNumber - n.lineNumber <= e.endLineNumber - e.startLineNumber) "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getDecorationsInRange(new T.a(n.lineNumber, 1, r.lineNumber, r.column), t, i);
            let o = [];
            var s, a = n.lineNumber - 1,
                l = r.lineNumber - 1;
            let d = null;
            for (let e = a; e <= l; e++) {
                this.lines[e].isVisible() ? null === d && (d = new Re.a(e + 1, e === a ? n.column : 1)) : null !== d && (s = this.model.getLineMaxColumn(e), o = o.concat(this.model.getDecorationsInRange(new T.a(d.lineNumber, d.column, e, s), t, i)), d = null)
            }
            null !== d && (o = o.concat(this.model.getDecorationsInRange(new T.a(d.lineNumber, d.column, r.lineNumber, r.column), t, i)), d = null), o.sort((e, t) => {
                var i = T.a.compareRangesUsingStarts(e.range, t.range);
                return 0 === i ? e.id < t.id ? -1 : e.id > t.id ? 1 : 0 : i
            });
            let c = [],
                h = 0,
                u = null;
            for (const e of o) {
                var p = e.id;
                u !== p && (u = p, c[h++] = e)
            }
            return c
        }
        getInjectedTextAt(e) {
            var t = this._toValidViewLineNumber(e.lineNumber),
                i = (t = (i = this.prefixSumComputer.getIndexOf(t - 1)).index, i.remainder);
            return this.lines[t].getInjectedTextAt(i, e.column)
        }
        normalizePosition(e, t) {
            var i = this._toValidViewLineNumber(e.lineNumber),
                n = (i = (n = this.prefixSumComputer.getIndexOf(i - 1)).index, n.remainder);
            return this.lines[i].normalizePosition(this.model, i + 1, n, e, t)
        }
        getLineIndentColumn(e) {
            var t = this._toValidViewLineNumber(e);
            t = (e = this.prefixSumComputer.getIndexOf(t - 1)).index;
            return 0 === e.remainder ? this.model.getLineIndentColumn(t + 1) : 0
        }
    }
    class Ns {
        constructor(e, t) {
            this.modelLineNumber = e, this.modelLineWrappedLineIdx = t
        }
        get isWrappedLineContinuation() {
            return 0 < this.modelLineWrappedLineIdx
        }
    }
    class Ds {
        constructor(e, t) {
            this.modelRange = e, this.viewLines = t
        }
    }
    class Is {
        constructor() {}
        isVisible() {
            return !0
        }
        setVisible(e) {
            return e ? this : Ts.INSTANCE
        }
        getLineBreakData() {
            return null
        }
        getViewLineCount() {
            return 1
        }
        getViewLineContent(e, t, i) {
            return e.getLineContent(t)
        }
        getViewLineLength(e, t, i) {
            return e.getLineLength(t)
        }
        getViewLineMinColumn(e, t, i) {
            return e.getLineMinColumn(t)
        }
        getViewLineMaxColumn(e, t, i) {
            return e.getLineMaxColumn(t)
        }
        getViewLineData(e, t, i) {
            let n = e.getLineTokens(t);
            return t = n.getLineContent(), new We(t, !1, 1, t.length + 1, 0, n.inflate(), null)
        }
        getViewLinesData(e, t, i, n, r, o, s) {
            o[r] ? s[r] = this.getViewLineData(e, t, 0) : s[r] = null
        }
        getModelColumnOfViewPosition(e, t) {
            return t
        }
        getViewPositionOfModelPosition(e, t) {
            return new Re.a(e, t)
        }
        getViewLineNumberOfModelPosition(e, t) {
            return e
        }
        normalizePosition(e, t, i, n, r) {
            return n
        }
        getInjectedTextAt(e, t) {
            return null
        }
    }
    Is.INSTANCE = new Is;
    class Ts {
        constructor() {}
        isVisible() {
            return !1
        }
        setVisible(e) {
            return e ? Is.INSTANCE : this
        }
        getLineBreakData() {
            return null
        }
        getViewLineCount() {
            return 0
        }
        getViewLineContent(e, t, i) {
            throw new Error("Not supported")
        }
        getViewLineLength(e, t, i) {
            throw new Error("Not supported")
        }
        getViewLineMinColumn(e, t, i) {
            throw new Error("Not supported")
        }
        getViewLineMaxColumn(e, t, i) {
            throw new Error("Not supported")
        }
        getViewLineData(e, t, i) {
            throw new Error("Not supported")
        }
        getViewLinesData(e, t, i, n, r, o, s) {
            throw new Error("Not supported")
        }
        getModelColumnOfViewPosition(e, t) {
            throw new Error("Not supported")
        }
        getViewPositionOfModelPosition(e, t) {
            throw new Error("Not supported")
        }
        getViewLineNumberOfModelPosition(e, t) {
            throw new Error("Not supported")
        }
        normalizePosition(e, t, i, n, r) {
            throw new Error("Not supported")
        }
        getInjectedTextAt(e, t) {
            throw new Error("Not supported")
        }
    }
    Ts.INSTANCE = new Ts;
    class Ms {
        constructor(e, t) {
            this._lineBreakData = e, this._isVisible = t
        }
        isVisible() {
            return this._isVisible
        }
        setVisible(e) {
            return this._isVisible = e, this
        }
        getLineBreakData() {
            return this._lineBreakData
        }
        getViewLineCount() {
            return this._isVisible ? this._lineBreakData.breakOffsets.length : 0
        }
        getInputStartOffsetOfOutputLineIndex(e) {
            return this._lineBreakData.getInputOffsetOfOutputPosition(e, 0)
        }
        getInputEndOffsetOfOutputLineIndex(e, t, i) {
            return i + 1 === this._lineBreakData.breakOffsets.length ? e.getLineMaxColumn(t) - 1 : this._lineBreakData.getInputOffsetOfOutputPosition(i + 1, 0)
        }
        getViewLineContent(e, t, i) {
            if (!this._isVisible) throw new Error("Not supported");
            var n, r = 0 < i ? this._lineBreakData.breakOffsets[i - 1] : 0,
                o = i < this._lineBreakData.breakOffsets.length ? this._lineBreakData.breakOffsets[i] : this._lineBreakData.breakOffsets[this._lineBreakData.breakOffsets.length - 1];
            let s;
            return s = null !== this._lineBreakData.injectionOffsets ? (n = this._lineBreakData.injectionOffsets.map((e, t) => new Vo.b(0, 0, e + 1, this._lineBreakData.injectionOptions[t], 0)), Vo.b.applyInjectedText(e.getLineContent(t), n).substring(r, o)) : e.getValueInRange({
                startLineNumber: t,
                startColumn: r + 1,
                endLineNumber: t,
                endColumn: o + 1
            }), 0 < i && (s = As(this._lineBreakData.wrappedTextIndentLength) + s), s
        }
        getViewLineLength(e, t, i) {
            if (!this._isVisible) throw new Error("Not supported");
            var n = 0 < i ? this._lineBreakData.breakOffsets[i - 1] : 0;
            let r = (i < this._lineBreakData.breakOffsets.length ? this._lineBreakData.breakOffsets[i] : this._lineBreakData.breakOffsets[this._lineBreakData.breakOffsets.length - 1]) - n;
            return 0 < i && (r = this._lineBreakData.wrappedTextIndentLength + r), r
        }
        getViewLineMinColumn(e, t, i) {
            if (!this._isVisible) throw new Error("Not supported");
            return this._getViewLineMinColumn(i)
        }
        _getViewLineMinColumn(e) {
            return 0 < e ? this._lineBreakData.wrappedTextIndentLength + 1 : 1
        }
        getViewLineMaxColumn(e, t, i) {
            if (!this._isVisible) throw new Error("Not supported");
            return this.getViewLineLength(e, t, i) + 1
        }
        getViewLineData(e, t, i) {
            if (!this._isVisible) throw new Error("Not supported");
            var n = this._lineBreakData,
                r = 0 < i ? n.wrappedTextIndentLength : 0;
            const o = n.injectionOffsets,
                s = n.injectionOptions;
            let a, l, d;
            if (o) {
                const v = e.getLineTokens(t).withInserted(o.map((e, t) => ({
                    offset: e,
                    text: s[t].content,
                    tokenMetadata: we.a.defaultTokenMetadata
                })));
                var c = 0 < i ? n.breakOffsets[i - 1] : 0,
                    h = n.breakOffsets[i];
                a = v.getLineContent().substring(c, h), l = v.sliceAndInflate(c, h, r), d = new Array;
                let b = 0;
                for (let e = 0; e < o.length; e++) {
                    var u, p, g = s[e].content.length,
                        f = o[e] + b,
                        m = o[e] + b + g;
                    if (h < f) break;
                    c < m && (!(u = s[e]).inlineClassName || (f = (p = 0 < i ? n.wrappedTextIndentLength : 0) + Math.max(f - c, 0)) !== (m = p + Math.min(m - c, h)) && d.push(new Ue(f, m, u.inlineClassName, u.inlineClassNameAffectsLetterSpacing))), b += g
                }
            } else {
                var v = this.getInputStartOffsetOfOutputLineIndex(i),
                    b = this.getInputEndOffsetOfOutputLineIndex(e, t, i);
                const n = e.getLineTokens(t);
                a = e.getValueInRange({
                    startLineNumber: t,
                    startColumn: v + 1,
                    endLineNumber: t,
                    endColumn: b + 1
                }), l = n.sliceAndInflate(v, b, r), d = null
            }
            return 0 < i && (a = As(n.wrappedTextIndentLength) + a), t = 0 < i ? n.wrappedTextIndentLength + 1 : 1, v = a.length + 1, b = i + 1 < this.getViewLineCount(), r = 0 === i ? 0 : n.breakOffsetsVisibleColumn[i - 1], new We(a, b, t, v, r, l, d)
        }
        getViewLinesData(e, t, i, n, r, o, s) {
            if (!this._isVisible) throw new Error("Not supported");
            for (let l = i; l < n; l++) {
                var a = r + l - i;
                o[a] ? s[a] = this.getViewLineData(e, t, l) : s[a] = null
            }
        }
        getModelColumnOfViewPosition(e, t) {
            if (!this._isVisible) throw new Error("Not supported");
            let i = t - 1;
            return 0 < e && (i < this._lineBreakData.wrappedTextIndentLength ? i = 0 : i -= this._lineBreakData.wrappedTextIndentLength), this._lineBreakData.getInputOffsetOfOutputPosition(e, i) + 1
        }
        getViewPositionOfModelPosition(e, t, i = 2) {
            if (!this._isVisible) throw new Error("Not supported");
            i = (t = this._lineBreakData.getOutputPositionOfInputOffset(t - 1, i)).outputLineIndex;
            let n = t.outputOffset + 1;
            return 0 < i && (n += this._lineBreakData.wrappedTextIndentLength), new Re.a(e + i, n)
        }
        getViewLineNumberOfModelPosition(e, t) {
            if (!this._isVisible) throw new Error("Not supported");
            return e + this._lineBreakData.getOutputPositionOfInputOffset(t - 1).outputLineIndex
        }
        normalizePosition(e, t, i, n, r) {
            if (null !== this._lineBreakData.injectionOffsets) {
                var o = n.lineNumber - i,
                    s = this._lineBreakData.outputPositionToOffsetInUnwrappedLine(i, n.column - 1),
                    a = this._lineBreakData.normalizeOffsetAroundInjections(s, r);
                if (a !== s) return this._lineBreakData.getOutputPositionOfOffsetInUnwrappedLine(a, r).toPosition(o, this._lineBreakData.wrappedTextIndentLength)
            }
            if (0 === r) {
                if (0 < i && n.column === this._getViewLineMinColumn(i)) return new Re.a(n.lineNumber - 1, this.getViewLineMaxColumn(e, t, i - 1))
            } else if (1 === r && i < this.getViewLineCount() - 1 && n.column === this.getViewLineMaxColumn(e, t, i)) return new Re.a(n.lineNumber + 1, this._getViewLineMinColumn(i + 1));
            return n
        }
        getInjectedTextAt(e, t) {
            return this._lineBreakData.getInjectedText(e, t - 1)
        }
    }
    let Ps = [""];

    function As(e) {
        if (e >= Ps.length)
            for (let t = 1; t <= e; t++) Ps[t] = new Array(t + 1).join(" ");
        return Ps[e]
    }

    function Rs(e, t) {
        return null === e ? (t ? Is : Ts).INSTANCE : new Ms(e, t)
    }
    class Fs {
        constructor(e) {
            this._lines = e
        }
        _validPosition(e) {
            return this._lines.model.validatePosition(e)
        }
        _validRange(e) {
            return this._lines.model.validateRange(e)
        }
        convertViewPositionToModelPosition(e) {
            return this._validPosition(e)
        }
        convertViewRangeToModelRange(e) {
            return this._validRange(e)
        }
        validateViewPosition(e, t) {
            return this._validPosition(t)
        }
        validateViewRange(e, t) {
            return this._validRange(t)
        }
        convertModelPositionToViewPosition(e) {
            return this._validPosition(e)
        }
        convertModelRangeToViewRange(e) {
            return this._validRange(e)
        }
        modelPositionIsVisible(e) {
            var t = this._lines.model.getLineCount();
            return !(e.lineNumber < 1 || e.lineNumber > t)
        }
        getModelLineViewLineCount(e) {
            return 1
        }
        getViewLineNumberOfModelPosition(e, t) {
            return e
        }
    }
    class js {
        constructor(e) {
            this.model = e
        }
        dispose() {}
        createCoordinatesConverter() {
            return new Fs(this)
        }
        getHiddenAreas() {
            return []
        }
        setHiddenAreas(e) {
            return !1
        }
        setTabSize(e) {
            return !1
        }
        setWrappingSettings(e, t, i, n) {
            return !1
        }
        createLineBreaksComputer() {
            let e = [];
            return {
                addRequest: (t, i, n) => {
                    e.push(null)
                },
                finalize: () => e
            }
        }
        onModelFlushed() {}
        onModelLinesDeleted(e, t, i) {
            return new Xo(t, i)
        }
        onModelLinesInserted(e, t, i, n) {
            return new Qo(t, i)
        }
        onModelLineChanged(e, t, i) {
            return [!1, new Zo(t, t), null, null]
        }
        acceptVersionId(e) {}
        getViewLineCount() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineCount()
        }
        getActiveIndentGuide(e, t, i) {
            return {
                startLineNumber: e,
                endLineNumber: e,
                indent: 0
            }
        }
        getViewLinesBracketGuides(e, t, i) {
            return new Array(t - e + 1).fill([])
        }
        getViewLinesIndentGuides(e, t) {
            var i = t - e + 1;
            let n = new Array(i);
            for (let e = 0; e < i; e++) n[e] = 0;
            return n
        }
        getViewLineContent(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineContent(e)
        }
        getViewLineLength(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineLength(e)
        }
        getViewLineMinColumn(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineMinColumn(e)
        }
        getViewLineMaxColumn(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineMaxColumn(e)
        }
        getViewLineData(e) {
            let t = this.model.getLineTokens(e);
            return e = t.getLineContent(), new We(e, !1, 1, e.length + 1, 0, t.inflate(), null)
        }
        getViewLinesData(e, t, i) {
            var n = this.model.getLineCount();
            e = Math.min(Math.max(1, e), n), t = Math.min(Math.max(1, t), n);
            let r = [];
            for (let n = e; n <= t; n++) {
                var o = n - e;
                i[o] || (r[o] = null), r[o] = this.getViewLineData(n)
            }
            return r
        }
        getDecorationsInRange(e, t, i) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getDecorationsInRange(e, t, i)
        }
        normalizePosition(e, t) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.normalizePosition(e, t)
        }
        getLineIndentColumn(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineIndentColumn(e)
        }
        getInjectedTextAt(e) {
            return null
        }
    }
    class Bs {
        constructor(e, t, i, n, r) {
            this.editorId = e, this.model = t, this.configuration = i, this._linesCollection = n, this._coordinatesConverter = r, this._decorationsCache = Object.create(null), this._cachedModelDecorationsResolver = null, this._cachedModelDecorationsResolverViewRange = null
        }
        _clearCachedModelDecorationsResolver() {
            this._cachedModelDecorationsResolver = null, this._cachedModelDecorationsResolverViewRange = null
        }
        dispose() {
            this._decorationsCache = Object.create(null), this._clearCachedModelDecorationsResolver()
        }
        reset() {
            this._decorationsCache = Object.create(null), this._clearCachedModelDecorationsResolver()
        }
        onModelDecorationsChanged() {
            this._decorationsCache = Object.create(null), this._clearCachedModelDecorationsResolver()
        }
        onLineMappingChanged() {
            this._decorationsCache = Object.create(null), this._clearCachedModelDecorationsResolver()
        }
        _getOrCreateViewModelDecoration(e) {
            var t = e.id;
            let i = this._decorationsCache[t];
            if (!i) {
                var n, r = e.range,
                    o = e.options;
                let s;
                s = o.isWholeLine ? (n = this._coordinatesConverter.convertModelPositionToViewPosition(new Re.a(r.startLineNumber, 1), 0), e = this._coordinatesConverter.convertModelPositionToViewPosition(new Re.a(r.endLineNumber, this.model.getLineMaxColumn(r.endLineNumber)), 1), new T.a(n.lineNumber, n.column, e.lineNumber, e.column)) : this._coordinatesConverter.convertModelRangeToViewRange(r, 1), i = new Ke(s, o), this._decorationsCache[t] = i
            }
            return i
        }
        getDecorationsViewportData(e) {
            return null !== this._cachedModelDecorationsResolver && e.equalsRange(this._cachedModelDecorationsResolverViewRange) || (this._cachedModelDecorationsResolver = this._getDecorationsViewportData(e), this._cachedModelDecorationsResolverViewRange = e), this._cachedModelDecorationsResolver
        }
        _getDecorationsViewportData(e) {
            var t = this._linesCollection.getDecorationsInRange(e, this.editorId, Object(n.n)(this.configuration.options)),
                i = e.startLineNumber,
                r = e.endLineNumber;
            let o = [],
                s = 0,
                a = [];
            for (let e = i; e <= r; e++) a[e - i] = [];
            for (let e = 0, n = t.length; e < n; e++) {
                var l = (c = t[e]).options,
                    d = this._getOrCreateViewModelDecoration(c),
                    c = d.range;
                if (o[s++] = d, l.inlineClassName) {
                    var h = new He(c, l.inlineClassName, l.inlineClassNameAffectsLetterSpacing ? 3 : 0),
                        u = Math.max(i, c.startLineNumber),
                        p = Math.min(r, c.endLineNumber);
                    for (let e = u; e <= p; e++) a[e - i].push(h)
                }
                l.beforeContentClassName && i <= c.startLineNumber && c.startLineNumber <= r && (u = new He(new T.a(c.startLineNumber, c.startColumn, c.startLineNumber, c.startColumn), l.beforeContentClassName, 1), a[c.startLineNumber - i].push(u)), l.afterContentClassName && i <= c.endLineNumber && c.endLineNumber <= r && (l = new He(new T.a(c.endLineNumber, c.endColumn, c.endLineNumber, c.endColumn), l.afterContentClassName, 2), a[c.endLineNumber - i].push(l))
            }
            return {
                decorations: o,
                inlineDecorations: a
            }
        }
    }
    const Vs = new class {
        constructor() {
            this._onDidChangeLanguages = new D.b, this.onDidChangeLanguages = this._onDidChangeLanguages.event, this._languages = [], this._dynamicLanguages = []
        }
        registerLanguage(e) {
            return this._languages.push(e), this._onDidChangeLanguages.fire(void 0), {
                dispose: () => {
                    for (let t = 0, i = this._languages.length; t < i; t++)
                        if (this._languages[t] === e) return void this._languages.splice(t, 1)
                }
            }
        }
        getLanguages() {
            return [].concat(this._languages).concat(this._dynamicLanguages)
        }
    };
    xt.a.add("editor.modesRegistry", Vs);
    const Ws = "plaintext";
    Vs.registerLanguage({
        id: Ws,
        extensions: [".txt"],
        aliases: [yt.a("plainText.alias", "Plain Text"), "text"],
        mimetypes: [Hn.a.text]
    }), Q.b.register(Ws, {
        brackets: [
            ["(", ")"],
            ["[", "]"],
            ["{", "}"]
        ],
        surroundingPairs: [{
            open: "{",
            close: "}"
        }, {
            open: "[",
            close: "]"
        }, {
            open: "(",
            close: ")"
        }, {
            open: "<",
            close: ">"
        }, {
            open: '"',
            close: '"'
        }, {
            open: "'",
            close: "'"
        }, {
            open: "`",
            close: "`"
        }],
        colorizedBracketPairs: [],
        folding: {
            offSide: !0
        }
    }, 0);
    class zs extends v.a {
        constructor(e, t, i, n, r, o) {
            if (super(), this._editorId = e, this._configuration = t, this.model = i, this._eventDispatcher = new os, this.onEvent = this._eventDispatcher.onEvent, this.cursorConfig = new Sn.b(this.model.getLanguageId(), this.model.getOptions(), this._configuration), this._tokenizeViewportSoon = this._register(new q.e(() => this.tokenizeViewport(), 50)), this._update配置ViewLineCount = this._register(new q.e(() => this._update配置ViewLineCountNow(), 0)), this._hasFocus = !1, this._viewportStartLine = -1, this._viewportStartLineTrackedRange = null, this._viewportStartLineDelta = 0, this.model.isTooLargeForTokenization()) this._lines = new js(this.model);
            else {
                const i = this._configuration.options;
                var s = i.get(43),
                    a = i.get(123);
                e = i.get(130), t = i.get(122);
                this._lines = new Es(this._editorId, this.model, n, r, s, this.model.getOptions().tabSize, a, e.wrappingColumn, t)
            }
            this.coordinatesConverter = this._lines.createCoordinatesConverter(), this._cursor = this._register(new fs(i, this, this.coordinatesConverter, this.cursorConfig)), this.viewLayout = this._register(new Ss(this._configuration, this.getLineCount(), o)), this._register(this.viewLayout.onDidScroll(e => {
                e.scrollTopChanged && this._tokenizeViewportSoon.schedule(), this._eventDispatcher.emitSingleViewEvent(new es(e)), this._eventDispatcher.emitOutgoingEvent(new ds(e.oldScrollWidth, e.oldScrollLeft, e.oldScrollHeight, e.oldScrollTop, e.scrollWidth, e.scrollLeft, e.scrollHeight, e.scrollTop))
            })), this._register(this.viewLayout.onDidContentSizeChange(e => {
                this._eventDispatcher.emitOutgoingEvent(e)
            })), this._decorations = new Bs(this._editorId, this.model, this._configuration, this._lines, this.coordinatesConverter), this._registerModelEvents(), this._register(this._configuration.onDidChangeFast(e => {
                try {
                    var t = this._eventDispatcher.beginEmitViewEvents();
                    this._on配置Changed(t, e)
                } finally {
                    this._eventDispatcher.endEmitViewEvents()
                }
            })), this._register($r.getInstance().onDidChange(() => {
                this._eventDispatcher.emitSingleViewEvent(new ns)
            })), this._update配置ViewLineCountNow()
        }
        dispose() {
            super.dispose(), this._decorations.dispose(), this._lines.dispose(), this.invalidateMinimapColorCache(), this._viewportStartLineTrackedRange = this.model._setTrackedRange(this._viewportStartLineTrackedRange, null, 1), this._eventDispatcher.dispose()
        }
        createLineBreaksComputer() {
            return this._lines.createLineBreaksComputer()
        }
        addViewEventHandler(e) {
            this._eventDispatcher.addViewEventHandler(e)
        }
        removeViewEventHandler(e) {
            this._eventDispatcher.removeViewEventHandler(e)
        }
        _update配置ViewLineCountNow() {
            this._configuration.setViewLineCount(this._lines.getViewLineCount())
        }
        tokenizeViewport() {
            var e = this.viewLayout.getLinesViewportData();
            e = new T.a(e.startLineNumber, this.getLineMinColumn(e.startLineNumber), e.endLineNumber, this.getLineMaxColumn(e.endLineNumber));
            for (const t of this._toModelVisibleRanges(e)) this.model.tokenizeViewport(t.startLineNumber, t.endLineNumber)
        }
        setHasFocus(e) {
            this._hasFocus = e, this._cursor.setHasFocus(e), this._eventDispatcher.emitSingleViewEvent(new qo(e)), this._eventDispatcher.emitOutgoingEvent(new ls(!e, e))
        }
        onCompositionStart() {
            this._eventDispatcher.emitSingleViewEvent(new Wo)
        }
        onCompositionEnd() {
            this._eventDispatcher.emitSingleViewEvent(new zo)
        }
        onDidColorThemeChange() {
            this._eventDispatcher.emitSingleViewEvent(new ts)
        }
        _on配置Changed(e, t) {
            let i = null; - 1 !== this._viewportStartLine && (l = new Re.a(this._viewportStartLine, this.getLineMinColumn(this._viewportStartLine)), i = this.coordinatesConverter.convertViewPositionToModelPosition(l));
            let n = !1;
            const r = this._configuration.options;
            var o = r.get(43),
                s = r.get(123),
                a = r.get(130),
                l = r.get(122);
            this._lines.setWrappingSettings(o, s, a.wrappingColumn, l) && (e.emitViewEvent(new $o), e.emitViewEvent(new Yo), e.emitViewEvent(new Ko(null)), this._cursor.onLineMappingChanged(e), this._decorations.onLineMappingChanged(), this.viewLayout.onFlushed(this.getLineCount()), 0 !== this.viewLayout.getCurrentScrollTop() && (n = !0), this._update配置ViewLineCount.schedule()), t.hasChanged(80) && (this._decorations.reset(), e.emitViewEvent(new Ko(null))), e.emitViewEvent(new Ho(t)), this.viewLayout.on配置Changed(t), n && i && (e = this.coordinatesConverter.convertModelPositionToViewPosition(i), e = this.viewLayout.getVerticalOffsetForLineNumber(e.lineNumber), this.viewLayout.setScrollPosition({
                scrollTop: e + this._viewportStartLineDelta
            }, 1)), Sn.b.shouldRecreate(t) && (this.cursorConfig = new Sn.b(this.model.getLanguageId(), this.model.getOptions(), this._configuration), this._cursor.update配置(this.cursorConfig))
        }
        _registerModelEvents() {
            this._register(this.model.onDidChangeContentOrInjectedText(e => {
                try {
                    const u = this._eventDispatcher.beginEmitViewEvents();
                    let p = !1,
                        g = !1;
                    var t = e.changes,
                        i = e instanceof Vo.d ? e.versionId : null;
                    const f = this._lines.createLineBreaksComputer();
                    for (const e of t) switch (e.changeType) {
                        case 4:
                            for (let t = 0; t < e.detail.length; t++) {
                                var n = e.detail[t];
                                let i = e.injectedTexts[t];
                                i = i && i.filter(e => !e.ownerId || e.ownerId === this._editorId), f.addRequest(n, i, null)
                            }
                            break;
                        case 2: {
                            let t = null;
                            e.injectedText && (t = e.injectedText.filter(e => !e.ownerId || e.ownerId === this._editorId)), f.addRequest(e.detail, t, null);
                            break
                        }
                    }
                    const m = f.finalize();
                    let v = 0;
                    for (const e of t) switch (e.changeType) {
                        case 1:
                            this._lines.onModelFlushed(), u.emitViewEvent(new $o), this._decorations.reset(), this.viewLayout.onFlushed(this.getLineCount()), p = !0;
                            break;
                        case 3:
                            var r = this._lines.onModelLinesDeleted(i, e.fromLineNumber, e.toLineNumber);
                            null !== r && (u.emitViewEvent(r), this.viewLayout.onLinesDeleted(r.fromLineNumber, r.toLineNumber)), p = !0;
                            break;
                        case 4:
                            var o = m.slice(v, v + e.detail.length);
                            v += e.detail.length;
                            var s = this._lines.onModelLinesInserted(i, e.fromLineNumber, e.toLineNumber, o);
                            null !== s && (u.emitViewEvent(s), this.viewLayout.onLinesInserted(s.fromLineNumber, s.toLineNumber)), p = !0;
                            break;
                        case 2:
                            var a = m[v];
                            v++;
                            var [l, d, c, h] = this._lines.onModelLineChanged(i, e.lineNumber, a);
                            g = l, d && u.emitViewEvent(d), c && (u.emitViewEvent(c), this.viewLayout.onLinesInserted(c.fromLineNumber, c.toLineNumber)), h && (u.emitViewEvent(h), this.viewLayout.onLinesDeleted(h.fromLineNumber, h.toLineNumber))
                    }
                    null !== i && this._lines.acceptVersionId(i), this.viewLayout.onHeightMaybeChanged(), !p && g && (u.emitViewEvent(new Yo), u.emitViewEvent(new Ko(null)), this._cursor.onLineMappingChanged(u), this._decorations.onLineMappingChanged())
                } finally {
                    this._eventDispatcher.endEmitViewEvents()
                }
                if (this._viewportStartLine = -1, this._configuration.setMaxLineNumber(this.model.getLineCount()), this._update配置ViewLineCountNow(), !this._hasFocus && 2 <= this.model.getAttachedEditorCount() && this._viewportStartLineTrackedRange) {
                    const e = this.model._getTrackedRange(this._viewportStartLineTrackedRange);
                    e && (t = this.coordinatesConverter.convertModelPositionToViewPosition(e.getStartPosition()), t = this.viewLayout.getVerticalOffsetForLineNumber(t.lineNumber), this.viewLayout.setScrollPosition({
                        scrollTop: t + this._viewportStartLineDelta
                    }, 1))
                }
                try {
                    var u = this._eventDispatcher.beginEmitViewEvents();
                    this._cursor.onModelContentChanged(u, e)
                } finally {
                    this._eventDispatcher.endEmitViewEvents()
                }
            })), this._register(this.model.onDidChangeTokens(e => {
                let t = [];
                for (let r = 0, o = e.ranges.length; r < o; r++) {
                    var i = e.ranges[r],
                        n = this.coordinatesConverter.convertModelPositionToViewPosition(new Re.a(i.fromLineNumber, 1)).lineNumber;
                    i = this.coordinatesConverter.convertModelPositionToViewPosition(new Re.a(i.toLineNumber, this.model.getLineMaxColumn(i.toLineNumber))).lineNumber;
                    t[r] = {
                        fromLineNumber: n,
                        toLineNumber: i
                    }
                }
                this._eventDispatcher.emitSingleViewEvent(new is(t)), e.tokenizationSupportChanged && this._tokenizeViewportSoon.schedule()
            })), this._register(this.model.onDidChangeLanguage配置(e => {
                this._eventDispatcher.emitSingleViewEvent(new Go), this.cursorConfig = new Sn.b(this.model.getLanguageId(), this.model.getOptions(), this._configuration), this._cursor.update配置(this.cursorConfig)
            })), this._register(this.model.onDidChangeLanguage(e => {
                this.cursorConfig = new Sn.b(this.model.getLanguageId(), this.model.getOptions(), this._configuration), this._cursor.update配置(this.cursorConfig)
            })), this._register(this.model.onDidChangeOptions(e => {
                if (this._lines.setTabSize(this.model.getOptions().tabSize)) {
                    try {
                        const e = this._eventDispatcher.beginEmitViewEvents();
                        e.emitViewEvent(new $o), e.emitViewEvent(new Yo), e.emitViewEvent(new Ko(null)), this._cursor.onLineMappingChanged(e), this._decorations.onLineMappingChanged(), this.viewLayout.onFlushed(this.getLineCount())
                    } finally {
                        this._eventDispatcher.endEmitViewEvents()
                    }
                    this._update配置ViewLineCount.schedule()
                }
                this.cursorConfig = new Sn.b(this.model.getLanguageId(), this.model.getOptions(), this._configuration), this._cursor.update配置(this.cursorConfig)
            })), this._register(this.model.onDidChangeDecorations(e => {
                this._decorations.onModelDecorationsChanged(), this._eventDispatcher.emitSingleViewEvent(new Ko(e))
            }))
        }
        setHiddenAreas(e) {
            let t = !1;
            try {
                const i = this._eventDispatcher.beginEmitViewEvents();
                t = this._lines.setHiddenAreas(e), t && (i.emitViewEvent(new $o), i.emitViewEvent(new Yo), i.emitViewEvent(new Ko(null)), this._cursor.onLineMappingChanged(i), this._decorations.onLineMappingChanged(), this.viewLayout.onFlushed(this.getLineCount()), this.viewLayout.onHeightMaybeChanged())
            } finally {
                this._eventDispatcher.endEmitViewEvents()
            }
            this._update配置ViewLineCount.schedule(), t && this._eventDispatcher.emitOutgoingEvent(new cs)
        }
        getVisibleRangesPlusViewportAboveBelow() {
            var e = this._configuration.options.get(129),
                t = this._configuration.options.get(58),
                i = Math.max(20, Math.round(e.height / t));
            e = this.viewLayout.getLinesViewportData(), t = Math.max(1, e.completelyVisibleStartLineNumber - i), i = Math.min(this.getLineCount(), e.completelyVisibleEndLineNumber + i);
            return this._toModelVisibleRanges(new T.a(t, this.getLineMinColumn(t), i, this.getLineMaxColumn(i)))
        }
        getVisibleRanges() {
            var e = this.getCompletelyVisibleViewRange();
            return this._toModelVisibleRanges(e)
        }
        _toModelVisibleRanges(e) {
            e = this.coordinatesConverter.convertViewRangeToModelRange(e);
            var t = this._lines.getHiddenAreas();
            if (0 === t.length) return [e];
            let i = [],
                n = 0,
                r = e.startLineNumber,
                o = e.startColumn;
            var s = e.endLineNumber;
            e = e.endColumn;
            for (let e = 0, d = t.length; e < d; e++) {
                var a = t[e].startLineNumber,
                    l = t[e].endLineNumber;
                l < r || s < a || (r < a && (i[n++] = new T.a(r, o, a - 1, this.model.getLineMaxColumn(a - 1))), r = l + 1, o = 1)
            }
            return (r < s || r === s && o < e) && (i[n++] = new T.a(r, o, s, e)), i
        }
        getCompletelyVisibleViewRange() {
            var e = (t = this.viewLayout.getLinesViewportData()).completelyVisibleStartLineNumber,
                t = t.completelyVisibleEndLineNumber;
            return new T.a(e, this.getLineMinColumn(e), t, this.getLineMaxColumn(t))
        }
        getCompletelyVisibleViewRangeAtScrollTop(e) {
            e = (t = this.viewLayout.getLinesViewportDataAtScrollTop(e)).completelyVisibleStartLineNumber;
            var t = t.completelyVisibleEndLineNumber;
            return new T.a(e, this.getLineMinColumn(e), t, this.getLineMaxColumn(t))
        }
        saveState() {
            var e = this.viewLayout.saveState(),
                t = e.scrollTop,
                i = this.viewLayout.getLineNumberAtVerticalOffset(t),
                n = this.coordinatesConverter.convertViewPositionToModelPosition(new Re.a(i, this.getLineMinColumn(i)));
            t = this.viewLayout.getVerticalOffsetForLineNumber(i) - t;
            return {
                scrollLeft: e.scrollLeft,
                firstPosition: n,
                firstPositionDeltaTop: t
            }
        }
        reduceRestoreState(e) {
            if (void 0 === e.firstPosition) return this._reduceRestoreStateCompatibility(e);
            var t = this.model.validatePosition(e.firstPosition);
            t = this.coordinatesConverter.convertModelPositionToViewPosition(t), t = this.viewLayout.getVerticalOffsetForLineNumber(t.lineNumber) - e.firstPositionDeltaTop;
            return {
                scrollLeft: e.scrollLeft,
                scrollTop: t
            }
        }
        _reduceRestoreStateCompatibility(e) {
            return {
                scrollLeft: e.scrollLeft,
                scrollTop: e.scrollTopWithoutViewZones
            }
        }
        getTabSize() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getOptions().tabSize
        }
        getTextModelOptions() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getOptions()
        }
        getLineCount() {
            return this._lines.getViewLineCount()
        }
        setViewport(e, t, i) {
            this._viewportStartLine = e;
            var n = this.coordinatesConverter.convertViewPositionToModelPosition(new Re.a(e, this.getLineMinColumn(e)));
            this._viewportStartLineTrackedRange = this.model._setTrackedRange(this._viewportStartLineTrackedRange, new T.a(n.lineNumber, n.column, n.lineNumber, n.column), 1), n = this.viewLayout.getVerticalOffsetForLineNumber(e), e = this.viewLayout.getCurrentScrollTop(), this._viewportStartLineDelta = e - n
        }
        getActiveIndentGuide(e, t, i) {
            return this._lines.getActiveIndentGuide(e, t, i)
        }
        getLinesIndentGuides(e, t) {
            return this._lines.getViewLinesIndentGuides(e, t)
        }
        getBracketGuidesInRangeByLine(e, t, i, n) {
            return this._lines.getViewLinesBracketGuides(e, t, i, n)
        }
        getLineContent(e) {
            return this._lines.getViewLineContent(e)
        }
        getLineLength(e) {
            return this._lines.getViewLineLength(e)
        }
        getLineMinColumn(e) {
            return this._lines.getViewLineMinColumn(e)
        }
        getLineMaxColumn(e) {
            return this._lines.getViewLineMaxColumn(e)
        }
        getLineFirstNonWhitespaceColumn(e) {
            return -1 === (e = b.u(this.getLineContent(e))) ? 0 : e + 1
        }
        getLineLastNonWhitespaceColumn(e) {
            return -1 === (e = b.I(this.getLineContent(e))) ? 0 : e + 2
        }
        getDecorationsInViewport(e) {
            return this._decorations.getDecorationsViewportData(e).decorations
        }
        getInjectedTextAt(e) {
            return this._lines.getInjectedTextAt(e)
        }
        getViewLineRenderingData(e, t) {
            var i = this.model.mightContainRTL(),
                n = this.model.mightContainNonBasicASCII(),
                r = this.getTabSize();
            let o = this._lines.getViewLineData(t),
                s = this._decorations.getDecorationsViewportData(e).inlineDecorations[t - e.startLineNumber];
            return o.inlineDecorations && (s = [...s, ...o.inlineDecorations.map(e => e.toInlineDecoration(t))]), new ze(o.minColumn, o.maxColumn, o.content, o.continuesWithWrappedLine, i, n, o.tokens, s, r, o.startVisibleColumn)
        }
        getViewLineData(e) {
            return this._lines.getViewLineData(e)
        }
        getMinimapLinesRenderingData(e, t, i) {
            return i = this._lines.getViewLinesData(e, t, i), new Ve(this.getTabSize(), i)
        }
        getAllOverviewRulerDecorations(e) {
            var t = this.model.getOverviewRulerDecorations(this._editorId, Object(n.n)(this._configuration.options));
            const i = new Hs;
            for (const n of t) {
                var r, o, s, a, l = n.options;
                const t = l.overviewRuler;
                t && 0 !== (r = t.position) && (o = t.getColor(e), s = this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.startLineNumber, n.range.startColumn), a = this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.endLineNumber, n.range.endColumn), i.accept(o, l.zIndex, s, a, r))
            }
            return i.asArray
        }
        invalidateOverviewRulerColorCache() {
            for (const e of this.model.getOverviewRulerDecorations()) {
                const t = e.options.overviewRuler;
                t && t.invalidateCachedColor()
            }
        }
        invalidateMinimapColorCache() {
            for (const e of this.model.getAllDecorations()) {
                const t = e.options.minimap;
                t && t.invalidateCachedColor()
            }
        }
        getValueInRange(e, t) {
            return e = this.coordinatesConverter.convertViewRangeToModelRange(e), this.model.getValueInRange(e, t)
        }
        getModelLineMaxColumn(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getLineMaxColumn(e)
        }
        validateModelPosition(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.validatePosition(e)
        }
        validateModelRange(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.validateRange(e)
        }
        deduceModelPositionRelativeToViewPosition(e, t, i) {
            return e = this.coordinatesConverter.convertViewPositionToModelPosition(e), 2 === this.model.getEOL().length && (t < 0 ? t -= i : t += i), e = this.model.getOffsetAt(e), this.model.getPositionAt(e + t)
        }
        getEOL() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getEOL()
        }
        getPlainTextToCopy(e, t, i) {
            var n = i ? "\r\n" : this.model.getEOL();
            (e = e.slice(0)).sort(T.a.compareRangesUsingStarts);
            let r = !1,
                o = !1;
            for (const t of e) t.isEmpty() ? r = !0 : o = !0;
            if (!o) {
                if (!t) return "";
                var s = e.map(e => e.startLineNumber);
                let i = "";
                for (let e = 0; e < s.length; e++) 0 < e && s[e - 1] === s[e] || (i += this.model.getLineContent(s[e]) + n);
                return i
            }
            if (r && t) {
                let t = [],
                    n = 0;
                for (const r of e) {
                    var a = r.startLineNumber;
                    r.isEmpty() ? a !== n && t.push(this.model.getLineContent(a)) : t.push(this.model.getValueInRange(r, i ? 2 : 0)), n = a
                }
                return 1 === t.length ? t[0] : t
            }
            let l = [];
            for (const t of e) t.isEmpty() || l.push(this.model.getValueInRange(t, i ? 2 : 0));
            return 1 === l.length ? l[0] : l
        }
        getRichTextToCopy(e, t) {
            var i = this.model.getLanguageId();
            if (i === Ws) return null;
            if (1 !== e.length) return null;
            let r, o = e[0];
            if (o.isEmpty()) {
                if (!t) return null;
                var s = o.startLineNumber;
                o = new T.a(s, this.model.getLineMinColumn(s), s, this.model.getLineMaxColumn(s))
            }
            return e = this._configuration.options.get(43), t = this._getColorMap(), r = (s = /[:;\\\/<>]/.test(e.fontFamily) || e.fontFamily === n.c.fontFamily) ? n.c.fontFamily : (r = e.fontFamily, r = r.replace(/"/g, "'"), /[,']/.test(r) || /[+ ]/.test(r) && (r = `'${r}'`), `${r}, ${n.c.fontFamily}`), {
                mode: i,
                html: `<div style="color: ${t[1]};background-color: ${t[2]};font-family: ${r};font-weight: ${e.fontWeight};font-size: ${e.fontSize}px;line-height: ${e.lineHeight}px;white-space: pre;">` + this._getHTMLToCopy(o, t) + "</div>"
            }
        }
        _getHTMLToCopy(e, t) {
            var i = e.startLineNumber,
                n = e.startColumn,
                r = e.endLineNumber,
                o = e.endColumn,
                s = this.getTabSize();
            let a = "";
            for (let e = i; e <= r; e++) {
                const h = this.model.getLineTokens(e);
                var l = h.getLineContent(),
                    d = e === i ? n - 1 : 0,
                    c = e === r ? o - 1 : l.length;
                a += "" === l ? "<br>" : function(e, t, i, n, r, o, s) {
                    let a = "<div>",
                        l = n,
                        d = 0,
                        c = !0;
                    for (let p = 0, g = t.getCount(); p < g; p++) {
                        var h = t.getEndOffset(p);
                        if (!(h <= n)) {
                            let n = "";
                            for (; l < h && l < r; l++) {
                                var u = e.charCodeAt(l);
                                switch (u) {
                                    case 9:
                                        let e = o - (l + d) % o;
                                        for (d += e - 1; 0 < e;) c = s && c ? (n += "&#160;", !1) : (n += " ", !0), e--;
                                        break;
                                    case 60:
                                        n += "&lt;", c = !1;
                                        break;
                                    case 62:
                                        n += "&gt;", c = !1;
                                        break;
                                    case 38:
                                        n += "&amp;", c = !1;
                                        break;
                                    case 0:
                                        n += "&#00;", c = !1;
                                        break;
                                    case 65279:
                                    case 8232:
                                    case 8233:
                                    case 133:
                                        n += "�", c = !1;
                                        break;
                                    case 13:
                                        n += "&#8203", c = !1;
                                        break;
                                    case 32:
                                        c = s && c ? (n += "&#160;", !1) : (n += " ", !0);
                                        break;
                                    default:
                                        n += String.fromCharCode(u), c = !1
                                }
                            }
                            if (a += `<span style="${t.getInlineStyle(p,i)}">${n}</span>`, r < h || l >= r) break
                        }
                    }
                    return a += "</div>", a
                }(l, h.inflate(), t, d, c, s, A.i)
            }
            return a
        }
        _getColorMap() {
            var e = z.A.getColorMap();
            let t = ["#000000"];
            if (e)
                for (let i = 1, n = e.length; i < n; i++) t[i] = uo.a.Format.CSS.formatHex(e[i]);
            return t
        }
        pushStackElement() {
            this.model.pushStackElement()
        }
        getPrimaryCursorState() {
            return this._cursor.getPrimaryCursorState()
        }
        getLastAddedCursorIndex() {
            return this._cursor.getLastAddedCursorIndex()
        }
        getCursorStates() {
            return this._cursor.getCursorStates()
        }
        setCursorStates(e, t, i) {
            this._withViewEventsCollector(n => this._cursor.setStates(n, e, t, i))
        }
        getCursorColumnSelectData() {
            return this._cursor.getCursorColumnSelectData()
        }
        getCursorAutoClosedCharacters() {
            return this._cursor.getAutoClosedCharacters()
        }
        setCursorColumnSelectData(e) {
            this._cursor.setCursorColumnSelectData(e)
        }
        getPrevEditOperationType() {
            return this._cursor.getPrevEditOperationType()
        }
        setPrevEditOperationType(e) {
            this._cursor.setPrevEditOperationType(e)
        }
        getSelection() {
            return this._cursor.getSelection()
        }
        getSelections() {
            return this._cursor.getSelections()
        }
        getPosition() {
            return this._cursor.getPrimaryCursorState().modelState.position
        }
        setSelections(e, t, i = 0) {
            this._withViewEventsCollector(n => this._cursor.setSelections(n, e, t, i))
        }
        saveCursorState() {
            return this._cursor.saveState()
        }
        restoreCursorState(e) {
            this._withViewEventsCollector(t => this._cursor.restoreState(t, e))
        }
        _executeCursorEdit(e) {
            this._cursor.context.cursorConfig.readOnly ? this._eventDispatcher.emitOutgoingEvent(new us) : this._withViewEventsCollector(e)
        }
        executeEdits(e, t, i) {
            this._executeCursorEdit(n => this._cursor.executeEdits(n, e, t, i))
        }
        startComposition() {
            this._cursor.setIsDoingComposition(!0), this._executeCursorEdit(e => this._cursor.startComposition(e))
        }
        endComposition(e) {
            this._cursor.setIsDoingComposition(!1), this._executeCursorEdit(t => this._cursor.endComposition(t, e))
        }
        type(e, t) {
            this._executeCursorEdit(i => this._cursor.type(i, e, t))
        }
        compositionType(e, t, i, n, r) {
            this._executeCursorEdit(o => this._cursor.compositionType(o, e, t, i, n, r))
        }
        paste(e, t, i, n) {
            this._executeCursorEdit(r => this._cursor.paste(r, e, t, i, n))
        }
        cut(e) {
            this._executeCursorEdit(t => this._cursor.cut(t, e))
        }
        executeCommand(e, t) {
            this._executeCursorEdit(i => this._cursor.executeCommand(i, e, t))
        }
        executeCommands(e, t) {
            this._executeCursorEdit(i => this._cursor.executeCommands(i, e, t))
        }
        revealPrimaryCursor(e, t) {
            this._withViewEventsCollector(i => this._cursor.revealPrimary(i, e, t, 0))
        }
        revealTopMostCursor(e) {
            var t = this._cursor.getTopMostViewPosition();
            const i = new T.a(t.lineNumber, t.column, t.lineNumber, t.column);
            this._withViewEventsCollector(t => t.emitViewEvent(new Jo(e, i, null, 0, !0, 0)))
        }
        revealBottomMostCursor(e) {
            var t = this._cursor.getBottomMostViewPosition();
            const i = new T.a(t.lineNumber, t.column, t.lineNumber, t.column);
            this._withViewEventsCollector(t => t.emitViewEvent(new Jo(e, i, null, 0, !0, 0)))
        }
        revealRange(e, t, i, n, r) {
            this._withViewEventsCollector(o => o.emitViewEvent(new Jo(e, i, null, n, t, r)))
        }
        getVerticalOffsetForLineNumber(e) {
            return this.viewLayout.getVerticalOffsetForLineNumber(e)
        }
        getScrollTop() {
            return this.viewLayout.getCurrentScrollTop()
        }
        setScrollTop(e, t) {
            this.viewLayout.setScrollPosition({
                scrollTop: e
            }, t)
        }
        setScrollPosition(e, t) {
            this.viewLayout.setScrollPosition(e, t)
        }
        deltaScrollNow(e, t) {
            this.viewLayout.deltaScrollNow(e, t)
        }
        changeWhitespace(e) {
            this.viewLayout.changeWhitespace(e) && (this._eventDispatcher.emitSingleViewEvent(new rs), this._eventDispatcher.emitOutgoingEvent(new cs))
        }
        setMaxLineWidth(e) {
            this.viewLayout.setMaxLineWidth(e)
        }
        _withViewEventsCollector(e) {
            try {
                e(this._eventDispatcher.beginEmitViewEvents())
            } finally {
                this._eventDispatcher.endEmitViewEvents()
            }
        }
        normalizePosition(e, t) {
            return this._lines.normalizePosition(e, t)
        }
        getLineIndentColumn(e) {
            return this._lines.getLineIndentColumn(e)
        }
    }
    class Hs {
        constructor() {
            this._asMap = Object.create(null), this.asArray = []
        }
        accept(e, t, i, n, r) {
            if (s = this._asMap[e]) {
                const e = s.data;
                var o = e[e.length - 3],
                    s = e[e.length - 1];
                o === r && i <= s + 1 ? s < n && (e[e.length - 1] = n) : e.push(r, i, n)
            } else n = new $e(e, t, [r, i, n]), this._asMap[e] = n, this.asArray.push(n)
        }
    }
    class Us {
        constructor(...e) {
            for (var [t, i] of (this._entries = new Map, e)) this.set(t, i)
        }
        set(e, t) {
            var i = this._entries.get(e);
            return this._entries.set(e, t), i
        }
        has(e) {
            return this._entries.has(e)
        }
        get(e) {
            return this._entries.get(e)
        }
    }
    const Ks = Object(_.c)("accessibilityService"),
        $s = new Yt.c("accessibilityModeEnabled", !1);
    class qs extends i(125).a {
        constructor(e, t) {
            super(0);
            for (let t = 0; t < e.length; t++) this.set(e.charCodeAt(t), 1);
            for (let e = 0; e < t.length; e++) this.set(t.charCodeAt(e), 2)
        }
        get(e) {
            return 0 <= e && e < 256 ? this._asciiMap[e] : 12352 <= e && e <= 12543 || 13312 <= e && e <= 19903 || 19968 <= e && e <= 40959 ? 3 : this._map.get(e) || this._defaultValue
        }
    }
    let Gs = [],
        Ys = [];
    class Zs {
        constructor(e, t) {
            this.classifier = new qs(e, t)
        }
        static create(e) {
            return new Zs(e.get(118), e.get(117))
        }
        createLineBreaksComputer(e, t, i, n) {
            t |= 0, i = +i;
            const r = [],
                o = [],
                s = [];
            return {
                addRequest: (e, t, i) => {
                    r.push(e), o.push(t), s.push(i)
                },
                finalize: () => {
                    var a = e.typicalFullwidthCharacterWidth / e.typicalHalfwidthCharacterWidth;
                    let l = [];
                    for (let e = 0, h = r.length; e < h; e++) {
                        var d = o[e],
                            c = s[e];
                        !c || c.injectionOptions || d ? l[e] = function(e, t, i, n, r, o, s) {
                            const a = Vo.b.applyInjectedText(t, i);
                            let l, d;
                            if (d = i && 0 < i.length ? (l = i.map(e => e.options), i.map(e => e.column - 1)) : (l = null, null), -1 === r) return l ? new Be([a.length], [], 0, d, l) : null;
                            var c = a.length;
                            if (c <= 1) return l ? new Be([a.length], [], 0, d, l) : null;
                            var h = r - (s = ea(a, n, r, o, s));
                            let u = [],
                                p = [],
                                g = 0,
                                f = 0,
                                m = 0,
                                v = r,
                                _ = a.charCodeAt(0),
                                w = e.get(_),
                                y = Xs(_, 0, n, o),
                                C = 1;
                            b.E(_) && (y += 1, _ = a.charCodeAt(1), w = e.get(_), C++);
                            for (let t = C; t < c; t++) {
                                var x = t,
                                    S = a.charCodeAt(t);
                                let i, r;
                                r = b.E(S) ? (t++, i = 0, 2) : (i = e.get(S), Xs(S, y, n, o)), Js(_, w, S, i) && (f = x, m = y), y += r, y > v && ((0 === f || y - m > h) && (f = x, m = y - r), u[g] = f, p[g] = m, g++, v = m + h, f = 0), _ = S, w = i
                            }
                            return 0 !== g || i && 0 !== i.length ? (u[g] = c, p[g] = y, new Be(u, p, s, d, l)) : null
                        }(this.classifier, r[e], d, t, i, a, n) : l[e] = function(e, t, i, n, r, o, s) {
                            if (-1 === r) return null;
                            var a = i.length;
                            if (a <= 1) return null;
                            var l = t.breakOffsets,
                                d = t.breakOffsetsVisibleColumn,
                                c = r - (s = ea(i, n, r, o, s));
                            let h = Gs,
                                u = Ys,
                                p = 0,
                                g = 0,
                                f = 0,
                                m = r;
                            var v = l.length;
                            let _ = 0;
                            if (0 <= _) {
                                let e = Math.abs(d[_] - m);
                                for (; _ + 1 < v;) {
                                    var w = Math.abs(d[_ + 1] - m);
                                    if (w >= e) break;
                                    e = w, _++
                                }
                            }
                            for (; _ < v;) {
                                let t = _ < 0 ? 0 : l[_],
                                    r = _ < 0 ? 0 : d[_];
                                g > t && (t = g, r = f);
                                let s = 0,
                                    w = 0,
                                    E = 0,
                                    N = 0;
                                if (r <= m) {
                                    let f = r,
                                        v = 0 === t ? 0 : i.charCodeAt(t - 1),
                                        _ = 0 === t ? 0 : e.get(v),
                                        x = !0;
                                    for (let r = t; r < a; r++) {
                                        var y = r,
                                            C = i.charCodeAt(r);
                                        let t, a;
                                        if (a = b.E(C) ? (r++, t = 0, 2) : (t = e.get(C), Xs(C, f, n, o)), y > g && Js(v, _, C, t) && (s = y, w = f), f += a, f > m) {
                                            N = y > g ? (E = y, f - a) : (E = r + 1, f), f - w > c && (s = 0), x = !1;
                                            break
                                        }
                                        v = C, _ = t
                                    }
                                    if (x) {
                                        0 < p && (h[p] = l[l.length - 1], u[p] = d[l.length - 1], p++);
                                        break
                                    }
                                }
                                if (0 === s) {
                                    let a = r,
                                        l = i.charCodeAt(t),
                                        d = e.get(l),
                                        h = !1;
                                    for (let n = t - 1; n >= g; n--) {
                                        var x = n + 1,
                                            S = i.charCodeAt(n);
                                        if (9 === S) {
                                            h = !0;
                                            break
                                        }
                                        let t, r;
                                        if (r = b.F(S) ? (n--, t = 0, 2) : (t = e.get(S), b.D(S) ? o : 1), a <= m) {
                                            if (0 === E && (E = x, N = a), a <= m - c) break;
                                            if (Js(0, t, l, d)) {
                                                s = x, w = a;
                                                break
                                            }
                                        }
                                        a -= r, l = S, d = t
                                    }
                                    if (0 !== s) {
                                        var k = c - (N - w);
                                        if (k <= n) {
                                            var L = i.charCodeAt(E);
                                            let e;
                                            e = b.E(L) ? 2 : Xs(L, N, n, o), k - e < 0 && (s = 0)
                                        }
                                    }
                                    if (h) {
                                        _--;
                                        continue
                                    }
                                }
                                for (0 === s && (s = E, w = N), s <= g && (k = i.charCodeAt(g), w = b.E(k) ? (s = g + 2, f + 2) : (s = g + 1, f + Xs(k, f, n, o))), g = s, h[p] = s, f = w, u[p] = w, p++, m = w + c; _ < 0 || _ < v && d[_] < w;) _++;
                                let D = Math.abs(d[_] - m);
                                for (; _ + 1 < v;) {
                                    var O = Math.abs(d[_ + 1] - m);
                                    if (O >= D) break;
                                    D = O, _++
                                }
                            }
                            return 0 !== p ? (h.length = p, u.length = p, Gs = t.breakOffsets, Ys = t.breakOffsetsVisibleColumn, t.breakOffsets = h, t.breakOffsetsVisibleColumn = u, t.wrappedTextIndentLength = s, t) : null
                        }(this.classifier, c, r[e], t, i, a, n)
                    }
                    return Gs.length = 0, Ys.length = 0, l
                }
            }
        }
    }

    function Xs(e, t, i, n) {
        return 9 === e ? i - t % i : b.D(e) || e < 32 ? n : 1
    }

    function Qs(e, t) {
        return t - e % t
    }

    function Js(e, t, i, n) {
        return 32 !== i && (2 === t || 3 === t && 2 !== n || 1 === n || 3 === n && 1 !== t)
    }

    function ea(e, t, i, n, r) {
        let o = 0;
        if (0 !== r) {
            var s = b.u(e);
            if (-1 !== s) {
                for (let i = 0; i < s; i++) {
                    o += 9 === e.charCodeAt(i) ? Qs(o, t) : 1
                }
                var a = 3 === r ? 2 : 2 === r ? 1 : 0;
                for (let e = 0; e < a; e++) {
                    o += Qs(o, t)
                }
                o + n > i && (o = 0)
            }
        }
        return o
    }
    const ta = null === (gi = window.trustedTypes) || void 0 === gi ? void 0 : gi.createPolicy("domLineBreaksComputer", {
        createHTML: e => e
    });
    class ia {
        static create() {
            return new ia
        }
        constructor() {}
        createLineBreaksComputer(e, t, i, n) {
            t |= 0, i = +i;
            let r = [],
                o = [];
            return {
                addRequest: (e, t, i) => {
                    r.push(e), o.push(t)
                },
                finalize: () => function(e, t, i, n, r, o) {
                    function s(t) {
                        const i = o[t];
                        if (i) {
                            var n = Vo.b.applyInjectedText(e[t], i),
                                r = i.map(e => e.options);
                            t = i.map(e => e.column - 1);
                            return new Be([n.length], [], 0, t, r)
                        }
                        return null
                    }
                    if (-1 === n) {
                        const t = [];
                        for (let i = 0, n = e.length; i < n; i++) t[i] = s(i);
                        return t
                    }
                    const a = Math.round(n * t.typicalHalfwidthCharacterWidth),
                        l = 3 === r ? 2 : 2 === r ? 1 : 0,
                        d = Math.round(i * l),
                        c = Math.ceil(t.spaceWidth * d),
                        h = document.createElement("div");
                    zi.applyFontInfoSlow(h, t);
                    const u = Object(ye.a)(1e4),
                        p = [],
                        g = [],
                        f = [],
                        m = [],
                        v = [];
                    for (let n = 0; n < e.length; n++) {
                        const s = Vo.b.applyInjectedText(e[n], o[n]);
                        let l = 0,
                            d = 0,
                            h = a;
                        if (0 !== r)
                            if (l = b.u(s), -1 === l) l = 0;
                            else {
                                for (let e = 0; e < l; e++) {
                                    d += 9 === s.charCodeAt(e) ? i - d % i : 1
                                }(w = Math.ceil(t.spaceWidth * d)) + t.typicalFullwidthCharacterWidth > a ? (l = 0, d = 0) : h = a - w
                            } var _ = s.substr(l),
                            w = function(e, t, i, n, r, o) {
                                0 !== o ? (o = String(o), r.appendASCIIString('<div style="text-indent: -'), r.appendASCIIString(o), r.appendASCIIString("px; padding-left: "), r.appendASCIIString(o), r.appendASCIIString("px; box-sizing: border-box; width:")) : r.appendASCIIString('<div style="width:'), r.appendASCIIString(String(n)), r.appendASCIIString('px;">');
                                var s = e.length;
                                let a = t,
                                    l = 0,
                                    d = [],
                                    c = [],
                                    h = 0 < s ? e.charCodeAt(0) : 0;
                                r.appendASCIIString("<span>");
                                for (let t = 0; t < s; t++) {
                                    0 !== t && t % 16384 == 0 && r.appendASCIIString("</span><span>"), d[t] = l, c[t] = a;
                                    var u = h;
                                    h = t + 1 < s ? e.charCodeAt(t + 1) : 0;
                                    let n = 1,
                                        o = 1;
                                    switch (u) {
                                        case 9:
                                            n = i - a % i, o = n;
                                            for (let e = 1; e <= n; e++) e < n ? r.write1(160) : r.appendASCII(32);
                                            break;
                                        case 32:
                                            32 === h ? r.write1(160) : r.appendASCII(32);
                                            break;
                                        case 60:
                                            r.appendASCIIString("&lt;");
                                            break;
                                        case 62:
                                            r.appendASCIIString("&gt;");
                                            break;
                                        case 38:
                                            r.appendASCIIString("&amp;");
                                            break;
                                        case 0:
                                            r.appendASCIIString("&#00;");
                                            break;
                                        case 65279:
                                        case 8232:
                                        case 8233:
                                        case 133:
                                            r.write1(65533);
                                            break;
                                        default:
                                            b.D(u) && o++, u < 32 ? r.write1(9216 + u) : r.write1(u)
                                    }
                                    l += n, a += o
                                }
                                return r.appendASCIIString("</span>"), d[e.length] = l, c[e.length] = a, r.appendASCIIString("</div>"), [d, c]
                            }(_, d, i, h, u, c);
                        p[n] = l, g[n] = d, f[n] = _, m[n] = w[0], v[n] = w[1]
                    }
                    var y = u.build();
                    y = null !== (n = null == ta ? void 0 : ta.createHTML(y)) && void 0 !== n ? n : y;
                    h.innerHTML = y, h.style.position = "absolute", h.style.top = "10000", h.style.wordWrap = "break-word", document.body.appendChild(h);
                    var C = document.createRange(),
                        x = Array.prototype.slice.call(h.children, 0);
                    let S = [];
                    for (let t = 0; t < e.length; t++) {
                        const e = function(e, t, i, n) {
                            if (i.length <= 1) return null;
                            const r = Array.prototype.slice.call(t.children, 0),
                                o = [];
                            try {
                                ! function e(t, i, n, r, o, s, a, l) {
                                    if (r === s) return;
                                    if (o = o || na(t, i, n[r], n[r + 1]), a = a || na(t, i, n[s], n[s + 1]), Math.abs(o[0].top - a[0].top) <= .1) return;
                                    if (r + 1 === s) return void l.push(s);
                                    const d = r + (s - r) / 2 | 0,
                                        c = na(t, i, n[d], n[1 + d]);
                                    e(t, i, n, r, o, d, c, l), e(t, i, n, d, c, s, a, l)
                                }(e, r, n, 0, null, i.length - 1, null, o)
                            } catch (e) {
                                return console.log(e), null
                            }
                            return 0 !== o.length ? (o.push(i.length), o) : null
                        }(C, L = x[t], f[t], m[t]);
                        if (null !== e) {
                            var k = p[t],
                                L = g[t] + d,
                                O = v[t];
                            const i = [];
                            for (let t = 0, n = e.length; t < n; t++) i[t] = O[e[t]];
                            if (0 !== k)
                                for (let t = 0, i = e.length; t < i; t++) e[t] += k;
                            let n, r;
                            const s = o[t];
                            r = s ? (n = s.map(e => e.options), s.map(e => e.column - 1)) : n = null, S[t] = new Be(e, i, L, r, n)
                        } else S[t] = s(t)
                    }
                    return document.body.removeChild(h), S
                }(r, e, t, i, n, o)
            }
        }
    }

    function na(e, t, i, n) {
        return e.setStart(t[i / 16384 | 0].firstChild, i % 16384), e.setEnd(t[n / 16384 | 0].firstChild, n % 16384), e.getClientRects()
    }
    var ra = i(172);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let oa = 0;
    class sa {
        constructor(e, t, i, n, r) {
            this.model = e, this.viewModel = t, this.view = i, this.hasRealView = n, this.listenersToRemove = r
        }
        dispose() {
            Object(v.f)(this.listenersToRemove), this.model.onBeforeDetached(), this.hasRealView && this.view.dispose(), this.viewModel.dispose()
        }
    }
    let aa = class e extends v.a {
        constructor(e, t, i, n, r, o, s, a, l, d) {
            super(), this._onDidDispose = this._register(new D.b), this.onDidDispose = this._onDidDispose.event, this._onDidChangeModelContent = this._register(new D.b), this.onDidChangeModelContent = this._onDidChangeModelContent.event, this._onDidChangeModelLanguage = this._register(new D.b), this.onDidChangeModelLanguage = this._onDidChangeModelLanguage.event, this._onDidChangeModelLanguage配置 = this._register(new D.b), this.onDidChangeModelLanguage配置 = this._onDidChangeModelLanguage配置.event, this._onDidChangeModelOptions = this._register(new D.b), this.onDidChangeModelOptions = this._onDidChangeModelOptions.event, this._onDidChangeModelDecorations = this._register(new D.b), this.onDidChangeModelDecorations = this._onDidChangeModelDecorations.event, this._onDidChange配置 = this._register(new D.b), this.onDidChange配置 = this._onDidChange配置.event, this._onDidChangeModel = this._register(new D.b), this.onDidChangeModel = this._onDidChangeModel.event, this._onDidChangeCursorPosition = this._register(new D.b), this.onDidChangeCursorPosition = this._onDidChangeCursorPosition.event, this._onDidChangeCursorSelection = this._register(new D.b), this.onDidChangeCursorSelection = this._onDidChangeCursorSelection.event, this._onDidAttemptReadOnlyEdit = this._register(new D.b), this.onDidAttemptReadOnlyEdit = this._onDidAttemptReadOnlyEdit.event, this._onDidLayoutChange = this._register(new D.b), this.onDidLayoutChange = this._onDidLayoutChange.event, this._editorTextFocus = this._register(new la), this.onDidFocusEditorText = this._editorTextFocus.onDidChangeToTrue, this.onDidBlurEditorText = this._editorTextFocus.onDidChangeToFalse, this._editorWidgetFocus = this._register(new la), this.onDidFocusEditorWidget = this._editorWidgetFocus.onDidChangeToTrue, this.onDidBlurEditorWidget = this._editorWidgetFocus.onDidChangeToFalse, this._onWillType = this._register(new D.b), this.onWillType = this._onWillType.event, this._onDidType = this._register(new D.b), this.onDidType = this._onDidType.event, this._onDidCompositionStart = this._register(new D.b), this.onDidCompositionStart = this._onDidCompositionStart.event, this._onDidCompositionEnd = this._register(new D.b), this.onDidCompositionEnd = this._onDidCompositionEnd.event, this._onDidPaste = this._register(new D.b), this.onDidPaste = this._onDidPaste.event, this._onMouseUp = this._register(new D.b), this.onMouseUp = this._onMouseUp.event, this._onMouseDown = this._register(new D.b), this.onMouseDown = this._onMouseDown.event, this._onMouseDrag = this._register(new D.b), this.onMouseDrag = this._onMouseDrag.event, this._onMouseDrop = this._register(new D.b), this.onMouseDrop = this._onMouseDrop.event, this._onMouseDropCanceled = this._register(new D.b), this.onMouseDropCanceled = this._onMouseDropCanceled.event, this._onContextMenu = this._register(new D.b), this.onContextMenu = this._onContextMenu.event, this._onMouseMove = this._register(new D.b), this.onMouseMove = this._onMouseMove.event, this._onMouseLeave = this._register(new D.b), this.onMouseLeave = this._onMouseLeave.event, this._onMouseWheel = this._register(new D.b), this.onMouseWheel = this._onMouseWheel.event, this._onKeyUp = this._register(new D.b), this.onKeyUp = this._onKeyUp.event, this._onKeyDown = this._register(new D.b), this.onKeyDown = this._onKeyDown.event, this._onDidContentSizeChange = this._register(new D.b), this.onDidContentSizeChange = this._onDidContentSizeChange.event, this._onDidScrollChange = this._register(new D.b), this.onDidScrollChange = this._onDidScrollChange.event, this._onDidChangeViewZones = this._register(new D.b), this.onDidChangeViewZones = this._onDidChangeViewZones.event, this._onDidChangeHiddenAreas = this._register(new D.b), this.onDidChangeHiddenAreas = this._onDidChangeHiddenAreas.event;
            const c = Object.assign({}, t);
            let h;
            this._domElement = e, this._overflowWidgetsDomNode = c.overflowWidgetsDomNode, delete c.overflowWidgetsDomNode, this._id = ++oa, this._decorationTypeKeysToIds = {}, this._decorationTypeSubtypes = {}, this.isSimpleWidget = i.isSimpleWidget || !1, this._telemetryData = i.telemetryData, this._configuration = this._register(this._create配置(c, d)), this._register(this._configuration.onDidChange(e => {
                this._onDidChange配置.fire(e);
                const t = this._configuration.options;
                e.hasChanged(129) && (e = t.get(129), this._onDidLayoutChange.fire(e))
            })), this._contextKeyService = this._register(s.createScoped(this._domElement)), this._notificationService = l, this._codeEditorService = r, this._commandService = o, this._themeService = a, this._register(new da(this, this._contextKeyService)), this._register(new ca(this, this._contextKeyService)), this._instantiationService = n.createChild(new Us([Yt.b, this._contextKeyService])), this._modelData = null, this._contributions = {}, this._actions = {}, this._focusTracker = new ha(e), this._register(this._focusTracker.onChange(() => {
                this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())
            })), this._contentWidgets = {}, this._overlayWidgets = {}, h = Array.isArray(i.contributions) ? i.contributions : Ai.d.getEditorContributions();
            for (const t of h)
                if (this._contributions[t.id]) Object(se.f)(new Error("Cannot have two contributions with the same id " + t.id));
                else try {
                    var u = this._instantiationService.createInstance(t.ctor, this);
                    this._contributions[t.id] = u
                } catch (e) {
                    Object(se.f)(e)
                }
            Ai.d.getEditorActions().forEach(e => {
                var t;
                this._actions[e.id] ? Object(se.f)(new Error("Cannot have two actions with the same id " + e.id)) : (t = new ms(e.id, e.label, e.alias, Object(ve.o)(e.precondition), () => this._instantiationService.invokeFunction(t => Promise.resolve(e.runEditorCommand(t, this, null))), this._contextKeyService), this._actions[t.id] = t)
            }), this._codeEditorService.addCodeEditor(this)
        }
        _create配置(e, t) {
            return new zi(this.isSimpleWidget, e, this._domElement, t)
        }
        getId() {
            return this.getEditorType() + ":" + this._id
        }
        getEditorType() {
            return V.ICodeEditor
        }
        dispose() {
            this._codeEditorService.removeCodeEditor(this), this._focusTracker.dispose();
            var e = Object.keys(this._contributions);
            for (let i = 0, n = e.length; i < n; i++) {
                var t = e[i];
                this._contributions[t].dispose()
            }
            this._contributions = {}, this._actions = {}, this._contentWidgets = {}, this._overlayWidgets = {}, this._removeDecorationTypes(), this._postDetachModelCleanup(this._detachModel()), this._onDidDispose.fire(), super.dispose()
        }
        invokeWithinContext(e) {
            return this._instantiationService.invokeFunction(e)
        }
        updateOptions(e) {
            this._configuration.updateOptions(e)
        }
        getOptions() {
            return this._configuration.options
        }
        getOption(e) {
            return this._configuration.options.get(e)
        }
        getRawOptions() {
            return this._configuration.getRawOptions()
        }
        getOverflowWidgetsDomNode() {
            return this._overflowWidgetsDomNode
        }
        getConfiguredWordAtPosition(e) {
            return this._modelData ? ra.a.getWordAtPosition(this._modelData.model, this._configuration.options.get(115), e) : null
        }
        getValue(e = null) {
            if (!this._modelData) return "";
            var t = !(!e || !e.preserveBOM);
            let i = 0;
            return e && e.lineEnding && "\n" === e.lineEnding ? i = 1 : e && e.lineEnding && "\r\n" === e.lineEnding && (i = 2), this._modelData.model.getValue(i, t)
        }
        setValue(e) {
            this._modelData && this._modelData.model.setValue(e)
        }
        getModel() {
            return this._modelData ? this._modelData.model : null
        }
        setModel(e = null) {
            var t, i = e;
            null === this._modelData && null === i || this._modelData && this._modelData.model === i || (t = this.hasTextFocus(), e = this._detachModel(), this._attachModel(i), t && this.hasModel() && this.focus(), i = {
                oldModelUrl: e ? e.uri : null,
                newModelUrl: i ? i.uri : null
            }, this._removeDecorationTypes(), this._onDidChangeModel.fire(i), this._postDetachModelCleanup(e))
        }
        _removeDecorationTypes() {
            if (this._decorationTypeKeysToIds = {}, this._decorationTypeSubtypes) {
                for (var e in this._decorationTypeSubtypes)
                    for (var t in this._decorationTypeSubtypes[e]) this._removeDecorationType(e + "-" + t);
                this._decorationTypeSubtypes = {}
            }
        }
        getVisibleRanges() {
            return this._modelData ? this._modelData.viewModel.getVisibleRanges() : []
        }
        getVisibleRangesPlusViewportAboveBelow() {
            return this._modelData ? this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow() : []
        }
        getWhitespaces() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getWhitespaces() : []
        }
        static _getVerticalOffsetForPosition(e, t, i) {
            return i = e.model.validatePosition({
                lineNumber: t,
                column: i
            }), i = e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i), e.viewModel.viewLayout.getVerticalOffsetForLineNumber(i.lineNumber)
        }
        getTopForLineNumber(t) {
            return this._modelData ? e._getVerticalOffsetForPosition(this._modelData, t, 1) : -1
        }
        getTopForPosition(t, i) {
            return this._modelData ? e._getVerticalOffsetForPosition(this._modelData, t, i) : -1
        }
        setHiddenAreas(e) {
            this._modelData && this._modelData.viewModel.setHiddenAreas(e.map(e => T.a.lift(e)))
        }
        getVisibleColumnFromPosition(e) {
            if (!this._modelData) return e.column;
            var t = this._modelData.model.validatePosition(e);
            e = this._modelData.model.getOptions().tabSize;
            return Sn.a.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber), t.column, e) + 1
        }
        getPosition() {
            return this._modelData ? this._modelData.viewModel.getPosition() : null
        }
        setPosition(e) {
            if (this._modelData) {
                if (!Re.a.isIPosition(e)) throw new Error("Invalid arguments");
                this._modelData.viewModel.setSelections("api", [{
                    selectionStartLineNumber: e.lineNumber,
                    selectionStartColumn: e.column,
                    positionLineNumber: e.lineNumber,
                    positionColumn: e.column
                }])
            }
        }
        _sendRevealRange(e, t, i, n) {
            if (this._modelData) {
                if (!T.a.isIRange(e)) throw new Error("Invalid arguments");
                e = this._modelData.model.validateRange(e), e = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(e), this._modelData.viewModel.revealRange("api", i, e, t, n)
            }
        }
        revealLine(e, t = 0) {
            this._revealLine(e, 0, t)
        }
        revealLineInCenter(e, t = 0) {
            this._revealLine(e, 1, t)
        }
        revealLineInCenterIfOutsideViewport(e, t = 0) {
            this._revealLine(e, 2, t)
        }
        revealLineNearTop(e, t = 0) {
            this._revealLine(e, 5, t)
        }
        _revealLine(e, t, i) {
            if ("number" != typeof e) throw new Error("Invalid arguments");
            this._sendRevealRange(new T.a(e, 1, e, 1), t, !1, i)
        }
        revealPosition(e, t = 0) {
            this._revealPosition(e, 0, !0, t)
        }
        revealPositionInCenter(e, t = 0) {
            this._revealPosition(e, 1, !0, t)
        }
        revealPositionInCenterIfOutsideViewport(e, t = 0) {
            this._revealPosition(e, 2, !0, t)
        }
        revealPositionNearTop(e, t = 0) {
            this._revealPosition(e, 5, !0, t)
        }
        _revealPosition(e, t, i, n) {
            if (!Re.a.isIPosition(e)) throw new Error("Invalid arguments");
            this._sendRevealRange(new T.a(e.lineNumber, e.column, e.lineNumber, e.column), t, i, n)
        }
        getSelection() {
            return this._modelData ? this._modelData.viewModel.getSelection() : null
        }
        getSelections() {
            return this._modelData ? this._modelData.viewModel.getSelections() : null
        }
        setSelection(e) {
            var t = Hi.a.isISelection(e),
                i = T.a.isIRange(e);
            if (!t && !i) throw new Error("Invalid arguments");
            t ? this._setSelectionImpl(e) : i && (e = {
                selectionStartLineNumber: e.startLineNumber,
                selectionStartColumn: e.startColumn,
                positionLineNumber: e.endLineNumber,
                positionColumn: e.endColumn
            }, this._setSelectionImpl(e))
        }
        _setSelectionImpl(e) {
            this._modelData && (e = new Hi.a(e.selectionStartLineNumber, e.selectionStartColumn, e.positionLineNumber, e.positionColumn), this._modelData.viewModel.setSelections("api", [e]))
        }
        revealLines(e, t, i = 0) {
            this._revealLines(e, t, 0, i)
        }
        revealLinesInCenter(e, t, i = 0) {
            this._revealLines(e, t, 1, i)
        }
        revealLinesInCenterIfOutsideViewport(e, t, i = 0) {
            this._revealLines(e, t, 2, i)
        }
        revealLinesNearTop(e, t, i = 0) {
            this._revealLines(e, t, 5, i)
        }
        _revealLines(e, t, i, n) {
            if ("number" != typeof e || "number" != typeof t) throw new Error("Invalid arguments");
            this._sendRevealRange(new T.a(e, 1, t, 1), i, !1, n)
        }
        revealRange(e, t = 0, i = !1, n = !0) {
            this._revealRange(e, i ? 1 : 0, n, t)
        }
        revealRangeInCenter(e, t = 0) {
            this._revealRange(e, 1, !0, t)
        }
        revealRangeInCenterIfOutsideViewport(e, t = 0) {
            this._revealRange(e, 2, !0, t)
        }
        revealRangeNearTop(e, t = 0) {
            this._revealRange(e, 5, !0, t)
        }
        revealRangeNearTopIfOutsideViewport(e, t = 0) {
            this._revealRange(e, 6, !0, t)
        }
        revealRangeAtTop(e, t = 0) {
            this._revealRange(e, 3, !0, t)
        }
        _revealRange(e, t, i, n) {
            if (!T.a.isIRange(e)) throw new Error("Invalid arguments");
            this._sendRevealRange(T.a.lift(e), t, i, n)
        }
        setSelections(e, t = "api", i = 0) {
            if (this._modelData) {
                if (!e || 0 === e.length) throw new Error("Invalid arguments");
                for (let t = 0, i = e.length; t < i; t++)
                    if (!Hi.a.isISelection(e[t])) throw new Error("Invalid arguments");
                this._modelData.viewModel.setSelections(t, e, i)
            }
        }
        getContentWidth() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getContentWidth() : -1
        }
        getScrollWidth() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getScrollWidth() : -1
        }
        getScrollLeft() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getCurrentScrollLeft() : -1
        }
        getContentHeight() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getContentHeight() : -1
        }
        getScrollHeight() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getScrollHeight() : -1
        }
        getScrollTop() {
            return this._modelData ? this._modelData.viewModel.viewLayout.getCurrentScrollTop() : -1
        }
        setScrollLeft(e, t = 1) {
            if (this._modelData) {
                if ("number" != typeof e) throw new Error("Invalid arguments");
                this._modelData.viewModel.setScrollPosition({
                    scrollLeft: e
                }, t)
            }
        }
        setScrollTop(e, t = 1) {
            if (this._modelData) {
                if ("number" != typeof e) throw new Error("Invalid arguments");
                this._modelData.viewModel.setScrollPosition({
                    scrollTop: e
                }, t)
            }
        }
        setScrollPosition(e, t = 1) {
            this._modelData && this._modelData.viewModel.setScrollPosition(e, t)
        }
        saveViewState() {
            if (!this._modelData) return null;
            const e = {};
            for (const t of Object.keys(this._contributions)) {
                const i = this._contributions[t];
                "function" == typeof i.saveViewState && (e[t] = i.saveViewState())
            }
            return {
                cursorState: this._modelData.viewModel.saveCursorState(),
                viewState: this._modelData.viewModel.saveState(),
                contributionsState: e
            }
        }
        restoreViewState(e) {
            if (this._modelData && this._modelData.hasRealView) {
                var t = e;
                if (t && t.cursorState && t.viewState) {
                    e = t.cursorState, Array.isArray(e) ? this._modelData.viewModel.restoreCursorState(e) : this._modelData.viewModel.restoreCursorState([e]);
                    var i = t.contributionsState || {},
                        n = Object.keys(this._contributions);
                    for (let e = 0, t = n.length; e < t; e++) {
                        var r = n[e];
                        const t = this._contributions[r];
                        "function" == typeof t.restoreViewState && t.restoreViewState(i[r])
                    }
                    t = this._modelData.viewModel.reduceRestoreState(t.viewState), this._modelData.view.restoreState(t)
                }
            }
        }
        getContribution(e) {
            return this._contributions[e] || null
        }
        getActions() {
            const e = [];
            var t = Object.keys(this._actions);
            for (let n = 0, r = t.length; n < r; n++) {
                var i = t[n];
                e.push(this._actions[i])
            }
            return e
        }
        getSupportedActions() {
            let e = this.getActions();
            return e = e.filter(e => e.isSupported()), e
        }
        getAction(e) {
            return this._actions[e] || null
        }
        trigger(e, t, i) {
            switch (i = i || {}, t) {
                case "compositionStart":
                    return void this._startComposition();
                case "compositionEnd":
                    return void this._endComposition(e);
                case "type":
                    var n = i;
                    return void this._type(e, n.text || "");
                case "replacePreviousChar":
                    return n = i, void this._compositionType(e, n.text || "", n.replaceCharCnt || 0, 0, 0);
                case "compositionType":
                    var r = i;
                    return void this._compositionType(e, r.text || "", r.replacePrevCharCnt || 0, r.replaceNextCharCnt || 0, r.positionDelta || 0);
                case "paste":
                    return r = i, void this._paste(e, r.text || "", r.pasteOnNewLine || !1, r.multicursorText || null, r.mode || null);
                case "cut":
                    return void this._cut(e)
            }
            const o = this.getAction(t);
            o ? Promise.resolve(o.run()).then(void 0, se.f) : this._modelData && (this._triggerEditorCommand(e, t, i) || this._triggerCommand(t, i))
        }
        _triggerCommand(e, t) {
            this._commandService.executeCommand(e, t)
        }
        _startComposition() {
            this._modelData && (this._modelData.viewModel.startComposition(), this._onDidCompositionStart.fire())
        }
        _endComposition(e) {
            this._modelData && (this._modelData.viewModel.endComposition(e), this._onDidCompositionEnd.fire())
        }
        _type(e, t) {
            this._modelData && 0 !== t.length && ("keyboard" === e && this._onWillType.fire(t), this._modelData.viewModel.type(t, e), "keyboard" === e && this._onDidType.fire(t))
        }
        _compositionType(e, t, i, n, r) {
            this._modelData && this._modelData.viewModel.compositionType(t, i, n, r, e)
        }
        _paste(e, t, i, n, r) {
            var o;
            this._modelData && 0 !== t.length && (o = this._modelData.viewModel.getSelection().getStartPosition(), this._modelData.viewModel.paste(t, i, n, e), n = this._modelData.viewModel.getSelection().getStartPosition(), "keyboard" === e && this._onDidPaste.fire({
                range: new T.a(o.lineNumber, o.column, n.lineNumber, n.column),
                languageId: r
            }))
        }
        _cut(e) {
            this._modelData && this._modelData.viewModel.cut(e)
        }
        _triggerEditorCommand(e, t, i) {
            const n = Ai.d.getEditorCommand(t);
            return !!n && ((i = i || {}).source = e, this._instantiationService.invokeFunction(e => {
                Promise.resolve(n.runEditorCommand(e, this, i)).then(void 0, se.f)
            }), !0)
        }
        _getViewModel() {
            return this._modelData ? this._modelData.viewModel : null
        }
        pushUndoStop() {
            return !!this._modelData && !this._configuration.options.get(80) && (this._modelData.model.pushStackElement(), !0)
        }
        popUndoStop() {
            return !!this._modelData && !this._configuration.options.get(80) && (this._modelData.model.popStackElement(), !0)
        }
        executeEdits(e, t, i) {
            if (!this._modelData) return !1;
            if (this._configuration.options.get(80)) return !1;
            let n;
            return n = i ? Array.isArray(i) ? () => i : i : () => null, this._modelData.viewModel.executeEdits(e, t, n), !0
        }
        executeCommand(e, t) {
            this._modelData && this._modelData.viewModel.executeCommand(t, e)
        }
        executeCommands(e, t) {
            this._modelData && this._modelData.viewModel.executeCommands(t, e)
        }
        changeDecorations(e) {
            return this._modelData ? this._modelData.model.changeDecorations(e, this._id) : null
        }
        getLineDecorations(e) {
            return this._modelData ? this._modelData.model.getLineDecorations(e, this._id, Object(n.n)(this._configuration.options)) : null
        }
        deltaDecorations(e, t) {
            return this._modelData ? 0 === e.length && 0 === t.length ? e : this._modelData.model.deltaDecorations(e, t, this._id) : []
        }
        removeDecorations(e) {
            var t = this._decorationTypeKeysToIds[e];
            t && this.deltaDecorations(t, []), this._decorationTypeKeysToIds.hasOwnProperty(e) && delete this._decorationTypeKeysToIds[e], this._decorationTypeSubtypes.hasOwnProperty(e) && delete this._decorationTypeSubtypes[e]
        }
        getLayoutInfo() {
            return this._configuration.options.get(129)
        }
        createOverviewRuler(e) {
            return this._modelData && this._modelData.hasRealView ? this._modelData.view.createOverviewRuler(e) : null
        }
        getContainerDomNode() {
            return this._domElement
        }
        getDomNode() {
            return this._modelData && this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null
        }
        delegateVerticalScrollbarMouseDown(e) {
            this._modelData && this._modelData.hasRealView && this._modelData.view.delegateVerticalScrollbarMouseDown(e)
        }
        layout(e) {
            this._configuration.observeReferenceElement(e), this.render()
        }
        focus() {
            this._modelData && this._modelData.hasRealView && this._modelData.view.focus()
        }
        hasTextFocus() {
            return !(!this._modelData || !this._modelData.hasRealView) && this._modelData.view.isFocused()
        }
        hasWidgetFocus() {
            return this._focusTracker && this._focusTracker.hasFocus()
        }
        addContentWidget(e) {
            var t = {
                widget: e,
                position: e.getPosition()
            };
            this._contentWidgets.hasOwnProperty(e.getId()) && console.warn("Overwriting a content widget with the same id."), this._contentWidgets[e.getId()] = t, this._modelData && this._modelData.hasRealView && this._modelData.view.addContentWidget(t)
        }
        layoutContentWidget(e) {
            var t = e.getId();
            if (this._contentWidgets.hasOwnProperty(t)) {
                const i = this._contentWidgets[t];
                i.position = e.getPosition(), this._modelData && this._modelData.hasRealView && this._modelData.view.layoutContentWidget(i)
            }
        }
        removeContentWidget(e) {
            var t = e.getId();
            this._contentWidgets.hasOwnProperty(t) && (e = this._contentWidgets[t], delete this._contentWidgets[t], this._modelData && this._modelData.hasRealView && this._modelData.view.removeContentWidget(e))
        }
        addOverlayWidget(e) {
            var t = {
                widget: e,
                position: e.getPosition()
            };
            this._overlayWidgets.hasOwnProperty(e.getId()) && console.warn("Overwriting an overlay widget with the same id."), this._overlayWidgets[e.getId()] = t, this._modelData && this._modelData.hasRealView && this._modelData.view.addOverlayWidget(t)
        }
        layoutOverlayWidget(e) {
            var t = e.getId();
            if (this._overlayWidgets.hasOwnProperty(t)) {
                const i = this._overlayWidgets[t];
                i.position = e.getPosition(), this._modelData && this._modelData.hasRealView && this._modelData.view.layoutOverlayWidget(i)
            }
        }
        removeOverlayWidget(e) {
            var t = e.getId();
            this._overlayWidgets.hasOwnProperty(t) && (e = this._overlayWidgets[t], delete this._overlayWidgets[t], this._modelData && this._modelData.hasRealView && this._modelData.view.removeOverlayWidget(e))
        }
        changeViewZones(e) {
            this._modelData && this._modelData.hasRealView && this._modelData.view.change(e)
        }
        getTargetAtClientPoint(e, t) {
            return this._modelData && this._modelData.hasRealView ? this._modelData.view.getTargetAtClientPoint(e, t) : null
        }
        getScrolledVisiblePosition(t) {
            if (!this._modelData || !this._modelData.hasRealView) return null;
            var i = this._modelData.model.validatePosition(t);
            const n = this._configuration.options;
            return t = n.get(129), {
                top: e._getVerticalOffsetForPosition(this._modelData, i.lineNumber, i.column) - this.getScrollTop(),
                left: this._modelData.view.getOffsetForColumn(i.lineNumber, i.column) + t.glyphMarginWidth + t.lineNumbersWidth + t.decorationsWidth - this.getScrollLeft(),
                height: n.get(58)
            }
        }
        getOffsetForColumn(e, t) {
            return this._modelData && this._modelData.hasRealView ? this._modelData.view.getOffsetForColumn(e, t) : -1
        }
        render(e = !1) {
            this._modelData && this._modelData.hasRealView && this._modelData.view.render(!0, e)
        }
        setAriaOptions(e) {
            this._modelData && this._modelData.hasRealView && this._modelData.view.setAriaOptions(e)
        }
        applyFontInfo(e) {
            zi.applyFontInfoSlow(e, this._configuration.options.get(43))
        }
        _attachModel(e) {
            if (e) {
                const n = [];
                this._domElement.setAttribute("data-mode-id", e.getLanguageId()), this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()), this._configuration.setMaxLineNumber(e.getLineCount()), e.onBeforeAttached();
                const r = new zs(this._id, this._configuration, e, ia.create(), Zs.create(this._configuration.options), e => s.R(e));
                n.push(e.onDidChangeDecorations(e => this._onDidChangeModelDecorations.fire(e))), n.push(e.onDidChangeLanguage(t => {
                    this._domElement.setAttribute("data-mode-id", e.getLanguageId()), this._onDidChangeModelLanguage.fire(t)
                })), n.push(e.onDidChangeLanguage配置(e => this._onDidChangeModelLanguage配置.fire(e))), n.push(e.onDidChangeContent(e => this._onDidChangeModelContent.fire(e))), n.push(e.onDidChangeOptions(e => this._onDidChangeModelOptions.fire(e))), n.push(e.onWillDispose(() => this.setModel(null))), n.push(r.onEvent(e => {
                    switch (e.kind) {
                        case 0:
                            this._onDidContentSizeChange.fire(e);
                            break;
                        case 1:
                            this._editorTextFocus.setValue(e.hasFocus);
                            break;
                        case 2:
                            this._onDidScrollChange.fire(e);
                            break;
                        case 3:
                            this._onDidChangeViewZones.fire();
                            break;
                        case 4:
                            this._onDidChangeHiddenAreas.fire();
                            break;
                        case 5:
                            this._onDidAttemptReadOnlyEdit.fire();
                            break;
                        case 6: {
                            e.reachedMaxCursorCount && this._notificationService.warn(yt.a("cursors.maximum", "The number of cursors has been limited to {0}.", fs.MAX_CURSOR_COUNT));
                            const i = [];
                            for (let t = 0, n = e.selections.length; t < n; t++) i[t] = e.selections[t].getPosition();
                            var t = {
                                position: i[0],
                                secondaryPositions: i.slice(1),
                                reason: e.reason,
                                source: e.source
                            };
                            this._onDidChangeCursorPosition.fire(t), t = {
                                selection: e.selections[0],
                                secondarySelections: e.selections.slice(1),
                                modelVersionId: e.modelVersionId,
                                oldSelections: e.oldSelections,
                                oldModelVersionId: e.oldModelVersionId,
                                source: e.source,
                                reason: e.reason
                            }, this._onDidChangeCursorSelection.fire(t);
                            break
                        }
                    }
                }));
                const [o, a] = this._createView(r);
                if (a) {
                    this._domElement.appendChild(o.domNode.domNode);
                    let n = Object.keys(this._contentWidgets);
                    for (let e = 0, i = n.length; e < i; e++) {
                        var t = n[e];
                        o.addContentWidget(this._contentWidgets[t])
                    }
                    n = Object.keys(this._overlayWidgets);
                    for (let e = 0, t = n.length; e < t; e++) {
                        var i = n[e];
                        o.addOverlayWidget(this._overlayWidgets[i])
                    }
                    o.render(!1, !0), o.domNode.domNode.setAttribute("data-uri", e.uri.toString())
                }
                this._modelData = new sa(e, r, o, a, n)
            } else this._modelData = null
        }
        _createView(e) {
            let t;
            t = this.isSimpleWidget ? {
                paste: (e, t, i, n) => {
                    this._paste("keyboard", e, t, i, n)
                },
                type: e => {
                    this._type("keyboard", e)
                },
                compositionType: (e, t, i, n) => {
                    this._compositionType("keyboard", e, t, i, n)
                },
                startComposition: () => {
                    this._startComposition()
                },
                endComposition: () => {
                    this._endComposition("keyboard")
                },
                cut: () => {
                    this._cut("keyboard")
                }
            } : {
                paste: (e, t, i, n) => {
                    this._commandService.executeCommand("paste", {
                        text: e,
                        pasteOnNewLine: t,
                        multicursorText: i,
                        mode: n
                    })
                },
                type: e => {
                    this._commandService.executeCommand("type", {
                        text: e
                    })
                },
                compositionType: (e, t, i, n) => {
                    i || n ? this._commandService.executeCommand("compositionType", {
                        text: e,
                        replacePrevCharCnt: t,
                        replaceNextCharCnt: i,
                        positionDelta: n
                    }) : this._commandService.executeCommand("replacePreviousChar", {
                        text: e,
                        replaceCharCnt: t
                    })
                },
                startComposition: () => {
                    this._commandService.executeCommand("compositionStart", {})
                },
                endComposition: () => {
                    this._commandService.executeCommand("compositionEnd", {})
                },
                cut: () => {
                    this._commandService.executeCommand("cut", {})
                }
            };
            const i = new ur(e.coordinatesConverter);
            return i.onKeyDown = e => this._onKeyDown.fire(e), i.onKeyUp = e => this._onKeyUp.fire(e), i.onContextMenu = e => this._onContextMenu.fire(e), i.onMouseMove = e => this._onMouseMove.fire(e), i.onMouseLeave = e => this._onMouseLeave.fire(e), i.onMouseDown = e => this._onMouseDown.fire(e), i.onMouseUp = e => this._onMouseUp.fire(e), i.onMouseDrag = e => this._onMouseDrag.fire(e), i.onMouseDrop = e => this._onMouseDrop.fire(e), i.onMouseDropCanceled = e => this._onMouseDropCanceled.fire(e), i.onMouseWheel = e => this._onMouseWheel.fire(e), [new Ao(t, this._configuration, this._themeService, e, i, this._overflowWidgetsDomNode), !0]
        }
        _postDetachModelCleanup(e) {
            e && e.removeAllDecorationsWithOwnerId(this._id)
        }
        _detachModel() {
            if (!this._modelData) return null;
            var e = this._modelData.model,
                t = this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null;
            return this._modelData.dispose(), this._modelData = null, this._domElement.removeAttribute("data-mode-id"), t && this._domElement.contains(t) && this._domElement.removeChild(t), e
        }
        _removeDecorationType(e) {
            this._codeEditorService.removeDecorationType(e)
        }
        hasModel() {
            return null !== this._modelData
        }
    };
    aa = t([ae(3, _.a), ae(4, o.a), ae(5, m.b), ae(6, Yt.b), ae(7, ir.b), ae(8, hi.a), ae(9, Ks)], aa);
    class la extends v.a {
        constructor() {
            super(), this._onDidChangeToTrue = this._register(new D.b), this.onDidChangeToTrue = this._onDidChangeToTrue.event, this._onDidChangeToFalse = this._register(new D.b), this.onDidChangeToFalse = this._onDidChangeToFalse.event, this._value = 0
        }
        setValue(e) {
            e = e ? 2 : 1, this._value !== e && (this._value = e, 2 === this._value ? this._onDidChangeToTrue.fire() : 1 === this._value && this._onDidChangeToFalse.fire())
        }
    }
    class da extends v.a {
        constructor(e, t) {
            super(), this._editor = e, t.createKey("editorId", e.getId()), this._editorSimpleInput = vs.a.editorSimpleInput.bindTo(t), this._editorFocus = vs.a.focus.bindTo(t), this._textInputFocus = vs.a.textInputFocus.bindTo(t), this._editorTextFocus = vs.a.editorTextFocus.bindTo(t), this._editorTabMovesFocus = vs.a.tabMovesFocus.bindTo(t), this._editorReadonly = vs.a.readOnly.bindTo(t), this._inDiffEditor = vs.a.inDiffEditor.bindTo(t), this._editorColumnSelection = vs.a.columnSelection.bindTo(t), this._hasMultipleSelections = vs.a.hasMultipleSelections.bindTo(t), this._hasNonEmptySelection = vs.a.hasNonEmptySelection.bindTo(t), this._canUndo = vs.a.canUndo.bindTo(t), this._canRedo = vs.a.canRedo.bindTo(t), this._register(this._editor.onDidChange配置(() => this._updateFromConfig())), this._register(this._editor.onDidChangeCursorSelection(() => this._updateFromSelection())), this._register(this._editor.onDidFocusEditorWidget(() => this._updateFromFocus())), this._register(this._editor.onDidBlurEditorWidget(() => this._updateFromFocus())), this._register(this._editor.onDidFocusEditorText(() => this._updateFromFocus())), this._register(this._editor.onDidBlurEditorText(() => this._updateFromFocus())), this._register(this._editor.onDidChangeModel(() => this._updateFromModel())), this._register(this._editor.onDidChange配置(() => this._updateFromModel())), this._updateFromConfig(), this._updateFromSelection(), this._updateFromFocus(), this._updateFromModel(), this._editorSimpleInput.set(this._editor.isSimpleWidget)
        }
        _updateFromConfig() {
            const e = this._editor.getOptions();
            this._editorTabMovesFocus.set(e.get(128)), this._editorReadonly.set(e.get(80)), this._inDiffEditor.set(e.get(53)), this._editorColumnSelection.set(e.get(18))
        }
        _updateFromSelection() {
            const e = this._editor.getSelections();
            e ? (this._hasMultipleSelections.set(1 < e.length), this._hasNonEmptySelection.set(e.some(e => !e.isEmpty()))) : (this._hasMultipleSelections.reset(), this._hasNonEmptySelection.reset())
        }
        _updateFromFocus() {
            this._editorFocus.set(this._editor.hasWidgetFocus() && !this._editor.isSimpleWidget), this._editorTextFocus.set(this._editor.hasTextFocus() && !this._editor.isSimpleWidget), this._textInputFocus.set(this._editor.hasTextFocus())
        }
        _updateFromModel() {
            const e = this._editor.getModel();
            this._canUndo.set(Boolean(e && e.canUndo())), this._canRedo.set(Boolean(e && e.canRedo()))
        }
    }
    class ca extends v.a {
        constructor(e, t) {
            super(), this._editor = e, this._contextKeyService = t, this._langId = vs.a.languageId.bindTo(t), this._hasCompletionItemProvider = vs.a.hasCompletionItemProvider.bindTo(t), this._hasCodeActionsProvider = vs.a.hasCodeActionsProvider.bindTo(t), this._hasCodeLensProvider = vs.a.hasCodeLensProvider.bindTo(t), this._hasDefinitionProvider = vs.a.hasDefinitionProvider.bindTo(t), this._hasDeclarationProvider = vs.a.hasDeclarationProvider.bindTo(t), this._hasImplementationProvider = vs.a.hasImplementationProvider.bindTo(t), this._hasTypeDefinitionProvider = vs.a.hasTypeDefinitionProvider.bindTo(t), this._hasHoverProvider = vs.a.hasHoverProvider.bindTo(t), this._hasDocumentHighlightProvider = vs.a.hasDocumentHighlightProvider.bindTo(t), this._hasDocumentSymbolProvider = vs.a.hasDocumentSymbolProvider.bindTo(t), this._hasReferenceProvider = vs.a.hasReferenceProvider.bindTo(t), this._hasRenameProvider = vs.a.hasRenameProvider.bindTo(t), this._hasSignatureHelpProvider = vs.a.hasSignatureHelpProvider.bindTo(t), this._hasInlayHintsProvider = vs.a.hasInlayHintsProvider.bindTo(t), this._hasDocumentFormattingProvider = vs.a.hasDocumentFormattingProvider.bindTo(t), this._hasDocumentSelectionFormattingProvider = vs.a.hasDocumentSelectionFormattingProvider.bindTo(t), this._hasMultipleDocumentFormattingProvider = vs.a.hasMultipleDocumentFormattingProvider.bindTo(t), this._hasMultipleDocumentSelectionFormattingProvider = vs.a.hasMultipleDocumentSelectionFormattingProvider.bindTo(t), this._isInWalkThrough = vs.a.isInWalkThroughSnippet.bindTo(t), t = () => this._update(), this._register(e.onDidChangeModel(t)), this._register(e.onDidChangeModelLanguage(t)), this._register(z.d.onDidChange(t)), this._register(z.a.onDidChange(t)), this._register(z.b.onDidChange(t)), this._register(z.f.onDidChange(t)), this._register(z.e.onDidChange(t)), this._register(z.p.onDidChange(t)), this._register(z.B.onDidChange(t)), this._register(z.o.onDidChange(t)), this._register(z.h.onDidChange(t)), this._register(z.l.onDidChange(t)), this._register(z.v.onDidChange(t)), this._register(z.w.onDidChange(t)), this._register(z.g.onDidChange(t)), this._register(z.i.onDidChange(t)), this._register(z.y.onDidChange(t)), this._register(z.q.onDidChange(t)), t()
        }
        dispose() {
            super.dispose()
        }
        reset() {
            this._contextKeyService.bufferChangeEvents(() => {
                this._langId.reset(), this._hasCompletionItemProvider.reset(), this._hasCodeActionsProvider.reset(), this._hasCodeLensProvider.reset(), this._hasDefinitionProvider.reset(), this._hasDeclarationProvider.reset(), this._hasImplementationProvider.reset(), this._hasTypeDefinitionProvider.reset(), this._hasHoverProvider.reset(), this._hasDocumentHighlightProvider.reset(), this._hasDocumentSymbolProvider.reset(), this._hasReferenceProvider.reset(), this._hasRenameProvider.reset(), this._hasDocumentFormattingProvider.reset(), this._hasDocumentSelectionFormattingProvider.reset(), this._hasSignatureHelpProvider.reset(), this._isInWalkThrough.reset()
            })
        }
        _update() {
            const e = this._editor.getModel();
            e ? this._contextKeyService.bufferChangeEvents(() => {
                this._langId.set(e.getLanguageId()), this._hasCompletionItemProvider.set(z.d.has(e)), this._hasCodeActionsProvider.set(z.a.has(e)), this._hasCodeLensProvider.set(z.b.has(e)), this._hasDefinitionProvider.set(z.f.has(e)), this._hasDeclarationProvider.set(z.e.has(e)), this._hasImplementationProvider.set(z.p.has(e)), this._hasTypeDefinitionProvider.set(z.B.has(e)), this._hasHoverProvider.set(z.o.has(e)), this._hasDocumentHighlightProvider.set(z.h.has(e)), this._hasDocumentSymbolProvider.set(z.l.has(e)), this._hasReferenceProvider.set(z.v.has(e)), this._hasRenameProvider.set(z.w.has(e)), this._hasSignatureHelpProvider.set(z.y.has(e)), this._hasInlayHintsProvider.set(z.q.has(e)), this._hasDocumentFormattingProvider.set(z.g.has(e) || z.i.has(e)), this._hasDocumentSelectionFormattingProvider.set(z.i.has(e)), this._hasMultipleDocumentFormattingProvider.set(1 < z.g.all(e).length + z.i.all(e).length), this._hasMultipleDocumentSelectionFormattingProvider.set(1 < z.i.all(e).length), this._isInWalkThrough.set(e.uri.scheme === g.c.walkThroughSnippet)
            }) : this.reset()
        }
    }
    class ha extends v.a {
        constructor(e) {
            super(), this._onChange = this._register(new D.b), this.onChange = this._onChange.event, this._hasFocus = !1, this._domFocusTracker = this._register(s.T(e)), this._register(this._domFocusTracker.onDidFocus(() => {
                this._hasFocus = !0, this._onChange.fire(void 0)
            })), this._register(this._domFocusTracker.onDidBlur(() => {
                this._hasFocus = !1, this._onChange.fire(void 0)
            }))
        }
        hasFocus() {
            return this._hasFocus
        }
    }
    const ua = encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='"),
        pa = encodeURIComponent("'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>");

    function ga(e) {
        return ua + encodeURIComponent(e.toString()) + pa
    }
    const fa = encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="'),
        ma = encodeURIComponent('"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>');
    Object(ir.f)((e, t) => {
        var i = e.getColor(Ir.s);
        i && t.addRule(`.monaco-editor .squiggly-error { border-bottom: 4px double ${i}; }`), (i = e.getColor(Ir.t)) && t.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${ga(i)}") repeat-x bottom left; }`), (i = e.getColor(Ir.r)) && t.addRule(`.monaco-editor .squiggly-error::before { display: block; content: ''; width: 100%; height: 100%; background: ${i}; }`), (i = e.getColor(Ir.L)) && t.addRule(`.monaco-editor .squiggly-warning { border-bottom: 4px double ${i}; }`), (i = e.getColor(Ir.M)) && t.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${ga(i)}") repeat-x bottom left; }`), (i = e.getColor(Ir.K)) && t.addRule(`.monaco-editor .squiggly-warning::before { display: block; content: ''; width: 100%; height: 100%; background: ${i}; }`), (i = e.getColor(Ir.F)) && t.addRule(`.monaco-editor .squiggly-info { border-bottom: 4px double ${i}; }`), (i = e.getColor(Ir.G)) && t.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${ga(i)}") repeat-x bottom left; }`), (i = e.getColor(Ir.E)) && t.addRule(`.monaco-editor .squiggly-info::before { display: block; content: ''; width: 100%; height: 100%; background: ${i}; }`), (i = e.getColor(Ir.B)) && t.addRule(`.monaco-editor .squiggly-hint { border-bottom: 2px dotted ${i}; }`), (i = e.getColor(Ir.C)) && t.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${n=i,fa+encodeURIComponent(n.toString())+ma}") no-repeat bottom left; }`);
        var n = e.getColor(tr.F);
        n && t.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${n.rgba.a}; }`), (n = e.getColor(tr.E)) && t.addRule(`.monaco-editor.showUnused .squiggly-unnecessary { border-bottom: 2px dashed ${n}; }`), e = e.getColor(Ir.A) || "inherit", t.addRule(`.monaco-editor.showDeprecated .squiggly-inline-deprecated { text-decoration: line-through; text-decoration-color: ${e}}`)
    }), i(422);
    var va = i(142),
        ba = i(132);
    const _a = Object(_.c)("IEditorCancelService"),
        wa = new Yt.c("cancellableOperation", !1, Object(yt.a)("cancellableOperation", "Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));
    Object(ba.b)(_a, class {
        constructor() {
            this._tokens = new WeakMap
        }
        add(e, t) {
            let i, n = this._tokens.get(e);
            return n || (n = e.invokeWithinContext(e => ({
                key: wa.bindTo(e.get(Yt.b)),
                tokens: new l.a
            })), this._tokens.set(e, n)), n.key.set(!0), i = n.tokens.push(t), () => {
                i && (i(), n.key.set(!n.tokens.isEmpty()), i = void 0)
            }
        }
        cancel(e) {
            const t = this._tokens.get(e);
            if (t) {
                const e = t.tokens.pop();
                e && (e.cancel(), t.key.set(!t.tokens.isEmpty()))
            }
        }
    }, !0);
    a.b;
    Object(Ai.j)(new class extends Ai.c {
        constructor() {
            super({
                id: "editor.cancelOperation",
                kbOpts: {
                    weight: 100,
                    primary: 9
                },
                precondition: wa
            })
        }
        runEditorCommand(e, t) {
            e.get(_a).cancel(t)
        }
    }), a.b;
    class ya {
        constructor(e, t, i) {
            this._visiblePosition = e, this._visiblePositionScrollDelta = t, this._cursorPosition = i
        }
        static capture(e) {
            let t = null,
                i = 0;
            if (0 !== e.getScrollTop()) {
                const r = e.getVisibleRanges();
                var n;
                0 < r.length && (t = r[0].getStartPosition(), n = e.getTopForPosition(t.lineNumber, t.column), i = e.getScrollTop() - n)
            }
            return new ya(t, i, e.getPosition())
        }
        restore(e) {
            var t;
            this._visiblePosition && (t = e.getTopForPosition(this._visiblePosition.lineNumber, this._visiblePosition.column), e.setScrollTop(t + this._visiblePositionScrollDelta))
        }
        restoreRelativeVerticalPositionOfCursor(e) {
            var t = e.getPosition();
            this._cursorPosition && t && (t = e.getTopForLineNumber(t.lineNumber) - e.getTopForLineNumber(this._cursorPosition.lineNumber), e.setScrollTop(e.getScrollTop() + t))
        }
    }
    i(424);
    var Ca = i(116),
        xa = i(71),
        Sa = i(33),
        ka = i(87);
    x = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, S = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    class La {
        constructor(e, t, i, n) {
            this.originalLineStart = e, this.originalLineEnd = t, this.modifiedLineStart = i, this.modifiedLineEnd = n
        }
        getType() {
            return 0 === this.originalLineStart ? 1 : 0 === this.modifiedLineStart ? 2 : 0
        }
    }
    class Oa {
        constructor(e) {
            this.entries = e
        }
    }
    const Ea = Object(ka.b)("diff-review-insert", Sa.b.add, yt.a("diffReviewInsertIcon", "Icon for 'Insert' in diff review.")),
        Na = Object(ka.b)("diff-review-remove", Sa.b.remove, yt.a("diffReviewRemoveIcon", "Icon for 'Remove' in diff review.")),
        Da = Object(ka.b)("diff-review-close", Sa.b.close, yt.a("diffReviewCloseIcon", "Icon for 'Close' in diff review."));
    let Ia = class e extends v.a {
        constructor(e, t) {
            super(), this._modeService = t, this._width = 0, this._diffEditor = e, this._isVisible = !1, this.shadow = Object(Ui.b)(document.createElement("div")), this.shadow.setClassName("diff-review-shadow"), this.actionBarContainer = Object(Ui.b)(document.createElement("div")), this.actionBarContainer.setClassName("diff-review-actions"), this._actionBar = this._register(new Ca.a(this.actionBarContainer.domNode)), this._actionBar.push(new xa.a("diffreview.close", yt.a("label.close", "Close"), "close-diff-review " + ir.d.asClassName(Da), !0, () => function(e, t, i, n) {
                return new(i = i || Promise)((function(r, o) {
                    function s(e) {
                        try {
                            l(n.next(e))
                        } catch (e) {
                            o(e)
                        }
                    }

                    function a(e) {
                        try {
                            l(n.throw(e))
                        } catch (e) {
                            o(e)
                        }
                    }

                    function l(e) {
                        var t;
                        e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                            e(t)
                        }))).then(s, a)
                    }
                    l((n = n.apply(e, t || [])).next())
                }))
            }(this, void 0, void 0, (function*() {
                return this.hide()
            }))), {
                label: !1,
                icon: !0
            }), this.domNode = Object(Ui.b)(document.createElement("div")), this.domNode.setClassName("diff-review monaco-editor-background"), this._content = Object(Ui.b)(document.createElement("div")), this._content.setClassName("diff-review-content"), this._content.setAttribute("role", "code"), this.scrollbar = this._register(new Dr.a(this._content.domNode, {})), this.domNode.domNode.appendChild(this.scrollbar.getDomNode()), this._register(e.onDidUpdateDiff(() => {
                this._isVisible && (this._diffs = this._compute(), this._render())
            })), this._register(e.getModifiedEditor().onDidChangeCursorPosition(() => {
                this._isVisible && this._render()
            })), this._register(s.l(this.domNode.domNode, "click", e => {
                e.preventDefault(), (e = s.u(e.target, "diff-review-row")) && this._goToRow(e)
            })), this._register(s.l(this.domNode.domNode, "keydown", e => {
                (e.equals(18) || e.equals(2066) || e.equals(530)) && (e.preventDefault(), this._goToRow(this._getNextRow())), (e.equals(16) || e.equals(2064) || e.equals(528)) && (e.preventDefault(), this._goToRow(this._getPrevRow())), (e.equals(9) || e.equals(2057) || e.equals(521) || e.equals(1033)) && (e.preventDefault(), this.hide()), (e.equals(10) || e.equals(3)) && (e.preventDefault(), this.accept())
            })), this._diffs = [], this._currentDiff = null
        }
        prev() {
            let e = 0;
            if (this._isVisible || (this._diffs = this._compute()), this._isVisible) {
                let t = -1;
                for (let e = 0, i = this._diffs.length; e < i; e++)
                    if (this._diffs[e] === this._currentDiff) {
                        t = e;
                        break
                    } e = this._diffs.length + t - 1
            } else e = this._findDiffIndex(this._diffEditor.getPosition());
            var t;
            0 !== this._diffs.length && (e %= this._diffs.length, t = this._diffs[e].entries, this._diffEditor.setPosition(new Re.a(t[0].modifiedLineStart, 1)), this._diffEditor.setSelection({
                startColumn: 1,
                startLineNumber: t[0].modifiedLineStart,
                endColumn: 1073741824,
                endLineNumber: t[t.length - 1].modifiedLineEnd
            }), this._isVisible = !0, this._diffEditor.doLayout(), this._render(), this._goToRow(this._getNextRow()))
        }
        next() {
            let e = 0;
            if (this._isVisible || (this._diffs = this._compute()), this._isVisible) {
                let t = -1;
                for (let e = 0, i = this._diffs.length; e < i; e++)
                    if (this._diffs[e] === this._currentDiff) {
                        t = e;
                        break
                    } e = t + 1
            } else e = this._findDiffIndex(this._diffEditor.getPosition());
            var t;
            0 !== this._diffs.length && (e %= this._diffs.length, t = this._diffs[e].entries, this._diffEditor.setPosition(new Re.a(t[0].modifiedLineStart, 1)), this._diffEditor.setSelection({
                startColumn: 1,
                startLineNumber: t[0].modifiedLineStart,
                endColumn: 1073741824,
                endLineNumber: t[t.length - 1].modifiedLineEnd
            }), this._isVisible = !0, this._diffEditor.doLayout(), this._render(), this._goToRow(this._getNextRow()))
        }
        accept() {
            let e = -1,
                t = this._getCurrentFocusedRow();
            var i;
            t && (i = parseInt(t.getAttribute("data-line"), 10), isNaN(i) || (e = i)), this.hide(), -1 !== e && (this._diffEditor.setPosition(new Re.a(e, 1)), this._diffEditor.revealPosition(new Re.a(e, 1), 1))
        }
        hide() {
            this._isVisible = !1, this._diffEditor.updateOptions({
                readOnly: !1
            }), this._diffEditor.focus(), this._diffEditor.doLayout(), this._render()
        }
        _getPrevRow() {
            var e = this._getCurrentFocusedRow();
            return e ? e.previousElementSibling || e : this._getFirstRow()
        }
        _getNextRow() {
            var e = this._getCurrentFocusedRow();
            return e ? e.nextElementSibling || e : this._getFirstRow()
        }
        _getFirstRow() {
            return this.domNode.domNode.querySelector(".diff-review-row")
        }
        _getCurrentFocusedRow() {
            var e = document.activeElement;
            return e && /diff-review-row/.test(e.className) ? e : null
        }
        _goToRow(e) {
            let t = this._getCurrentFocusedRow();
            e.tabIndex = 0, e.focus(), t && t !== e && (t.tabIndex = -1), this.scrollbar.scanDomNode()
        }
        isVisible() {
            return this._isVisible
        }
        layout(e, t, i) {
            this._width = t, this.shadow.setTop(e - 6), this.shadow.setWidth(t), this.shadow.setHeight(this._isVisible ? 6 : 0), this.domNode.setTop(e), this.domNode.setWidth(t), this.domNode.setHeight(i), this._content.setHeight(i), this._content.setWidth(t), this._isVisible ? (this.actionBarContainer.setAttribute("aria-hidden", "false"), this.actionBarContainer.setDisplay("block")) : (this.actionBarContainer.setAttribute("aria-hidden", "true"), this.actionBarContainer.setDisplay("none"))
        }
        _compute() {
            var t = this._diffEditor.getLineChanges();
            if (!t || 0 === t.length) return [];
            const i = this._diffEditor.getOriginalEditor().getModel(),
                n = this._diffEditor.getModifiedEditor().getModel();
            return i && n ? e._mergeAdjacent(t, i.getLineCount(), n.getLineCount()) : []
        }
        static _mergeAdjacent(e, t, i) {
            if (!e || 0 === e.length) return [];
            let n = [],
                r = 0;
            for (let g = 0, f = e.length; g < f; g++) {
                var o = e[g],
                    s = o.originalStartLineNumber,
                    a = o.originalEndLineNumber,
                    l = o.modifiedStartLineNumber,
                    d = o.modifiedEndLineNumber;
                let m = [],
                    v = 0; {
                    var c, h = 0 === a ? s : s - 1,
                        u = 0 === d ? l : l - 1;
                    let t = 1,
                        i = 1;
                    0 < g && (t = 0 === (o = e[g - 1]).originalEndLineNumber ? o.originalStartLineNumber + 1 : o.originalEndLineNumber + 1, i = 0 === o.modifiedEndLineNumber ? o.modifiedStartLineNumber + 1 : o.modifiedEndLineNumber + 1);
                    let n = h - 3 + 1,
                        r = u - 3 + 1;
                    n < t && (n += c = t - n, r += c), r < i && (n += c = i - r, r += c), m[v++] = new La(n, h, r, u)
                }
                0 !== a && (m[v++] = new La(s, a, 0, 0)), 0 !== d && (m[v++] = new La(0, 0, l, d)); {
                    var p;
                    a = 0 === a ? s + 1 : a + 1, l = 0 === d ? l + 1 : d + 1;
                    let n = t,
                        r = i;
                    g + 1 < f && (n = 0 === (d = e[g + 1]).originalEndLineNumber ? d.originalStartLineNumber : d.originalStartLineNumber - 1, r = 0 === d.modifiedEndLineNumber ? d.modifiedStartLineNumber : d.modifiedStartLineNumber - 1);
                    let o = a + 3 - 1,
                        c = l + 3 - 1;
                    o > n && (o += p = n - o, c += p), c > r && (o += p = r - c, c += p), m[v++] = new La(a, o, l, c)
                }
                n[r++] = new Oa(m)
            }
            let g = n[0].entries,
                f = [],
                m = 0;
            for (let e = 1, t = n.length; e < t; e++) {
                const t = n[e].entries,
                    i = g[g.length - 1],
                    r = t[0];
                0 === i.getType() && 0 === r.getType() && r.originalLineStart <= i.originalLineEnd ? (g[g.length - 1] = new La(i.originalLineStart, r.originalLineEnd, i.modifiedLineStart, r.modifiedLineEnd), g = g.concat(t.slice(1))) : (f[m++] = new Oa(g), g = t)
            }
            return f[m++] = new Oa(g), f
        }
        _findDiffIndex(e) {
            var t = e.lineNumber;
            for (let e = 0, n = this._diffs.length; e < n; e++) {
                var i = this._diffs[e].entries;
                if (t <= i[i.length - 1].modifiedLineEnd) return e
            }
            return 0
        }
        _render() {
            var t = this._diffEditor.getOriginalEditor().getOptions();
            const i = this._diffEditor.getModifiedEditor().getOptions(),
                n = this._diffEditor.getOriginalEditor().getModel(),
                r = this._diffEditor.getModifiedEditor().getModel();
            var o = n.getOptions(),
                a = r.getOptions();
            if (!this._isVisible || !n || !r) return s.q(this._content.domNode), this._currentDiff = null, void this.scrollbar.scanDomNode();
            this._diffEditor.updateOptions({
                readOnly: !0
            });
            var l = this._findDiffIndex(this._diffEditor.getPosition());
            if (this._diffs[l] !== this._currentDiff) {
                this._currentDiff = this._diffs[l];
                var d = this._diffs[l].entries;
                let _ = document.createElement("div");
                _.className = "diff-review-table", _.setAttribute("role", "list"), _.setAttribute("aria-label", 'Difference review. Use "Stage | Unstage | Revert Selected Ranges" commands'), zi.applyFontInfoSlow(_, i.get(43));
                let w = 0,
                    y = 0,
                    C = 0,
                    x = 0;
                for (let e = 0, t = d.length; e < t; e++) {
                    var c = (p = d[e]).originalLineStart,
                        h = p.originalLineEnd,
                        u = p.modifiedLineStart,
                        p = p.modifiedLineEnd;
                    0 !== c && (0 === w || c < w) && (w = c), 0 !== h && (0 === y || h > y) && (y = h), 0 !== u && (0 === C || u < C) && (C = u), 0 !== p && (0 === x || p > x) && (x = p)
                }
                let S = document.createElement("div");
                S.className = "diff-review-row";
                let k = document.createElement("div");
                k.className = "diff-review-cell diff-review-summary";
                var g = y - w + 1,
                    f = x - C + 1;
                k.appendChild(document.createTextNode(`${l+1}/${this._diffs.length}: @@ -${w},${g} +${C},${f} @@`)), S.setAttribute("data-line", String(C));
                var m = e => 0 === e ? yt.a("no_lines_changed", "no lines changed") : 1 === e ? yt.a("one_line_changed", "1 line changed") : yt.a("more_lines_changed", "{0} lines changed", e);
                g = m(g), f = m(f);
                S.setAttribute("aria-label", yt.a({
                    key: "header",
                    comment: ["This is the ARIA label for a git diff header.", "A git diff header looks like this: @@ -154,12 +159,39 @@.", "That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.", "Variables 0 and 1 refer to the diff index out of total number of diffs.", "Variables 2 and 4 will be numbers (a line number).", 'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']
                }, "Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}", l + 1, this._diffs.length, w, g, C, f)), S.appendChild(k), S.setAttribute("role", "listitem"), _.appendChild(S);
                var v = i.get(58);
                let L = C;
                for (let s = 0, l = d.length; s < l; s++) {
                    var b = d[s];
                    e._renderSection(_, b, L, v, this._width, t, n, o, i, r, a, this._modeService.languageIdCodec), 0 !== b.modifiedLineStart && (L = b.modifiedLineEnd)
                }
                s.q(this._content.domNode), this._content.domNode.appendChild(_), this.scrollbar.scanDomNode()
            }
        }
        static _renderSection(t, i, n, r, o, s, a, l, d, c, h, u) {
            var p = i.getType();
            let g = "diff-review-row",
                f = "",
                m = null;
            switch (p) {
                case 1:
                    g = "diff-review-row line-insert", f = " char-insert", m = Ea;
                    break;
                case 2:
                    g = "diff-review-row line-delete", f = " char-delete", m = Na
            }
            var v = i.originalLineStart,
                b = i.originalLineEnd,
                _ = i.modifiedLineStart,
                w = (i = i.modifiedLineEnd, Math.max(i - _, b - v)),
                y = (b = s.get(129)).glyphMarginWidth + b.lineNumbersWidth,
                C = 10 + (b = d.get(129)).glyphMarginWidth + b.lineNumbersWidth;
            for (let i = 0; i <= w; i++) {
                var x = 0 === v ? 0 : v + i,
                    S = 0 === _ ? 0 : _ + i;
                const b = document.createElement("div");
                b.style.minWidth = o + "px", b.className = g, b.setAttribute("role", "listitem"), 0 !== S && (n = S), b.setAttribute("data-line", String(n));
                let w = document.createElement("div");
                w.className = "diff-review-cell", w.style.height = r + "px", b.appendChild(w);
                const k = document.createElement("span");
                k.style.width = y + "px", k.style.minWidth = y + "px", k.className = "diff-review-line-number" + f, 0 !== x ? k.appendChild(document.createTextNode(String(x))) : k.innerText = " ", w.appendChild(k);
                const L = document.createElement("span");
                L.style.width = C + "px", L.style.minWidth = C + "px", L.style.paddingRight = "10px", L.className = "diff-review-line-number" + f, 0 !== S ? L.appendChild(document.createTextNode(String(S))) : L.innerText = " ", w.appendChild(L);
                const O = document.createElement("span");
                if (O.className = "diff-review-spacer", m) {
                    const e = document.createElement("span");
                    e.className = ir.d.asClassName(m), e.innerText = "  ", O.appendChild(e)
                } else O.innerText = "  ";
                let E;
                if (w.appendChild(O), 0 !== S) {
                    let t = this._renderLine(c, d, h.tabSize, S, u);
                    e._ttPolicy && (t = e._ttPolicy.createHTML(t)), w.insertAdjacentHTML("beforeend", t), E = c.getLineContent(S)
                } else {
                    let t = this._renderLine(a, s, l.tabSize, x, u);
                    e._ttPolicy && (t = e._ttPolicy.createHTML(t)), w.insertAdjacentHTML("beforeend", t), E = a.getLineContent(x)
                }
                0 === E.length && (E = yt.a("blankLine", "blank"));
                let N = "";
                switch (p) {
                    case 0:
                        N = x === S ? yt.a({
                            key: "unchangedLine",
                            comment: ["The placeholders are contents of the line and should not be translated."]
                        }, "{0} unchanged line {1}", E, x) : yt.a("equalLine", "{0} original line {1} modified line {2}", E, x, S);
                        break;
                    case 1:
                        N = yt.a("insertLine", "+ {0} modified line {1}", E, S);
                        break;
                    case 2:
                        N = yt.a("deleteLine", "- {0} original line {1}", E, x)
                }
                b.setAttribute("aria-label", N), t.appendChild(b)
            }
        }
        static _renderLine(e, t, i, r, o) {
            var s = e.getLineContent(r),
                a = t.get(43);
            r = we.a.createEmpty(s, o), o = ze.isBasicASCII(s, e.mightContainNonBasicASCII()), e = ze.containsRTL(s, o, e.mightContainRTL());
            return Me(new Oe(a.isMonospace && !t.get(29), a.canUseHalfwidthRightwardsArrow, s, !1, o, e, 0, r, [], i, 0, a.spaceWidth, a.middotWidth, a.wsmiddotWidth, t.get(104), t.get(87), t.get(82), t.get(44) !== n.e.OFF, null)).html
        }
    };
    Ia._ttPolicy = null === (gi = window.trustedTypes) || void 0 === gi ? void 0 : gi.createPolicy("diffReview", {
        createHTML: e => e
    }), Ia = x([S(1, K.a)], Ia), Object(ir.f)((e, t) => {
        var i = e.getColor(tr.A);
        i && t.addRule(`.monaco-diff-editor .diff-review-line-number { color: ${i}; }`), (e = e.getColor(Ir.fc)) && t.addRule(`.monaco-diff-editor .diff-review-shadow { box-shadow: ${e} 0 -6px 6px -6px inset; }`)
    });
    class Ta extends Ai.b {
        constructor() {
            super({
                id: "editor.action.diffReview.next",
                label: yt.a("editor.action.diffReview.next", "Go to Next Difference"),
                alias: "Go to Next Difference",
                precondition: Yt.a.has("isInDiffEditor"),
                kbOpts: {
                    kbExpr: null,
                    primary: 65,
                    weight: 100
                }
            })
        }
        run(e, t) {
            const i = Pa(e);
            i && i.diffReviewNext()
        }
    }
    class Ma extends Ai.b {
        constructor() {
            super({
                id: "editor.action.diffReview.prev",
                label: yt.a("editor.action.diffReview.prev", "Go to Previous Difference"),
                alias: "Go to Previous Difference",
                precondition: Yt.a.has("isInDiffEditor"),
                kbOpts: {
                    kbExpr: null,
                    primary: 1089,
                    weight: 100
                }
            })
        }
        run(e, t) {
            const i = Pa(e);
            i && i.diffReviewPrev()
        }
    }

    function Pa(e) {
        const t = e.get(o.a);
        var i = t.listDiffEditors();
        const n = t.getActiveCodeEditor();
        if (!n) return null;
        for (let e = 0, t = i.length; e < t; e++) {
            const t = i[e];
            if (t.getModifiedEditor().getId() === n.getId() || t.getOriginalEditor().getId() === n.getId()) return t
        }
        return null
    }
    Object(Ai.i)(Ta), Object(Ai.i)(Ma);
    var Aa = i(94),
        Ra = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    class Fa extends v.a {
        constructor(e, t, i, n, r, o) {
            super(), this._viewZoneId = e, this._marginDomNode = t, this.editor = i, this.diff = n, this._contextMenuService = r, this._clipboardService = o, this._visibility = !1, this._marginDomNode.style.zIndex = "10", this._diffActions = document.createElement("div"), this._diffActions.className = Sa.b.lightBulb.classNames + " lightbulb-glyph", this._diffActions.style.position = "absolute";
            const a = i.getOption(58),
                l = i.getModel().getEOL();
            this._diffActions.style.right = "0px", this._diffActions.style.visibility = "hidden", this._diffActions.style.height = a + "px", this._diffActions.style.lineHeight = a + "px", this._marginDomNode.appendChild(this._diffActions);
            const d = [],
                c = 0 === n.modifiedEndLineNumber;
            d.push(new xa.a("diff.clipboard.copyDeletedContent", c ? n.originalEndLineNumber > n.modifiedStartLineNumber ? yt.a("diff.clipboard.copyDeletedLinesContent.label", "Copy deleted lines") : yt.a("diff.clipboard.copyDeletedLinesContent.single.label", "Copy deleted line") : n.originalEndLineNumber > n.modifiedStartLineNumber ? yt.a("diff.clipboard.copyChangedLinesContent.label", "Copy changed lines") : yt.a("diff.clipboard.copyChangedLinesContent.single.label", "Copy changed line"), void 0, !0, () => Ra(this, void 0, void 0, (function*() {
                var e = new T.a(n.originalStartLineNumber, 1, n.originalEndLineNumber + 1, 1);
                e = n.originalModel.getValueInRange(e);
                yield this._clipboardService.writeText(e)
            }))));
            let h = 0,
                u = void 0;
            n.originalEndLineNumber > n.modifiedStartLineNumber && (u = new xa.a("diff.clipboard.copyDeletedLineContent", c ? yt.a("diff.clipboard.copyDeletedLineContent.label", "Copy deleted line ({0})", n.originalStartLineNumber) : yt.a("diff.clipboard.copyChangedLineContent.label", "Copy changed line ({0})", n.originalStartLineNumber), void 0, !0, () => Ra(this, void 0, void 0, (function*() {
                var e, t = n.originalModel.getLineContent(n.originalStartLineNumber + h);
                "" === t ? (e = n.originalModel.getEndOfLineSequence(), yield this._clipboardService.writeText(0 === e ? "\n" : "\r\n")) : yield this._clipboardService.writeText(t)
            }))), d.push(u)), i.getOption(80) || d.push(new xa.a("diff.inline.revertChange", yt.a("diff.inline.revertChange.label", "Revert this change"), void 0, !0, () => Ra(this, void 0, void 0, (function*() {
                var e, t = new T.a(n.originalStartLineNumber, 1, n.originalEndLineNumber, n.originalModel.getLineMaxColumn(n.originalEndLineNumber));
                t = n.originalModel.getValueInRange(t);
                0 === n.modifiedEndLineNumber ? (e = i.getModel().getLineMaxColumn(n.modifiedStartLineNumber), i.executeEdits("diffEditor", [{
                    range: new T.a(n.modifiedStartLineNumber, e, n.modifiedStartLineNumber, e),
                    text: l + t
                }])) : (e = i.getModel().getLineMaxColumn(n.modifiedEndLineNumber), i.executeEdits("diffEditor", [{
                    range: new T.a(n.modifiedStartLineNumber, 1, n.modifiedEndLineNumber, e),
                    text: t
                }]))
            }))));
            const p = (e, t) => {
                this._contextMenuService.showContextMenu({
                    getAnchor: () => ({
                        x: e,
                        y: t
                    }),
                    getActions: () => (u && (u.label = c ? yt.a("diff.clipboard.copyDeletedLineContent.label", "Copy deleted line ({0})", n.originalStartLineNumber + h) : yt.a("diff.clipboard.copyChangedLineContent.label", "Copy changed line ({0})", n.originalStartLineNumber + h)), d),
                    autoSelectFirstItem: !0
                })
            };
            this._register(s.l(this._diffActions, "mousedown", e => {
                var {
                    top: t,
                    height: i
                } = s.A(this._diffActions), n = Math.floor(a / 3);
                e.preventDefault(), p(e.posx, t + i + n)
            })), this._register(i.onMouseMove(e => {
                8 !== e.target.type && 5 !== e.target.type || e.target.detail.viewZoneId !== this._viewZoneId ? this.visibility = !1 : (this.visibility = !0, h = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, a))
            })), this._register(i.onMouseDown(e => {
                e.event.rightButton && (8 !== e.target.type && 5 !== e.target.type || e.target.detail.viewZoneId === this._viewZoneId && (e.event.preventDefault(), h = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, a), p(e.event.posx, e.event.posy + a)))
            }))
        }
        get visibility() {
            return this._visibility
        }
        set visibility(e) {
            this._visibility !== e && (this._visibility = e, this._diffActions.style.visibility = e ? "visible" : "hidden")
        }
        _updateLightBulbPosition(e, t, i) {
            var {
                top: e
            } = s.A(e), n = Math.floor((t - e) / i);
            if (this._diffActions.style.top = n * i + "px", this.diff.viewLineCounts) {
                let e = 0;
                for (let t = 0; t < this.diff.viewLineCounts.length; t++)
                    if (e += this.diff.viewLineCounts[t], n < e) return t
            }
            return n
        }
    }
    var ja = i(117);
    Object.freeze({
        report() {}
    });
    const Ba = Object(_.c)("editorProgressService");
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    class Va {
        constructor(e, t) {
            this._contextMenuService = e, this._clipboardService = t, this._zones = [], this._inlineDiffMargins = [], this._zonesMap = {}, this._decorations = []
        }
        getForeignViewZones(e) {
            return e.filter(e => !this._zonesMap[String(e.id)])
        }
        clean(e) {
            0 < this._zones.length && e.changeViewZones(e => {
                for (const t of this._zones) e.removeZone(t)
            }), this._zones = [], this._zonesMap = {}, this._decorations = e.deltaDecorations(this._decorations, [])
        }
        apply(e, t, i, n) {
            const r = n ? ya.capture(e) : null;
            e.changeViewZones(t => {
                var n;
                for (const e of this._zones) t.removeZone(e);
                for (const e of this._inlineDiffMargins) e.dispose();
                this._zones = [], this._zonesMap = {}, this._inlineDiffMargins = [];
                for (let o = 0, s = i.zones.length; o < s; o++) {
                    const s = i.zones[o];
                    s.suppressMouseDown = !0;
                    var r = t.addZone(s);
                    this._zones.push(r), this._zonesMap[String(r)] = !0, i.zones[o].diff && s.marginDomNode && (s.suppressMouseDown = !1, 0 !== (null === (n = i.zones[o].diff) || void 0 === n ? void 0 : n.originalModel.getValueLength()) && this._inlineDiffMargins.push(new Fa(r, s.marginDomNode, e, i.zones[o].diff, this._contextMenuService, this._clipboardService)))
                }
            }), r && r.restore(e), this._decorations = e.deltaDecorations(this._decorations, i.decorations), t && t.setZones(i.overviewZones)
        }
    }
    let Wa = 0;
    gi = Object(ka.b)("diff-insert", Sa.b.add, yt.a("diffInsertIcon", "Line decoration for inserts in the diff editor."));
    const za = Object(ka.b)("diff-remove", Sa.b.remove, yt.a("diffRemoveIcon", "Line decoration for removals in the diff editor.")),
        Ha = null === (x = window.trustedTypes) || void 0 === x ? void 0 : x.createPolicy("diffEditorWidget", {
            createHTML: e => e
        });
    let Ua = class e extends v.a {
        constructor(t, i, n, r, o, a, l, d, c, h, u, p) {
            super(), this._editorProgressService = p, this._onDidDispose = this._register(new D.b), this.onDidDispose = this._onDidDispose.event, this._onDidUpdateDiff = this._register(new D.b), this.onDidUpdateDiff = this._onDidUpdateDiff.event, this._onDidContentSizeChange = this._register(new D.b), this._lastOriginalWarning = null, this._lastModifiedWarning = null, this._editorWorkerService = o, this._codeEditorService = d, this._contextKeyService = this._register(a.createScoped(t)), this._instantiationService = l.createChild(new Us([Yt.b, this._contextKeyService])), this._contextKeyService.createKey("isInDiffEditor", !0), this._themeService = c, this._notificationService = h, this._id = ++Wa, this._state = 0, this._updatingDiffProgress = null, this._domElement = t, this._options = rl(i = i || {}, {
                enableSplitViewResizing: !0,
                renderSideBySide: !0,
                maxComputationTime: 5e3,
                maxFileSize: 50,
                ignoreTrimWhitespace: !0,
                renderIndicators: !0,
                originalEditable: !1,
                diffCodeLens: !1,
                renderOverviewRuler: !0,
                diffWordWrap: "inherit"
            }), void 0 !== i.isInEmbeddedEditor ? this._contextKeyService.createKey("isInEmbeddedDiffEditor", i.isInEmbeddedEditor) : this._contextKeyService.createKey("isInEmbeddedDiffEditor", !1), this._updateDecorationsRunner = this._register(new q.e(() => this._updateDecorations(), 0)), this._containerDomElement = document.createElement("div"), this._containerDomElement.className = e._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide), this._containerDomElement.style.position = "relative", this._containerDomElement.style.height = "100%", this._domElement.appendChild(this._containerDomElement), this._overviewViewportDomElement = Object(Ui.b)(document.createElement("div")), this._overviewViewportDomElement.setClassName("diffViewport"), this._overviewViewportDomElement.setPosition("absolute"), this._overviewDomElement = document.createElement("div"), this._overviewDomElement.className = "diffOverview", this._overviewDomElement.style.position = "absolute", this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode), this._register(s.l(this._overviewDomElement, "mousedown", e => {
                this._modifiedEditor.delegateVerticalScrollbarMouseDown(e)
            })), this._options.renderOverviewRuler && this._containerDomElement.appendChild(this._overviewDomElement), this._originalDomNode = document.createElement("div"), this._originalDomNode.className = "editor original", this._originalDomNode.style.position = "absolute", this._originalDomNode.style.height = "100%", this._containerDomElement.appendChild(this._originalDomNode), this._modifiedDomNode = document.createElement("div"), this._modifiedDomNode.className = "editor modified", this._modifiedDomNode.style.position = "absolute", this._modifiedDomNode.style.height = "100%", this._containerDomElement.appendChild(this._modifiedDomNode), this._beginUpdateDecorationsTimeout = -1, this._currentlyChangingViewZones = !1, this._diffComputationToken = 0, this._originalEditorState = new Va(u, r), this._modifiedEditorState = new Va(u, r), this._isVisible = !0, this._isHandlingScrollEvent = !1, this._elementSizeObserver = this._register(new Bi(this._containerDomElement, i.dimension, () => this._onDidContainerSizeChanged())), i.automaticLayout && this._elementSizeObserver.startObserving(), this._diffComputationResult = null, this._originalEditor = this._createLeftHandSideEditor(i, n.originalEditor || {}), this._modifiedEditor = this._createRightHandSideEditor(i, n.modifiedEditor || {}), this._originalOverviewRuler = null, this._modifiedOverviewRuler = null, this._reviewPane = l.createInstance(Ia, this), this._containerDomElement.appendChild(this._reviewPane.domNode.domNode), this._containerDomElement.appendChild(this._reviewPane.shadow.domNode), this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode), this._options.renderSideBySide ? this._setStrategy(new Za(this._createDataSource(), this._options.enableSplitViewResizing)) : this._setStrategy(new Qa(this._createDataSource(), this._options.enableSplitViewResizing)), this._register(c.onDidColorThemeChange(t => {
                this._strategy && this._strategy.applyColors(t) && this._updateDecorationsRunner.schedule(), this._containerDomElement.className = e._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide)
            }));
            for (const e of Ai.d.getDiffEditorContributions()) try {
                this._register(l.createInstance(e.ctor, this))
            } catch (t) {
                Object(se.f)(t)
            }
            this._codeEditorService.addDiffEditor(this)
        }
        _setState(e) {
            this._state !== e && (this._state = e, this._updatingDiffProgress && (this._updatingDiffProgress.done(), this._updatingDiffProgress = null), 1 === this._state && (this._updatingDiffProgress = this._editorProgressService.show(!0, 1e3)))
        }
        diffReviewNext() {
            this._reviewPane.next()
        }
        diffReviewPrev() {
            this._reviewPane.prev()
        }
        static _getClassName(e, t) {
            let i = "monaco-diff-editor monaco-editor-background ";
            return t && (i += "side-by-side "), i += Object(ir.e)(e.type), i
        }
        _recreateOverviewRulers() {
            this._options.renderOverviewRuler && (this._originalOverviewRuler && (this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()), this._originalOverviewRuler.dispose()), this._originalEditor.hasModel() && (this._originalOverviewRuler = this._originalEditor.createOverviewRuler("original diffOverviewRuler"), this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode())), this._modifiedOverviewRuler && (this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()), this._modifiedOverviewRuler.dispose()), this._modifiedEditor.hasModel() && (this._modifiedOverviewRuler = this._modifiedEditor.createOverviewRuler("modified diffOverviewRuler"), this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode())), this._layoutOverviewRulers())
        }
        _createLeftHandSideEditor(t, i) {
            const n = this._createInnerEditor(this._instantiationService, this._originalDomNode, this._adjustOptionsForLeftHandSide(t), i);
            this._register(n.onDidScrollChange(e => {
                this._isHandlingScrollEvent || (e.scrollTopChanged || e.scrollLeftChanged || e.scrollHeightChanged) && (this._isHandlingScrollEvent = !0, this._modifiedEditor.setScrollPosition({
                    scrollLeft: e.scrollLeft,
                    scrollTop: e.scrollTop
                }), this._isHandlingScrollEvent = !1, this._layoutOverviewViewport())
            })), this._register(n.onDidChangeViewZones(() => {
                this._onViewZonesChanged()
            })), this._register(n.onDidChange配置(e => {
                n.getModel() && (e.hasChanged(43) && this._updateDecorationsRunner.schedule(), e.hasChanged(130) && (this._updateDecorationsRunner.cancel(), this._updateDecorations()))
            })), this._register(n.onDidChangeHiddenAreas(() => {
                this._updateDecorationsRunner.cancel(), this._updateDecorations()
            })), this._register(n.onDidChangeModelContent(() => {
                this._isVisible && this._beginUpdateDecorationsSoon()
            }));
            const r = this._contextKeyService.createKey("isInDiffLeftEditor", n.hasWidgetFocus());
            return this._register(n.onDidFocusEditorWidget(() => r.set(!0))), this._register(n.onDidBlurEditorWidget(() => r.set(!1))), this._register(n.onDidContentSizeChange(t => {
                var i = this._originalEditor.getContentWidth() + this._modifiedEditor.getContentWidth() + e.ONE_OVERVIEW_WIDTH,
                    n = Math.max(this._modifiedEditor.getContentHeight(), this._originalEditor.getContentHeight());
                this._onDidContentSizeChange.fire({
                    contentHeight: n,
                    contentWidth: i,
                    contentHeightChanged: t.contentHeightChanged,
                    contentWidthChanged: t.contentWidthChanged
                })
            })), n
        }
        _createRightHandSideEditor(t, i) {
            const n = this._createInnerEditor(this._instantiationService, this._modifiedDomNode, this._adjustOptionsForRightHandSide(t), i);
            this._register(n.onDidScrollChange(e => {
                this._isHandlingScrollEvent || (e.scrollTopChanged || e.scrollLeftChanged || e.scrollHeightChanged) && (this._isHandlingScrollEvent = !0, this._originalEditor.setScrollPosition({
                    scrollLeft: e.scrollLeft,
                    scrollTop: e.scrollTop
                }), this._isHandlingScrollEvent = !1, this._layoutOverviewViewport())
            })), this._register(n.onDidChangeViewZones(() => {
                this._onViewZonesChanged()
            })), this._register(n.onDidChange配置(e => {
                n.getModel() && (e.hasChanged(43) && this._updateDecorationsRunner.schedule(), e.hasChanged(130) && (this._updateDecorationsRunner.cancel(), this._updateDecorations()))
            })), this._register(n.onDidChangeHiddenAreas(() => {
                this._updateDecorationsRunner.cancel(), this._updateDecorations()
            })), this._register(n.onDidChangeModelContent(() => {
                this._isVisible && this._beginUpdateDecorationsSoon()
            })), this._register(n.onDidChangeModelOptions(e => {
                e.tabSize && this._updateDecorationsRunner.schedule()
            }));
            const r = this._contextKeyService.createKey("isInDiffRightEditor", n.hasWidgetFocus());
            return this._register(n.onDidFocusEditorWidget(() => r.set(!0))), this._register(n.onDidBlurEditorWidget(() => r.set(!1))), this._register(n.onDidContentSizeChange(t => {
                var i = this._originalEditor.getContentWidth() + this._modifiedEditor.getContentWidth() + e.ONE_OVERVIEW_WIDTH,
                    n = Math.max(this._modifiedEditor.getContentHeight(), this._originalEditor.getContentHeight());
                this._onDidContentSizeChange.fire({
                    contentHeight: n,
                    contentWidth: i,
                    contentHeightChanged: t.contentHeightChanged,
                    contentWidthChanged: t.contentWidthChanged
                })
            })), n
        }
        _createInnerEditor(e, t, i, n) {
            return e.createInstance(aa, t, i, n)
        }
        dispose() {
            this._codeEditorService.removeDiffEditor(this), -1 !== this._beginUpdateDecorationsTimeout && (window.clearTimeout(this._beginUpdateDecorationsTimeout), this._beginUpdateDecorationsTimeout = -1), this._cleanViewZonesAndDecorations(), this._originalOverviewRuler && (this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()), this._originalOverviewRuler.dispose()), this._modifiedOverviewRuler && (this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()), this._modifiedOverviewRuler.dispose()), this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode), this._options.renderOverviewRuler && this._containerDomElement.removeChild(this._overviewDomElement), this._containerDomElement.removeChild(this._originalDomNode), this._originalEditor.dispose(), this._containerDomElement.removeChild(this._modifiedDomNode), this._modifiedEditor.dispose(), this._strategy.dispose(), this._containerDomElement.removeChild(this._reviewPane.domNode.domNode), this._containerDomElement.removeChild(this._reviewPane.shadow.domNode), this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode), this._reviewPane.dispose(), this._domElement.removeChild(this._containerDomElement), this._onDidDispose.fire(), super.dispose()
        }
        getId() {
            return this.getEditorType() + ":" + this._id
        }
        getEditorType() {
            return V.IDiffEditor
        }
        getLineChanges() {
            return this._diffComputationResult ? this._diffComputationResult.changes : null
        }
        getOriginalEditor() {
            return this._originalEditor
        }
        getModifiedEditor() {
            return this._modifiedEditor
        }
        updateOptions(t) {
            var i = rl(t, this._options),
                n = {
                    enableSplitViewResizing: (n = this._options).enableSplitViewResizing !== i.enableSplitViewResizing,
                    renderSideBySide: n.renderSideBySide !== i.renderSideBySide,
                    maxComputationTime: n.maxComputationTime !== i.maxComputationTime,
                    maxFileSize: n.maxFileSize !== i.maxFileSize,
                    ignoreTrimWhitespace: n.ignoreTrimWhitespace !== i.ignoreTrimWhitespace,
                    renderIndicators: n.renderIndicators !== i.renderIndicators,
                    originalEditable: n.originalEditable !== i.originalEditable,
                    diffCodeLens: n.diffCodeLens !== i.diffCodeLens,
                    renderOverviewRuler: n.renderOverviewRuler !== i.renderOverviewRuler,
                    diffWordWrap: n.diffWordWrap !== i.diffWordWrap
                };
            this._options = i, i = this._isVisible && (n.maxComputationTime || n.maxFileSize), n.ignoreTrimWhitespace || n.renderIndicators ? this._beginUpdateDecorations() : i && this._beginUpdateDecorationsSoon(), this._modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(t)), this._originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(t)), this._strategy.setEnableSplitViewResizing(this._options.enableSplitViewResizing), n.renderSideBySide && (this._options.renderSideBySide ? this._setStrategy(new Za(this._createDataSource(), this._options.enableSplitViewResizing)) : this._setStrategy(new Qa(this._createDataSource(), this._options.enableSplitViewResizing)), this._containerDomElement.className = e._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide)), n.renderOverviewRuler && (this._options.renderOverviewRuler ? this._containerDomElement.appendChild(this._overviewDomElement) : this._containerDomElement.removeChild(this._overviewDomElement))
        }
        getModel() {
            return {
                original: this._originalEditor.getModel(),
                modified: this._modifiedEditor.getModel()
            }
        }
        setModel(e) {
            if (e && (!e.original || !e.modified)) throw new Error(e.original ? "DiffEditorWidget.setModel: Modified model is null" : "DiffEditorWidget.setModel: Original model is null");
            this._cleanViewZonesAndDecorations(), this._originalEditor.setModel(e ? e.original : null), this._modifiedEditor.setModel(e ? e.modified : null), this._updateDecorationsRunner.cancel(), e && (this._originalEditor.setScrollTop(0), this._modifiedEditor.setScrollTop(0)), this._diffComputationResult = null, this._diffComputationToken++, this._setState(0), e && (this._recreateOverviewRulers(), this._beginUpdateDecorations()), this._layoutOverviewViewport()
        }
        getDomNode() {
            return this._domElement
        }
        getVisibleColumnFromPosition(e) {
            return this._modifiedEditor.getVisibleColumnFromPosition(e)
        }
        getPosition() {
            return this._modifiedEditor.getPosition()
        }
        setPosition(e) {
            this._modifiedEditor.setPosition(e)
        }
        revealLine(e, t = 0) {
            this._modifiedEditor.revealLine(e, t)
        }
        revealLineInCenter(e, t = 0) {
            this._modifiedEditor.revealLineInCenter(e, t)
        }
        revealLineInCenterIfOutsideViewport(e, t = 0) {
            this._modifiedEditor.revealLineInCenterIfOutsideViewport(e, t)
        }
        revealLineNearTop(e, t = 0) {
            this._modifiedEditor.revealLineNearTop(e, t)
        }
        revealPosition(e, t = 0) {
            this._modifiedEditor.revealPosition(e, t)
        }
        revealPositionInCenter(e, t = 0) {
            this._modifiedEditor.revealPositionInCenter(e, t)
        }
        revealPositionInCenterIfOutsideViewport(e, t = 0) {
            this._modifiedEditor.revealPositionInCenterIfOutsideViewport(e, t)
        }
        revealPositionNearTop(e, t = 0) {
            this._modifiedEditor.revealPositionNearTop(e, t)
        }
        getSelection() {
            return this._modifiedEditor.getSelection()
        }
        getSelections() {
            return this._modifiedEditor.getSelections()
        }
        setSelection(e) {
            this._modifiedEditor.setSelection(e)
        }
        setSelections(e) {
            this._modifiedEditor.setSelections(e)
        }
        revealLines(e, t, i = 0) {
            this._modifiedEditor.revealLines(e, t, i)
        }
        revealLinesInCenter(e, t, i = 0) {
            this._modifiedEditor.revealLinesInCenter(e, t, i)
        }
        revealLinesInCenterIfOutsideViewport(e, t, i = 0) {
            this._modifiedEditor.revealLinesInCenterIfOutsideViewport(e, t, i)
        }
        revealLinesNearTop(e, t, i = 0) {
            this._modifiedEditor.revealLinesNearTop(e, t, i)
        }
        revealRange(e, t = 0, i = !1, n = !0) {
            this._modifiedEditor.revealRange(e, t, i, n)
        }
        revealRangeInCenter(e, t = 0) {
            this._modifiedEditor.revealRangeInCenter(e, t)
        }
        revealRangeInCenterIfOutsideViewport(e, t = 0) {
            this._modifiedEditor.revealRangeInCenterIfOutsideViewport(e, t)
        }
        revealRangeNearTop(e, t = 0) {
            this._modifiedEditor.revealRangeNearTop(e, t)
        }
        revealRangeNearTopIfOutsideViewport(e, t = 0) {
            this._modifiedEditor.revealRangeNearTopIfOutsideViewport(e, t)
        }
        revealRangeAtTop(e, t = 0) {
            this._modifiedEditor.revealRangeAtTop(e, t)
        }
        getSupportedActions() {
            return this._modifiedEditor.getSupportedActions()
        }
        saveViewState() {
            return {
                original: this._originalEditor.saveViewState(),
                modified: this._modifiedEditor.saveViewState()
            }
        }
        restoreViewState(e) {
            e && e.original && e.modified && (this._originalEditor.restoreViewState((e = e).original), this._modifiedEditor.restoreViewState(e.modified))
        }
        layout(e) {
            this._elementSizeObserver.observe(e)
        }
        focus() {
            this._modifiedEditor.focus()
        }
        hasTextFocus() {
            return this._originalEditor.hasTextFocus() || this._modifiedEditor.hasTextFocus()
        }
        trigger(e, t, i) {
            this._modifiedEditor.trigger(e, t, i)
        }
        changeDecorations(e) {
            return this._modifiedEditor.changeDecorations(e)
        }
        _onDidContainerSizeChanged() {
            this._doLayout()
        }
        _getReviewHeight() {
            return this._reviewPane.isVisible() ? this._elementSizeObserver.getHeight() : 0
        }
        _layoutOverviewRulers() {
            var t, i, n;
            this._options.renderOverviewRuler && this._originalOverviewRuler && this._modifiedOverviewRuler && (t = this._elementSizeObserver.getHeight(), i = this._getReviewHeight(), n = e.ENTIRE_DIFF_OVERVIEW_WIDTH - 2 * e.ONE_OVERVIEW_WIDTH, this._modifiedEditor.getLayoutInfo() && (this._originalOverviewRuler.setLayout({
                top: 0,
                width: e.ONE_OVERVIEW_WIDTH,
                right: n + e.ONE_OVERVIEW_WIDTH,
                height: t - i
            }), this._modifiedOverviewRuler.setLayout({
                top: 0,
                right: 0,
                width: e.ONE_OVERVIEW_WIDTH,
                height: t - i
            })))
        }
        _onViewZonesChanged() {
            this._currentlyChangingViewZones || this._updateDecorationsRunner.schedule()
        }
        _beginUpdateDecorationsSoon() {
            -1 !== this._beginUpdateDecorationsTimeout && (window.clearTimeout(this._beginUpdateDecorationsTimeout), this._beginUpdateDecorationsTimeout = -1), this._beginUpdateDecorationsTimeout = window.setTimeout(() => this._beginUpdateDecorations(), e.UPDATE_DIFF_DECORATIONS_DELAY)
        }
        static _equals(e, t) {
            return !e && !t || !(!e || !t) && e.toString() === t.toString()
        }
        _beginUpdateDecorations() {
            this._beginUpdateDecorationsTimeout = -1;
            const t = this._originalEditor.getModel(),
                i = this._modifiedEditor.getModel();
            if (t && i) {
                this._diffComputationToken++;
                const r = this._diffComputationToken,
                    o = 1024 * this._options.maxFileSize * 1024;
                var n = e => (e = e.getValueLength(), 0 == o || e <= o);
                n(t) && n(i) ? (this._setState(1), this._editorWorkerService.computeDiff(t.uri, i.uri, this._options.ignoreTrimWhitespace, this._options.maxComputationTime).then(e => {
                    r === this._diffComputationToken && t === this._originalEditor.getModel() && i === this._modifiedEditor.getModel() && (this._setState(2), this._diffComputationResult = e, this._updateDecorationsRunner.schedule(), this._onDidUpdateDiff.fire())
                }, e => {
                    r === this._diffComputationToken && t === this._originalEditor.getModel() && i === this._modifiedEditor.getModel() && (this._setState(2), this._diffComputationResult = null, this._updateDecorationsRunner.schedule())
                })) : e._equals(t.uri, this._lastOriginalWarning) && e._equals(i.uri, this._lastModifiedWarning) || (this._lastOriginalWarning = t.uri, this._lastModifiedWarning = i.uri, this._notificationService.warn(yt.a("diff.tooLarge", "Cannot compare files because one file is too large.")))
            }
        }
        _cleanViewZonesAndDecorations() {
            this._originalEditorState.clean(this._originalEditor), this._modifiedEditorState.clean(this._modifiedEditor)
        }
        _updateDecorations() {
            if (this._originalEditor.getModel() && this._modifiedEditor.getModel()) {
                var e = this._diffComputationResult ? this._diffComputationResult.changes : [],
                    t = this._originalEditorState.getForeignViewZones(this._originalEditor.getWhitespaces()),
                    i = this._modifiedEditorState.getForeignViewZones(this._modifiedEditor.getWhitespaces());
                i = this._strategy.getEditorsDiffDecorations(e, this._options.ignoreTrimWhitespace, this._options.renderIndicators, t, i);
                try {
                    this._currentlyChangingViewZones = !0, this._originalEditorState.apply(this._originalEditor, this._originalOverviewRuler, i.original, !1), this._modifiedEditorState.apply(this._modifiedEditor, this._modifiedOverviewRuler, i.modified, !0)
                } finally {
                    this._currentlyChangingViewZones = !1
                }
            }
        }
        _adjustOptionsForSubEditor(e) {
            const t = Object.assign({}, e);
            return t.inDiffEditor = !0, t.automaticLayout = !1, t.scrollbar = Object.assign({}, t.scrollbar || {}), t.scrollbar.vertical = "visible", t.folding = !1, t.codeLens = this._options.diffCodeLens, t.fixedOverflowWidgets = !0, t.minimap = Object.assign({}, t.minimap || {}), t.minimap.enabled = !1, t
        }
        _adjustOptionsForLeftHandSide(e) {
            const t = this._adjustOptionsForSubEditor(e);
            return this._options.renderSideBySide ? t.wordWrapOverride1 = this._options.diffWordWrap : t.wordWrapOverride1 = "off", e.originalAriaLabel && (t.ariaLabel = e.originalAriaLabel), t.readOnly = !this._options.originalEditable, t.extraEditorClassName = "original-in-monaco-diff-editor", Object.assign(Object.assign({}, t), {
                dimension: {
                    height: 0,
                    width: 0
                }
            })
        }
        _adjustOptionsForRightHandSide(t) {
            const i = this._adjustOptionsForSubEditor(t);
            return t.modifiedAriaLabel && (i.ariaLabel = t.modifiedAriaLabel), i.wordWrapOverride1 = this._options.diffWordWrap, i.revealHorizontalRightPadding = n.g.revealHorizontalRightPadding.defaultValue + e.ENTIRE_DIFF_OVERVIEW_WIDTH, i.scrollbar.verticalHasArrows = !1, i.extraEditorClassName = "modified-in-monaco-diff-editor", Object.assign(Object.assign({}, i), {
                dimension: {
                    height: 0,
                    width: 0
                }
            })
        }
        doLayout() {
            this._elementSizeObserver.observe(), this._doLayout()
        }
        _doLayout() {
            var t = this._elementSizeObserver.getWidth(),
                i = this._elementSizeObserver.getHeight(),
                n = this._getReviewHeight(),
                r = this._strategy.layout();
            this._originalDomNode.style.width = r + "px", this._originalDomNode.style.left = "0px", this._modifiedDomNode.style.width = t - r + "px", this._modifiedDomNode.style.left = r + "px", this._overviewDomElement.style.top = "0px", this._overviewDomElement.style.height = i - n + "px", this._overviewDomElement.style.width = e.ENTIRE_DIFF_OVERVIEW_WIDTH + "px", this._overviewDomElement.style.left = t - e.ENTIRE_DIFF_OVERVIEW_WIDTH + "px", this._overviewViewportDomElement.setWidth(e.ENTIRE_DIFF_OVERVIEW_WIDTH), this._overviewViewportDomElement.setHeight(30), this._originalEditor.layout({
                width: r,
                height: i - n
            }), this._modifiedEditor.layout({
                width: t - r - (this._options.renderOverviewRuler ? e.ENTIRE_DIFF_OVERVIEW_WIDTH : 0),
                height: i - n
            }), (this._originalOverviewRuler || this._modifiedOverviewRuler) && this._layoutOverviewRulers(), this._reviewPane.layout(i - n, t, n), this._layoutOverviewViewport()
        }
        _layoutOverviewViewport() {
            var e = this._computeOverviewViewport();
            e ? (this._overviewViewportDomElement.setTop(e.top), this._overviewViewportDomElement.setHeight(e.height)) : (this._overviewViewportDomElement.setTop(0), this._overviewViewportDomElement.setHeight(0))
        }
        _computeOverviewViewport() {
            var e = this._modifiedEditor.getLayoutInfo();
            if (!e) return null;
            var t = this._modifiedEditor.getScrollTop(),
                i = this._modifiedEditor.getScrollHeight(),
                n = Math.max(0, e.height);
            n = Math.max(0, +n), i = 0 < i ? n / i : 0;
            return {
                height: Math.max(0, Math.floor(e.height * i)),
                top: Math.floor(t * i)
            }
        }
        _createDataSource() {
            return {
                getWidth: () => this._elementSizeObserver.getWidth(),
                getHeight: () => this._elementSizeObserver.getHeight() - this._getReviewHeight(),
                getOptions: () => ({
                    renderOverviewRuler: this._options.renderOverviewRuler
                }),
                getContainerDomNode: () => this._containerDomElement,
                relayoutEditors: () => {
                    this._doLayout()
                },
                getOriginalEditor: () => this._originalEditor,
                getModifiedEditor: () => this._modifiedEditor
            }
        }
        _setStrategy(e) {
            this._strategy && this._strategy.dispose(), (this._strategy = e).applyColors(this._themeService.getColorTheme()), this._diffComputationResult && this._updateDecorations(), this._doLayout()
        }
        _getLineChangeAtOrBeforeLineNumber(e, t) {
            var i = this._diffComputationResult ? this._diffComputationResult.changes : [];
            if (0 === i.length || e < t(i[0])) return null;
            let n = 0,
                r = i.length - 1;
            for (; n < r;) {
                var o = Math.floor((n + r) / 2),
                    s = t(i[o]),
                    a = o + 1 <= r ? t(i[o + 1]) : 1073741824;
                e < s ? r = o - 1 : a <= e ? n = o + 1 : (n = o, r = o)
            }
            return i[n]
        }
        _getEquivalentLineForOriginalLineNumber(e) {
            if (!(r = this._getLineChangeAtOrBeforeLineNumber(e, e => e.originalStartLineNumber))) return e;
            var t = r.originalStartLineNumber + (0 < r.originalEndLineNumber ? -1 : 0),
                i = r.modifiedStartLineNumber + (0 < r.modifiedEndLineNumber ? -1 : 0),
                n = 0 < r.originalEndLineNumber ? r.originalEndLineNumber - r.originalStartLineNumber + 1 : 0,
                r = 0 < r.modifiedEndLineNumber ? r.modifiedEndLineNumber - r.modifiedStartLineNumber + 1 : 0;
            return (t = e - t) <= n ? i + Math.min(t, r) : i + r - n + t
        }
        _getEquivalentLineForModifiedLineNumber(e) {
            if (!(t = this._getLineChangeAtOrBeforeLineNumber(e, e => e.modifiedStartLineNumber))) return e;
            var t, i = t.originalStartLineNumber + (0 < t.originalEndLineNumber ? -1 : 0),
                n = t.modifiedStartLineNumber + (0 < t.modifiedEndLineNumber ? -1 : 0),
                r = 0 < t.originalEndLineNumber ? t.originalEndLineNumber - t.originalStartLineNumber + 1 : 0;
            return (n = e - n) <= (t = 0 < t.modifiedEndLineNumber ? t.modifiedEndLineNumber - t.modifiedStartLineNumber + 1 : 0) ? i + Math.min(n, r) : i + r - t + n
        }
        getDiffLineInformationForOriginal(e) {
            return this._diffComputationResult ? {
                equivalentLineNumber: this._getEquivalentLineForOriginalLineNumber(e)
            } : null
        }
        getDiffLineInformationForModified(e) {
            return this._diffComputationResult ? {
                equivalentLineNumber: this._getEquivalentLineForModifiedLineNumber(e)
            } : null
        }
    };
    Ua.ONE_OVERVIEW_WIDTH = 15, Ua.ENTIRE_DIFF_OVERVIEW_WIDTH = 30, Ua.UPDATE_DIFF_DECORATIONS_DELAY = 200, Ua = t([ae(3, ja.a), ae(4, U), ae(5, Yt.b), ae(6, _.a), ae(7, o.a), ae(8, ir.b), ae(9, hi.a), ae(10, Aa.a), ae(11, Ba)], Ua);
    class Ka extends v.a {
        constructor(e) {
            super(), this._dataSource = e, this._insertColor = null, this._removeColor = null
        }
        applyColors(e) {
            const t = (e.getColor(Ir.m) || Ir.i).transparent(2),
                i = (e.getColor(Ir.o) || Ir.j).transparent(2);
            return e = !t.equals(this._insertColor) || !i.equals(this._removeColor), this._insertColor = t, this._removeColor = i, e
        }
        getEditorsDiffDecorations(e, t, i, n, r) {
            return r = r.sort((e, t) => e.afterLineNumber - t.afterLineNumber), n = n.sort((e, t) => e.afterLineNumber - t.afterLineNumber), n = this._getViewZones(e, n, r, i), r = this._getOriginalEditorDecorations(e, t, i), i = this._getModifiedEditorDecorations(e, t, i), {
                original: {
                    decorations: r.decorations,
                    overviewZones: r.overviewZones,
                    zones: n.original
                },
                modified: {
                    decorations: i.decorations,
                    overviewZones: i.overviewZones,
                    zones: n.modified
                }
            }
        }
    }
    class $a {
        constructor(e) {
            this._source = e, this._index = -1, this.current = null, this.advance()
        }
        advance() {
            this._index++, this._index < this._source.length ? this.current = this._source[this._index] : this.current = null
        }
    }
    class qa {
        constructor(e, t, i, n, r) {
            this._lineChanges = e, this._originalForeignVZ = t, this._modifiedForeignVZ = i, this._originalEditor = n, this._modifiedEditor = r
        }
        static _getViewLineCount(e, t, i) {
            var n = e.getModel();
            e = e._getViewModel();
            return n && e ? (e = nl(n, e, t, i)).endLineNumber - e.startLineNumber + 1 : i - t + 1
        }
        getViewZones() {
            var e = this._originalEditor.getOption(58),
                t = this._modifiedEditor.getOption(58),
                i = -1 !== this._originalEditor.getOption(130).wrappingColumn,
                n = -1 !== this._modifiedEditor.getOption(130).wrappingColumn,
                r = i || n;
            const o = this._originalEditor.getModel(),
                s = this._originalEditor._getViewModel().coordinatesConverter,
                a = this._modifiedEditor._getViewModel().coordinatesConverter,
                l = [],
                d = [];
            let c = 0,
                h = 0,
                u = 0,
                p = 0,
                g = 0,
                f = 0;
            var m = (e, t) => e.afterLineNumber - t.afterLineNumber,
                v = (e, t) => {
                    if (null === t.domNode && 0 < e.length) {
                        const i = e[e.length - 1];
                        if (i.afterLineNumber === t.afterLineNumber && null === i.domNode) return void(i.heightInLines += t.heightInLines)
                    }
                    e.push(t)
                };
            const b = new $a(this._modifiedForeignVZ),
                _ = new $a(this._originalForeignVZ);
            let w = 1,
                y = 1;
            for (let i = 0, n = this._lineChanges.length; i <= n; i++) {
                var C, x = i < n ? this._lineChanges[i] : null;
                f = null !== x ? (u = x.originalStartLineNumber + (0 < x.originalEndLineNumber ? -1 : 0), p = x.modifiedStartLineNumber + (0 < x.modifiedEndLineNumber ? -1 : 0), h = 0 < x.originalEndLineNumber ? qa._getViewLineCount(this._originalEditor, x.originalStartLineNumber, x.originalEndLineNumber) : 0, c = 0 < x.modifiedEndLineNumber ? qa._getViewLineCount(this._modifiedEditor, x.modifiedStartLineNumber, x.modifiedEndLineNumber) : 0, g = Math.max(x.originalStartLineNumber, x.originalEndLineNumber), Math.max(x.modifiedStartLineNumber, x.modifiedEndLineNumber)) : (u += 1e7 + h, p += 1e7 + c, g = u, p);
                let D = [],
                    I = [];
                if (r) {
                    let e;
                    e = x ? 0 < x.originalEndLineNumber ? x.originalStartLineNumber - w : x.modifiedStartLineNumber - y : o.getLineCount() - w;
                    for (let t = 0; t < e; t++) {
                        var S = w + t,
                            k = y + t,
                            L = s.getModelLineViewLineCount(S),
                            O = a.getModelLineViewLineCount(k);
                        L < O ? D.push({
                            afterLineNumber: S,
                            heightInLines: O - L,
                            domNode: null,
                            marginDomNode: null
                        }) : O < L && I.push({
                            afterLineNumber: k,
                            heightInLines: L - O,
                            domNode: null,
                            marginDomNode: null
                        })
                    }
                    x && (w = (0 < x.originalEndLineNumber ? x.originalEndLineNumber : x.originalStartLineNumber) + 1, y = (0 < x.modifiedEndLineNumber ? x.modifiedEndLineNumber : x.modifiedStartLineNumber) + 1)
                }
                for (; b.current && b.current.afterLineNumber <= f;) {
                    let e;
                    e = b.current.afterLineNumber <= p ? u - p + b.current.afterLineNumber : g;
                    let i = null;
                    x && x.modifiedStartLineNumber <= b.current.afterLineNumber && b.current.afterLineNumber <= x.modifiedEndLineNumber && (i = this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion()), D.push({
                        afterLineNumber: e,
                        heightInLines: b.current.height / t,
                        domNode: null,
                        marginDomNode: i
                    }), b.advance()
                }
                for (; _.current && _.current.afterLineNumber <= g;) {
                    let t;
                    t = _.current.afterLineNumber <= u ? p - u + _.current.afterLineNumber : f, I.push({
                        afterLineNumber: t,
                        heightInLines: _.current.height / e,
                        domNode: null
                    }), _.advance()
                }
                null === x || !el(x) || (C = this._produceOriginalFromDiff(x, h, c)) && D.push(C), null === x || !tl(x) || (C = this._produceModifiedFromDiff(x, h, c)) && I.push(C);
                let T = 0,
                    M = 0;
                for (D = D.sort(m), I = I.sort(m); T < D.length && M < I.length;) {
                    const e = D[T],
                        t = I[M];
                    var E = e.afterLineNumber - u,
                        N = t.afterLineNumber - p;
                    E < N ? (v(l, e), T++) : N < E ? (v(d, t), M++) : e.shouldNotShrink ? (v(l, e), T++) : t.shouldNotShrink ? (v(d, t), M++) : e.heightInLines >= t.heightInLines ? (e.heightInLines -= t.heightInLines, M++) : (t.heightInLines -= e.heightInLines, T++)
                }
                for (; T < D.length;) v(l, D[T]), T++;
                for (; M < I.length;) v(d, I[M]), M++
            }
            return {
                original: qa._ensureDomNodes(l),
                modified: qa._ensureDomNodes(d)
            }
        }
        static _ensureDomNodes(e) {
            return e.map(e => (e.domNode || (e.domNode = il()), e))
        }
    }

    function Ga(e, t, i, n, r) {
        return {
            range: new T.a(e, t, i, n),
            options: r
        }
    }
    const Ya = {
        charDelete: Rr.b.register({
            description: "diff-editor-char-delete",
            className: "char-delete"
        }),
        charDeleteWholeLine: Rr.b.register({
            description: "diff-editor-char-delete-whole-line",
            className: "char-delete",
            isWholeLine: !0
        }),
        charInsert: Rr.b.register({
            description: "diff-editor-char-insert",
            className: "char-insert"
        }),
        charInsertWholeLine: Rr.b.register({
            description: "diff-editor-char-insert-whole-line",
            className: "char-insert",
            isWholeLine: !0
        }),
        lineInsert: Rr.b.register({
            description: "diff-editor-line-insert",
            className: "line-insert",
            marginClassName: "line-insert",
            isWholeLine: !0
        }),
        lineInsertWithSign: Rr.b.register({
            description: "diff-editor-line-insert-with-sign",
            className: "line-insert",
            linesDecorationsClassName: "insert-sign " + ir.d.asClassName(gi),
            marginClassName: "line-insert",
            isWholeLine: !0
        }),
        lineDelete: Rr.b.register({
            description: "diff-editor-line-delete",
            className: "line-delete",
            marginClassName: "line-delete",
            isWholeLine: !0
        }),
        lineDeleteWithSign: Rr.b.register({
            description: "diff-editor-line-delete-with-sign",
            className: "line-delete",
            linesDecorationsClassName: "delete-sign " + ir.d.asClassName(za),
            marginClassName: "line-delete",
            isWholeLine: !0
        }),
        lineDeleteMargin: Rr.b.register({
            description: "diff-editor-line-delete-margin",
            marginClassName: "line-delete"
        })
    };
    class Za extends Ka {
        constructor(e, t) {
            super(e), this._disableSash = !1 === t, this._sashRatio = null, this._sashPosition = null, this._startSashPosition = null, this._sash = this._register(new va.a(this._dataSource.getContainerDomNode(), this, {
                orientation: 0
            })), this._disableSash && (this._sash.state = 0), this._sash.onDidStart(() => this._onSashDragStart()), this._sash.onDidChange(e => this._onSashDrag(e)), this._sash.onDidEnd(() => this._onSashDragEnd()), this._sash.onDidReset(() => this._onSashReset())
        }
        setEnableSplitViewResizing(e) {
            e = !1 === e, this._disableSash !== e && (this._disableSash = e, this._sash.state = this._disableSash ? 0 : 3)
        }
        layout(e = this._sashRatio) {
            var t = this._dataSource.getWidth() - (this._dataSource.getOptions().renderOverviewRuler ? Ua.ENTIRE_DIFF_OVERVIEW_WIDTH : 0);
            let i = Math.floor((e || .5) * t);
            return e = Math.floor(.5 * t), i = !this._disableSash && i || e, t > 2 * Za.MINIMUM_EDITOR_WIDTH ? (i < Za.MINIMUM_EDITOR_WIDTH && (i = Za.MINIMUM_EDITOR_WIDTH), i > t - Za.MINIMUM_EDITOR_WIDTH && (i = t - Za.MINIMUM_EDITOR_WIDTH)) : i = e, this._sashPosition !== i && (this._sashPosition = i, this._sash.layout()), this._sashPosition
        }
        _onSashDragStart() {
            this._startSashPosition = this._sashPosition
        }
        _onSashDrag(e) {
            var t = this._dataSource.getWidth() - (this._dataSource.getOptions().renderOverviewRuler ? Ua.ENTIRE_DIFF_OVERVIEW_WIDTH : 0);
            e = this.layout((this._startSashPosition + (e.currentX - e.startX)) / t);
            this._sashRatio = e / t, this._dataSource.relayoutEditors()
        }
        _onSashDragEnd() {
            this._sash.layout()
        }
        _onSashReset() {
            this._sashRatio = .5, this._dataSource.relayoutEditors(), this._sash.layout()
        }
        getVerticalSashTop(e) {
            return 0
        }
        getVerticalSashLeft(e) {
            return this._sashPosition
        }
        getVerticalSashHeight(e) {
            return this._dataSource.getHeight()
        }
        _getViewZones(e, t, i) {
            var n = this._dataSource.getOriginalEditor(),
                r = this._dataSource.getModifiedEditor();
            return new Xa(e, t, i, n, r).getViewZones()
        }
        _getOriginalEditorDecorations(e, t, i) {
            const n = this._dataSource.getOriginalEditor();
            var r = String(this._removeColor);
            const o = {
                    decorations: [],
                    overviewZones: []
                },
                s = n.getModel();
            var a = n._getViewModel();
            for (const n of e)
                if (tl(n)) {
                    o.decorations.push({
                        range: new T.a(n.originalStartLineNumber, 1, n.originalEndLineNumber, 1073741824),
                        options: i ? Ya.lineDeleteWithSign : Ya.lineDelete
                    }), el(n) && n.charChanges || o.decorations.push(Ga(n.originalStartLineNumber, 1, n.originalEndLineNumber, 1073741824, Ya.charDeleteWholeLine));
                    var l = nl(s, a, n.originalStartLineNumber, n.originalEndLineNumber);
                    if (o.overviewZones.push(new mo(l.startLineNumber, l.endLineNumber, r)), n.charChanges)
                        for (const e of n.charChanges)
                            if (tl(e))
                                if (t)
                                    for (let t = e.originalStartLineNumber; t <= e.originalEndLineNumber; t++) {
                                        let i, n;
                                        i = t === e.originalStartLineNumber ? e.originalStartColumn : s.getLineFirstNonWhitespaceColumn(t), n = t === e.originalEndLineNumber ? e.originalEndColumn : s.getLineLastNonWhitespaceColumn(t), o.decorations.push(Ga(t, i, t, n, Ya.charDelete))
                                    } else o.decorations.push(Ga(e.originalStartLineNumber, e.originalStartColumn, e.originalEndLineNumber, e.originalEndColumn, Ya.charDelete))
                } return o
        }
        _getModifiedEditorDecorations(e, t, i) {
            const n = this._dataSource.getModifiedEditor();
            var r = String(this._insertColor);
            const o = {
                    decorations: [],
                    overviewZones: []
                },
                s = n.getModel();
            var a = n._getViewModel();
            for (const n of e)
                if (el(n)) {
                    o.decorations.push({
                        range: new T.a(n.modifiedStartLineNumber, 1, n.modifiedEndLineNumber, 1073741824),
                        options: i ? Ya.lineInsertWithSign : Ya.lineInsert
                    }), tl(n) && n.charChanges || o.decorations.push(Ga(n.modifiedStartLineNumber, 1, n.modifiedEndLineNumber, 1073741824, Ya.charInsertWholeLine));
                    var l = nl(s, a, n.modifiedStartLineNumber, n.modifiedEndLineNumber);
                    if (o.overviewZones.push(new mo(l.startLineNumber, l.endLineNumber, r)), n.charChanges)
                        for (const e of n.charChanges)
                            if (el(e))
                                if (t)
                                    for (let t = e.modifiedStartLineNumber; t <= e.modifiedEndLineNumber; t++) {
                                        let i, n;
                                        i = t === e.modifiedStartLineNumber ? e.modifiedStartColumn : s.getLineFirstNonWhitespaceColumn(t), n = t === e.modifiedEndLineNumber ? e.modifiedEndColumn : s.getLineLastNonWhitespaceColumn(t), o.decorations.push(Ga(t, i, t, n, Ya.charInsert))
                                    } else o.decorations.push(Ga(e.modifiedStartLineNumber, e.modifiedStartColumn, e.modifiedEndLineNumber, e.modifiedEndColumn, Ya.charInsert))
                } return o
        }
    }
    Za.MINIMUM_EDITOR_WIDTH = 100;
    class Xa extends qa {
        constructor(e, t, i, n, r) {
            super(e, t, i, n, r)
        }
        _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {
            return null
        }
        _produceOriginalFromDiff(e, t, i) {
            return t < i ? {
                afterLineNumber: Math.max(e.originalStartLineNumber, e.originalEndLineNumber),
                heightInLines: i - t,
                domNode: null
            } : null
        }
        _produceModifiedFromDiff(e, t, i) {
            return i < t ? {
                afterLineNumber: Math.max(e.modifiedStartLineNumber, e.modifiedEndLineNumber),
                heightInLines: t - i,
                domNode: null
            } : null
        }
    }
    class Qa extends Ka {
        constructor(e, t) {
            super(e), this._decorationsLeft = e.getOriginalEditor().getLayoutInfo().decorationsLeft, this._register(e.getOriginalEditor().onDidLayoutChange(t => {
                this._decorationsLeft !== t.decorationsLeft && (this._decorationsLeft = t.decorationsLeft, e.relayoutEditors())
            }))
        }
        setEnableSplitViewResizing(e) {}
        _getViewZones(e, t, i, n) {
            var r = this._dataSource.getOriginalEditor(),
                o = this._dataSource.getModifiedEditor();
            return new Ja(e, t, i, r, o, n).getViewZones()
        }
        _getOriginalEditorDecorations(e, t, i) {
            var n = String(this._removeColor);
            const r = {
                    decorations: [],
                    overviewZones: []
                },
                o = this._dataSource.getOriginalEditor();
            var s, a = o.getModel(),
                l = o._getViewModel();
            for (const t of e) tl(t) && (r.decorations.push({
                range: new T.a(t.originalStartLineNumber, 1, t.originalEndLineNumber, 1073741824),
                options: Ya.lineDeleteMargin
            }), s = nl(a, l, t.originalStartLineNumber, t.originalEndLineNumber), r.overviewZones.push(new mo(s.startLineNumber, s.endLineNumber, n)));
            return r
        }
        _getModifiedEditorDecorations(e, t, i) {
            const n = this._dataSource.getModifiedEditor();
            var r = String(this._insertColor);
            const o = {
                    decorations: [],
                    overviewZones: []
                },
                s = n.getModel();
            var a = n._getViewModel();
            for (const n of e)
                if (el(n)) {
                    o.decorations.push({
                        range: new T.a(n.modifiedStartLineNumber, 1, n.modifiedEndLineNumber, 1073741824),
                        options: i ? Ya.lineInsertWithSign : Ya.lineInsert
                    });
                    var l = nl(s, a, n.modifiedStartLineNumber, n.modifiedEndLineNumber);
                    if (o.overviewZones.push(new mo(l.startLineNumber, l.endLineNumber, r)), n.charChanges) {
                        for (const e of n.charChanges)
                            if (el(e))
                                if (t)
                                    for (let t = e.modifiedStartLineNumber; t <= e.modifiedEndLineNumber; t++) {
                                        let i, n;
                                        i = t === e.modifiedStartLineNumber ? e.modifiedStartColumn : s.getLineFirstNonWhitespaceColumn(t), n = t === e.modifiedEndLineNumber ? e.modifiedEndColumn : s.getLineLastNonWhitespaceColumn(t), o.decorations.push(Ga(t, i, t, n, Ya.charInsert))
                                    } else o.decorations.push(Ga(e.modifiedStartLineNumber, e.modifiedStartColumn, e.modifiedEndLineNumber, e.modifiedEndColumn, Ya.charInsert))
                    } else o.decorations.push(Ga(n.modifiedStartLineNumber, 1, n.modifiedEndLineNumber, 1073741824, Ya.charInsertWholeLine))
                } return o
        }
        layout() {
            return Math.max(5, this._decorationsLeft)
        }
    }
    class Ja extends qa {
        constructor(e, t, i, n, r, o) {
            super(e, t, i, n, r), this._originalModel = n.getModel(), this._renderIndicators = o, this._pendingLineChange = [], this._pendingViewZones = [], this._lineBreaksComputer = this._modifiedEditor._getViewModel().createLineBreaksComputer()
        }
        getViewZones() {
            var e = super.getViewZones();
            return this._finalize(e), e
        }
        _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {
            const e = document.createElement("div");
            return e.className = "inline-added-margin-view-zone", e
        }
        _produceOriginalFromDiff(e, t, i) {
            const n = document.createElement("div");
            return n.className = "inline-added-margin-view-zone", {
                afterLineNumber: Math.max(e.originalStartLineNumber, e.originalEndLineNumber),
                heightInLines: i,
                domNode: document.createElement("div"),
                marginDomNode: n
            }
        }
        _produceModifiedFromDiff(e, t, i) {
            const n = document.createElement("div");
            n.className = "view-lines line-delete " + sr;
            const r = document.createElement("div");
            r.className = "inline-deleted-margin-view-zone", t = {
                shouldNotShrink: !0,
                afterLineNumber: 0 === e.modifiedEndLineNumber ? e.modifiedStartLineNumber : e.modifiedStartLineNumber - 1,
                heightInLines: t,
                minWidthInPx: 0,
                domNode: n,
                marginDomNode: r,
                diff: {
                    originalStartLineNumber: e.originalStartLineNumber,
                    originalEndLineNumber: e.originalEndLineNumber,
                    modifiedStartLineNumber: e.modifiedStartLineNumber,
                    modifiedEndLineNumber: e.modifiedEndLineNumber,
                    originalModel: this._originalModel,
                    viewLineCounts: null
                }
            };
            for (let t = e.originalStartLineNumber; t <= e.originalEndLineNumber; t++) this._lineBreaksComputer.addRequest(this._originalModel.getLineContent(t), null, null);
            return this._pendingLineChange.push(e), this._pendingViewZones.push(t), t
        }
        _finalize(e) {
            const t = this._modifiedEditor.getOptions();
            var i = this._modifiedEditor.getModel().getOptions().tabSize,
                n = t.get(43),
                r = t.get(29),
                o = n.typicalHalfwidthCharacterWidth,
                s = t.get(92),
                a = this._originalModel.mightContainNonBasicASCII(),
                l = this._originalModel.mightContainRTL(),
                d = t.get(58),
                c = t.get(129).decorationsWidth,
                h = t.get(104),
                u = t.get(87),
                p = t.get(82),
                g = t.get(44),
                f = this._lineBreaksComputer.finalize();
            let m = 0;
            for (let t = 0; t < this._pendingLineChange.length; t++) {
                var v = this._pendingLineChange[t];
                const O = this._pendingViewZones[t],
                    E = O.domNode;
                zi.applyFontInfoSlow(E, n);
                var b = O.marginDomNode;
                zi.applyFontInfoSlow(b, n);
                const N = [];
                if (v.charChanges)
                    for (const e of v.charChanges) tl(e) && N.push(new He(new T.a(e.originalStartLineNumber, e.originalStartColumn, e.originalEndLineNumber, e.originalEndColumn), "char-delete", 0));
                var _ = 0 < N.length;
                const D = Object(ye.a)(1e4);
                let I = 0,
                    M = 0,
                    P = null;
                for (let t = v.originalStartLineNumber; t <= v.originalEndLineNumber; t++) {
                    var w = t - v.originalStartLineNumber;
                    const o = this._originalModel.getLineTokens(t),
                        s = o.getLineContent();
                    var y = f[m++],
                        C = Ce.filter(N, t, 1, s.length + 1);
                    if (y) {
                        let f = 0;
                        for (const e of y.breakOffsets) {
                            var x = o.sliceAndInflate(f, e, 0),
                                S = s.substring(f, e);
                            I = Math.max(I, this._renderOriginalLine(M++, S, x, Ce.extractWrapped(C, f, e), _, a, l, n, r, d, c, h, u, p, g, i, D, b)), f = e
                        }
                        for (P = P || []; P.length < w;) P[P.length] = 1;
                        P[w] = y.breakOffsets.length, O.heightInLines += y.breakOffsets.length - 1;
                        const m = document.createElement("div");
                        m.className = "line-delete", e.original.push({
                            afterLineNumber: t,
                            afterColumn: 0,
                            heightInLines: y.breakOffsets.length - 1,
                            domNode: il(),
                            marginDomNode: m
                        })
                    } else I = Math.max(I, this._renderOriginalLine(M++, s, o, C, _, a, l, n, r, d, c, h, u, p, g, i, D, b))
                }
                I += s;
                var k = D.build();
                k = Ha ? Ha.createHTML(k) : k;
                if (E.innerHTML = k, O.minWidthInPx = I * o, P)
                    for (var L = v.originalEndLineNumber - v.originalStartLineNumber; P.length <= L;) P[P.length] = 1;
                O.diff.viewLineCounts = P
            }
            e.original.sort((e, t) => e.afterLineNumber - t.afterLineNumber)
        }
        _renderOriginalLine(e, t, i, r, o, s, a, l, d, c, h, u, p, g, f, m, v, b) {
            v.appendASCIIString('<div class="view-line'), o || v.appendASCIIString(" char-delete"), v.appendASCIIString('" style="top:'), v.appendASCIIString(String(e * c)), v.appendASCIIString('px;width:1000000px;">'), s = ze.isBasicASCII(t, s), a = ze.containsRTL(t, s, a);
            const _ = Ie(new Oe(l.isMonospace && !d, l.canUseHalfwidthRightwardsArrow, t, !1, s, a, 0, i, r, m, 0, l.spaceWidth, l.middotWidth, l.wsmiddotWidth, u, p, g, f !== n.e.OFF, null), v);
            if (v.appendASCIIString("</div>"), this._renderIndicators) {
                const t = document.createElement("div");
                t.className = "delete-sign " + ir.d.asClassName(za), t.setAttribute("style", `position:absolute;top:${e*c}px;width:${h}px;height:${c}px;right:0;`), b.appendChild(t)
            }
            return _.characterMapping.getAbsoluteOffset(_.characterMapping.length)
        }
    }

    function el(e) {
        return 0 < e.modifiedEndLineNumber
    }

    function tl(e) {
        return 0 < e.originalEndLineNumber
    }

    function il() {
        const e = document.createElement("div");
        return e.className = "diagonal-fill", e
    }

    function nl(e, t, i, n) {
        var r = e.getLineCount();
        return i = Math.min(r, Math.max(1, i)), n = Math.min(r, Math.max(1, n)), t.coordinatesConverter.convertModelRangeToViewRange(new T.a(i, e.getLineMinColumn(i), n, e.getLineMaxColumn(n)))
    }

    function rl(e, t) {
        return {
            enableSplitViewResizing: Object(n.k)(e.enableSplitViewResizing, t.enableSplitViewResizing),
            renderSideBySide: Object(n.k)(e.renderSideBySide, t.renderSideBySide),
            maxComputationTime: Object(n.l)(e.maxComputationTime, t.maxComputationTime, 0, 1073741824),
            maxFileSize: Object(n.l)(e.maxFileSize, t.maxFileSize, 0, 1073741824),
            ignoreTrimWhitespace: Object(n.k)(e.ignoreTrimWhitespace, t.ignoreTrimWhitespace),
            renderIndicators: Object(n.k)(e.renderIndicators, t.renderIndicators),
            originalEditable: Object(n.k)(e.originalEditable, t.originalEditable),
            diffCodeLens: Object(n.k)(e.diffCodeLens, t.diffCodeLens),
            renderOverviewRuler: Object(n.k)(e.renderOverviewRuler, t.renderOverviewRuler),
            diffWordWrap: (e = e.diffWordWrap, t = t.diffWordWrap, Object(n.o)(e, t, ["off", "on", "inherit"]))
        }
    }
    Object(ir.f)((e, t) => {
        var i = e.getColor(Ir.m);
        i && (t.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { background-color: ${i}; }`), t.addRule(`.monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: ${i}; }`), t.addRule(`.monaco-editor .inline-added-margin-view-zone { background-color: ${i}; }`)), (i = e.getColor(Ir.o)) && (t.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { background-color: ${i}; }`), t.addRule(`.monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: ${i}; }`), t.addRule(`.monaco-editor .inline-deleted-margin-view-zone { background-color: ${i}; }`)), (i = e.getColor(Ir.n)) && t.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ${"hc"===e.type?"dashed":"solid"} ${i}; }`), (i = e.getColor(Ir.p)) && t.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ${"hc"===e.type?"dashed":"solid"} ${i}; }`), (i = e.getColor(Ir.fc)) && t.addRule(`.monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ${i}; }`), (i = e.getColor(Ir.k)) && t.addRule(`.monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid ${i}; }`), (i = e.getColor(Ir.hc)) && t.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport {\n\t\t\t\tbackground: ${i};\n\t\t\t}\n\t\t`), (i = e.getColor(Ir.ic)) && t.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:hover {\n\t\t\t\tbackground: ${i};\n\t\t\t}\n\t\t`), (i = e.getColor(Ir.gc)) && t.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:active {\n\t\t\t\tbackground: ${i};\n\t\t\t}\n\t\t`), e = e.getColor(Ir.l), t.addRule(`\n\t.monaco-editor .diagonal-fill {\n\t\tbackground-image: linear-gradient(\n\t\t\t-45deg,\n\t\t\t${e} 12.5%,\n\t\t\t#0000 12.5%, #0000 50%,\n\t\t\t${e} 50%, ${e} 62.5%,\n\t\t\t#0000 62.5%, #0000 100%\n\t\t);\n\t\tbackground-size: 8px 8px;\n\t}\n\t`)
    });
    const ol = Object(_.c)("themeService");
    var sl = i(63),
        al = i(81);
    class ll extends v.a {
        constructor() {
            super(), this._onCodeEditorAdd = this._register(new D.b), this.onCodeEditorAdd = this._onCodeEditorAdd.event, this._onCodeEditorRemove = this._register(new D.b), this.onCodeEditorRemove = this._onCodeEditorRemove.event, this._onDiffEditorAdd = this._register(new D.b), this._onDiffEditorRemove = this._register(new D.b), this._onDecorationTypeRegistered = this._register(new D.b), this._modelProperties = new Map, this._codeEditors = Object.create(null), this._diffEditors = Object.create(null)
        }
        addCodeEditor(e) {
            this._codeEditors[e.getId()] = e, this._onCodeEditorAdd.fire(e)
        }
        removeCodeEditor(e) {
            delete this._codeEditors[e.getId()] && this._onCodeEditorRemove.fire(e)
        }
        listCodeEditors() {
            return Object.keys(this._codeEditors).map(e => this._codeEditors[e])
        }
        addDiffEditor(e) {
            this._diffEditors[e.getId()] = e, this._onDiffEditorAdd.fire(e)
        }
        removeDiffEditor(e) {
            delete this._diffEditors[e.getId()] && this._onDiffEditorRemove.fire(e)
        }
        listDiffEditors() {
            return Object.keys(this._diffEditors).map(e => this._diffEditors[e])
        }
        getFocusedCodeEditor() {
            let e = null;
            for (const t of this.listCodeEditors()) {
                if (t.hasTextFocus()) return t;
                t.hasWidgetFocus() && (e = t)
            }
            return e
        }
        setModelProperty(e, t, i) {
            let n;
            e = e.toString(), this._modelProperties.has(e) ? n = this._modelProperties.get(e) : (n = new Map, this._modelProperties.set(e, n)), n.set(t, i)
        }
        getModelProperty(e, t) {
            if (e = e.toString(), this._modelProperties.has(e)) {
                return this._modelProperties.get(e).get(t)
            }
        }
    }
    class dl {
        constructor(e, t, i) {
            this._parent = e, this._editorId = t, this._styleSheet = i, this._refCount = 0
        }
        ref() {
            this._refCount++
        }
        unref() {
            var e;
            this._refCount--, 0 === this._refCount && (null !== (e = this._styleSheet.parentNode) && void 0 !== e && e.removeChild(this._styleSheet), this._parent._removeEditorStyleSheets(this._editorId))
        }
        insertRule(e, t) {
            this._styleSheet.sheet.insertRule(e, t)
        }
        removeRulesContainingSelector(e) {
            s.M(e, this._styleSheet)
        }
    }
    class cl {
        constructor(e) {
            this._styleSheet = e
        }
        ref() {}
        unref() {}
        insertRule(e, t) {
            this._styleSheet.sheet.insertRule(e, t)
        }
        removeRulesContainingSelector(e) {
            s.M(e, this._styleSheet)
        }
    }
    S = class extends ll {
        constructor(e, t) {
            super(), this._decorationOptionProviders = new Map, this._editorStyleSheets = new Map, this._globalStyleSheet = e || null, this._themeService = t
        }
        _getOrCreateGlobalStyleSheet() {
            return this._globalStyleSheet || (this._globalStyleSheet = new cl(s.t())), this._globalStyleSheet
        }
        _getOrCreateStyleSheet(e) {
            if (!e) return this._getOrCreateGlobalStyleSheet();
            var t = e.getContainerDomNode();
            return s.L(t) ? (e = e.getId(), this._editorStyleSheets.has(e) || (t = new dl(this, e, s.t(t)), this._editorStyleSheets.set(e, t)), this._editorStyleSheets.get(e)) : this._getOrCreateGlobalStyleSheet()
        }
        _removeEditorStyleSheets(e) {
            this._editorStyleSheets.delete(e)
        }
        registerDecorationType(e, t, i, n, r) {
            let o = this._decorationOptionProviders.get(t);
            o || (i = {
                styleSheet: r = this._getOrCreateStyleSheet(r),
                key: t,
                parentTypeKey: n,
                options: i || Object.create(null)
            }, o = n ? new hl(this._themeService, r, i) : new ul(e, this._themeService, r, i), this._decorationOptionProviders.set(t, o), this._onDecorationTypeRegistered.fire(t)), o.refCount++
        }
        removeDecorationType(e) {
            const t = this._decorationOptionProviders.get(e);
            t && (t.refCount--, t.refCount <= 0 && (this._decorationOptionProviders.delete(e), t.dispose(), this.listCodeEditors().forEach(t => t.removeDecorations(e))))
        }
        resolveDecorationOptions(e, t) {
            const i = this._decorationOptionProviders.get(e);
            if (!i) throw new Error("Unknown decoration type key: " + e);
            return i.getOptions(this, t)
        }
    }, S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }([function(e, t) {
        return function(e, i) {
            t(e, i, 1)
        }
    }(0, ir.b)], S);
    class hl {
        constructor(e, t, i) {
            this._styleSheet = t, this._styleSheet.ref(), this._parentTypeKey = i.parentTypeKey, this.refCount = 0, this._beforeContentRules = new gl(3, i, e), this._afterContentRules = new gl(4, i, e)
        }
        getOptions(e, t) {
            const i = e.resolveDecorationOptions(this._parentTypeKey, !0);
            return this._beforeContentRules && (i.beforeContentClassName = this._beforeContentRules.className), this._afterContentRules && (i.afterContentClassName = this._afterContentRules.className), i
        }
        dispose() {
            this._beforeContentRules && (this._beforeContentRules.dispose(), this._beforeContentRules = null), this._afterContentRules && (this._afterContentRules.dispose(), this._afterContentRules = null), this._styleSheet.unref()
        }
    }
    class ul {
        constructor(e, t, i, n) {
            this._disposables = new v.b, this.description = e, this._styleSheet = i, this._styleSheet.ref(), this.refCount = 0;
            var r = e => {
                if (e = new gl(e, n, t), this._disposables.add(e), e.hasContent) return e.className
            };
            e = e => (e = new gl(e, n, t), this._disposables.add(e), e.hasContent ? {
                className: e.className,
                hasLetterSpacing: e.hasLetterSpacing
            } : null);
            this.className = r(0), (i = e(1)) && (this.inlineClassName = i.className, this.inlineClassNameAffectsLetterSpacing = i.hasLetterSpacing), this.beforeContentClassName = r(3), this.afterContentClassName = r(4), n.options.beforeInjectedText && n.options.beforeInjectedText.contentText && (i = e(5), this.beforeInjectedText = {
                content: n.options.beforeInjectedText.contentText,
                inlineClassName: null == i ? void 0 : i.className,
                inlineClassNameAffectsLetterSpacing: (null == i ? void 0 : i.hasLetterSpacing) || n.options.beforeInjectedText.affectsLetterSpacing
            }), n.options.afterInjectedText && n.options.afterInjectedText.contentText && (o = e(6), this.afterInjectedText = {
                content: n.options.afterInjectedText.contentText,
                inlineClassName: null == o ? void 0 : o.className,
                inlineClassNameAffectsLetterSpacing: (null == o ? void 0 : o.hasLetterSpacing) || n.options.afterInjectedText.affectsLetterSpacing
            }), this.glyphMarginClassName = r(2), e = n.options, this.isWholeLine = Boolean(e.isWholeLine), this.stickiness = e.rangeBehavior;
            var o = e.light && e.light.overviewRulerColor || e.overviewRulerColor;
            r = e.dark && e.dark.overviewRulerColor || e.overviewRulerColor;
            void 0 === o && void 0 === r || (this.overviewRuler = {
                color: o || r,
                darkColor: r || o,
                position: e.overviewRulerLane || W.g.Center
            })
        }
        getOptions(e, t) {
            return t ? {
                description: this.description,
                inlineClassName: this.inlineClassName,
                beforeContentClassName: this.beforeContentClassName,
                afterContentClassName: this.afterContentClassName,
                className: this.className,
                glyphMarginClassName: this.glyphMarginClassName,
                isWholeLine: this.isWholeLine,
                overviewRuler: this.overviewRuler,
                stickiness: this.stickiness,
                before: this.beforeInjectedText,
                after: this.afterInjectedText
            } : this
        }
        dispose() {
            this._disposables.dispose(), this._styleSheet.unref()
        }
    }
    const pl = {
        color: "color:{0} !important;",
        opacity: "opacity:{0};",
        backgroundColor: "background-color:{0};",
        outline: "outline:{0};",
        outlineColor: "outline-color:{0};",
        outlineStyle: "outline-style:{0};",
        outlineWidth: "outline-width:{0};",
        border: "border:{0};",
        borderColor: "border-color:{0};",
        borderRadius: "border-radius:{0};",
        borderSpacing: "border-spacing:{0};",
        borderStyle: "border-style:{0};",
        borderWidth: "border-width:{0};",
        fontStyle: "font-style:{0};",
        fontWeight: "font-weight:{0};",
        fontSize: "font-size:{0};",
        fontFamily: "font-family:{0};",
        textDecoration: "text-decoration:{0};",
        cursor: "cursor:{0};",
        letterSpacing: "letter-spacing:{0};",
        gutterIconPath: "background:{0} center center no-repeat;",
        gutterIconSize: "background-size:{0};",
        contentText: "content:'{0}';",
        contentIconPath: "content:{0};",
        margin: "margin:{0};",
        padding: "padding:{0};",
        width: "width:{0};",
        height: "height:{0};",
        verticalAlign: "vertical-align:{0};"
    };
    class gl {
        constructor(e, t, i) {
            this._theme = i.getColorTheme(), this._ruleType = e, this._providerArgs = t, this._usesThemeColors = !1, this._hasContent = !1, this._hasLetterSpacing = !1;
            let n = fl.getClassName(this._providerArgs.key, e);
            this._providerArgs.parentTypeKey && (n = n + " " + fl.getClassName(this._providerArgs.parentTypeKey, e)), this._className = n, this._unThemedSelector = fl.getSelector(this._providerArgs.key, this._providerArgs.parentTypeKey, e), this._buildCSS(), this._usesThemeColors ? this._themeListener = i.onDidColorThemeChange(e => {
                this._theme = i.getColorTheme(), this._removeCSS(), this._buildCSS()
            }) : this._themeListener = null
        }
        dispose() {
            this._hasContent && (this._removeCSS(), this._hasContent = !1), this._themeListener && (this._themeListener.dispose(), this._themeListener = null)
        }
        get hasContent() {
            return this._hasContent
        }
        get hasLetterSpacing() {
            return this._hasLetterSpacing
        }
        get className() {
            return this._className
        }
        _buildCSS() {
            var e = this._providerArgs.options;
            let t, i, n;
            switch (this._ruleType) {
                case 0:
                    t = this.getCSSTextForModelDecorationClassName(e), i = this.getCSSTextForModelDecorationClassName(e.light), n = this.getCSSTextForModelDecorationClassName(e.dark);
                    break;
                case 1:
                    t = this.getCSSTextForModelDecorationInlineClassName(e), i = this.getCSSTextForModelDecorationInlineClassName(e.light), n = this.getCSSTextForModelDecorationInlineClassName(e.dark);
                    break;
                case 2:
                    t = this.getCSSTextForModelDecorationGlyphMarginClassName(e), i = this.getCSSTextForModelDecorationGlyphMarginClassName(e.light), n = this.getCSSTextForModelDecorationGlyphMarginClassName(e.dark);
                    break;
                case 3:
                    t = this.getCSSTextForModelDecorationContentClassName(e.before), i = this.getCSSTextForModelDecorationContentClassName(e.light && e.light.before), n = this.getCSSTextForModelDecorationContentClassName(e.dark && e.dark.before);
                    break;
                case 4:
                    t = this.getCSSTextForModelDecorationContentClassName(e.after), i = this.getCSSTextForModelDecorationContentClassName(e.light && e.light.after), n = this.getCSSTextForModelDecorationContentClassName(e.dark && e.dark.after);
                    break;
                case 5:
                    t = this.getCSSTextForModelDecorationContentClassName(e.beforeInjectedText), i = this.getCSSTextForModelDecorationContentClassName(e.light && e.light.beforeInjectedText), n = this.getCSSTextForModelDecorationContentClassName(e.dark && e.dark.beforeInjectedText);
                    break;
                case 6:
                    t = this.getCSSTextForModelDecorationContentClassName(e.afterInjectedText), i = this.getCSSTextForModelDecorationContentClassName(e.light && e.light.afterInjectedText), n = this.getCSSTextForModelDecorationContentClassName(e.dark && e.dark.afterInjectedText);
                    break;
                default:
                    throw new Error("Unknown rule type: " + this._ruleType)
            }
            const r = this._providerArgs.styleSheet;
            let o = !1;
            0 < t.length && (r.insertRule(`${this._unThemedSelector} {${t}}`, 0), o = !0), 0 < i.length && (r.insertRule(`.vs${this._unThemedSelector} {${i}}`, 0), o = !0), 0 < n.length && (r.insertRule(`.vs-dark${this._unThemedSelector}, .hc-black${this._unThemedSelector} {${n}}`, 0), o = !0), this._hasContent = o
        }
        _removeCSS() {
            this._providerArgs.styleSheet.removeRulesContainingSelector(this._unThemedSelector)
        }
        getCSSTextForModelDecorationClassName(e) {
            if (!e) return "";
            const t = [];
            return this.collectCSSText(e, ["backgroundColor"], t), this.collectCSSText(e, ["outline", "outlineColor", "outlineStyle", "outlineWidth"], t), this.collectBorderSettingsCSSText(e, t), t.join("")
        }
        getCSSTextForModelDecorationInlineClassName(e) {
            if (!e) return "";
            const t = [];
            return this.collectCSSText(e, ["fontStyle", "fontWeight", "textDecoration", "cursor", "color", "opacity", "letterSpacing"], t), e.letterSpacing && (this._hasLetterSpacing = !0), t.join("")
        }
        getCSSTextForModelDecorationContentClassName(e) {
            if (!e) return "";
            const t = [];
            if (void 0 !== e) {
                if (this.collectBorderSettingsCSSText(e, t), void 0 !== e.contentIconPath && t.push(b.v(pl.contentIconPath, s.p(h.a.revive(e.contentIconPath)))), "string" == typeof e.contentText) {
                    var i = e.contentText.match(/^.*$/m)[0].replace(/['\\]/g, "\\$&");
                    t.push(b.v(pl.contentText, i))
                }
                this.collectCSSText(e, ["verticalAlign", "fontStyle", "fontWeight", "fontSize", "fontFamily", "textDecoration", "color", "opacity", "backgroundColor", "margin", "padding"], t), this.collectCSSText(e, ["width", "height"], t) && t.push("display:inline-block;")
            }
            return t.join("")
        }
        getCSSTextForModelDecorationGlyphMarginClassName(e) {
            if (!e) return "";
            const t = [];
            return void 0 !== e.gutterIconPath && (t.push(b.v(pl.gutterIconPath, s.p(h.a.revive(e.gutterIconPath)))), void 0 !== e.gutterIconSize && t.push(b.v(pl.gutterIconSize, e.gutterIconSize))), t.join("")
        }
        collectBorderSettingsCSSText(e, t) {
            return !!this.collectCSSText(e, ["border", "borderColor", "borderRadius", "borderSpacing", "borderStyle", "borderWidth"], t) && (t.push(b.v("box-sizing: border-box;")), !0)
        }
        collectCSSText(e, t, i) {
            var n, r = i.length;
            for (n of t) {
                var o = this.resolveValue(e[n]);
                "string" == typeof o && i.push(b.v(pl[n], o))
            }
            return i.length !== r
        }
        resolveValue(e) {
            if ((t = e) && "string" == typeof t.id) {
                this._usesThemeColors = !0;
                const t = this._theme.getColor(e.id);
                return t ? t.toString() : "transparent"
            }
            var t;
            return e
        }
    }
    class fl {
        static getClassName(e, t) {
            return "ced-" + e + "-" + t
        }
        static getSelector(e, t, i) {
            let n = ".monaco-editor ." + this.getClassName(e, i);
            return t && (n = n + "." + this.getClassName(t, i)), 3 === i ? n += "::before" : 4 === i && (n += "::after"), n
        }
    }
    x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let ml = class extends S {
        constructor(e, t, i) {
            super(e, i), this.onCodeEditorAdd(() => this._checkContextKey()), this.onCodeEditorRemove(() => this._checkContextKey()), this._editorIsOpen = t.createKey("editorIsOpen", !1), this._activeCodeEditor = null
        }
        _checkContextKey() {
            let e = !1;
            for (const t of this.listCodeEditors())
                if (!t.isSimpleWidget) {
                    e = !0;
                    break
                } this._editorIsOpen.set(e)
        }
        setActiveCodeEditor(e) {
            this._activeCodeEditor = e
        }
        getActiveCodeEditor() {
            return this._activeCodeEditor
        }
        openCodeEditor(e, t, i) {
            return t ? Promise.resolve(this.doOpenEditor(t, e)) : Promise.resolve(null)
        }
        doOpenEditor(e, t) {
            if (!this.findModel(e, t.resource)) {
                if (t.resource) {
                    var i = t.resource.scheme;
                    if (i === g.c.http || i === g.c.https) return Object(s.U)(t.resource.toString()), e
                }
                return null
            }
            return (t = t.options ? t.options.selection : null) && ("number" == typeof t.endLineNumber && "number" == typeof t.endColumn ? (e.setSelection(t), e.revealRangeInCenter(t, 1)) : (t = {
                lineNumber: t.startLineNumber,
                column: t.startColumn
            }, e.setPosition(t), e.revealPositionInCenter(t, 1))), e
        }
        findModel(e, t) {
            const i = e.getModel();
            return i && i.uri.toString() !== t.toString() ? null : i
        }
    };
    ml = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }([x(1, Yt.b), x(2, ir.b)], ml), t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let vl = 0,
        bl = !1,
        _l = class extends aa {
            constructor(e, t, i, n, r, o, s, a, l, d) {
                const c = Object.assign({}, t);
                c.ariaLabel = c.ariaLabel || di.editorViewAccessibleLabel, c.ariaLabel = c.ariaLabel + ";" + di.accessibilityHelpMessage, super(e, c, {}, i, n, r, o, a, l, d), this._standaloneKeybindingService = s instanceof Ci ? s : null,
                    function(e) {
                        if (!e) {
                            if (bl) return;
                            bl = !0
                        }
                        Mi.b(e || document.body)
                    }(c.ariaContainerElement)
            }
            addCommand(e, t, i) {
                if (!this._standaloneKeybindingService) return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"), null;
                var n = "DYNAMIC_" + ++vl;
                i = Yt.a.deserialize(i);
                return this._standaloneKeybindingService.addDynamicKeybinding(n, e, t, i), n
            }
            createContextKey(e, t) {
                return this._contextKeyService.createKey(e, t)
            }
            addAction(e) {
                if ("string" != typeof e.id || "string" != typeof e.label || "function" != typeof e.run) throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");
                if (!this._standaloneKeybindingService) return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"), v.a.None;
                const t = e.id;
                var i = e.label,
                    n = Yt.a.and(Yt.a.equals("editorId", this.getId()), Yt.a.deserialize(e.precondition)),
                    r = e.keybindings,
                    o = Yt.a.and(n, Yt.a.deserialize(e.keybindingContext)),
                    s = e.contextMenuGroupId || null,
                    a = e.contextMenuOrder || 0,
                    l = (t, ...i) => Promise.resolve(e.run(this, ...i));
                const d = new v.b;
                var c = this.getId() + ":" + t;
                if (d.add(m.a.registerCommand(c, l)), s && d.add(sl.d.appendMenuItem(sl.b.EditorContext, {
                        command: {
                            id: c,
                            title: i
                        },
                        when: n,
                        group: s,
                        order: a
                    })), Array.isArray(r))
                    for (const e of r) d.add(this._standaloneKeybindingService.addDynamicKeybinding(c, e, l, o));
                return n = new ms(c, i, i, n, l, this._contextKeyService), this._actions[t] = n, d.add(Object(v.i)(() => {
                    delete this._actions[t]
                })), d
            }
            _triggerCommand(e, t) {
                if (this._codeEditorService instanceof ml) try {
                    this._codeEditorService.setActiveCodeEditor(this), super._triggerCommand(e, t)
                } finally {
                    this._codeEditorService.setActiveCodeEditor(null)
                } else super._triggerCommand(e, t)
            }
        };
    _l = t([ae(2, _.a), ae(3, o.a), ae(4, m.b), ae(5, Yt.b), ae(6, al.a), ae(7, ir.b), ae(8, hi.a), ae(9, Ks)], _l);
    let wl = class extends _l {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h, u, p, g) {
            const f = Object.assign({}, t);
            Ni(h, f, !1);
            var m = d.registerEditorContainer(e);
            let v;
            "string" == typeof f.theme && d.setTheme(f.theme), void 0 !== f.autoDetectHighContrast && d.setAutoDetectHighContrast(Boolean(f.autoDetectHighContrast)), t = f.model, delete f.model, super(e, f, n, r, o, s, a, d, c, u), this._contextViewService = l, this._configurationService = h, this._standaloneThemeService = d, this._register(i), this._register(m), void 0 === t ? (v = Cl(p, g, f.value || "", f.language || Hn.a.text, void 0), this._ownsModel = !0) : (v = t, this._ownsModel = !1), this._attachModel(v), v && (t = {
                oldModelUrl: null,
                newModelUrl: v.uri
            }, this._onDidChangeModel.fire(t))
        }
        dispose() {
            super.dispose()
        }
        updateOptions(e) {
            Ni(this._configurationService, e, !1), "string" == typeof e.theme && this._standaloneThemeService.setTheme(e.theme), void 0 !== e.autoDetectHighContrast && this._standaloneThemeService.setAutoDetectHighContrast(Boolean(e.autoDetectHighContrast)), super.updateOptions(e)
        }
        _attachModel(e) {
            super._attachModel(e), this._modelData && this._contextViewService.setContainer(this._modelData.view.domNode.domNode)
        }
        _postDetachModelCleanup(e) {
            super._postDetachModelCleanup(e), e && this._ownsModel && (e.dispose(), this._ownsModel = !1)
        }
    };
    wl = t([ae(3, _.a), ae(4, o.a), ae(5, m.b), ae(6, Yt.b), ae(7, al.a), ae(8, Aa.b), ae(9, ol), ae(10, hi.a), ae(11, Wt.a), ae(12, Ks), ae(13, ee.a), ae(14, K.a)], wl);
    let yl = class extends Ua {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h, u, p, g) {
            var f = Object.assign({}, t);
            Ni(h, f, !0), t = d.registerEditorContainer(e), "string" == typeof f.theme && d.setTheme(f.theme), void 0 !== f.autoDetectHighContrast && d.setAutoDetectHighContrast(Boolean(f.autoDetectHighContrast)), super(e, f, {}, g, a, r, n, l, d, c, u, p), this._contextViewService = s, this._configurationService = h, this._standaloneThemeService = d, this._register(i), this._register(t), this._contextViewService.setContainer(this._containerDomElement)
        }
        dispose() {
            super.dispose()
        }
        updateOptions(e) {
            Ni(this._configurationService, e, !0), "string" == typeof e.theme && this._standaloneThemeService.setTheme(e.theme), void 0 !== e.autoDetectHighContrast && this._standaloneThemeService.setAutoDetectHighContrast(Boolean(e.autoDetectHighContrast)), super.updateOptions(e)
        }
        _createInnerEditor(e, t, i) {
            return e.createInstance(_l, t, i)
        }
        getOriginalEditor() {
            return super.getOriginalEditor()
        }
        getModifiedEditor() {
            return super.getModifiedEditor()
        }
        addCommand(e, t, i) {
            return this.getModifiedEditor().addCommand(e, t, i)
        }
        createContextKey(e, t) {
            return this.getModifiedEditor().createContextKey(e, t)
        }
        addAction(e) {
            return this.getModifiedEditor().addAction(e)
        }
    };

    function Cl(e, t, i, n, r) {
        if (i = i || "", n) return xl(e, i, t.create(n), r); {
            n = i.indexOf("\n");
            let o = i;
            return -1 !== n && (o = i.substring(0, n)), xl(e, i, t.createByFilepathOrFirstLine(r || null, o), r)
        }
    }

    function xl(e, t, i, n) {
        return e.createModel(t, i, n)
    }
    yl = t([ae(3, _.a), ae(4, Yt.b), ae(5, al.a), ae(6, Aa.b), ae(7, U), ae(8, o.a), ae(9, ol), ae(10, hi.a), ae(11, Wt.a), ae(12, Aa.a), ae(13, Ba), ae(14, ja.a)], yl);
    const Sl = Object.prototype.hasOwnProperty;
    class kl {
        constructor() {
            this._languageIdToLanguage = [], this._languageToLanguageId = new Map, this._register(H.a, 0), this._register(Ws, 1), this._nextLanguageId = 2
        }
        _register(e, t) {
            this._languageIdToLanguage[t] = e, this._languageToLanguageId.set(e, t)
        }
        register(e) {
            var t;
            this._languageToLanguageId.has(e) || (t = this._nextLanguageId++, this._register(e, t))
        }
        encodeLanguageId(e) {
            return this._languageToLanguageId.get(e) || 0
        }
        decodeLanguageId(e) {
            return this._languageIdToLanguage[e] || H.a
        }
    }
    class Ll extends v.a {
        constructor(e = !0, t = !1) {
            super(), this._onDidChange = this._register(new D.b), this.onDidChange = this._onDidChange.event, Ll.instanceCount++, this._warnOnOverwrite = t, this.languageIdCodec = new kl, this._languages = {}, this._mimeTypesMap = {}, this._nameMap = {}, this._lowercaseNameMap = {}, e && (this._initializeFromRegistry(), this._register(Vs.onDidChangeLanguages(e => {
                this._initializeFromRegistry()
            })))
        }
        dispose() {
            Ll.instanceCount--, super.dispose()
        }
        _initializeFromRegistry() {
            this._languages = {}, this._mimeTypesMap = {}, this._nameMap = {}, this._lowercaseNameMap = {}, Hn.b();
            var e = Vs.getLanguages();
            this._registerLanguages(e)
        }
        _registerLanguages(e) {
            for (const t of e) this._registerLanguage(t);
            this._mimeTypesMap = {}, this._nameMap = {}, this._lowercaseNameMap = {}, Object.keys(this._languages).forEach(e => {
                let t = this._languages[e];
                t.name && (this._nameMap[t.name] = t.identifier), t.aliases.forEach(e => {
                    this._lowercaseNameMap[e.toLowerCase()] = t.identifier
                }), t.mimetypes.forEach(e => {
                    this._mimeTypesMap[e] = t.identifier
                })
            }), xt.a.as(Ct.a.配置).registerOverrideIdentifiers(Vs.getLanguages().map(e => e.id)), this._onDidChange.fire()
        }
        _registerLanguage(e) {
            var t = e.id;
            let i;
            Sl.call(this._languages, t) ? i = this._languages[t] : (this.languageIdCodec.register(t), i = {
                identifier: t,
                name: null,
                mimetypes: [],
                aliases: [],
                extensions: [],
                filenames: [],
                configurationFiles: []
            }, this._languages[t] = i), this._mergeLanguage(i, e)
        }
        _mergeLanguage(e, t) {
            var i = t.id;
            let n = null;
            if (Array.isArray(t.mimetypes) && 0 < t.mimetypes.length && (e.mimetypes.push(...t.mimetypes), n = t.mimetypes[0]), n || (n = "text/x-" + i, e.mimetypes.push(n)), Array.isArray(t.extensions))
                for (var r of (t.configuration ? e.extensions = t.extensions.concat(e.extensions) : e.extensions = e.extensions.concat(t.extensions), t.extensions)) Hn.d({
                    id: i,
                    mime: n,
                    extension: r
                }, this._warnOnOverwrite);
            if (Array.isArray(t.filenames))
                for (var o of t.filenames) Hn.d({
                    id: i,
                    mime: n,
                    filename: o
                }, this._warnOnOverwrite), e.filenames.push(o);
            if (Array.isArray(t.filenamePatterns))
                for (var s of t.filenamePatterns) Hn.d({
                    id: i,
                    mime: n,
                    filepattern: s
                }, this._warnOnOverwrite);
            if ("string" == typeof t.firstLine && 0 < t.firstLine.length) {
                let r = t.firstLine;
                "^" !== r.charAt(0) && (r = "^" + r);
                try {
                    var a = new RegExp(r);
                    b.N(a) || Hn.d({
                        id: i,
                        mime: n,
                        firstline: a
                    }, this._warnOnOverwrite)
                } catch (e) {
                    Object(se.f)(e)
                }
            }
            e.aliases.push(i);
            let l = null;
            if (void 0 !== t.aliases && Array.isArray(t.aliases) && (l = 0 === t.aliases.length ? [null] : t.aliases), null !== l)
                for (const t of l) t && 0 !== t.length && e.aliases.push(t);
            var d = null !== l && 0 < l.length;
            d && null === l[0] || (a = (d ? l[0] : null) || i, !d && e.name || (e.name = a)), t.configuration && e.configurationFiles.push(t.configuration)
        }
        isRegisteredMode(e) {
            return !!Sl.call(this._mimeTypesMap, e) || Sl.call(this._languages, e)
        }
        getModeIdForLanguageNameLowercase(e) {
            return Sl.call(this._lowercaseNameMap, e) ? this._lowercaseNameMap[e] : null
        }
        extractModeIds(e) {
            return e ? e.split(",").map(e => e.trim()).map(e => Sl.call(this._mimeTypesMap, e) ? this._mimeTypesMap[e] : e).filter(e => Sl.call(this._languages, e)) : []
        }
        validateLanguageId(e) {
            return e && e !== H.a ? Sl.call(this._languages, e) ? e : null : H.a
        }
        getModeIdsFromFilepathOrFirstLine(e, t) {
            if (!e && !t) return [];
            let i = Hn.c(e, t);
            return this.extractModeIds(i.join(","))
        }
    }
    Ll.instanceCount = 0;
    class Ol {
        constructor(e, t) {
            let i;
            this._selector = t, this.languageId = this._selector(), this._onDidChange = new D.b({
                onFirstListenerAdd: () => {
                    i = e(() => this._evaluate())
                },
                onLastListenerRemove: () => {
                    i.dispose()
                }
            }), this.onDidChange = this._onDidChange.event
        }
        _evaluate() {
            var e = this._selector();
            e !== this.languageId && (this.languageId = e, this._onDidChange.fire(this.languageId))
        }
    }
    class El extends v.a {
        constructor(e = !1) {
            super(), this._onDidEncounterLanguage = this._register(new D.b), this.onDidEncounterLanguage = this._onDidEncounterLanguage.event, this._onLanguagesMaybeChanged = this._register(new D.b({
                leakWarningThreshold: 200
            })), this.onLanguagesMaybeChanged = this._onLanguagesMaybeChanged.event, El.instanceCount++, this._encounteredLanguages = new Set, this._registry = this._register(new Ll(!0, e)), this.languageIdCodec = this._registry.languageIdCodec, this._register(this._registry.onDidChange(() => this._onLanguagesMaybeChanged.fire()))
        }
        dispose() {
            El.instanceCount--, super.dispose()
        }
        isRegisteredMode(e) {
            return this._registry.isRegisteredMode(e)
        }
        getModeIdForLanguageName(e) {
            return this._registry.getModeIdForLanguageNameLowercase(e)
        }
        getModeIdByFilepathOrFirstLine(e, t) {
            return t = this._registry.getModeIdsFromFilepathOrFirstLine(e, t), Object(ne.j)(t, null)
        }
        getModeId(e) {
            return e = this._registry.extractModeIds(e), Object(ne.j)(e, null)
        }
        validateLanguageId(e) {
            return this._registry.validateLanguageId(e)
        }
        create(e) {
            return new Ol(this.onLanguagesMaybeChanged, () => {
                var t = this.getModeId(e);
                return this._createModeAndGetLanguageIdentifier(t)
            })
        }
        createByFilepathOrFirstLine(e, t) {
            return new Ol(this.onLanguagesMaybeChanged, () => {
                var i = this.getModeIdByFilepathOrFirstLine(e, t);
                return this._createModeAndGetLanguageIdentifier(i)
            })
        }
        _createModeAndGetLanguageIdentifier(e) {
            return e = this.validateLanguageId(e || "plaintext") || H.a, this._getOrCreateMode(e), e
        }
        triggerMode(e) {
            e = this.getModeId(e), this._getOrCreateMode(e || "plaintext")
        }
        _getOrCreateMode(e) {
            this._encounteredLanguages.has(e) || (this._encounteredLanguages.add(e), e = this.validateLanguageId(e) || H.a, this._onDidEncounterLanguage.fire(e))
        }
    }
    El.instanceCount = 0;
    var Nl = i(101),
        Dl = i(126),
        Il = i(130),
        Tl = i(99);
    gi = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let Ml = class {
        constructor(e, t, i, n) {
            this._legend = e, this._themeService = t, this._modeService = i, this._logService = n, this._hashTable = new Al, this._hasWarnedOverlappingTokens = !1
        }
        getMetadata(e, t, i) {
            var n = this._modeService.languageIdCodec.encodeLanguageId(i);
            let r;
            if (o = this._hashTable.get(e, t, n)) r = o.metadata, this._logService.getLevel() === re.c.Trace && this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${e} / ${t}: foreground ${z.z.getForeground(r)}, fontStyle ${z.z.getFontStyle(r).toString(2)}`);
            else {
                let s = this._legend.tokenTypes[e];
                const a = [];
                if (s) {
                    let e = t;
                    for (let t = 0; 0 < e && t < this._legend.tokenModifiers.length; t++) 1 & e && a.push(this._legend.tokenModifiers[t]), e >>= 1;
                    var o;
                    0 < e && this._logService.getLevel() === re.c.Trace && (this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${t.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`), a.push("not-in-legend")), void 0 === (o = this._themeService.getColorTheme().getTokenStyleMetadata(s, a, i)) ? r = 2147483647 : (void(r = 0) !== o.italic && (r |= 1 | (i = (o.italic ? 1 : 0) << 11)), void 0 !== o.bold && (r |= 2 | (o.bold ? 2 : 0) << 11), void 0 !== o.underline && (r |= 4 | (o.underline ? 4 : 0) << 11), o.foreground && (r |= 8 | (o = o.foreground << 14)), 0 === r && (r = 2147483647))
                } else this._logService.getLevel() === re.c.Trace && this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${e} for legend: ${JSON.stringify(this._legend.tokenTypes)}`), r = 2147483647, s = "not-in-legend";
                this._hashTable.add(e, t, n, r), this._logService.getLevel() === re.c.Trace && this._logService.trace(`SemanticTokensProviderStyling ${e} (${s}) / ${t} (${a.join(" ")}): foreground ${z.z.getForeground(r)}, fontStyle ${z.z.getFontStyle(r).toString(2)}`)
            }
            return r
        }
        warnOverlappingSemanticTokens(e, t) {
            this._hasWarnedOverlappingTokens || (this._hasWarnedOverlappingTokens = !0, console.warn(`Overlapping semantic tokens detected at lineNumber ${e}, column ${t}`))
        }
    };
    Ml = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }([gi(1, ir.b), gi(2, K.a), gi(3, re.b)], Ml);
    class Pl {
        constructor(e, t, i, n) {
            this.tokenTypeIndex = e, this.tokenModifierSet = t, this.languageId = i, this.metadata = n, this.next = null
        }
    }
    class Al {
        constructor() {
            this._elementsCount = 0, this._currentLengthIndex = 0, this._currentLength = Al._SIZES[this._currentLengthIndex], this._growCount = Math.round(this._currentLengthIndex + 1 < Al._SIZES.length ? 2 / 3 * this._currentLength : 0), this._elements = [], Al._nullOutEntries(this._elements, this._currentLength)
        }
        static _nullOutEntries(e, t) {
            for (let i = 0; i < t; i++) e[i] = null
        }
        _hash2(e, t) {
            return (e << 5) - e + t | 0
        }
        _hashFunc(e, t, i) {
            return this._hash2(this._hash2(e, t), i) % this._currentLength
        }
        get(e, t, i) {
            var n = this._hashFunc(e, t, i);
            let r = this._elements[n];
            for (; r;) {
                if (r.tokenTypeIndex === e && r.tokenModifierSet === t && r.languageId === i) return r;
                r = r.next
            }
            return null
        }
        add(e, t, i, n) {
            if (this._elementsCount++, 0 !== this._growCount && this._elementsCount >= this._growCount) {
                var r = this._elements;
                this._currentLengthIndex++, this._currentLength = Al._SIZES[this._currentLengthIndex], this._growCount = Math.round(this._currentLengthIndex + 1 < Al._SIZES.length ? 2 / 3 * this._currentLength : 0), this._elements = [], Al._nullOutEntries(this._elements, this._currentLength);
                for (const e of r) {
                    let t = e;
                    for (; t;) {
                        var o = t.next;
                        t.next = null, this._add(t), t = o
                    }
                }
            }
            this._add(new Pl(e, t, i, n))
        }
        _add(e) {
            var t = this._hashFunc(e.tokenTypeIndex, e.tokenModifierSet, e.languageId);
            e.next = this._elements[t], this._elements[t] = e
        }
    }

    function Rl(e) {
        const t = new Uint32Array(function(e) {
            let t = 0;
            if (t += 2, "full" === e.type) t += 1 + e.data.length;
            else {
                t += 1, t += 3 * e.deltas.length;
                for (const i of e.deltas) i.data && (t += i.data.length)
            }
            return t
        }(e));
        let i = 0;
        if (t[i++] = e.id, "full" === e.type) t[i++] = 1, t[i++] = e.data.length, t.set(e.data, i), i += e.data.length;
        else {
            t[i++] = 2, t[i++] = e.deltas.length;
            for (const n of e.deltas) t[i++] = n.start, t[i++] = n.deleteCount, n.data ? (t[i++] = n.data.length, t.set(n.data, i), i += n.data.length) : t[i++] = 0
        }
        return function(e) {
            return e = new Uint8Array(e.buffer, e.byteOffset, 4 * e.length), A.e() || function(e) {
                for (let o = 0, s = e.length; o < s; o += 4) {
                    var t = e[o + 0],
                        i = e[o + 1],
                        n = e[o + 2],
                        r = e[o + 3];
                    e[o + 0] = r, e[o + 1] = n, e[o + 2] = i, e[o + 3] = t
                }
            }(e), c.a.wrap(e)
        }(t)
    }
    Al._SIZES = [3, 7, 13, 31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521, 131071, 262139, 524287, 1048573, 2097143];
    var Fl = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };

    function jl(e) {
        return e && e.data
    }

    function Bl(e) {
        return e && Array.isArray(e.edits)
    }
    class Vl {
        constructor(e, t) {
            this.provider = e, this.tokens = t
        }
    }

    function Wl(e) {
        return z.k.has(e)
    }

    function zl(e, t, i, n) {
        return Fl(this, void 0, void 0, (function*() {
            const r = (o = e, 0 < (o = z.k.orderedGroups(o)).length ? o[0] : []);
            var o = yield Promise.all(r.map(r => Fl(this, void 0, void 0, (function*() {
                let o;
                try {
                    o = yield r.provideDocumentSemanticTokens(e, r === t ? i : null, n)
                } catch (e) {
                    Object(se.g)(e), o = null
                }
                return o && (jl(o) || Bl(o)) || (o = null), new Vl(r, o)
            }))));
            for (const e of o)
                if (e.tokens) return e;
            return 0 < o.length ? o[0] : null
        }))
    }
    class Hl {
        constructor(e, t) {
            this.provider = e, this.tokens = t
        }
    }

    function Ul(e) {
        return 0 < (e = z.j.orderedGroups(e)).length ? e[0] : []
    }

    function Kl(e, t, i) {
        return Fl(this, void 0, void 0, (function*() {
            const n = Ul(e);
            var r = yield Promise.all(n.map(n => Fl(this, void 0, void 0, (function*() {
                let r;
                try {
                    r = yield n.provideDocumentRangeSemanticTokens(e, t, i)
                } catch (e) {
                    Object(se.g)(e), r = null
                }
                return r && jl(r) || (r = null), new Hl(n, r)
            }))));
            for (const e of r)
                if (e.tokens) return e;
            return 0 < r.length ? r[0] : null
        }))
    }

    function $l(e) {
        return e.toString()
    }

    function ql(e) {
        const t = new Dl.a,
            i = e.createSnapshot();
        for (var n; n = i.read();) t.update(n);
        return t.digest()
    }
    m.a.registerCommand("_provideDocumentSemanticTokensLegend", (e, ...t) => Fl(void 0, void 0, void 0, (function*() {
        var [i] = t;
        Object(ve.b)(i instanceof h.a);
        var n = e.get(ee.a).getModel(i);
        if (n) {
            const t = (n = n, 0 < (n = z.k.orderedGroups(n)).length ? n[0] : null);
            return t ? t[0].getLegend() : e.get(m.b).executeCommand("_provideDocumentRangeSemanticTokensLegend", i)
        }
    }))), m.a.registerCommand("_provideDocumentSemanticTokens", (e, ...t) => Fl(void 0, void 0, void 0, (function*() {
        var [i] = t;
        Object(ve.b)(i instanceof h.a);
        const n = e.get(ee.a).getModel(i);
        if (n) {
            if (!Wl(n)) return e.get(m.b).executeCommand("_provideDocumentRangeSemanticTokens", i, n.getFullModelRange());
            if (i = yield zl(n, null, null, a.a.None)) {
                const {
                    provider: e,
                    tokens: t
                } = i;
                if (t && jl(t)) return i = Rl({
                    id: 0,
                    type: "full",
                    data: t.data
                }), t.resultId && e.releaseDocumentSemanticTokens(t.resultId), i
            }
        }
    }))), m.a.registerCommand("_provideDocumentRangeSemanticTokensLegend", (e, ...t) => Fl(void 0, void 0, void 0, (function*() {
        var [i, n] = t;
        if (Object(ve.b)(i instanceof h.a), i = e.get(ee.a).getModel(i)) {
            const e = Ul(i);
            if (0 !== e.length) {
                if (1 === e.length) return e[0].getLegend();
                if (!n || !T.a.isIRange(n)) return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"), e[0].getLegend();
                const t = yield Kl(i, T.a.lift(n), a.a.None);
                return t ? t.provider.getLegend() : void 0
            }
        }
    }))), m.a.registerCommand("_provideDocumentRangeSemanticTokens", (e, ...t) => Fl(void 0, void 0, void 0, (function*() {
        var [i, n] = t;
        if (Object(ve.b)(i instanceof h.a), Object(ve.b)(T.a.isIRange(n)), (i = e.get(ee.a).getModel(i)) && (n = yield Kl(i, T.a.lift(n), a.a.None)) && n.tokens) return Rl({
            id: 0,
            type: "full",
            data: n.tokens.data
        })
    }))), S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    class Gl {
        constructor(e, t, i) {
            this._modelEventListeners = new v.b, this.model = e, this._languageSelection = null, this._languageSelectionListener = null, this._modelEventListeners.add(e.onWillDispose(() => t(e))), this._modelEventListeners.add(e.onDidChangeLanguage(t => i(e, t)))
        }
        _disposeLanguageSelection() {
            this._languageSelectionListener && (this._languageSelectionListener.dispose(), this._languageSelectionListener = null)
        }
        dispose() {
            this._modelEventListeners.dispose(), this._disposeLanguageSelection()
        }
        setLanguage(e) {
            this._disposeLanguageSelection(), this._languageSelection = e, this._languageSelectionListener = this._languageSelection.onDidChange(() => this.model.setMode(e.languageId)), this.model.setMode(e.languageId)
        }
    }
    const Yl = A.d || A.f ? 1 : 2;
    class Zl {
        constructor(e, t, i, n, r, o, s, a) {
            this.uri = e, this.initialUndoRedoSnapshot = t, this.time = i, this.sharesUndoRedoStack = n, this.heapSize = r, this.sha1 = o, this.versionId = s, this.alternativeVersionId = a
        }
    }
    let Xl = class e extends v.a {
        constructor(e, t, i, n, r, o, s) {
            super(), this._configurationService = e, this._resourcePropertiesService = t, this._themeService = i, this._logService = n, this._undoRedoService = r, this._modeService = o, this._language配置Service = s, this._onModelAdded = this._register(new D.b), this.onModelAdded = this._onModelAdded.event, this._onModelRemoved = this._register(new D.b), this.onModelRemoved = this._onModelRemoved.event, this._onModelModeChanged = this._register(new D.b), this.onModelModeChanged = this._onModelModeChanged.event, this._modelCreationOptionsByLanguageAndResource = Object.create(null), this._models = {}, this._disposedModels = new Map, this._disposedModelsHeapSize = 0, this._semanticStyling = this._register(new td(this._themeService, this._modeService, this._logService)), this._register(this._configurationService.onDidChange配置(() => this._updateModelOptions())), this._updateModelOptions(), this._register(new ed(this, this._themeService, this._configurationService, this._semanticStyling))
        }
        static _readModelOptions(e, t) {
            var i;
            let r = n.d.tabSize;
            e.editor && void 0 !== e.editor.tabSize && (i = parseInt(e.editor.tabSize, 10), isNaN(i) || (r = i), r < 1 && (r = 1));
            let o = r;
            e.editor && void 0 !== e.editor.indentSize && "tabSize" !== e.editor.indentSize && (l = parseInt(e.editor.indentSize, 10), isNaN(l) || (o = l), o < 1 && (o = 1));
            let s = n.d.insertSpaces;
            e.editor && void 0 !== e.editor.insertSpaces && (s = "false" !== e.editor.insertSpaces && Boolean(e.editor.insertSpaces));
            let a = Yl;
            var l = e.eol;
            "\r\n" === l ? a = 2 : "\n" === l && (a = 1);
            let d = n.d.trimAutoWhitespace;
            e.editor && void 0 !== e.editor.trimAutoWhitespace && (d = "false" !== e.editor.trimAutoWhitespace && Boolean(e.editor.trimAutoWhitespace));
            let c = n.d.detectIndentation;
            e.editor && void 0 !== e.editor.detectIndentation && (c = "false" !== e.editor.detectIndentation && Boolean(e.editor.detectIndentation));
            let h = n.d.largeFileOptimizations;
            e.editor && void 0 !== e.editor.largeFileOptimizations && (h = "false" !== e.editor.largeFileOptimizations && Boolean(e.editor.largeFileOptimizations));
            let u = n.d.bracketPairColorizationOptions;
            return null !== (l = e.editor) && void 0 !== l && l.bracketPairColorization && "object" == typeof e.editor.bracketPairColorization && (u = {
                enabled: !!e.editor.bracketPairColorization.enabled
            }), {
                isForSimpleWidget: t,
                tabSize: r,
                indentSize: o,
                insertSpaces: s,
                detectIndentation: c,
                defaultEOL: a,
                trimAutoWhitespace: d,
                largeFileOptimizations: h,
                bracketPairColorizationOptions: u
            }
        }
        _getEOL(e, t) {
            return e ? this._resourcePropertiesService.getEOL(e, t) : (t = this._configurationService.getValue("files.eol", {
                overrideIdentifier: t
            })) && "string" == typeof t && "auto" !== t ? t : 3 === A.a || 2 === A.a ? "\n" : "\r\n"
        }
        _shouldRestoreUndoStack() {
            var e = this._configurationService.getValue("files.restoreUndoStack");
            return "boolean" != typeof e || e
        }
        getCreationOptions(t, i, n) {
            let r = this._modelCreationOptionsByLanguageAndResource[t + i];
            var o, s;
            return r || (o = this._configurationService.getValue("editor", {
                overrideIdentifier: t,
                resource: i
            }), s = this._getEOL(i, t), r = e._readModelOptions({
                editor: o,
                eol: s
            }, n), this._modelCreationOptionsByLanguageAndResource[t + i] = r), r
        }
        _updateModelOptions() {
            var t = this._modelCreationOptionsByLanguageAndResource;
            this._modelCreationOptionsByLanguageAndResource = Object.create(null);
            var i = Object.keys(this._models);
            for (let s = 0, a = i.length; s < a; s++) {
                var n = i[s];
                const a = this._models[n];
                var r = a.model.getLanguageId(),
                    o = (n = t[r + (o = a.model.uri)], this.getCreationOptions(r, o, a.model.isForSimpleWidget));
                e._setModelOptionsForModel(a.model, o, n)
            }
        }
        static _setModelOptionsForModel(e, t, i) {
            i && i.defaultEOL !== t.defaultEOL && 1 === e.getLineCount() && e.setEOL(1 === t.defaultEOL ? 0 : 1), i && i.detectIndentation === t.detectIndentation && i.insertSpaces === t.insertSpaces && i.tabSize === t.tabSize && i.indentSize === t.indentSize && i.trimAutoWhitespace === t.trimAutoWhitespace && Object(I.c)(i.bracketPairColorizationOptions, t.bracketPairColorizationOptions) || (t.detectIndentation ? (e.detectIndentation(t.insertSpaces, t.tabSize), e.updateOptions({
                trimAutoWhitespace: t.trimAutoWhitespace,
                bracketColorizationOptions: t.bracketPairColorizationOptions
            })) : e.updateOptions({
                insertSpaces: t.insertSpaces,
                tabSize: t.tabSize,
                indentSize: t.indentSize,
                trimAutoWhitespace: t.trimAutoWhitespace,
                bracketColorizationOptions: t.bracketPairColorizationOptions
            }))
        }
        _insertDisposedModel(e) {
            this._disposedModels.set($l(e.uri), e), this._disposedModelsHeapSize += e.heapSize
        }
        _removeDisposedModel(e) {
            var t = this._disposedModels.get($l(e));
            return t && (this._disposedModelsHeapSize -= t.heapSize), this._disposedModels.delete($l(e)), t
        }
        _ensureDisposedModelsHeapSize(e) {
            if (this._disposedModelsHeapSize > e) {
                const i = [];
                for (this._disposedModels.forEach(e => {
                        e.sharesUndoRedoStack || i.push(e)
                    }), i.sort((e, t) => e.time - t.time); 0 < i.length && this._disposedModelsHeapSize > e;) {
                    var t = i.shift();
                    this._removeDisposedModel(t.uri), null !== t.initialUndoRedoSnapshot && this._undoRedoService.restoreSnapshot(t.initialUndoRedoSnapshot)
                }
            }
        }
        _createModelData(e, t, i, n) {
            n = this.getCreationOptions(t, i, n);
            const r = new Rr.c(e, n, t, i, this._undoRedoService, this._modeService, this._language配置Service);
            if (i && this._disposedModels.has($l(i))) {
                var o = this._removeDisposedModel(i),
                    s = (t = this._undoRedoService.getElements(i), ql(r) === o.sha1);
                if (s || o.sharesUndoRedoStack) {
                    for (const e of t.past) Object(Il.b)(e) && e.matchesResource(i) && e.setModel(r);
                    for (const e of t.future) Object(Il.b)(e) && e.matchesResource(i) && e.setModel(r);
                    this._undoRedoService.setElementsValidFlag(i, !0, e => Object(Il.b)(e) && e.matchesResource(i)), s && (r._overwriteVersionId(o.versionId), r._overwriteAlternativeVersionId(o.alternativeVersionId), r._overwriteInitialUndoRedoSnapshot(o.initialUndoRedoSnapshot))
                } else null !== o.initialUndoRedoSnapshot && this._undoRedoService.restoreSnapshot(o.initialUndoRedoSnapshot)
            }
            if (s = $l(r.uri), this._models[s]) throw new Error("ModelService: Cannot add model because it already exists!");
            return o = new Gl(r, e => this._onWillDispose(e), (e, t) => this._onDidChangeLanguage(e, t)), this._models[s] = o
        }
        createModel(e, t, i, n = !1) {
            let r;
            return t ? (r = this._createModelData(e, t.languageId, i, n), this.setMode(r.model, t)) : r = this._createModelData(e, Ws, i, n), this._onModelAdded.fire(r.model), r.model
        }
        setMode(e, t) {
            if (t) {
                const i = this._models[$l(e.uri)];
                i && i.setLanguage(t)
            }
        }
        getModels() {
            const e = [];
            var t = Object.keys(this._models);
            for (let n = 0, r = t.length; n < r; n++) {
                var i = t[n];
                e.push(this._models[i].model)
            }
            return e
        }
        getModel(e) {
            return e = $l(e), (e = this._models[e]) ? e.model : null
        }
        getSemanticTokensProviderStyling(e) {
            return this._semanticStyling.get(e)
        }
        _schemaShouldMaintainUndoRedoElements(e) {
            return e.scheme === g.c.file || e.scheme === g.c.vscodeRemote || e.scheme === g.c.userData || e.scheme === g.c.vscodeNotebookCell || "fake-fs" === e.scheme
        }
        _onWillDispose(t) {
            var i = $l(t.uri);
            const n = this._models[i];
            var r = this._undoRedoService.getUriComparisonKey(t.uri) !== t.uri.toString();
            let o = !1,
                s = 0;
            if (r || this._shouldRestoreUndoStack() && this._schemaShouldMaintainUndoRedoElements(t.uri)) {
                var a = this._undoRedoService.getElements(t.uri);
                if (0 < a.past.length || 0 < a.future.length) {
                    for (const e of a.past) Object(Il.b)(e) && e.matchesResource(t.uri) && (o = !0, s += e.heapSize(t.uri), e.setModel(t.uri));
                    for (const e of a.future) Object(Il.b)(e) && e.matchesResource(t.uri) && (o = !0, s += e.heapSize(t.uri), e.setModel(t.uri))
                }
            }
            var l = e.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK;
            o ? !r && s > l ? null !== (a = n.model.getInitialUndoRedoSnapshot()) && this._undoRedoService.restoreSnapshot(a) : (this._ensureDisposedModelsHeapSize(l - s), this._undoRedoService.setElementsValidFlag(t.uri, !1, e => Object(Il.b)(e) && e.matchesResource(t.uri)), this._insertDisposedModel(new Zl(t.uri, n.model.getInitialUndoRedoSnapshot(), Date.now(), r, s, ql(t), t.getVersionId(), t.getAlternativeVersionId()))) : r || null !== (r = n.model.getInitialUndoRedoSnapshot()) && this._undoRedoService.restoreSnapshot(r), delete this._models[i], n.dispose(), delete this._modelCreationOptionsByLanguageAndResource[t.getLanguageId() + t.uri], this._onModelRemoved.fire(t)
        }
        _onDidChangeLanguage(t, i) {
            var n = i.oldLanguage,
                r = t.getLanguageId();
            i = this.getCreationOptions(n, t.uri, t.isForSimpleWidget), r = this.getCreationOptions(r, t.uri, t.isForSimpleWidget);
            e._setModelOptionsForModel(t, r, i), this._onModelModeChanged.fire({
                model: t,
                oldModeId: n
            })
        }
    };
    Xl.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK = 20971520, Xl = S([x(0, Wt.a), x(1, ie), x(2, ir.b), x(3, re.b), x(4, Nl.a), x(5, K.a), x(6, Q.a)], Xl);
    const Ql = "editor.semanticHighlighting";

    function Jl(e, t, i) {
        return "boolean" == typeof(e = null === (e = i.getValue(Ql, {
            overrideIdentifier: e.getLanguageId(),
            resource: e.uri
        })) || void 0 === e ? void 0 : e.enabled) ? e : t.getColorTheme().semanticHighlighting
    }
    class ed extends v.a {
        constructor(e, t, i, n) {
            super(), this._watchers = Object.create(null), this._semanticStyling = n;
            const r = e => {
                    this._watchers[e.uri.toString()] = new nd(e, t, this._semanticStyling)
                },
                o = (e, t) => {
                    t.dispose(), delete this._watchers[e.uri.toString()]
                },
                s = () => {
                    for (var n of e.getModels()) {
                        var s = this._watchers[n.uri.toString()];
                        Jl(n, t, i) ? s || r(n) : s && o(n, s)
                    }
                };
            this._register(e.onModelAdded(e => {
                Jl(e, t, i) && r(e)
            })), this._register(e.onModelRemoved(e => {
                var t = this._watchers[e.uri.toString()];
                t && o(e, t)
            })), this._register(i.onDidChange配置(e => {
                e.affects配置(Ql) && s()
            })), this._register(t.onDidColorThemeChange(s))
        }
    }
    class td extends v.a {
        constructor(e, t, i) {
            super(), this._themeService = e, this._modeService = t, this._logService = i, this._caches = new WeakMap, this._register(this._themeService.onDidColorThemeChange(() => {
                this._caches = new WeakMap
            }))
        }
        get(e) {
            return this._caches.has(e) || this._caches.set(e, new Ml(e.getLegend(), this._themeService, this._modeService, this._logService)), this._caches.get(e)
        }
    }
    class id {
        constructor(e, t, i) {
            this.provider = e, this.resultId = t, this.data = i
        }
        dispose() {
            this.provider.releaseDocumentSemanticTokens(this.resultId)
        }
    }
    class nd extends v.a {
        constructor(e, t, i) {
            super(), this._isDisposed = !1, this._model = e, this._semanticStyling = i, this._fetchDocumentSemanticTokens = this._register(new q.e(() => this._fetchDocumentSemanticTokensNow(), nd.FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY)), this._currentDocumentResponse = null, this._currentDocumentRequestCancellationTokenSource = null, this._documentProvidersChangeListeners = [], this._register(this._model.onDidChangeContent(() => {
                this._fetchDocumentSemanticTokens.isScheduled() || this._fetchDocumentSemanticTokens.schedule()
            })), this._register(this._model.onDidChangeLanguage(() => {
                this._currentDocumentResponse && (this._currentDocumentResponse.dispose(), this._currentDocumentResponse = null), this._currentDocumentRequestCancellationTokenSource && (this._currentDocumentRequestCancellationTokenSource.cancel(), this._currentDocumentRequestCancellationTokenSource = null), this._setDocumentSemanticTokens(null, null, null, []), this._fetchDocumentSemanticTokens.schedule(0)
            }));
            const n = () => {
                Object(v.f)(this._documentProvidersChangeListeners), this._documentProvidersChangeListeners = [];
                for (const t of z.k.all(e)) "function" == typeof t.onDidChange && this._documentProvidersChangeListeners.push(t.onDidChange(() => this._fetchDocumentSemanticTokens.schedule(0)))
            };
            n(), this._register(z.k.onDidChange(() => {
                n(), this._fetchDocumentSemanticTokens.schedule()
            })), this._register(t.onDidColorThemeChange(e => {
                this._setDocumentSemanticTokens(null, null, null, []), this._fetchDocumentSemanticTokens.schedule()
            })), this._fetchDocumentSemanticTokens.schedule(0)
        }
        dispose() {
            this._currentDocumentResponse && (this._currentDocumentResponse.dispose(), this._currentDocumentResponse = null), this._currentDocumentRequestCancellationTokenSource && (this._currentDocumentRequestCancellationTokenSource.cancel(), this._currentDocumentRequestCancellationTokenSource = null), this._setDocumentSemanticTokens(null, null, null, []), this._isDisposed = !0, super.dispose()
        }
        _fetchDocumentSemanticTokensNow() {
            if (!this._currentDocumentRequestCancellationTokenSource)
                if (Wl(this._model)) {
                    var e = new a.b,
                        t = this._currentDocumentResponse ? this._currentDocumentResponse.provider : null,
                        i = this._currentDocumentResponse && this._currentDocumentResponse.resultId || null;
                    const n = zl(this._model, t, i, e.token);
                    this._currentDocumentRequestCancellationTokenSource = e;
                    const r = [],
                        o = this._model.onDidChangeContent(e => {
                            r.push(e)
                        });
                    n.then(e => {
                        var t, i;
                        this._currentDocumentRequestCancellationTokenSource = null, o.dispose(), e ? (({
                            provider: t,
                            tokens: i
                        } = e), e = this._semanticStyling.get(t), this._setDocumentSemanticTokens(t, i || null, e, r)) : this._setDocumentSemanticTokens(null, null, null, r)
                    }, e => {
                        e && (se.e(e) || "string" == typeof e.message && -1 !== e.message.indexOf("busy")) || se.f(e), this._currentDocumentRequestCancellationTokenSource = null, o.dispose(), 0 < r.length && (this._fetchDocumentSemanticTokens.isScheduled() || this._fetchDocumentSemanticTokens.schedule())
                    })
                } else this._currentDocumentResponse && this._model.setSemanticTokens(null, !1)
        }
        static _copy(e, t, i, n, r) {
            for (let o = 0; o < r; o++) i[n + o] = e[t + o]
        }
        _setDocumentSemanticTokens(e, t, i, n) {
            var r = this._currentDocumentResponse,
                o = () => {
                    0 < n.length && !this._fetchDocumentSemanticTokens.isScheduled() && this._fetchDocumentSemanticTokens.schedule()
                };
            if (this._currentDocumentResponse && (this._currentDocumentResponse.dispose(), this._currentDocumentResponse = null), this._isDisposed) e && t && e.releaseDocumentSemanticTokens(t.resultId);
            else if (e && i) {
                if (!t) return this._model.setSemanticTokens(null, !0), void o();
                if (Bl(t)) {
                    if (!r) return void this._model.setSemanticTokens(null, !0);
                    if (0 === t.edits.length) t = {
                        resultId: t.resultId,
                        data: r.data
                    };
                    else {
                        let e = 0;
                        for (const i of t.edits) e += (i.data ? i.data.length : 0) - i.deleteCount;
                        var s = r.data,
                            a = new Uint32Array(s.length + e);
                        let i = s.length,
                            n = a.length;
                        for (let e = t.edits.length - 1; 0 <= e; e--) {
                            var l = t.edits[e],
                                d = i - (l.start + l.deleteCount);
                            0 < d && (nd._copy(s, i - d, a, n - d, d), n -= d), l.data && (nd._copy(l.data, 0, a, n - l.data.length, l.data.length), n -= l.data.length), i = l.start
                        }
                        0 < i && nd._copy(s, 0, a, 0, i), t = {
                            resultId: t.resultId,
                            data: a
                        }
                    }
                }
                if (jl(t)) {
                    this._currentDocumentResponse = new id(e, t.resultId, t.data);
                    var c = function(e, t, i) {
                        var n = e.data,
                            r = e.data.length / 5 | 0,
                            o = Math.max(Math.ceil(r / 1024), 400);
                        const s = [];
                        let a = 0,
                            l = 1,
                            d = 0;
                        for (; a < r;) {
                            var c = a;
                            let e = Math.min(c + o, r);
                            if (e < r) {
                                let t = e;
                                for (; t - 1 > c && 0 === n[5 * t];) t--;
                                if (t - 1 === c) {
                                    let t = e;
                                    for (; t + 1 < r && 0 === n[5 * t];) t++;
                                    e = t
                                } else e = t
                            }
                            let m = new Uint32Array(4 * (e - c)),
                                v = 0,
                                b = 0,
                                _ = 0,
                                w = 0,
                                y = 0;
                            for (; a < e;) {
                                var h = n[f = 5 * a],
                                    u = n[1 + f],
                                    p = l + h | 0,
                                    g = 0 === h ? d + u | 0 : u,
                                    f = (h = n[2 + f], u = n[3 + f], n[4 + f]);
                                2147483647 !== (f = t.getMetadata(u, f, i)) && (0 === b && (b = p), _ === p && y > g && (t.warnOverlappingSemanticTokens(p, g + 1), w < g ? m[v - 4 + 2] = g : v -= 4), m[v] = p - b, m[v + 1] = g, m[v + 2] = g + h, m[v + 3] = f, v += 4, _ = p, w = g, y = g + h), l = p, d = g, a++
                            }
                            v !== m.length && (m = m.subarray(0, v));
                            const C = new Tl.a(b, new Tl.c(m));
                            s.push(C)
                        }
                        return s
                    }(t, i, this._model.getLanguageId());
                    if (0 < n.length)
                        for (const e of n)
                            for (const t of c)
                                for (const i of e.changes) t.applyEdit(i.range, i.text);
                    this._model.setSemanticTokens(c, !0)
                } else this._model.setSemanticTokens(null, !0);
                o()
            } else this._model.setSemanticTokens(null, !1)
        }
    }
    nd.FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY = 300;
    class rd {
        constructor(e, t, i, n, r) {
            this._parsedThemeRuleBrand = void 0, this.token = e, this.index = t, this.fontStyle = i, this.foreground = n, this.background = r
        }
    }
    const od = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;
    class sd {
        constructor() {
            this._lastColorId = 0, this._id2color = [], this._color2id = new Map
        }
        getId(e) {
            if (null === e) return 0;
            const t = e.match(od);
            if (!t) throw new Error("Illegal value for token color: " + e);
            e = t[1].toUpperCase();
            let i = this._color2id.get(e);
            return i || (i = ++this._lastColorId, this._color2id.set(e, i), this._id2color[i] = uo.a.fromHex("#" + e), i)
        }
        getColorMap() {
            return this._id2color.slice(0)
        }
    }
    class ad {
        constructor(e, t) {
            this._colorMap = e, this._root = t, this._cache = new Map
        }
        static createFromRawTokenTheme(e, t) {
            return this.createFromParsedTokenTheme(function(e) {
                if (!e || !Array.isArray(e)) return [];
                let t = [],
                    i = 0;
                for (let r = 0, o = e.length; r < o; r++) {
                    let o = e[r],
                        s = -1;
                    if ("string" == typeof o.fontStyle) {
                        s = 0;
                        var n = o.fontStyle.split(" ");
                        for (let e = 0, t = n.length; e < t; e++) switch (n[e]) {
                            case "italic":
                                s |= 1;
                                break;
                            case "bold":
                                s |= 2;
                                break;
                            case "underline":
                                s |= 4
                        }
                    }
                    let a = null;
                    "string" == typeof o.foreground && (a = o.foreground);
                    let l = null;
                    "string" == typeof o.background && (l = o.background), t[i++] = new rd(o.token || "", r, s, a, l)
                }
                return t
            }(e), t)
        }
        static createFromParsedTokenTheme(e, t) {
            return function(e, t) {
                e.sort((e, t) => {
                    var i = function(e, t) {
                        return e < t ? -1 : t < e ? 1 : 0
                    }(e.token, t.token);
                    return 0 !== i ? i : e.index - t.index
                });
                let i = 0,
                    n = "000000",
                    r = "ffffff";
                for (; 1 <= e.length && "" === e[0].token;) {
                    var o = e.shift(); - 1 !== o.fontStyle && (i = o.fontStyle), null !== o.foreground && (n = o.foreground), null !== o.background && (r = o.background)
                }
                let s = new sd;
                for (var a of t) s.getId(a);
                var l = s.getId(n);
                t = s.getId(r), t = new dd(i, l, t);
                let d = new cd(t);
                for (let t = 0, i = e.length; t < i; t++) {
                    var c = e[t];
                    d.insert(c.token, c.fontStyle, s.getId(c.foreground), s.getId(c.background))
                }
                return new ad(s, d)
            }(e, t)
        }
        getColorMap() {
            return this._colorMap.getColorMap()
        }
        _match(e) {
            return this._root.match(e)
        }
        match(e, t) {
            let i = this._cache.get(t);
            var n, r;
            return void 0 === i && (n = this._match(t), r = function(e) {
                if (!(e = e.match(ld))) return 0;
                switch (e[1]) {
                    case "comment":
                        return 1;
                    case "string":
                        return 2;
                    case "regex":
                    case "regexp":
                        return 4
                }
                throw new Error("Unexpected match for standard token type!")
            }(t), i = (n.metadata | r << 8) >>> 0, this._cache.set(t, i)), (i | e << 0) >>> 0
        }
    }
    const ld = /\b(comment|string|regex|regexp)\b/;
    class dd {
        constructor(e, t, i) {
            this._themeTrieElementRuleBrand = void 0, this._fontStyle = e, this._foreground = t, this._background = i, this.metadata = (this._fontStyle << 11 | this._foreground << 14 | this._background << 23) >>> 0
        }
        clone() {
            return new dd(this._fontStyle, this._foreground, this._background)
        }
        acceptOverwrite(e, t, i) {
            -1 !== e && (this._fontStyle = e), 0 !== t && (this._foreground = t), 0 !== i && (this._background = i), this.metadata = (this._fontStyle << 11 | this._foreground << 14 | this._background << 23) >>> 0
        }
    }
    class cd {
        constructor(e) {
            this._themeTrieElementBrand = void 0, this._mainRule = e, this._children = new Map
        }
        match(e) {
            if ("" === e) return this._mainRule;
            var t = e.indexOf(".");
            let i, n;
            n = -1 === t ? (i = e, "") : (i = e.substring(0, t), e.substring(t + 1));
            let r = this._children.get(i);
            return void 0 !== r ? r.match(n) : this._mainRule
        }
        insert(e, t, i, n) {
            if ("" !== e) {
                var r = e.indexOf(".");
                let o, s;
                s = -1 === r ? (o = e, "") : (o = e.substring(0, r), e.substring(r + 1));
                let a = this._children.get(o);
                void 0 === a && (a = new cd(this._mainRule.clone()), this._children.set(o, a)), a.insert(s, t, i, n)
            } else this._mainRule.acceptOverwrite(t, i, n)
        }
    }
    const hd = {
            base: "vs",
            inherit: !1,
            rules: [{
                token: "",
                foreground: "000000",
                background: "fffffe"
            }, {
                token: "invalid",
                foreground: "cd3131"
            }, {
                token: "emphasis",
                fontStyle: "italic"
            }, {
                token: "strong",
                fontStyle: "bold"
            }, {
                token: "variable",
                foreground: "001188"
            }, {
                token: "variable.predefined",
                foreground: "4864AA"
            }, {
                token: "constant",
                foreground: "dd0000"
            }, {
                token: "comment",
                foreground: "008000"
            }, {
                token: "number",
                foreground: "098658"
            }, {
                token: "number.hex",
                foreground: "3030c0"
            }, {
                token: "regexp",
                foreground: "800000"
            }, {
                token: "annotation",
                foreground: "808080"
            }, {
                token: "type",
                foreground: "008080"
            }, {
                token: "delimiter",
                foreground: "000000"
            }, {
                token: "delimiter.html",
                foreground: "383838"
            }, {
                token: "delimiter.xml",
                foreground: "0000FF"
            }, {
                token: "tag",
                foreground: "800000"
            }, {
                token: "tag.id.pug",
                foreground: "4F76AC"
            }, {
                token: "tag.class.pug",
                foreground: "4F76AC"
            }, {
                token: "meta.scss",
                foreground: "800000"
            }, {
                token: "metatag",
                foreground: "e00000"
            }, {
                token: "metatag.content.html",
                foreground: "FF0000"
            }, {
                token: "metatag.html",
                foreground: "808080"
            }, {
                token: "metatag.xml",
                foreground: "808080"
            }, {
                token: "metatag.php",
                fontStyle: "bold"
            }, {
                token: "key",
                foreground: "863B00"
            }, {
                token: "string.key.json",
                foreground: "A31515"
            }, {
                token: "string.value.json",
                foreground: "0451A5"
            }, {
                token: "attribute.name",
                foreground: "FF0000"
            }, {
                token: "attribute.value",
                foreground: "0451A5"
            }, {
                token: "attribute.value.number",
                foreground: "098658"
            }, {
                token: "attribute.value.unit",
                foreground: "098658"
            }, {
                token: "attribute.value.html",
                foreground: "0000FF"
            }, {
                token: "attribute.value.xml",
                foreground: "0000FF"
            }, {
                token: "string",
                foreground: "A31515"
            }, {
                token: "string.html",
                foreground: "0000FF"
            }, {
                token: "string.sql",
                foreground: "FF0000"
            }, {
                token: "string.yaml",
                foreground: "0451A5"
            }, {
                token: "keyword",
                foreground: "0000FF"
            }, {
                token: "keyword.json",
                foreground: "0451A5"
            }, {
                token: "keyword.flow",
                foreground: "AF00DB"
            }, {
                token: "keyword.flow.scss",
                foreground: "0000FF"
            }, {
                token: "operator.scss",
                foreground: "666666"
            }, {
                token: "operator.sql",
                foreground: "778899"
            }, {
                token: "operator.swift",
                foreground: "666666"
            }, {
                token: "predefined.sql",
                foreground: "C700C7"
            }],
            colors: {
                [Ir.q]: "#FFFFFE",
                [Ir.A]: "#000000",
                [Ir.D]: "#E5EBF1",
                [tr.x]: "#D3D3D3",
                [tr.a]: "#939393",
                [Ir.J]: "#ADD6FF4D"
            }
        },
        ud = {
            base: "vs-dark",
            inherit: !1,
            rules: [{
                token: "",
                foreground: "D4D4D4",
                background: "1E1E1E"
            }, {
                token: "invalid",
                foreground: "f44747"
            }, {
                token: "emphasis",
                fontStyle: "italic"
            }, {
                token: "strong",
                fontStyle: "bold"
            }, {
                token: "variable",
                foreground: "74B0DF"
            }, {
                token: "variable.predefined",
                foreground: "4864AA"
            }, {
                token: "variable.parameter",
                foreground: "9CDCFE"
            }, {
                token: "constant",
                foreground: "569CD6"
            }, {
                token: "comment",
                foreground: "608B4E"
            }, {
                token: "number",
                foreground: "B5CEA8"
            }, {
                token: "number.hex",
                foreground: "5BB498"
            }, {
                token: "regexp",
                foreground: "B46695"
            }, {
                token: "annotation",
                foreground: "cc6666"
            }, {
                token: "type",
                foreground: "3DC9B0"
            }, {
                token: "delimiter",
                foreground: "DCDCDC"
            }, {
                token: "delimiter.html",
                foreground: "808080"
            }, {
                token: "delimiter.xml",
                foreground: "808080"
            }, {
                token: "tag",
                foreground: "569CD6"
            }, {
                token: "tag.id.pug",
                foreground: "4F76AC"
            }, {
                token: "tag.class.pug",
                foreground: "4F76AC"
            }, {
                token: "meta.scss",
                foreground: "A79873"
            }, {
                token: "meta.tag",
                foreground: "CE9178"
            }, {
                token: "metatag",
                foreground: "DD6A6F"
            }, {
                token: "metatag.content.html",
                foreground: "9CDCFE"
            }, {
                token: "metatag.html",
                foreground: "569CD6"
            }, {
                token: "metatag.xml",
                foreground: "569CD6"
            }, {
                token: "metatag.php",
                fontStyle: "bold"
            }, {
                token: "key",
                foreground: "9CDCFE"
            }, {
                token: "string.key.json",
                foreground: "9CDCFE"
            }, {
                token: "string.value.json",
                foreground: "CE9178"
            }, {
                token: "attribute.name",
                foreground: "9CDCFE"
            }, {
                token: "attribute.value",
                foreground: "CE9178"
            }, {
                token: "attribute.value.number.css",
                foreground: "B5CEA8"
            }, {
                token: "attribute.value.unit.css",
                foreground: "B5CEA8"
            }, {
                token: "attribute.value.hex.css",
                foreground: "D4D4D4"
            }, {
                token: "string",
                foreground: "CE9178"
            }, {
                token: "string.sql",
                foreground: "FF0000"
            }, {
                token: "keyword",
                foreground: "569CD6"
            }, {
                token: "keyword.flow",
                foreground: "C586C0"
            }, {
                token: "keyword.json",
                foreground: "CE9178"
            }, {
                token: "keyword.flow.scss",
                foreground: "569CD6"
            }, {
                token: "operator.scss",
                foreground: "909090"
            }, {
                token: "operator.sql",
                foreground: "778899"
            }, {
                token: "operator.swift",
                foreground: "909090"
            }, {
                token: "predefined.sql",
                foreground: "FF00FF"
            }],
            colors: {
                [Ir.q]: "#1E1E1E",
                [Ir.A]: "#D4D4D4",
                [Ir.D]: "#3A3D41",
                [tr.x]: "#404040",
                [tr.a]: "#707070",
                [Ir.J]: "#ADD6FF26"
            }
        },
        pd = {
            base: "hc-black",
            inherit: !1,
            rules: [{
                token: "",
                foreground: "FFFFFF",
                background: "000000"
            }, {
                token: "invalid",
                foreground: "f44747"
            }, {
                token: "emphasis",
                fontStyle: "italic"
            }, {
                token: "strong",
                fontStyle: "bold"
            }, {
                token: "variable",
                foreground: "1AEBFF"
            }, {
                token: "variable.parameter",
                foreground: "9CDCFE"
            }, {
                token: "constant",
                foreground: "569CD6"
            }, {
                token: "comment",
                foreground: "608B4E"
            }, {
                token: "number",
                foreground: "FFFFFF"
            }, {
                token: "regexp",
                foreground: "C0C0C0"
            }, {
                token: "annotation",
                foreground: "569CD6"
            }, {
                token: "type",
                foreground: "3DC9B0"
            }, {
                token: "delimiter",
                foreground: "FFFF00"
            }, {
                token: "delimiter.html",
                foreground: "FFFF00"
            }, {
                token: "tag",
                foreground: "569CD6"
            }, {
                token: "tag.id.pug",
                foreground: "4F76AC"
            }, {
                token: "tag.class.pug",
                foreground: "4F76AC"
            }, {
                token: "meta",
                foreground: "D4D4D4"
            }, {
                token: "meta.tag",
                foreground: "CE9178"
            }, {
                token: "metatag",
                foreground: "569CD6"
            }, {
                token: "metatag.content.html",
                foreground: "1AEBFF"
            }, {
                token: "metatag.html",
                foreground: "569CD6"
            }, {
                token: "metatag.xml",
                foreground: "569CD6"
            }, {
                token: "metatag.php",
                fontStyle: "bold"
            }, {
                token: "key",
                foreground: "9CDCFE"
            }, {
                token: "string.key",
                foreground: "9CDCFE"
            }, {
                token: "string.value",
                foreground: "CE9178"
            }, {
                token: "attribute.name",
                foreground: "569CD6"
            }, {
                token: "attribute.value",
                foreground: "3FF23F"
            }, {
                token: "string",
                foreground: "CE9178"
            }, {
                token: "string.sql",
                foreground: "FF0000"
            }, {
                token: "keyword",
                foreground: "569CD6"
            }, {
                token: "keyword.flow",
                foreground: "C586C0"
            }, {
                token: "operator.sql",
                foreground: "778899"
            }, {
                token: "operator.swift",
                foreground: "909090"
            }, {
                token: "predefined.sql",
                foreground: "FF00FF"
            }],
            colors: {
                [Ir.q]: "#000000",
                [Ir.A]: "#FFFFFF",
                [tr.x]: "#FFFFFF",
                [tr.a]: "#FFFFFF"
            }
        };
    const gd = "vs",
        fd = "vs-dark",
        md = "hc-black",
        vd = xt.a.as(Ir.a.ColorContribution),
        bd = xt.a.as(ir.a.ThemingContribution);
    class _d {
        constructor(e, t) {
            this.semanticHighlighting = !1, t = (this.themeData = t).base, 0 < e.length ? (wd(e) ? this.id = e : this.id = t + " " + e, this.themeName = e) : (this.id = t, this.themeName = t), this.colors = null, this.defaultColors = Object.create(null), this._tokenTheme = null
        }
        get base() {
            return this.themeData.base
        }
        notifyBaseUpdated() {
            this.themeData.inherit && (this.colors = null, this._tokenTheme = null)
        }
        getColors() {
            if (!this.colors) {
                const n = new Map;
                for (var e in this.themeData.colors) n.set(e, uo.a.fromHex(this.themeData.colors[e]));
                if (this.themeData.inherit) {
                    var t, i = yd(this.themeData.base);
                    for (t in i.colors) n.has(t) || n.set(t, uo.a.fromHex(i.colors[t]))
                }
                this.colors = n
            }
            return this.colors
        }
        getColor(e, t) {
            return this.getColors().get(e) || (!1 !== t ? this.getDefault(e) : void 0)
        }
        getDefault(e) {
            let t = this.defaultColors[e];
            return t || (t = vd.resolveDefaultColor(e, this), this.defaultColors[e] = t, t)
        }
        defines(e) {
            return Object.prototype.hasOwnProperty.call(this.getColors(), e)
        }
        get type() {
            switch (this.base) {
                case gd:
                    return pn.a.LIGHT;
                case md:
                    return pn.a.HIGH_CONTRAST;
                default:
                    return pn.a.DARK
            }
        }
        get tokenTheme() {
            if (!this._tokenTheme) {
                let i = [],
                    n = [];
                this.themeData.inherit && (i = (t = yd(this.themeData.base)).rules, t.encodedTokensColors && (n = t.encodedTokensColors));
                var e = this.themeData.colors["editor.foreground"],
                    t = this.themeData.colors["editor.background"];
                if (e || t) {
                    const n = {
                        token: ""
                    };
                    e && (n.foreground = e), t && (n.background = t), i.push(n)
                }
                i = i.concat(this.themeData.rules), this.themeData.encodedTokensColors && (n = this.themeData.encodedTokensColors), this._tokenTheme = ad.createFromRawTokenTheme(i, n)
            }
            return this._tokenTheme
        }
        getTokenStyleMetadata(e, t, i) {
            return e = this.tokenTheme._match([e].concat(t).join(".")).metadata, t = z.z.getForeground(e), e = z.z.getFontStyle(e), {
                foreground: t,
                italic: Boolean(1 & e),
                bold: Boolean(2 & e),
                underline: Boolean(4 & e)
            }
        }
    }

    function wd(e) {
        return e === gd || e === fd || e === md
    }

    function yd(e) {
        switch (e) {
            case gd:
                return hd;
            case fd:
                return ud;
            case md:
                return pd
        }
    }

    function Cd(e) {
        var t = yd(e);
        return new _d(e, t)
    }
    class xd extends v.a {
        constructor() {
            super(), this._onColorThemeChange = this._register(new D.b), this.onDidColorThemeChange = this._onColorThemeChange.event, this._environment = Object.create(null), this._autoDetectHighContrast = !0, this._knownThemes = new Map, this._knownThemes.set(gd, Cd(gd)), this._knownThemes.set(fd, Cd(fd)), this._knownThemes.set(md, Cd(md));
            const e = function() {
                const e = new D.b,
                    t = Object(ka.a)();
                return t.onDidChange(() => e.fire()), {
                    onDidChange: e.event,
                    getCSS() {
                        const e = {};
                        var i, n;
                        const r = [];
                        for (i of t.getIcons()) {
                            var o = (i => {
                                let n = i.defaults;
                                for (; ir.d.isThemeIcon(n);) {
                                    var r = t.getIcon(n.id);
                                    if (!r) return;
                                    n = r.defaults
                                }
                                var o = n.fontId;
                                if (o) {
                                    var a = t.getIconFont(o);
                                    if (a) return e[o] = a, `.codicon-${i.id}:before { content: '${n.fontCharacter}'; font-family: ${Object(s.o)(o)}; }`
                                }
                                return `.codicon-${i.id}:before { content: '${n.fontCharacter}'; }`
                            })(i);
                            o && r.push(o)
                        }
                        for (n in e) {
                            var a = e[n].definition.src.map(e => `${Object(s.p)(e.location)} format('${e.format}')`).join(", ");
                            r.push(`@font-face { src: ${a}; font-family: ${Object(s.o)(n)}; font-display: block; }`)
                        }
                        return r.join("\n")
                    }
                }
            }();
            this._codiconCSS = e.getCSS(), this._themeCSS = "", this._allCSS = `${this._codiconCSS}\n${this._themeCSS}`, this._globalStyleElement = null, this._styleElements = [], this._colorMapOverride = null, this.setTheme(gd), e.onDidChange(() => {
                this._codiconCSS = e.getCSS(), this._updateCSS()
            }), s.k("(forced-colors: active)", () => {
                this._updateActualTheme()
            })
        }
        registerEditorContainer(e) {
            return s.L(e) ? this._registerShadowDomContainer(e) : this._registerRegularEditorContainer()
        }
        _registerRegularEditorContainer() {
            return this._globalStyleElement || (this._globalStyleElement = s.t(), this._globalStyleElement.className = "monaco-colors", this._globalStyleElement.textContent = this._allCSS, this._styleElements.push(this._globalStyleElement)), v.a.None
        }
        _registerShadowDomContainer(e) {
            const t = s.t(e);
            return t.className = "monaco-colors", t.textContent = this._allCSS, this._styleElements.push(t), {
                dispose: () => {
                    for (let e = 0; e < this._styleElements.length; e++)
                        if (this._styleElements[e] === t) return void this._styleElements.splice(e, 1)
                }
            }
        }
        defineTheme(e, t) {
            if (!/^[a-z0-9\-]+$/i.test(e)) throw new Error("Illegal theme name!");
            if (!wd(t.base) && !wd(e)) throw new Error("Illegal theme base!");
            this._knownThemes.set(e, new _d(e, t)), wd(e) && this._knownThemes.forEach(t => {
                t.base === e && t.notifyBaseUpdated()
            }), this._theme.themeName === e && this.setTheme(e)
        }
        getColorTheme() {
            return this._theme
        }
        setColorMapOverride(e) {
            this._colorMapOverride = e, this._updateThemeOrColorMap()
        }
        setTheme(e) {
            let t;
            t = this._knownThemes.has(e) ? this._knownThemes.get(e) : this._knownThemes.get(gd), this._desiredTheme = t, this._updateActualTheme()
        }
        _updateActualTheme() {
            var e = this._autoDetectHighContrast && window.matchMedia("(forced-colors: active)").matches ? this._knownThemes.get(md) : this._desiredTheme;
            this._theme !== e && (this._theme = e, this._updateThemeOrColorMap())
        }
        setAutoDetectHighContrast(e) {
            this._autoDetectHighContrast = e, this._updateActualTheme()
        }
        _updateThemeOrColorMap() {
            let e = [],
                t = {},
                i = {
                    addRule: i => {
                        t[i] || (e.push(i), t[i] = !0)
                    }
                };
            bd.getThemingParticipants().forEach(e => e(this._theme, i, this._environment));
            var n = this._colorMapOverride || this._theme.tokenTheme.getColorMap();
            i.addRule(function(e) {
                let t = [];
                for (let n = 1, r = e.length; n < r; n++) {
                    var i = e[n];
                    t[n] = `.mtk${n} { color: ${i}; }`
                }
                return t.push(".mtki { font-style: italic; }"), t.push(".mtkb { font-weight: bold; }"), t.push(".mtku { text-decoration: underline; text-underline-position: under; }"), t.join("\n")
            }(n)), this._themeCSS = e.join("\n"), this._updateCSS(), z.A.setColorMap(n), this._onColorThemeChange.fire(this._theme)
        }
        _updateCSS() {
            this._allCSS = `${this._codiconCSS}\n${this._themeCSS}`, this._styleElements.forEach(e => e.textContent = this._allCSS)
        }
        getFileIconTheme() {
            return {
                hasFileIcons: !1,
                hasFolderIcons: !1,
                hidesExplorerArrows: !1
            }
        }
    }
    var Sd = i(43);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    const kd = "data-keybinding-context";
    class Ld {
        constructor(e, t) {
            this._id = e, this._parent = t, this._value = Object.create(null), this._value._contextId = e
        }
        setValue(e, t) {
            return this._value[e] !== t && (this._value[e] = t, !0)
        }
        removeValue(e) {
            return e in this._value && (delete this._value[e], !0)
        }
        getValue(e) {
            var t = this._value[e];
            return void 0 === t && this._parent ? this._parent.getValue(e) : t
        }
    }
    class Od extends Ld {
        constructor() {
            super(-1, null)
        }
        setValue(e, t) {
            return !1
        }
        removeValue(e) {
            return !1
        }
        getValue(e) {}
    }
    Od.INSTANCE = new Od;
    class Ed extends Ld {
        constructor(e, t, i) {
            super(e, null), this._configurationService = t, this._values = d.c.forConfigKeys(), this._listener = this._configurationService.onDidChange配置(e => {
                if (6 === e.source) {
                    var t = Array.from(Sd.a.map(this._values, ([e]) => e));
                    this._values.clear(), i.fire(new Id(t))
                } else {
                    const t = [];
                    for (const i of e.affectedKeys) {
                        var n = "config." + i,
                            r = this._values.findSuperstr(n);
                        void 0 !== r && (t.push(...Sd.a.map(r, ([e]) => e)), this._values.deleteSuperstr(n)), this._values.has(n) && (t.push(n), this._values.delete(n))
                    }
                    i.fire(new Id(t))
                }
            })
        }
        dispose() {
            this._listener.dispose()
        }
        getValue(e) {
            if (0 !== e.indexOf(Ed._keyPrefix)) return super.getValue(e);
            if (this._values.has(e)) return this._values.get(e);
            var t = e.substr(Ed._keyPrefix.length),
                i = this._configurationService.getValue(t);
            let n = void 0;
            switch (typeof i) {
                case "number":
                case "boolean":
                case "string":
                    n = i;
                    break;
                default:
                    n = Array.isArray(i) ? JSON.stringify(i) : i
            }
            return this._values.set(e, n), n
        }
        setValue(e, t) {
            return super.setValue(e, t)
        }
        removeValue(e) {
            return super.removeValue(e)
        }
    }
    Ed._keyPrefix = "config.";
    class Nd {
        constructor(e, t, i) {
            this._service = e, this._key = t, this._defaultValue = i, this.reset()
        }
        set(e) {
            this._service.setContext(this._key, e)
        }
        reset() {
            void 0 === this._defaultValue ? this._service.removeContext(this._key) : this._service.setContext(this._key, this._defaultValue)
        }
        get() {
            return this._service.getContextKeyValue(this._key)
        }
    }
    class Dd {
        constructor(e) {
            this.key = e
        }
        affectsSome(e) {
            return e.has(this.key)
        }
    }
    class Id {
        constructor(e) {
            this.keys = e
        }
        affectsSome(e) {
            for (const t of this.keys)
                if (e.has(t)) return !0;
            return !1
        }
    }
    class Td {
        constructor(e) {
            this.events = e
        }
        affectsSome(e) {
            for (const t of this.events)
                if (t.affectsSome(e)) return !0;
            return !1
        }
    }
    class Md {
        constructor(e) {
            this._onDidChangeContext = new D.e({
                merge: e => new Td(e)
            }), this.onDidChangeContext = this._onDidChangeContext.event, this._isDisposed = !1, this._myContextId = e
        }
        createKey(e, t) {
            if (this._isDisposed) throw new Error("AbstractContextKeyService has been disposed");
            return new Nd(this, e, t)
        }
        bufferChangeEvents(e) {
            this._onDidChangeContext.pause();
            try {
                e()
            } finally {
                this._onDidChangeContext.resume()
            }
        }
        createScoped(e) {
            if (this._isDisposed) throw new Error("AbstractContextKeyService has been disposed");
            return new Ad(this, e)
        }
        contextMatchesRules(e) {
            if (this._isDisposed) throw new Error("AbstractContextKeyService has been disposed");
            var t = this.getContextValuesContainer(this._myContextId);
            return Zt.contextMatchesRules(t, e)
        }
        getContextKeyValue(e) {
            if (!this._isDisposed) return this.getContextValuesContainer(this._myContextId).getValue(e)
        }
        setContext(e, t) {
            if (!this._isDisposed) {
                const i = this.getContextValuesContainer(this._myContextId);
                i && i.setValue(e, t) && this._onDidChangeContext.fire(new Dd(e))
            }
        }
        removeContext(e) {
            this._isDisposed || this.getContextValuesContainer(this._myContextId).removeValue(e) && this._onDidChangeContext.fire(new Dd(e))
        }
        getContext(e) {
            return this._isDisposed ? Od.INSTANCE : this.getContextValuesContainer(function(e) {
                for (; e;) {
                    if (e.hasAttribute(kd)) {
                        var t = e.getAttribute(kd);
                        return t ? parseInt(t, 10) : NaN
                    }
                    e = e.parentElement
                }
                return 0
            }(e))
        }
    }
    let Pd = class extends Md {
        constructor(e) {
            super(0), this._contexts = new Map, this._toDispose = new v.b, this._lastContextId = 0, e = new Ed(this._myContextId, e, this._onDidChangeContext), this._contexts.set(this._myContextId, e), this._toDispose.add(e)
        }
        dispose() {
            this._onDidChangeContext.dispose(), this._isDisposed = !0, this._toDispose.dispose()
        }
        getContextValuesContainer(e) {
            return !this._isDisposed && this._contexts.get(e) || Od.INSTANCE
        }
        createChildContext(e = this._myContextId) {
            if (this._isDisposed) throw new Error("ContextKeyService has been disposed");
            var t = ++this._lastContextId;
            return this._contexts.set(t, new Ld(t, this.getContextValuesContainer(e))), t
        }
        disposeContext(e) {
            this._isDisposed || this._contexts.delete(e)
        }
    };
    Pd = t([ae(0, Wt.a)], Pd);
    class Ad extends Md {
        constructor(e, t) {
            if (super(e.createChildContext()), this._parentChangeListener = new v.d, this._parent = e, this._updateParentChangeListener(), this._domNode = t, this._domNode.hasAttribute(kd)) {
                let e = "";
                this._domNode.classList && (e = Array.from(this._domNode.classList.values()).join(", ")), console.error("Element already has context attribute" + (e ? ": " + e : ""))
            }
            this._domNode.setAttribute(kd, String(this._myContextId))
        }
        _updateParentChangeListener() {
            this._parentChangeListener.value = this._parent.onDidChangeContext(this._onDidChangeContext.fire, this._onDidChangeContext)
        }
        dispose() {
            this._isDisposed || (this._onDidChangeContext.dispose(), this._parent.disposeContext(this._myContextId), this._parentChangeListener.dispose(), this._domNode.removeAttribute(kd), this._isDisposed = !0)
        }
        getContextValuesContainer(e) {
            return this._isDisposed ? Od.INSTANCE : this._parent.getContextValuesContainer(e)
        }
        createChildContext(e = this._myContextId) {
            if (this._isDisposed) throw new Error("ScopedContextKeyService has been disposed");
            return this._parent.createChildContext(e)
        }
        disposeContext(e) {
            this._isDisposed || this._parent.disposeContext(e)
        }
    }
    m.a.registerCommand(Yt.d, (function(e, t, i) {
        e.get(Yt.b).createKey(String(t), i)
    })), m.a.registerCommand({
        id: "getContextKeyInfo",
        handler: () => [...Yt.c.all()].sort((e, t) => e.key.localeCompare(t.key)),
        description: {
            description: Object(yt.a)("getContextKeyInfo", "A command that returns information about context keys"),
            args: []
        }
    }), m.a.registerCommand("_generateContextKeyInfo", (function() {
        const e = [],
            t = new Set;
        for (var i of Yt.c.all()) t.has(i.key) || (t.add(i.key), e.push(i));
        e.sort((e, t) => e.key.localeCompare(t.key)), console.log(JSON.stringify(e, void 0, 2))
    }));
    var Rd, Fd, jd = i(139);
    gi = i(135);

    function Bd(e) {
        let t = e.definition;
        for (; t instanceof Sa.b;) t = t.definition;
        return `.codicon-${e.id}:before { content: '${t.fontCharacter}'; }`
    }

    function Vd(e, t) {
        if (e.start >= t.end || t.start >= e.end) return {
            start: 0,
            end: 0
        };
        var i = Math.max(e.start, t.start);
        return (t = Math.min(e.end, t.end)) - i <= 0 ? {
            start: 0,
            end: 0
        } : {
            start: i,
            end: t
        }
    }

    function Wd(e) {
        return e.end - e.start <= 0
    }

    function zd(e, t, i) {
        var n = i.mode === Fd.ALIGN ? i.offset : i.offset + i.size,
            r = i.mode === Fd.ALIGN ? i.offset + i.size : i.offset;
        return 0 === i.position ? t <= e - n ? n : t <= r ? r - t : Math.max(e - t, 0) : t <= r ? r - t : t <= e - n ? n : 0
    }
    i(426), i(430), (S = Rd = Rd || {}).intersect = Vd, S.isEmpty = Wd, S.intersects = function(e, t) {
        return !Wd(Vd(e, t))
    }, S.relativeComplement = function(e, t) {
        const i = [];
        var n = {
            start: e.start,
            end: Math.min(t.start, e.end)
        };
        e = {
            start: Math.max(t.end, e.start),
            end: e.end
        };
        return Wd(n) || i.push(n), Wd(e) || i.push(e), i
    }, i(432), (x = Fd = Fd || {})[x.AVOID = 0] = "AVOID", x[x.ALIGN = 1] = "ALIGN";
    class Hd extends v.a {
        constructor(e, t) {
            super(), this.container = null, this.delegate = null, this.toDisposeOnClean = v.a.None, this.toDisposeOnSetContainer = v.a.None, this.shadowRoot = null, this.shadowRootHostElement = null, this.view = s.a(".context-view"), this.useFixedPosition = !1, this.useShadowDOM = !1, s.H(this.view), this.setContainer(e, t), this._register(Object(v.i)(() => this.setContainer(null, 1)))
        }
        setContainer(e, t) {
            var i;
            if (this.container && (this.toDisposeOnSetContainer.dispose(), this.shadowRoot ? (this.shadowRoot.removeChild(this.view), (this.shadowRoot = null) !== (i = this.shadowRootHostElement) && void 0 !== i && i.remove(), this.shadowRootHostElement = null) : this.container.removeChild(this.view), this.container = null), e) {
                if (this.container = e, this.useFixedPosition = 1 !== t, this.useShadowDOM = 3 === t, this.useShadowDOM) {
                    this.shadowRootHostElement = s.a(".shadow-root-host"), this.container.appendChild(this.shadowRootHostElement), this.shadowRoot = this.shadowRootHostElement.attachShadow({
                        mode: "open"
                    });
                    const e = document.createElement("style");
                    e.textContent = Ud, this.shadowRoot.appendChild(e), this.shadowRoot.appendChild(this.view), this.shadowRoot.appendChild(s.a("slot"))
                } else this.container.appendChild(this.view);
                const i = new v.b;
                Hd.BUBBLE_UP_EVENTS.forEach(e => {
                    i.add(s.l(this.container, e, e => {
                        this.onDOMEvent(e, !1)
                    }))
                }), Hd.BUBBLE_DOWN_EVENTS.forEach(e => {
                    i.add(s.l(this.container, e, e => {
                        this.onDOMEvent(e, !0)
                    }, !0))
                }), this.toDisposeOnSetContainer = i
            }
        }
        show(e) {
            this.isVisible() && this.hide(), s.q(this.view), this.view.className = "context-view", this.view.style.top = "0px", this.view.style.left = "0px", this.view.style.zIndex = "2500", this.view.style.position = this.useFixedPosition ? "fixed" : "absolute", s.S(this.view), this.toDisposeOnClean = e.render(this.view) || v.a.None, this.delegate = e, this.doLayout(), this.delegate.focus && this.delegate.focus()
        }
        getViewElement() {
            return this.view
        }
        layout() {
            this.isVisible() && (!1 !== this.delegate.canRelayout || A.c && zn.a.pointerEvents ? (this.delegate.layout && this.delegate.layout(), this.doLayout()) : this.hide())
        }
        doLayout() {
            if (this.isVisible()) {
                var e = this.delegate.getAnchor();
                let o;
                o = s.J(e) ? {
                    top: (n = s.A(e)).top,
                    left: n.left,
                    width: n.width,
                    height: n.height
                } : {
                    top: e.y,
                    left: e.x,
                    width: e.width || 1,
                    height: e.height || 2
                };
                var t = s.F(this.view),
                    i = s.E(this.view),
                    n = this.delegate.anchorPosition || 0;
                e = this.delegate.anchorAlignment || 0;
                let a, l;
                if (0 === (this.delegate.anchorAxisAlignment || 0)) {
                    var r = {
                        offset: o.top - window.pageYOffset,
                        size: o.height,
                        position: 0 === n ? 0 : 1
                    };
                    const s = {
                        offset: o.left,
                        size: o.width,
                        position: 0 === e ? 0 : 1,
                        mode: Fd.ALIGN
                    };
                    a = zd(window.innerHeight, i, r) + window.pageYOffset, Rd.intersects({
                        start: a,
                        end: a + i
                    }, {
                        start: r.offset,
                        end: r.offset + r.size
                    }) && (s.mode = Fd.AVOID), l = zd(window.innerWidth, t, s)
                } else {
                    r = {
                        offset: o.left,
                        size: o.width,
                        position: 0 === e ? 0 : 1
                    };
                    const s = {
                        offset: o.top,
                        size: o.height,
                        position: 0 === n ? 0 : 1,
                        mode: Fd.ALIGN
                    };
                    l = zd(window.innerWidth, t, r), Rd.intersects({
                        start: l,
                        end: l + t
                    }, {
                        start: r.offset,
                        end: r.offset + r.size
                    }) && (s.mode = Fd.AVOID), a = zd(window.innerHeight, i, s) + window.pageYOffset
                }
                this.view.classList.remove("top", "bottom", "left", "right"), this.view.classList.add(0 === n ? "bottom" : "top"), this.view.classList.add(0 === e ? "left" : "right"), this.view.classList.toggle("fixed", this.useFixedPosition), e = s.A(this.container), this.view.style.top = a - (this.useFixedPosition ? s.A(this.view) : e).top + "px", this.view.style.left = l - (this.useFixedPosition ? s.A(this.view) : e).left + "px", this.view.style.width = "initial"
            }
        }
        hide(e) {
            const t = this.delegate;
            (this.delegate = null) !== t && void 0 !== t && t.onHide && t.onHide(e), this.toDisposeOnClean.dispose(), s.H(this.view)
        }
        isVisible() {
            return !!this.delegate
        }
        onDOMEvent(e, t) {
            this.delegate && (this.delegate.onDOMEvent ? this.delegate.onDOMEvent(e, document.activeElement) : t && !s.I(e.target, this.container) && this.hide())
        }
        dispose() {
            this.hide(), super.dispose()
        }
    }
    Hd.BUBBLE_UP_EVENTS = ["click", "keydown", "focus", "blur"], Hd.BUBBLE_DOWN_EVENTS = ["click"];
    let Ud = '\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t@font-face {\n\t\tfont-family: "codicon";\n\t\tfont-display: block;\n\t\tsrc: url("./codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6") format("truetype");\n\t}\n\n\t.codicon[class*=\'codicon-\'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; }\n\n\t:host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; }\n';
    var Kd = i(109);
    const $d = "$(";
    var qd;
    t = new RegExp(`\\$\\(${Sa.a.iconNameExpression}(?:${Sa.a.iconModifierExpression})?\\)`, "g");
    const Gd = new RegExp("(\\\\)?" + t.source, "g");
    new RegExp("\\\\" + t.source, "g");
    const Yd = new RegExp(`(\\s)?(\\\\)?${t.source}(\\s)?`, "g");

    function Zd(e) {
        var t = e.indexOf($d);
        return -1 === t ? {
            text: e
        } : function(e, t) {
            const i = [];
            let n = "";

            function r(e) {
                if (e) {
                    n += e;
                    for (const t of e) i.push(d)
                }
            }
            let o, s, a = -1,
                l = "",
                d = 0,
                c = t;
            var h = e.length;
            for (r(e.substr(0, t)); c < h;) {
                o = e[c], s = e[c + 1], o === $d[0] && s === $d[1] ? (a = c, r(l), l = $d, c++) : ")" === o && -1 !== a ? (d += c - a + 1, a = -1, l = "") : -1 !== a ? /^[a-z0-9\-]$/i.test(o) ? l += o : (r(l), a = -1, l = "") : r(o), c++
            }
            return r(l), {
                text: n,
                iconOffsets: i
            }
        }(e, t)
    }

    function Xd(e, t, i = !1) {
        var {
            text: n,
            iconOffsets: r
        } = t;
        if (!r || 0 === r.length) return Object(Kd.c)(e, n, i);
        t = Object(b.J)(n, " ");
        var o = n.length - t.length;
        if (i = Object(Kd.c)(e, t, i))
            for (const e of i) {
                var s = r[e.start + o] + o;
                e.start += s, e.end += s
            }
        return i
    }
    const Qd = /\(&([^\s&])\)|(^|[^&])&([^\s&])/,
        Jd = /(&amp;)?(&amp;)([^\s&])/g,
        ec = Object(Sa.e)("menu-selection", Sa.b.check),
        tc = Object(Sa.e)("menu-submenu", Sa.b.chevronRight);
    (ae = qd = qd || {})[ae.Right = 0] = "Right", ae[ae.Left = 1] = "Left";
    class ic extends Ca.a {
        constructor(e, t, i = {}) {
            e.classList.add("monaco-menu-container"), e.setAttribute("role", "presentation");
            const n = document.createElement("div");
            n.classList.add("monaco-menu"), n.setAttribute("role", "presentation"), super(n, {
                orientation: 1,
                actionViewItemProvider: e => this.doGetActionViewItem(e, i, r),
                context: i.context,
                actionRunner: i.actionRunner,
                ariaLabel: i.ariaLabel,
                focusOnlyEnabledItems: !0,
                triggerKeys: {
                    keys: [3, ...A.f || A.d ? [10] : []],
                    keyDown: !0
                }
            }), this.menuElement = n, this.actionsList.setAttribute("role", "menu"), this.actionsList.tabIndex = 0, this.menuDisposables = this._register(new v.b), this.initializeStyleSheet(e), this._register(Ki.b.addTarget(n)), Object(s.g)(n, s.d.KEY_DOWN, e => {
                new gt.a(e).equals(2) && e.preventDefault()
            }), i.enableMnemonics && this.menuDisposables.add(Object(s.g)(n, s.d.KEY_DOWN, e => {
                var t = e.key.toLocaleLowerCase();
                if (this.mnemonics.has(t)) {
                    s.c.stop(e, !0);
                    const i = this.mnemonics.get(t);
                    1 === i.length && (i[0] instanceof rc && i[0].container && this.focusItemByElement(i[0].container), i[0].onClick(e)), 1 < i.length && ((e = i.shift()) && e.container && (this.focusItemByElement(e.container), i.push(e)), this.mnemonics.set(t, i))
                }
            })), A.d && this._register(Object(s.g)(n, s.d.KEY_DOWN, e => {
                const t = new gt.a(e);
                t.equals(14) || t.equals(11) ? (this.focusedItem = this.viewItems.length - 1, this.focusNext(), s.c.stop(e, !0)) : (t.equals(13) || t.equals(12)) && (this.focusedItem = 0, this.focusPrevious(), s.c.stop(e, !0))
            })), this._register(Object(s.g)(this.domNode, s.d.MOUSE_OUT, e => {
                var t = e.relatedTarget;
                Object(s.I)(t, this.domNode) || (this.focusedItem = void 0, this.updateFocus(), e.stopPropagation())
            })), this._register(Object(s.g)(this.actionsList, s.d.MOUSE_OVER, e => {
                let t = e.target;
                if (t && Object(s.I)(t, this.actionsList) && t !== this.actionsList) {
                    for (; t.parentElement !== this.actionsList && null !== t.parentElement;) t = t.parentElement;
                    t.classList.contains("action-item") && (e = this.focusedItem, this.setFocusedItem(t), e !== this.focusedItem && this.updateFocus())
                }
            })), this._register(Ki.b.addTarget(this.actionsList)), this._register(Object(s.g)(this.actionsList, Ki.a.Tap, e => {
                let t = e.initialTarget;
                if (t && Object(s.I)(t, this.actionsList) && t !== this.actionsList) {
                    for (; t.parentElement !== this.actionsList && null !== t.parentElement;) t = t.parentElement;
                    t.classList.contains("action-item") && (e = this.focusedItem, this.setFocusedItem(t), e !== this.focusedItem && this.updateFocus())
                }
            }));
            let r = {
                parent: this
            };
            this.mnemonics = new Map, this.scrollableElement = this._register(new Dr.a(n, {
                alwaysConsumeMouseWheel: !0,
                horizontal: 2,
                vertical: 3,
                verticalScrollbarSize: 7,
                handleMouseWheel: !0,
                useShadows: !0
            }));
            const o = this.scrollableElement.getDomNode();
            o.style.position = "", this._register(Object(s.g)(n, Ki.a.Change, e => {
                s.c.stop(e, !0);
                var t = this.scrollableElement.getScrollPosition().scrollTop;
                this.scrollableElement.setScrollPosition({
                    scrollTop: t - e.translationY
                })
            })), this._register(Object(s.g)(o, s.d.MOUSE_UP, e => {
                e.preventDefault()
            })), n.style.maxHeight = Math.max(10, window.innerHeight - e.getBoundingClientRect().top - 35) + "px", t = t.filter(e => {
                var t;
                return null === (t = i.submenuIds) || void 0 === t || !t.has(e.id) || (console.warn("找到 submenu cycle: " + e.id), !1)
            }), this.push(t, {
                icon: !0,
                label: !0,
                isMenu: !0
            }), e.appendChild(this.scrollableElement.getDomNode()), this.scrollableElement.scanDomNode(), this.viewItems.filter(e => !(e instanceof oc)).forEach((e, t, i) => {
                e.updatePositionInSet(t + 1, i.length)
            })
        }
        initializeStyleSheet(e) {
            Object(s.L)(e) ? (this.styleSheet = Object(s.t)(e), this.styleSheet.textContent = sc) : (ic.globalStyleSheet || (ic.globalStyleSheet = Object(s.t)(), ic.globalStyleSheet.textContent = sc), this.styleSheet = ic.globalStyleSheet)
        }
        style(e) {
            const t = this.getContainer();
            var i = e.foregroundColor ? "" + e.foregroundColor : "",
                n = e.backgroundColor ? "" + e.backgroundColor : "",
                r = e.borderColor ? "1px solid " + e.borderColor : "",
                o = e.shadowColor ? "0 2px 4px " + e.shadowColor : "";
            t.style.border = r, this.domNode.style.color = i, this.domNode.style.backgroundColor = n, t.style.boxShadow = o, this.viewItems && this.viewItems.forEach(t => {
                (t instanceof nc || t instanceof oc) && t.style(e)
            })
        }
        getContainer() {
            return this.scrollableElement.getDomNode()
        }
        get onScroll() {
            return this.scrollableElement.onScroll
        }
        focusItemByElement(e) {
            var t = this.focusedItem;
            this.setFocusedItem(e), t !== this.focusedItem && this.updateFocus()
        }
        setFocusedItem(e) {
            for (let t = 0; t < this.actionsList.children.length; t++)
                if (e === this.actionsList.children[t]) {
                    this.focusedItem = t;
                    break
                }
        }
        updateFocus(e) {
            super.updateFocus(e, !0), void 0 !== this.focusedItem && this.scrollableElement.setScrollPosition({
                scrollTop: Math.round(this.menuElement.scrollTop)
            })
        }
        doGetActionViewItem(e, t, i) {
            if (e instanceof xa.d) return new oc(t.context, e, {
                icon: !0
            });
            if (e instanceof xa.e) {
                const r = new rc(e, e.actions, i, Object.assign(Object.assign({}, t), {
                    submenuIds: new Set([...t.submenuIds || [], e.id])
                }));
                if (t.enableMnemonics) {
                    var n = r.getMnemonic();
                    if (n && r.isEnabled()) {
                        let e = [];
                        this.mnemonics.has(n) && (e = this.mnemonics.get(n)), e.push(r), this.mnemonics.set(n, e)
                    }
                }
                return r
            } {
                const i = {
                    enableMnemonics: t.enableMnemonics,
                    useEventAsContext: t.useEventAsContext
                };
                if (t.getKeyBinding) {
                    const r = t.getKeyBinding(e);
                    !r || (n = r.getLabel()) && (i.keybinding = n)
                }
                const r = new nc(t.context, e, i);
                if (t.enableMnemonics && (t = r.getMnemonic()) && r.isEnabled()) {
                    let e = [];
                    this.mnemonics.has(t) && (e = this.mnemonics.get(t)), e.push(r), this.mnemonics.set(t, e)
                }
                return r
            }
        }
    }
    class nc extends gi.b {
        constructor(e, t, i = {}) {
            if (i.isMenu = !0, super(t, t, i), this.options = i, this.options.icon = void 0 !== i.icon && i.icon, this.options.label = void 0 === i.label || i.label, this.cssClass = "", this.options.label && i.enableMnemonics && (i = this.getAction().label)) {
                let e = Qd.exec(i);
                e && (this.mnemonic = (e[1] || e[3]).toLocaleLowerCase())
            }
            this.runOnceToEnableMouseUp = new q.e(() => {
                this.element && (this._register(Object(s.g)(this.element, s.d.MOUSE_UP, e => {
                    s.c.stop(e, !0), Ri.g ? new $i.a(e).rightButton || this.onClick(e) : setTimeout(() => {
                        this.onClick(e)
                    }, 0)
                })), this._register(Object(s.g)(this.element, s.d.CONTEXT_MENU, e => {
                    s.c.stop(e, !0)
                })))
            }, 100), this._register(this.runOnceToEnableMouseUp)
        }
        render(e) {
            super.render(e), this.element && (this.container = e, this.item = Object(s.n)(this.element, Object(s.a)("a.action-menu-item")), this._action.id === xa.d.ID ? this.item.setAttribute("role", "presentation") : (this.item.setAttribute("role", "menuitem"), this.mnemonic && this.item.setAttribute("aria-keyshortcuts", "" + this.mnemonic)), this.check = Object(s.n)(this.item, Object(s.a)("span.menu-item-check" + ec.cssSelector)), this.check.setAttribute("role", "none"), this.label = Object(s.n)(this.item, Object(s.a)("span.action-label")), this.options.label && this.options.keybinding && (Object(s.n)(this.item, Object(s.a)("span.keybinding")).textContent = this.options.keybinding), this.runOnceToEnableMouseUp.schedule(), this.updateClass(), this.updateLabel(), this.updateTooltip(), this.updateEnabled(), this.updateChecked())
        }
        blur() {
            super.blur(), this.applyStyle()
        }
        focus() {
            super.focus(), this.item && this.item.focus(), this.applyStyle()
        }
        updatePositionInSet(e, t) {
            this.item && (this.item.setAttribute("aria-posinset", "" + e), this.item.setAttribute("aria-setsize", "" + t))
        }
        updateLabel() {
            if (this.label && this.options.label) {
                Object(s.q)(this.label);
                let t = -1 === (e = this.getAction().label).indexOf($d) ? e : e.replace(Yd, (e, t, i, n) => i ? e : t || n || "");
                if (t) {
                    const i = function(e) {
                        const t = Qd,
                            i = t.exec(e);
                        if (!i) return e;
                        var n = !i[1];
                        return e.replace(t, n ? "$2$3" : "").trim()
                    }(t);
                    this.options.enableMnemonics || (t = i), this.label.setAttribute("aria-label", i.replace(/&&/g, "&"));
                    const n = Qd.exec(t);
                    if (n) {
                        t = b.s(t), Jd.lastIndex = 0;
                        let i = Jd.exec(t);
                        for (; i && i[1];) i = Jd.exec(t);
                        var e = e => e.replace(/&amp;&amp;/g, "&amp;");
                        i ? this.label.append(b.J(e(t.substr(0, i.index)), " "), Object(s.a)("u", {
                            "aria-hidden": "true"
                        }, i[3]), b.O(e(t.substr(i.index + i[0].length)), " ")) : this.label.innerText = e(t).trim(), this.item && this.item.setAttribute("aria-keyshortcuts", (n[1] || n[3]).toLocaleLowerCase())
                    } else this.label.innerText = t.replace(/&&/g, "&").trim()
                }
            }
        }
        updateTooltip() {
            let e = null;
            this.getAction().tooltip ? e = this.getAction().tooltip : !this.options.label && this.getAction().label && this.options.icon && (e = this.getAction().label, this.options.keybinding && (e = yt.a({
                key: "titleLabel",
                comment: ["action title", "action keybinding"]
            }, "{0} ({1})", e, this.options.keybinding))), e && this.item && (this.item.title = e)
        }
        updateClass() {
            this.cssClass && this.item && this.item.classList.remove(...this.cssClass.split(" ")), this.options.icon && this.label ? (this.cssClass = this.getAction().class || "", this.label.classList.add("icon"), this.cssClass && this.label.classList.add(...this.cssClass.split(" ")), this.updateEnabled()) : this.label && this.label.classList.remove("icon")
        }
        updateEnabled() {
            this.getAction().enabled ? (this.element && (this.element.classList.remove("disabled"), this.element.removeAttribute("aria-disabled")), this.item && (this.item.classList.remove("disabled"), this.item.removeAttribute("aria-disabled"), this.item.tabIndex = 0)) : (this.element && (this.element.classList.add("disabled"), this.element.setAttribute("aria-disabled", "true")), this.item && (this.item.classList.add("disabled"), this.item.setAttribute("aria-disabled", "true")))
        }
        updateChecked() {
            var e;
            this.item && (e = this.getAction().checked, this.item.classList.toggle("checked", !!e), void 0 !== e ? (this.item.setAttribute("role", "menuitemcheckbox"), this.item.setAttribute("aria-checked", e ? "true" : "false")) : (this.item.setAttribute("role", "menuitem"), this.item.setAttribute("aria-checked", "")))
        }
        getMnemonic() {
            return this.mnemonic
        }
        applyStyle() {
            if (this.menuStyle) {
                var e = this.element && this.element.classList.contains("focused");
                const t = e && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor,
                    i = e && this.menuStyle.selectionBackgroundColor ? this.menuStyle.selectionBackgroundColor : void 0;
                e = e && this.menuStyle.selectionBorderColor ? "thin solid " + this.menuStyle.selectionBorderColor : "", this.item && (this.item.style.color = t ? t.toString() : "", this.item.style.backgroundColor = i ? i.toString() : ""), this.check && (this.check.style.color = t ? t.toString() : ""), this.container && (this.container.style.border = e)
            }
        }
        style(e) {
            this.menuStyle = e, this.applyStyle()
        }
    }
    class rc extends nc {
        constructor(e, t, i, n) {
            super(e, e, n), this.submenuActions = t, this.parentData = i, this.submenuOptions = n, this.mysubmenu = null, this.submenuDisposables = this._register(new v.b), this.mouseOver = !1, this.expandDirection = n && void 0 !== n.expandDirection ? n.expandDirection : qd.Right, this.showScheduler = new q.e(() => {
                this.mouseOver && (this.cleanupExistingSubmenu(!1), this.createSubmenu(!1))
            }, 250), this.hideScheduler = new q.e(() => {
                this.element && !Object(s.I)(Object(s.v)(), this.element) && this.parentData.submenu === this.mysubmenu && (this.parentData.parent.focus(!1), this.cleanupExistingSubmenu(!0))
            }, 750)
        }
        render(e) {
            super.render(e), this.element && (this.item && (this.item.classList.add("monaco-submenu-item"), this.item.tabIndex = 0, this.item.setAttribute("aria-haspopup", "true"), this.updateAriaExpanded("false"), this.submenuIndicator = Object(s.n)(this.item, Object(s.a)("span.submenu-indicator" + tc.cssSelector)), this.submenuIndicator.setAttribute("aria-hidden", "true")), this._register(Object(s.g)(this.element, s.d.KEY_UP, e => {
                let t = new gt.a(e);
                (t.equals(17) || t.equals(3)) && (s.c.stop(e, !0), this.createSubmenu(!0))
            })), this._register(Object(s.g)(this.element, s.d.KEY_DOWN, e => {
                let t = new gt.a(e);
                Object(s.v)() === this.item && (t.equals(17) || t.equals(3)) && s.c.stop(e, !0)
            })), this._register(Object(s.g)(this.element, s.d.MOUSE_OVER, e => {
                this.mouseOver || (this.mouseOver = !0, this.showScheduler.schedule())
            })), this._register(Object(s.g)(this.element, s.d.MOUSE_LEAVE, e => {
                this.mouseOver = !1
            })), this._register(Object(s.g)(this.element, s.d.FOCUS_OUT, e => {
                this.element && !Object(s.I)(Object(s.v)(), this.element) && this.hideScheduler.schedule()
            })), this._register(this.parentData.parent.onScroll(() => {
                this.parentData.parent.focus(!1), this.cleanupExistingSubmenu(!1)
            })))
        }
        updateEnabled() {}
        onClick(e) {
            s.c.stop(e, !0), this.cleanupExistingSubmenu(!1), this.createSubmenu(!0)
        }
        cleanupExistingSubmenu(e) {
            if (this.parentData.submenu && (e || this.parentData.submenu !== this.mysubmenu)) {
                try {
                    this.parentData.submenu.dispose()
                } catch (e) {}
                this.parentData.submenu = void 0, this.updateAriaExpanded("false"), this.submenuContainer && (this.submenuDisposables.clear(), this.submenuContainer = void 0)
            }
        }
        calculateSubmenuMenuLayout(e, t, i, n) {
            const r = {
                top: 0,
                left: 0
            };
            return r.left = zd(e.width, t.width, {
                position: n === qd.Right ? 0 : 1,
                offset: i.left,
                size: i.width
            }), r.left >= i.left && r.left < i.left + i.width && (i.left + 10 + t.width <= e.width && (r.left = i.left + 10), i.top += 10, i.height = 0), r.top = zd(e.height, t.height, {
                position: 0,
                offset: i.top,
                size: 0
            }), r.top + t.height === i.top && r.top + i.height + t.height <= e.height && (r.top += i.height), r
        }
        createSubmenu(e = !0) {
            var t, i, n;
            this.element && (this.parentData.submenu ? this.parentData.submenu.focus(!1) : (this.updateAriaExpanded("true"), this.submenuContainer = Object(s.n)(this.element, Object(s.a)("div.monaco-submenu")), this.submenuContainer.classList.add("menubar-menu-items-holder", "context-view"), n = getComputedStyle(this.parentData.parent.domNode), t = parseFloat(n.paddingTop || "0") || 0, this.submenuContainer.style.zIndex = "1", this.submenuContainer.style.position = "fixed", this.submenuContainer.style.top = "0", this.submenuContainer.style.left = "0", this.parentData.submenu = new ic(this.submenuContainer, this.submenuActions.length ? this.submenuActions : [new xa.c], this.submenuOptions), this.menuStyle && this.parentData.submenu.style(this.menuStyle), n = {
                top: (i = this.element.getBoundingClientRect()).top - t,
                left: i.left,
                height: i.height + 2 * t,
                width: i.width
            }, t = this.submenuContainer.getBoundingClientRect(), ({
                top: i,
                left: n
            } = this.calculateSubmenuMenuLayout(new s.b(window.innerWidth, window.innerHeight), s.b.lift(t), n, this.expandDirection)), this.submenuContainer.style.left = n - t.left + "px", this.submenuContainer.style.top = i - t.top + "px", this.submenuDisposables.add(Object(s.g)(this.submenuContainer, s.d.KEY_UP, e => {
                new gt.a(e).equals(15) && (s.c.stop(e, !0), this.parentData.parent.focus(), this.cleanupExistingSubmenu(!0))
            })), this.submenuDisposables.add(Object(s.g)(this.submenuContainer, s.d.KEY_DOWN, e => {
                new gt.a(e).equals(15) && s.c.stop(e, !0)
            })), this.submenuDisposables.add(this.parentData.submenu.onDidCancel(() => {
                this.parentData.parent.focus(), this.cleanupExistingSubmenu(!0)
            })), this.parentData.submenu.focus(e), this.mysubmenu = this.parentData.submenu))
        }
        updateAriaExpanded(e) {
            var t;
            this.item && null !== (t = this.item) && void 0 !== t && t.setAttribute("aria-expanded", e)
        }
        applyStyle() {
            var e;
            super.applyStyle(), this.menuStyle && (e = this.element && this.element.classList.contains("focused") && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor, this.submenuIndicator && (this.submenuIndicator.style.color = e ? "" + e : ""), this.parentData.submenu && this.parentData.submenu.style(this.menuStyle))
        }
        dispose() {
            super.dispose(), this.hideScheduler.dispose(), this.mysubmenu && (this.mysubmenu.dispose(), this.mysubmenu = null), this.submenuContainer && (this.submenuContainer = void 0)
        }
    }
    class oc extends gi.a {
        style(e) {
            this.label && (this.label.style.borderBottomColor = e.separatorColor ? "" + e.separatorColor : "")
        }
    }
    let sc = `\n.monaco-menu {\n\tfont-size: 13px;\n\n}\n\n${Bd(ec)}\n${Bd(tc)}\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative;  /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\topacity: 0.4;\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tpadding: 0.5em 0 0 0;\n\tmargin-bottom: 0.5em;\n\twidth: 100%;\n\theight: 0px !important;\n\tmargin-left: .8em !important;\n\tmargin-right: .8em !important;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n\t-webkit-app-region: no-drag;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tborder: thin solid transparent; /* prevents jumping behaviour on hover or focus */\n}\n\n\n/* High Contrast Theming */\n:host-context(.hc-black) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: .5em 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 1.8em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tpadding: 0.2em 0 0 0;\n\tmargin-bottom: 0.2em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}\n\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: #DDD 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: #DDD 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: #DDD 6px 6px 6px -6px inset;\n}\n\n/* ---------- Default Style ---------- */\n\n:host-context(.vs) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(100, 100, 100, .4);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(121, 121, 121, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(111, 195, 223, .6);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(100, 100, 100, .7);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(111, 195, 223, .8);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(0, 0, 0, .6);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(191, 191, 191, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(111, 195, 223, 1);\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: #000 6px 0 6px -6px inset;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: #000 6px 6px 6px -6px inset;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: none;\n}\n`;

    function ac(e, t) {
        const i = Object.create(null);
        for (var n in t) {
            var r = t[n];
            r && (i[n] = Object(Ir.ec)(r, e))
        }
        return i
    }

    function lc(e, t, i) {
        function n() {
            var n = ac(e.getColorTheme(), t);
            "function" == typeof i ? i(n) : i.style(n)
        }
        return n(), e.onDidColorThemeChange(n)
    }

    function dc(e, t, i) {
        return lc(t, Object.assign(Object.assign({}, cc), i || {}), e)
    }
    i(434);
    const cc = {
            listFocusBackground: Ir.tb,
            listFocusForeground: Ir.ub,
            listFocusOutline: Ir.vb,
            listActiveSelectionBackground: Ir.mb,
            listActiveSelectionForeground: Ir.nb,
            listActiveSelectionIconForeground: Ir.ob,
            listFocusAndSelectionBackground: Ir.mb,
            listFocusAndSelectionForeground: Ir.nb,
            listInactiveSelectionBackground: Ir.Ab,
            listInactiveSelectionIconForeground: Ir.Cb,
            listInactiveSelectionForeground: Ir.Bb,
            listInactiveFocusBackground: Ir.yb,
            listInactiveFocusOutline: Ir.zb,
            listHoverBackground: Ir.wb,
            listHoverForeground: Ir.xb,
            listDropBackground: Ir.pb,
            listSelectionOutline: Ir.b,
            listHoverOutline: Ir.b,
            listFilterWidgetBackground: Ir.qb,
            listFilterWidgetOutline: Ir.sb,
            listFilterWidgetNoMatchesOutline: Ir.rb,
            listMatchesShadow: Ir.mc,
            treeIndentGuidesStroke: Ir.lc,
            tableColumnsBorder: Ir.jc
        },
        hc = {
            shadowColor: Ir.mc,
            borderColor: Ir.Eb,
            foregroundColor: Ir.Fb,
            backgroundColor: Ir.Db,
            selectionForegroundColor: Ir.Ib,
            selectionBackgroundColor: Ir.Gb,
            selectionBorderColor: Ir.Hb,
            separatorColor: Ir.Jb
        };
    class uc {
        constructor(e, t, i, n, r) {
            this.contextViewService = e, this.telemetryService = t, this.notificationService = i, this.keybindingService = n, this.themeService = r, this.focusToReturn = null, this.block = null, this.options = {
                blockMouse: !0
            }
        }
        configure(e) {
            this.options = e
        }
        showContextMenu(e) {
            const t = e.getActions();
            if (t.length) {
                let n;
                this.focusToReturn = document.activeElement;
                var i = Object(s.J)(e.domForShadowRoot) ? e.domForShadowRoot : void 0;
                this.contextViewService.showContextView({
                    getAnchor: () => e.getAnchor(),
                    canRelayout: !1,
                    anchorAlignment: e.anchorAlignment,
                    anchorAxisAlignment: e.anchorAxisAlignment,
                    render: i => {
                        var r = e.getMenuClassName ? e.getMenuClassName() : "";
                        r && (i.className += " " + r), this.options.blockMouse && (this.block = i.appendChild(Object(s.a)(".context-view-block")), this.block.style.position = "fixed", this.block.style.cursor = "initial", this.block.style.left = "0", this.block.style.top = "0", this.block.style.width = "100%", this.block.style.height = "100%", this.block.style.zIndex = "-1", Object(s.g)(this.block, s.d.MOUSE_DOWN, e => e.stopPropagation()));
                        const o = new v.b,
                            a = e.actionRunner || new xa.b;
                        return a.onBeforeRun(this.onActionRun, this, o), a.onDidRun(this.onDidActionRun, this, o), n = new ic(i, t, {
                            actionViewItemProvider: e.getActionViewItem,
                            context: e.getActionsContext ? e.getActionsContext() : null,
                            actionRunner: a,
                            getKeyBinding: e.getKeyBinding || (e => this.keybindingService.lookupKeybinding(e.id))
                        }), o.add((r = n, lc(this.themeService, Object.assign(Object.assign({}, hc), void 0), r))), n.onDidCancel(() => this.contextViewService.hideContextView(!0), null, o), n.onDidBlur(() => this.contextViewService.hideContextView(!0), null, o), o.add(Object(s.g)(window, s.d.BLUR, () => this.contextViewService.hideContextView(!0))), o.add(Object(s.g)(window, s.d.MOUSE_DOWN, e => {
                            if (!e.defaultPrevented) {
                                let t = (e = new $i.a(e)).target;
                                if (!e.rightButton) {
                                    for (; t;) {
                                        if (t === i) return;
                                        t = t.parentElement
                                    }
                                    this.contextViewService.hideContextView(!0)
                                }
                            }
                        })), Object(v.e)(o, n)
                    },
                    focus: () => {
                        n && n.focus(!!e.autoSelectFirstItem)
                    },
                    onHide: t => {
                        e.onHide && e.onHide(!!t), this.block && (this.block.remove(), this.block = null), this.focusToReturn && this.focusToReturn.focus()
                    }
                }, i, !!i)
            }
        }
        onActionRun(e) {
            this.telemetryService.publicLog2("workbenchActionExecuted", {
                id: e.action.id,
                from: "contextMenu"
            }), this.contextViewService.hideContextView(!1), this.focusToReturn && this.focusToReturn.focus()
        }
        onDidActionRun(e) {
            e.error && !Object(se.e)(e.error) && this.notificationService.error(e.error)
        }
    }
    S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let pc = class extends v.a {
        constructor(e, t, i, n, r) {
            super(), this.contextMenuHandler = new uc(i, e, t, n, r)
        }
        configure(e) {
            this.contextMenuHandler.configure(e)
        }
        showContextMenu(e) {
            this.contextMenuHandler.showContextMenu(e), s.e.getInstance().resetKeyStatus()
        }
    };
    pc = S([x(0, jd.a), x(1, hi.a), x(2, Aa.b), x(3, al.a), x(4, ir.b)], pc);
    const gc = Object(_.c)("layoutService");
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let fc = class extends v.a {
        constructor(e) {
            super(), this.layoutService = e, this.currentViewDisposable = v.a.None, this.container = e.container, this.contextView = this._register(new Hd(this.container, 1)), this.layout(), this._register(e.onDidLayout(() => this.layout()))
        }
        setContainer(e, t) {
            this.contextView.setContainer(e, t || 1)
        }
        showContextView(e, t, i) {
            t ? t !== this.container && (this.container = t, this.setContainer(t, i ? 3 : 2)) : this.container !== this.layoutService.container && (this.container = this.layoutService.container, this.setContainer(this.container, 1)), this.contextView.show(e);
            const n = Object(v.i)(() => {
                this.currentViewDisposable === n && this.hideContextView()
            });
            return this.currentViewDisposable = n, n
        }
        getContextViewElement() {
            return this.contextView.getViewElement()
        }
        layout() {
            this.contextView.layout()
        }
        hideContextView(e) {
            this.contextView.hide(e)
        }
    };
    fc = t([ae(0, gc)], fc);
    const mc = Object(_.c)("dialogService");
    var vc = i(123);
    class bc {
        constructor(e) {
            this.incoming = new Map, this.outgoing = new Map, this.data = e
        }
    }
    class _c {
        constructor(e) {
            this._hashFn = e, this._nodes = new Map
        }
        roots() {
            const e = [];
            for (var t of this._nodes.values()) 0 === t.outgoing.size && e.push(t);
            return e
        }
        insertEdge(e, t) {
            const i = this.lookupOrInsertNode(e),
                n = this.lookupOrInsertNode(t);
            i.outgoing.set(this._hashFn(t), n), n.incoming.set(this._hashFn(e), i)
        }
        removeNode(e) {
            var t, i = this._hashFn(e);
            for (t of (this._nodes.delete(i), this._nodes.values())) t.outgoing.delete(i), t.incoming.delete(i)
        }
        lookupOrInsertNode(e) {
            var t = this._hashFn(e);
            let i = this._nodes.get(t);
            return i || (i = new bc(e), this._nodes.set(t, i)), i
        }
        isEmpty() {
            return 0 === this._nodes.size
        }
        toString() {
            let e = [];
            for (var [t, i] of this._nodes) e.push(`${t}, (incoming)[${[...i.incoming.keys()].join(", ")}], (outgoing)[${[...i.outgoing.keys()].join(",")}]`);
            return e.join("\n")
        }
        findCycleSlow() {
            for (var [e, t] of this._nodes)
                if (e = new Set([e]), e = this._findCycle(t, e)) return e
        }
        _findCycle(e, t) {
            for (var [i, n] of e.outgoing) {
                if (t.has(i)) return [...t, i].join(" -> ");
                if (t.add(i), n = this._findCycle(n, t)) return n;
                t.delete(i)
            }
        }
    }
    class wc extends Error {
        constructor(e) {
            var t;
            super("cyclic dependency between services"), this.message = null !== (t = e.findCycleSlow()) && void 0 !== t ? t : "UNABLE to detect cycle, dumping graph: \n" + e.toString()
        }
    }
    class yc {
        constructor(e = new Us, t = !1, i) {
            this._activeInstantiations = new Set, this._services = e, this._strict = t, this._parent = i, this._services.set(_.a, this)
        }
        createChild(e) {
            return new yc(e, this._strict, this)
        }
        invokeFunction(e, ...t) {
            let i = Cc.traceInvocation(e),
                n = !1;
            try {
                return e({
                    get: (e, t) => {
                        if (n) throw Object(se.d)("service accessor is only valid during the invocation of its target method");
                        var r = this._getOrCreateServiceInstance(e, i);
                        if (!r && t !== _.d) throw new Error(`[invokeFunction] unknown service '${e}'`);
                        return r
                    }
                }, ...t)
            } finally {
                n = !0, i.stop()
            }
        }
        createInstance(e, ...t) {
            let i, n;
            return n = e instanceof vc.a ? (i = Cc.traceCreation(e.ctor), this._createInstance(e.ctor, e.staticArguments.concat(t), i)) : (i = Cc.traceCreation(e), this._createInstance(e, t, i)), i.stop(), n
        }
        _createInstance(e, t = [], i) {
            var n = _.b.getServiceDependencies(e).sort((e, t) => e.index - t.index);
            let r = [];
            for (const t of n) {
                var o = this._getOrCreateServiceInstance(t.id, i);
                if (!o && this._strict && !t.optional) throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`);
                r.push(o)
            }
            var s = 0 < n.length ? n[0].index : t.length;
            return t.length !== s && (console.warn(`[createInstance] First service dependency of ${e.name} at position ${s+1} conflicts with ${t.length} static arguments`), t = 0 < (n = s - t.length) ? t.concat(new Array(n)) : t.slice(0, s)), new e(...t, ...r)
        }
        _setServiceInstance(e, t) {
            if (this._services.get(e) instanceof vc.a) this._services.set(e, t);
            else {
                if (!this._parent) throw new Error("illegalState - setting UNKNOWN service instance");
                this._parent._setServiceInstance(e, t)
            }
        }
        _getServiceInstanceOrDescriptor(e) {
            var t = this._services.get(e);
            return !t && this._parent ? this._parent._getServiceInstanceOrDescriptor(e) : t
        }
        _getOrCreateServiceInstance(e, t) {
            var i = this._getServiceInstanceOrDescriptor(e);
            return i instanceof vc.a ? this._safeCreateAndCacheServiceInstance(e, i, t.branch(e, !0)) : (t.branch(e, !1), i)
        }
        _safeCreateAndCacheServiceInstance(e, t, i) {
            if (this._activeInstantiations.has(e)) throw new Error(`illegal state - RECURSIVELY instantiating service '${e}'`);
            this._activeInstantiations.add(e);
            try {
                return this._createAndCacheServiceInstance(e, t, i)
            } finally {
                this._activeInstantiations.delete(e)
            }
        }
        _createAndCacheServiceInstance(e, t, i) {
            const n = new _c(e => e.id.toString());
            let r = 0;
            const o = [{
                id: e,
                desc: t,
                _trace: i
            }];
            for (; o.length;) {
                const t = o.pop();
                if (n.lookupOrInsertNode(t), 1e3 < r++) throw new wc(n);
                for (var s of _.b.getServiceDependencies(t.desc.ctor)) {
                    var a = this._getServiceInstanceOrDescriptor(s.id);
                    a || s.optional || console.warn(`[createInstance] ${e} depends on ${s.id} which is NOT registered.`), a instanceof vc.a && (s = {
                        id: s.id,
                        desc: a,
                        _trace: t._trace.branch(s.id, !0)
                    }, n.insertEdge(t, s), o.push(s))
                }
            }
            for (;;) {
                var l, d, c = n.roots();
                if (0 === c.length) {
                    if (!n.isEmpty()) throw new wc(n);
                    break
                }
                for ({
                        data: l
                    } of c) this._getServiceInstanceOrDescriptor(l.id) instanceof vc.a && (d = this._createServiceInstanceWithOwner(l.id, l.desc.ctor, l.desc.staticArguments, l.desc.supportsDelayedInstantiation, l._trace), this._setServiceInstance(l.id, d)), n.removeNode(l)
            }
            return this._getServiceInstanceOrDescriptor(e)
        }
        _createServiceInstanceWithOwner(e, t, i = [], n, r) {
            if (this._services.get(e) instanceof vc.a) return this._createServiceInstance(t, i, n, r);
            if (this._parent) return this._parent._createServiceInstanceWithOwner(e, t, i, n, r);
            throw new Error("illegalState - creating UNKNOWN service instance " + t.name)
        }
        _createServiceInstance(e, t = [], i, n) {
            if (i) {
                const i = new q.b(() => this._createInstance(e, t, n));
                return new Proxy(Object.create(null), {
                    get(e, t) {
                        if (t in e) return e[t];
                        var n = i.value;
                        let r = n[t];
                        return "function" != typeof r || (r = r.bind(n), e[t] = r), r
                    },
                    set: (e, t, n) => (i.value[t] = n, !0)
                })
            }
            return this._createInstance(e, t, n)
        }
    }
    class Cc {
        constructor(e, t) {
            this.type = e, this.name = t, this._start = Date.now(), this._dep = []
        }
        static traceInvocation(e) {
            return Cc._None
        }
        static traceCreation(e) {
            return Cc._None
        }
        branch(e, t) {
            var i = new Cc(2, e.toString());
            return this._dep.push([e, t, i]), i
        }
        stop() {
            let e = Date.now() - this._start;
            Cc._totals += e;
            let t = !1,
                i = [`${0===this.type?"CREATE":"CALL"} ${this.name}`, "" + function e(i, n) {
                    let r = [];
                    var o, s, a, l, d = new Array(i + 1).join("\t");
                    for ([o, s, a] of n._dep) s && a ? (t = !0, r.push(`${d}CREATES -> ${o}`), (l = e(i + 1, a)) && r.push(l)) : r.push(`${d}uses -> ${o}`);
                    return r.join("\n")
                }(1, this), `DONE, took ${e.toFixed(2)}ms (grand total ${Cc._totals.toFixed(2)}ms)`];
            (2 < e || t) && console.log(i.join("\n"))
        }
    }
    Cc._None = new class extends Cc {
        constructor() {
            super(-1, null)
        }
        stop() {}
        branch() {
            return this
        }
    }, Cc._totals = 0;
    const xc = Object(_.c)("labelService");
    i(241);
    var Sc = i(53);
    class kc {
        constructor(e) {
            this.spliceables = e
        }
        splice(e, t, i) {
            this.spliceables.forEach(n => n.splice(e, t, i))
        }
    }
    gi = i(64);
    var Lc = i(100);
    class Oc extends Error {
        constructor(e, t) {
            super(`ListError [${e}] ${t}`)
        }
    }
    var Ec = i(108);

    function Nc(e, t) {
        const i = [];
        for (var n of t)
            if (!(e.start >= n.range.end)) {
                if (e.end < n.range.start) break;
                var r = Rd.intersect(e, n.range);
                Rd.isEmpty(r) || i.push({
                    range: r,
                    size: n.size
                })
            } return i
    }

    function Dc({
        start: e,
        end: t
    }, i) {
        return {
            start: e + i,
            end: t + i
        }
    }
    class Ic {
        constructor() {
            this.groups = [], this._size = 0
        }
        splice(e, t, i = []) {
            const n = i.length - t;
            var r = Nc({
                start: 0,
                end: e
            }, this.groups);
            t = Nc({
                start: e + t,
                end: Number.POSITIVE_INFINITY
            }, this.groups).map(e => ({
                range: Dc(e.range, n),
                size: e.size
            })), i = i.map((t, i) => ({
                range: {
                    start: e + i,
                    end: e + i + 1
                },
                size: t.size
            }));
            this.groups = function(...e) {
                return function(e) {
                    const t = [];
                    let i = null;
                    for (var n of e) {
                        var r = n.range.start,
                            o = n.range.end;
                        n = n.size;
                        i && n === i.size ? i.range.end = o : (i = {
                            range: {
                                start: r,
                                end: o
                            },
                            size: n
                        }, t.push(i))
                    }
                    return t
                }(e.reduce((e, t) => e.concat(t), []))
            }(r, i, t), this._size = this.groups.reduce((e, t) => e + t.size * (t.range.end - t.range.start), 0)
        }
        get count() {
            var e = this.groups.length;
            return e ? this.groups[e - 1].range.end : 0
        }
        get size() {
            return this._size
        }
        indexAt(e) {
            if (e < 0) return -1;
            let t = 0,
                i = 0;
            for (var n of this.groups) {
                var r = n.range.end - n.range.start,
                    o = i + r * n.size;
                if (e < o) return t + Math.floor((e - i) / n.size);
                t += r, i = o
            }
            return t
        }
        indexAfter(e) {
            return Math.min(this.indexAt(e) + 1, this.count)
        }
        positionAt(e) {
            if (e < 0) return -1;
            let t = 0,
                i = 0;
            for (var n of this.groups) {
                var r = n.range.end - n.range.start,
                    o = i + r;
                if (e < o) return t + (e - i) * n.size;
                t += r * n.size, i = o
            }
            return -1
        }
    }
    class Tc {
        constructor(e) {
            this.renderers = e, this.cache = new Map
        }
        alloc(e) {
            let t = this.getTemplateCache(e).pop();
            if (!t) {
                var i = Object(s.a)(".monaco-list-row");
                t = {
                    domNode: i,
                    templateId: e,
                    templateData: this.getRenderer(e).renderTemplate(i)
                }
            }
            return t
        }
        release(e) {
            e && this.releaseRow(e)
        }
        releaseRow(e) {
            const {
                domNode: t,
                templateId: i
            } = e;
            t && (t.classList.remove("scrolling"), function(e) {
                try {
                    e.parentElement && e.parentElement.removeChild(e)
                } catch (e) {}
            }(t));
            this.getTemplateCache(i).push(e)
        }
        getTemplateCache(e) {
            let t = this.cache.get(e);
            return t || (t = [], this.cache.set(e, t)), t
        }
        dispose() {
            this.cache.forEach((e, t) => {
                for (const i of e) {
                    this.getRenderer(t).disposeTemplate(i.templateData), i.templateData = null
                }
            }), this.cache.clear()
        }
        getRenderer(e) {
            var t = this.renderers.get(e);
            if (!t) throw new Error("No renderer found for " + e);
            return t
        }
    }
    S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    };
    const Mc = {
        useShadows: !0,
        verticalScrollMode: 1,
        setRowLineHeight: !0,
        setRowHeight: !0,
        supportDynamicHeights: !1,
        dnd: {
            getDragElements: e => [e],
            getDragURI: () => null,
            onDragStart() {},
            onDragOver: () => !1,
            drop() {}
        },
        horizontalScrolling: !1,
        transformOptimization: !0,
        alwaysConsumeMouseWheel: !0
    };
    class Pc {
        constructor(e) {
            this.elements = e
        }
        update() {}
        getData() {
            return this.elements
        }
    }
    class Ac {
        constructor(e) {
            this.elements = e
        }
        update() {}
        getData() {
            return this.elements
        }
    }
    class Rc {
        constructor() {
            this.types = [], this.files = []
        }
        update(e) {
            if (e.types && this.types.splice(0, this.types.length, ...e.types), e.files) {
                this.files.splice(0, this.files.length);
                for (let i = 0; i < e.files.length; i++) {
                    var t = e.files.item(i);
                    t && (t.size || t.type) && this.files.push(t)
                }
            }
        }
        getData() {
            return {
                types: this.types,
                files: this.files
            }
        }
    }
    class Fc {
        constructor(e) {
            null != e && e.getSetSize ? this.getSetSize = e.getSetSize.bind(e) : this.getSetSize = (e, t, i) => i, null != e && e.getPosInSet ? this.getPosInSet = e.getPosInSet.bind(e) : this.getPosInSet = (e, t) => t + 1, null != e && e.getRole ? this.getRole = e.getRole.bind(e) : this.getRole = e => "listitem", null != e && e.isChecked ? this.isChecked = e.isChecked.bind(e) : this.isChecked = e => {}
        }
    }
    class jc {
        constructor(e, t, i, n = Mc) {
            if (this.virtualDelegate = t, this.domId = "list_id_" + ++jc.InstanceCount, this.renderers = new Map, this.renderWidth = 0, this._scrollHeight = 0, this.scrollableElementUpdateDisposable = null, this.scrollableElementWidthDelayer = new q.a(50), this.splicing = !1, this.dragOverAnimationStopDisposable = v.a.None, this.dragOverMouseY = 0, this.canDrop = !1, this.currentDragFeedbackDisposable = v.a.None, this.onDragLeaveTimeout = v.a.None, this.disposables = new v.b, this._onDidChangeContentHeight = new D.b, this._horizontalScrolling = !1, n.horizontalScrolling && n.supportDynamicHeights) throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");
            this.items = [], this.itemId = 0, this.rangeMap = new Ic;
            for (const e of i) this.renderers.set(e.templateId, e);
            this.cache = this.disposables.add(new Tc(this.renderers)), this.lastRenderTop = 0, this.lastRenderHeight = 0, this.domNode = document.createElement("div"), this.domNode.className = "monaco-list", this.domNode.classList.add(this.domId), this.domNode.tabIndex = 0, this.domNode.classList.toggle("mouse-support", "boolean" != typeof n.mouseSupport || n.mouseSupport), this._horizontalScrolling = Object(I.d)(n, e => e.horizontalScrolling, Mc.horizontalScrolling), this.domNode.classList.toggle("horizontal-scrolling", this._horizontalScrolling), this.additionalScrollHeight = void 0 === n.additionalScrollHeight ? 0 : n.additionalScrollHeight, this.accessibilityProvider = new Fc(n.accessibilityProvider), this.rowsContainer = document.createElement("div"), this.rowsContainer.className = "monaco-list-rows", Object(I.d)(n, e => e.transformOptimization, Mc.transformOptimization) && (this.rowsContainer.style.transform = "translate3d(0px, 0px, 0px)"), this.disposables.add(Ki.b.addTarget(this.rowsContainer)), this.scrollable = new bs.a(Object(I.d)(n, e => e.smoothScrolling, !1) ? 125 : 0, e => Object(s.R)(e)), this.scrollableElement = this.disposables.add(new Dr.c(this.rowsContainer, {
                alwaysConsumeMouseWheel: Object(I.d)(n, e => e.alwaysConsumeMouseWheel, Mc.alwaysConsumeMouseWheel),
                horizontal: 1,
                vertical: Object(I.d)(n, e => e.verticalScrollMode, Mc.verticalScrollMode),
                useShadows: Object(I.d)(n, e => e.useShadows, Mc.useShadows),
                mouseWheelScrollSensitivity: n.mouseWheelScrollSensitivity,
                fastScrollSensitivity: n.fastScrollSensitivity
            }, this.scrollable)), this.domNode.appendChild(this.scrollableElement.getDomNode()), e.appendChild(this.domNode), this.scrollableElement.onScroll(this.onScroll, this, this.disposables), this.disposables.add(Object(s.g)(this.rowsContainer, Ki.a.Change, e => this.onTouchChange(e))), this.disposables.add(Object(s.g)(this.scrollableElement.getDomNode(), "scroll", e => e.target.scrollTop = 0)), this.disposables.add(Object(s.g)(this.domNode, "dragover", e => this.onDragOver(this.toDragEvent(e)))), this.disposables.add(Object(s.g)(this.domNode, "drop", e => this.onDrop(this.toDragEvent(e)))), this.disposables.add(Object(s.g)(this.domNode, "dragleave", e => this.onDragLeave(this.toDragEvent(e)))), this.disposables.add(Object(s.g)(this.domNode, "dragend", e => this.onDragEnd(e))), this.setRowLineHeight = Object(I.d)(n, e => e.setRowLineHeight, Mc.setRowLineHeight), this.setRowHeight = Object(I.d)(n, e => e.setRowHeight, Mc.setRowHeight), this.supportDynamicHeights = Object(I.d)(n, e => e.supportDynamicHeights, Mc.supportDynamicHeights), this.dnd = Object(I.d)(n, e => e.dnd, Mc.dnd), this.layout()
        }
        get contentHeight() {
            return this.rangeMap.size
        }
        get horizontalScrolling() {
            return this._horizontalScrolling
        }
        set horizontalScrolling(e) {
            if (e !== this._horizontalScrolling) {
                if (e && this.supportDynamicHeights) throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");
                if (this._horizontalScrolling = e, this.domNode.classList.toggle("horizontal-scrolling", this._horizontalScrolling), this._horizontalScrolling) {
                    for (const e of this.items) this.measureItemWidth(e);
                    this.updateScrollWidth(), this.scrollableElement.setScrollDimensions({
                        width: Object(s.z)(this.domNode)
                    }), this.rowsContainer.style.width = Math.max(this.scrollWidth || 0, this.renderWidth) + "px"
                } else this.scrollableElementWidthDelayer.cancel(), this.scrollableElement.setScrollDimensions({
                    width: this.renderWidth,
                    scrollWidth: this.renderWidth
                }), this.rowsContainer.style.width = ""
            }
        }
        updateOptions(e) {
            void 0 !== e.additionalScrollHeight && (this.additionalScrollHeight = e.additionalScrollHeight, this.scrollableElement.setScrollDimensions({
                scrollHeight: this.scrollHeight
            })), void 0 !== e.smoothScrolling && this.scrollable.setSmoothScrollDuration(e.smoothScrolling ? 125 : 0), void 0 !== e.horizontalScrolling && (this.horizontalScrolling = e.horizontalScrolling), void 0 !== e.mouseWheelScrollSensitivity && this.scrollableElement.updateOptions({
                mouseWheelScrollSensitivity: e.mouseWheelScrollSensitivity
            }), void 0 !== e.fastScrollSensitivity && this.scrollableElement.updateOptions({
                fastScrollSensitivity: e.fastScrollSensitivity
            })
        }
        splice(e, t, i = []) {
            if (this.splicing) throw new Error("Can't run recursive splices.");
            this.splicing = !0;
            try {
                return this._splice(e, t, i)
            } finally {
                this.splicing = !1, this._onDidChangeContentHeight.fire(this.contentHeight)
            }
        }
        _splice(e, t, i = []) {
            var n = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight),
                r = Rd.intersect(n, {
                    start: e,
                    end: e + t
                });
            const o = new Map;
            for (let e = r.start; e < r.end; e++) {
                const t = this.items[e];
                if (t.dragStartDisposable.dispose(), t.row) {
                    let i = o.get(t.templateId);
                    i || (i = [], o.set(t.templateId, i));
                    const n = this.renderers.get(t.templateId);
                    n && n.disposeElement && n.disposeElement(t.element, e, t.row.templateData, t.size), i.push(t.row)
                }
                t.row = null
            }
            var s = {
                    start: e + t,
                    end: this.items.length
                },
                a = Rd.intersect(s, n);
            const l = Rd.relativeComplement(s, n);
            let d;
            n = i.map(e => ({
                id: String(this.itemId++),
                element: e,
                templateId: this.virtualDelegate.getTemplateId(e),
                size: this.virtualDelegate.getHeight(e),
                width: void 0,
                hasDynamicHeight: !!this.virtualDelegate.hasDynamicHeight && this.virtualDelegate.hasDynamicHeight(e),
                lastDynamicHeightWidth: void 0,
                row: null,
                uri: void 0,
                dropTarget: !1,
                dragStartDisposable: v.a.None
            })), 0 === e && t >= this.items.length ? (this.rangeMap = new Ic, this.rangeMap.splice(0, 0, n), d = this.items, this.items = n) : (this.rangeMap.splice(e, t, n), d = this.items.splice(e, t, ...n));
            const c = i.length - t,
                h = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);
            a = Dc(a, c);
            var u = Rd.intersect(h, a);
            for (let e = u.start; e < u.end; e++) this.updateItemInDOM(this.items[e], e);
            for (const e of Rd.relativeComplement(a, h))
                for (let t = e.start; t < e.end; t++) this.removeItemFromDOM(t);
            a = l.map(e => Dc(e, c));
            a = [{
                start: e,
                end: e + i.length
            }, ...a].map(e => Rd.intersect(h, e));
            var p = this.getNextToLastElement(a);
            for (const e of a)
                for (let t = e.start; t < e.end; t++) {
                    var g = this.items[t];
                    const e = o.get(g.templateId);
                    g = null == e ? void 0 : e.pop(), this.insertItemInDOM(t, p, g)
                }
            for (const e of o.values())
                for (const t of e) this.cache.release(t);
            return this.eventuallyUpdateScrollDimensions(), this.supportDynamicHeights && this._rerender(this.scrollTop, this.renderHeight), d.map(e => e.element)
        }
        eventuallyUpdateScrollDimensions() {
            this._scrollHeight = this.contentHeight, this.rowsContainer.style.height = this._scrollHeight + "px", this.scrollableElementUpdateDisposable || (this.scrollableElementUpdateDisposable = Object(s.R)(() => {
                this.scrollableElement.setScrollDimensions({
                    scrollHeight: this.scrollHeight
                }), this.updateScrollWidth(), this.scrollableElementUpdateDisposable = null
            }))
        }
        eventuallyUpdateScrollWidth() {
            this.horizontalScrolling ? this.scrollableElementWidthDelayer.trigger(() => this.updateScrollWidth()) : this.scrollableElementWidthDelayer.cancel()
        }
        updateScrollWidth() {
            if (this.horizontalScrolling) {
                let e = 0;
                for (const t of this.items) void 0 !== t.width && (e = Math.max(e, t.width));
                this.scrollWidth = e, this.scrollableElement.setScrollDimensions({
                    scrollWidth: 0 === e ? 0 : e + 10
                })
            }
        }
        rerender() {
            if (this.supportDynamicHeights) {
                for (const e of this.items) e.lastDynamicHeightWidth = void 0;
                this._rerender(this.lastRenderTop, this.lastRenderHeight)
            }
        }
        get length() {
            return this.items.length
        }
        get renderHeight() {
            return this.scrollableElement.getScrollDimensions().height
        }
        element(e) {
            return this.items[e].element
        }
        domElement(e) {
            return (e = this.items[e].row) && e.domNode
        }
        elementHeight(e) {
            return this.items[e].size
        }
        elementTop(e) {
            return this.rangeMap.positionAt(e)
        }
        indexAt(e) {
            return this.rangeMap.indexAt(e)
        }
        indexAfter(e) {
            return this.rangeMap.indexAfter(e)
        }
        layout(e, t) {
            let i = {
                height: "number" == typeof e ? e : Object(s.y)(this.domNode)
            };
            this.scrollableElementUpdateDisposable && (this.scrollableElementUpdateDisposable.dispose(), this.scrollableElementUpdateDisposable = null, i.scrollHeight = this.scrollHeight), this.scrollableElement.setScrollDimensions(i), void 0 !== t && (this.renderWidth = t, this.supportDynamicHeights && this._rerender(this.scrollTop, this.renderHeight)), this.horizontalScrolling && this.scrollableElement.setScrollDimensions({
                width: "number" == typeof t ? t : Object(s.z)(this.domNode)
            })
        }
        render(e, t, i, n, r, o = !1) {
            var s = this.getRenderRange(t, i),
                a = Rd.relativeComplement(s, e),
                l = Rd.relativeComplement(e, s),
                d = this.getNextToLastElement(a);
            if (o) {
                var c = Rd.intersect(e, s);
                for (let e = c.start; e < c.end; e++) this.updateItemInDOM(this.items[e], e)
            }
            for (const e of a)
                for (let t = e.start; t < e.end; t++) this.insertItemInDOM(t, d);
            for (const e of l)
                for (let t = e.start; t < e.end; t++) this.removeItemFromDOM(t);
            void 0 !== n && (this.rowsContainer.style.left = `-${n}px`), this.rowsContainer.style.top = `-${t}px`, this.horizontalScrolling && void 0 !== r && (this.rowsContainer.style.width = Math.max(r, this.renderWidth) + "px"), this.lastRenderTop = t, this.lastRenderHeight = i
        }
        insertItemInDOM(e, t, i) {
            const n = this.items[e];
            n.row || (n.row = null != i ? i : this.cache.alloc(n.templateId)), i = this.accessibilityProvider.getRole(n.element) || "listitem", n.row.domNode.setAttribute("role", i), void 0 !== (i = this.accessibilityProvider.isChecked(n.element)) && n.row.domNode.setAttribute("aria-checked", String(!!i)), n.row.domNode.parentElement || (t ? this.rowsContainer.insertBefore(n.row.domNode, t) : this.rowsContainer.appendChild(n.row.domNode)), this.updateItemInDOM(n, e);
            const r = this.renderers.get(n.templateId);
            if (!r) throw new Error("No renderer found for template id " + n.templateId);
            r && r.renderElement(n.element, e, n.row.templateData, n.size);
            const o = this.dnd.getDragURI(n.element);
            n.dragStartDisposable.dispose(), n.row.domNode.draggable = !!o, o && (n.dragStartDisposable = Object(s.g)(n.row.domNode, "dragstart", e => this.onDragStart(n.element, o, e))), this.horizontalScrolling && (this.measureItemWidth(n), this.eventuallyUpdateScrollWidth())
        }
        measureItemWidth(e) {
            var t;
            e.row && e.row.domNode && (e.row.domNode.style.width = Ri.g ? "-moz-fit-content" : "fit-content", e.width = Object(s.z)(e.row.domNode), (t = window.getComputedStyle(e.row.domNode)).paddingLeft && (e.width += parseFloat(t.paddingLeft)), t.paddingRight && (e.width += parseFloat(t.paddingRight)), e.row.domNode.style.width = "")
        }
        updateItemInDOM(e, t) {
            e.row.domNode.style.top = this.elementTop(t) + "px", this.setRowHeight && (e.row.domNode.style.height = e.size + "px"), this.setRowLineHeight && (e.row.domNode.style.lineHeight = e.size + "px"), e.row.domNode.setAttribute("data-index", "" + t), e.row.domNode.setAttribute("data-last-element", t === this.length - 1 ? "true" : "false"), e.row.domNode.setAttribute("data-parity", t % 2 == 0 ? "even" : "odd"), e.row.domNode.setAttribute("aria-setsize", String(this.accessibilityProvider.getSetSize(e.element, t, this.length))), e.row.domNode.setAttribute("aria-posinset", String(this.accessibilityProvider.getPosInSet(e.element, t))), e.row.domNode.setAttribute("id", this.getElementDomId(t)), e.row.domNode.classList.toggle("drop-target", e.dropTarget)
        }
        removeItemFromDOM(e) {
            const t = this.items[e];
            if (t.dragStartDisposable.dispose(), t.row) {
                const i = this.renderers.get(t.templateId);
                i && i.disposeElement && i.disposeElement(t.element, e, t.row.templateData, t.size), this.cache.release(t.row), t.row = null
            }
            this.horizontalScrolling && this.eventuallyUpdateScrollWidth()
        }
        getScrollTop() {
            return this.scrollableElement.getScrollPosition().scrollTop
        }
        setScrollTop(e, t) {
            this.scrollableElementUpdateDisposable && (this.scrollableElementUpdateDisposable.dispose(), this.scrollableElementUpdateDisposable = null, this.scrollableElement.setScrollDimensions({
                scrollHeight: this.scrollHeight
            })), this.scrollableElement.setScrollPosition({
                scrollTop: e,
                reuseAnimation: t
            })
        }
        get scrollTop() {
            return this.getScrollTop()
        }
        set scrollTop(e) {
            this.setScrollTop(e)
        }
        get scrollHeight() {
            return this._scrollHeight + (this.horizontalScrolling ? 10 : 0) + this.additionalScrollHeight
        }
        get onMouseClick() {
            return D.c.map(this.disposables.add(new Sc.a(this.domNode, "click")).event, e => this.toMouseEvent(e))
        }
        get onMouseDblClick() {
            return D.c.map(this.disposables.add(new Sc.a(this.domNode, "dblclick")).event, e => this.toMouseEvent(e))
        }
        get onMouseMiddleClick() {
            return D.c.filter(D.c.map(this.disposables.add(new Sc.a(this.domNode, "auxclick")).event, e => this.toMouseEvent(e)), e => 1 === e.browserEvent.button)
        }
        get onMouseDown() {
            return D.c.map(this.disposables.add(new Sc.a(this.domNode, "mousedown")).event, e => this.toMouseEvent(e))
        }
        get onContextMenu() {
            return D.c.any(D.c.map(this.disposables.add(new Sc.a(this.domNode, "contextmenu")).event, e => this.toMouseEvent(e)), D.c.map(this.disposables.add(new Sc.a(this.domNode, Ki.a.Contextmenu)).event, e => this.toGestureEvent(e)))
        }
        get onTouchStart() {
            return D.c.map(this.disposables.add(new Sc.a(this.domNode, "touchstart")).event, e => this.toTouchEvent(e))
        }
        get onTap() {
            return D.c.map(this.disposables.add(new Sc.a(this.rowsContainer, Ki.a.Tap)).event, e => this.toGestureEvent(e))
        }
        toMouseEvent(e) {
            var t = this.getItemIndexFromEventTarget(e.target || null),
                i = void 0 === t ? void 0 : this.items[t];
            return {
                browserEvent: e,
                index: t,
                element: i && i.element
            }
        }
        toTouchEvent(e) {
            var t = this.getItemIndexFromEventTarget(e.target || null),
                i = void 0 === t ? void 0 : this.items[t];
            return {
                browserEvent: e,
                index: t,
                element: i && i.element
            }
        }
        toGestureEvent(e) {
            var t = this.getItemIndexFromEventTarget(e.initialTarget || null),
                i = void 0 === t ? void 0 : this.items[t];
            return {
                browserEvent: e,
                index: t,
                element: i && i.element
            }
        }
        toDragEvent(e) {
            var t = this.getItemIndexFromEventTarget(e.target || null),
                i = void 0 === t ? void 0 : this.items[t];
            return {
                browserEvent: e,
                index: t,
                element: i && i.element
            }
        }
        onScroll(e) {
            try {
                var t = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);
                this.render(t, e.scrollTop, e.height, e.scrollLeft, e.scrollWidth), this.supportDynamicHeights && this._rerender(e.scrollTop, e.height, e.inSmoothScrolling)
            } catch (t) {
                throw console.error("Got bad scroll event:", e), t
            }
        }
        onTouchChange(e) {
            e.preventDefault(), e.stopPropagation(), this.scrollTop -= e.translationY
        }
        onDragStart(e, t, i) {
            if (i.dataTransfer) {
                if (e = this.dnd.getDragElements(e), i.dataTransfer.effectAllowed = "copyMove", i.dataTransfer.setData(Ec.a.TEXT, t), i.dataTransfer.setDragImage) {
                    let t;
                    this.dnd.getDragLabel && (t = this.dnd.getDragLabel(e, i)), void 0 === t && (t = String(e.length));
                    const n = Object(s.a)(".monaco-drag-image");
                    n.textContent = t, document.body.appendChild(n), i.dataTransfer.setDragImage(n, -10, -10), setTimeout(() => document.body.removeChild(n), 0)
                }
                this.currentDragData = new Pc(e), Ec.c.CurrentDragAndDropData = new Ac(e), this.dnd.onDragStart && this.dnd.onDragStart(this.currentDragData, i)
            }
        }
        onDragOver(e) {
            if (e.browserEvent.preventDefault(), this.onDragLeaveTimeout.dispose(), Ec.c.CurrentDragAndDropData && "vscode-ui" === Ec.c.CurrentDragAndDropData.getData()) return !1;
            if (this.setupDragAndDropScrollTopAnimation(e.browserEvent), !e.browserEvent.dataTransfer) return !1;
            if (!this.currentDragData)
                if (Ec.c.CurrentDragAndDropData) this.currentDragData = Ec.c.CurrentDragAndDropData;
                else {
                    if (!e.browserEvent.dataTransfer.types) return !1;
                    this.currentDragData = new Rc
                } var t = this.dnd.onDragOver(this.currentDragData, e.element, e.index, e.browserEvent);
            if (this.canDrop = "boolean" == typeof t ? t : t.accept, !this.canDrop) return this.currentDragFeedback = void 0, this.currentDragFeedbackDisposable.dispose(), !1;
            let i;
            if (e.browserEvent.dataTransfer.dropEffect = "boolean" != typeof t && 0 === t.effect ? "copy" : "move", i = "boolean" != typeof t && t.feedback ? t.feedback : void 0 === e.index ? [-1] : [e.index], i = Object(ne.f)(i).filter(e => -1 <= e && e < this.length).sort((e, t) => e - t), i = -1 === i[0] ? [-1] : i, t = this.currentDragFeedback, e = i, Array.isArray(t) && Array.isArray(e) ? Object(ne.g)(t, e) : t === e) return !0;
            if (this.currentDragFeedback = i, this.currentDragFeedbackDisposable.dispose(), -1 === i[0]) this.domNode.classList.add("drop-target"), this.rowsContainer.classList.add("drop-target"), this.currentDragFeedbackDisposable = Object(v.i)(() => {
                this.domNode.classList.remove("drop-target"), this.rowsContainer.classList.remove("drop-target")
            });
            else {
                for (const e of i) {
                    const t = this.items[e];
                    t.dropTarget = !0, t.row && t.row.domNode.classList.add("drop-target")
                }
                this.currentDragFeedbackDisposable = Object(v.i)(() => {
                    for (const e of i) {
                        const t = this.items[e];
                        t.dropTarget = !1, t.row && t.row.domNode.classList.remove("drop-target")
                    }
                })
            }
            return !0
        }
        onDragLeave(e) {
            var t, i;
            this.onDragLeaveTimeout.dispose(), this.onDragLeaveTimeout = Object(q.i)(() => this.clearDragOverFeedback(), 100), this.currentDragData && null !== (i = (t = this.dnd).onDragLeave) && void 0 !== i && i.call(t, this.currentDragData, e.element, e.index, e.browserEvent)
        }
        onDrop(e) {
            if (this.canDrop) {
                const t = this.currentDragData;
                this.teardownDragAndDropScrollTopAnimation(), this.clearDragOverFeedback(), this.currentDragData = void 0, Ec.c.CurrentDragAndDropData = void 0, t && e.browserEvent.dataTransfer && (e.browserEvent.preventDefault(), t.update(e.browserEvent.dataTransfer), this.dnd.drop(t, e.element, e.index, e.browserEvent))
            }
        }
        onDragEnd(e) {
            this.canDrop = !1, this.teardownDragAndDropScrollTopAnimation(), this.clearDragOverFeedback(), this.currentDragData = void 0, Ec.c.CurrentDragAndDropData = void 0, this.dnd.onDragEnd && this.dnd.onDragEnd(e)
        }
        clearDragOverFeedback() {
            this.currentDragFeedback = void 0, this.currentDragFeedbackDisposable.dispose(), this.currentDragFeedbackDisposable = v.a.None
        }
        setupDragAndDropScrollTopAnimation(e) {
            var t;
            this.dragOverAnimationDisposable || (t = Object(s.D)(this.domNode).top, this.dragOverAnimationDisposable = Object(s.m)(this.animateDragAndDropScrollTop.bind(this, t))), this.dragOverAnimationStopDisposable.dispose(), this.dragOverAnimationStopDisposable = Object(q.i)(() => {
                this.dragOverAnimationDisposable && (this.dragOverAnimationDisposable.dispose(), this.dragOverAnimationDisposable = void 0)
            }, 1e3), this.dragOverMouseY = e.pageY
        }
        animateDragAndDropScrollTop(e) {
            var t;
            void 0 !== this.dragOverMouseY && (t = this.dragOverMouseY - e, e = this.renderHeight - 35, t < 35 ? this.scrollTop += Math.max(-14, Math.floor(.3 * (t - 35))) : e < t && (this.scrollTop += Math.min(14, Math.floor(.3 * (t - e)))))
        }
        teardownDragAndDropScrollTopAnimation() {
            this.dragOverAnimationStopDisposable.dispose(), this.dragOverAnimationDisposable && (this.dragOverAnimationDisposable.dispose(), this.dragOverAnimationDisposable = void 0)
        }
        getItemIndexFromEventTarget(e) {
            const t = this.scrollableElement.getDomNode();
            let i = e;
            for (; i instanceof HTMLElement && i !== this.rowsContainer && t.contains(i);) {
                var n = i.getAttribute("data-index");
                if (n && (n = Number(n), !isNaN(n))) return n;
                i = i.parentElement
            }
        }
        getRenderRange(e, t) {
            return {
                start: this.rangeMap.indexAt(e),
                end: this.rangeMap.indexAfter(e + t - 1)
            }
        }
        _rerender(e, t, i) {
            var n = this.getRenderRange(e, t);
            let r, o;
            e === this.elementTop(n.start) ? (r = n.start, o = 0) : 1 < n.end - n.start && (r = n.start + 1, o = this.elementTop(r) - e);
            let s = 0;
            for (;;) {
                var a, l = this.getRenderRange(e, t);
                let h = !1;
                for (let e = l.start; e < l.end; e++) {
                    var d = this.probeDynamicHeight(e);
                    0 !== d && this.rangeMap.splice(e, 1, [this.items[e]]), s += d, h = h || 0 !== d
                }
                if (!h) {
                    0 !== s && this.eventuallyUpdateScrollDimensions();
                    for (const e of Rd.relativeComplement(n, l))
                        for (let t = e.start; t < e.end; t++) this.items[t].row && this.removeItemFromDOM(t);
                    for (const e of Rd.relativeComplement(l, n))
                        for (let t = e.start; t < e.end; t++) {
                            var c = (c = (c = t + 1) < this.items.length ? this.items[c].row : null) ? c.domNode : null;
                            this.insertItemInDOM(t, c)
                        }
                    for (let e = l.start; e < l.end; e++) this.items[e].row && this.updateItemInDOM(this.items[e], e);
                    return "number" == typeof r && (a = this.scrollable.getFutureScrollPosition().scrollTop - e, a = this.elementTop(r) - o + a, this.setScrollTop(a, i)), void this._onDidChangeContentHeight.fire(this.contentHeight)
                }
            }
        }
        probeDynamicHeight(e) {
            const t = this.items[e];
            if (this.virtualDelegate.getDynamicHeight) {
                var i = this.virtualDelegate.getDynamicHeight(t.element);
                if (null !== i) {
                    const e = t.size;
                    return t.size = i, t.lastDynamicHeightWidth = this.renderWidth, i - e
                }
            }
            if (!t.hasDynamicHeight || t.lastDynamicHeightWidth === this.renderWidth) return 0;
            if (this.virtualDelegate.hasDynamicHeight && !this.virtualDelegate.hasDynamicHeight(t.element)) return 0;
            const n = t.size;
            if (!this.setRowHeight && t.row) return i = t.row.domNode.offsetHeight, t.size = i, t.lastDynamicHeightWidth = this.renderWidth, i - n;
            const r = this.cache.alloc(t.templateId);
            r.domNode.style.height = "", this.rowsContainer.appendChild(r.domNode);
            const o = this.renderers.get(t.templateId);
            return o && (o.renderElement(t.element, e, r.templateData, void 0), o.disposeElement && o.disposeElement(t.element, e, r.templateData, void 0)), t.size = r.domNode.offsetHeight, this.virtualDelegate.setDynamicHeight && this.virtualDelegate.setDynamicHeight(t.element, t.size), t.lastDynamicHeightWidth = this.renderWidth, this.rowsContainer.removeChild(r.domNode), this.cache.release(r), t.size - n
        }
        getNextToLastElement(e) {
            return (e = e[e.length - 1]) && (e = this.items[e.end]) && e.row ? e.row.domNode : null
        }
        getElementDomId(e) {
            return `${this.domId}_${e}`
        }
        dispose() {
            if (this.items) {
                for (const e of this.items)
                    if (e.row) {
                        const t = this.renderers.get(e.row.templateId);
                        t && (t.disposeElement && t.disposeElement(e.element, -1, e.row.templateData, void 0), t.disposeTemplate(e.row.templateData))
                    } this.items = []
            }
            this.domNode && this.domNode.parentNode && this.domNode.parentNode.removeChild(this.domNode), Object(v.f)(this.disposables)
        }
    }
    jc.InstanceCount = 0, S([gi.a], jc.prototype, "onMouseClick", null), S([gi.a], jc.prototype, "onMouseDblClick", null), S([gi.a], jc.prototype, "onMouseMiddleClick", null), S([gi.a], jc.prototype, "onMouseDown", null), S([gi.a], jc.prototype, "onContextMenu", null), S([gi.a], jc.prototype, "onTouchStart", null), S([gi.a], jc.prototype, "onTap", null);
    x = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    };
    var Bc, Vc = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };
    class Wc {
        constructor(e) {
            this.trait = e, this.renderedElements = []
        }
        get templateId() {
            return "template:" + this.trait.trait
        }
        renderTemplate(e) {
            return e
        }
        renderElement(e, t, i) {
            var n = this.renderedElements.findIndex(e => e.templateData === i);
            if (0 <= n) {
                const e = this.renderedElements[n];
                this.trait.unrender(i), e.index = t
            } else this.renderedElements.push({
                index: t,
                templateData: i
            });
            this.trait.renderIndex(t, i)
        }
        splice(e, t, i) {
            const n = [];
            for (const r of this.renderedElements) r.index < e ? n.push(r) : r.index >= e + t && n.push({
                index: r.index + i - t,
                templateData: r.templateData
            });
            this.renderedElements = n
        }
        renderIndexes(e) {
            for (var {
                    index: t,
                    templateData: i
                } of this.renderedElements) - 1 < e.indexOf(t) && this.trait.renderIndex(t, i)
        }
        disposeTemplate(e) {
            var t = this.renderedElements.findIndex(t => t.templateData === e);
            t < 0 || this.renderedElements.splice(t, 1)
        }
    }
    class zc {
        constructor(e) {
            this._trait = e, this.length = 0, this.indexes = [], this.sortedIndexes = [], this._onChange = new D.b, this.onChange = this._onChange.event
        }
        get trait() {
            return this._trait
        }
        get renderer() {
            return new Wc(this)
        }
        splice(e, t, i) {
            t = Math.max(0, Math.min(t, this.length - e));
            const n = i.length - t,
                r = e + t,
                o = [...this.sortedIndexes.filter(t => t < e), ...i.map((t, i) => t ? i + e : -1).filter(e => -1 !== e), ...this.sortedIndexes.filter(e => e >= r).map(e => e + n)];
            var s, a = this.length + n;
            0 < this.sortedIndexes.length && 0 === o.length && 0 < a && (s = null !== (s = this.sortedIndexes.find(t => e <= t)) && void 0 !== s ? s : a - 1, o.push(Math.min(s, a - 1))), this.renderer.splice(e, t, i.length), this._set(o, o), this.length = a
        }
        renderIndex(e, t) {
            t.classList.toggle(this._trait, this.contains(e))
        }
        unrender(e) {
            e.classList.remove(this._trait)
        }
        set(e, t) {
            return this._set(e, [...e].sort(oh), t)
        }
        _set(e, t, i) {
            var n = this.indexes,
                r = this.sortedIndexes;
            return this.indexes = e, this.sortedIndexes = t, r = rh(r, e), this.renderer.renderIndexes(r), this._onChange.fire({
                indexes: e,
                browserEvent: i
            }), n
        }
        get() {
            return this.indexes
        }
        contains(e) {
            return 0 <= Object(ne.d)(this.sortedIndexes, e, oh)
        }
        dispose() {
            Object(v.f)(this._onChange)
        }
    }
    x([gi.a], zc.prototype, "renderer", null);
    class Hc extends zc {
        constructor(e) {
            super("selected"), this.setAriaSelected = e
        }
        renderIndex(e, t) {
            super.renderIndex(e, t), this.setAriaSelected && (this.contains(e) ? t.setAttribute("aria-selected", "true") : t.setAttribute("aria-selected", "false"))
        }
    }
    class Uc {
        constructor(e, t, i) {
            this.trait = e, this.view = t, this.identityProvider = i
        }
        splice(e, t, i) {
            if (!this.identityProvider) return this.trait.splice(e, t, i.map(() => !1));
            const n = this.trait.get().map(e => this.identityProvider.getId(this.view.element(e)).toString());
            i = i.map(e => -1 < n.indexOf(this.identityProvider.getId(e).toString())), this.trait.splice(e, t, i)
        }
    }

    function Kc(e) {
        return "INPUT" === e.tagName || "TEXTAREA" === e.tagName
    }

    function $c(e) {
        return !!e.classList.contains("monaco-editor") || !e.classList.contains("monaco-list") && !!e.parentElement && $c(e.parentElement)
    }
    class qc {
        constructor(e, t, i) {
            this.list = e, this.view = t, this.disposables = new v.b, this.multipleSelectionDisposables = new v.b, this.onKeyDown.filter(e => 3 === e.keyCode).on(this.onEnter, this, this.disposables), this.onKeyDown.filter(e => 16 === e.keyCode).on(this.onUpArrow, this, this.disposables), this.onKeyDown.filter(e => 18 === e.keyCode).on(this.onDownArrow, this, this.disposables), this.onKeyDown.filter(e => 11 === e.keyCode).on(this.onPageUpArrow, this, this.disposables), this.onKeyDown.filter(e => 12 === e.keyCode).on(this.onPageDownArrow, this, this.disposables), this.onKeyDown.filter(e => 9 === e.keyCode).on(this.onEscape, this, this.disposables), !1 !== i.multipleSelectionSupport && this.onKeyDown.filter(e => (A.f ? e.metaKey : e.ctrlKey) && 31 === e.keyCode).on(this.onCtrlA, this, this.multipleSelectionDisposables)
        }
        get onKeyDown() {
            return D.c.chain(this.disposables.add(new Sc.a(this.view.domNode, "keydown")).event).filter(e => !Kc(e.target)).map(e => new gt.a(e))
        }
        updateOptions(e) {
            void 0 !== e.multipleSelectionSupport && (this.multipleSelectionDisposables.clear(), e.multipleSelectionSupport && this.onKeyDown.filter(e => (A.f ? e.metaKey : e.ctrlKey) && 31 === e.keyCode).on(this.onCtrlA, this, this.multipleSelectionDisposables))
        }
        onEnter(e) {
            e.preventDefault(), e.stopPropagation(), this.list.setSelection(this.list.getFocus(), e.browserEvent)
        }
        onUpArrow(e) {
            e.preventDefault(), e.stopPropagation(), this.list.focusPrevious(1, !1, e.browserEvent), e = this.list.getFocus()[0], this.list.setAnchor(e), this.list.reveal(e), this.view.domNode.focus()
        }
        onDownArrow(e) {
            e.preventDefault(), e.stopPropagation(), this.list.focusNext(1, !1, e.browserEvent), e = this.list.getFocus()[0], this.list.setAnchor(e), this.list.reveal(e), this.view.domNode.focus()
        }
        onPageUpArrow(e) {
            e.preventDefault(), e.stopPropagation(), this.list.focusPreviousPage(e.browserEvent), e = this.list.getFocus()[0], this.list.setAnchor(e), this.list.reveal(e), this.view.domNode.focus()
        }
        onPageDownArrow(e) {
            e.preventDefault(), e.stopPropagation(), this.list.focusNextPage(e.browserEvent), e = this.list.getFocus()[0], this.list.setAnchor(e), this.list.reveal(e), this.view.domNode.focus()
        }
        onCtrlA(e) {
            e.preventDefault(), e.stopPropagation(), this.list.setSelection(Object(ne.o)(this.list.length), e.browserEvent), this.list.setAnchor(void 0), this.view.domNode.focus()
        }
        onEscape(e) {
            this.list.getSelection().length && (e.preventDefault(), e.stopPropagation(), this.list.setSelection([], e.browserEvent), this.list.setAnchor(void 0), this.view.domNode.focus())
        }
        dispose() {
            this.disposables.dispose(), this.multipleSelectionDisposables.dispose()
        }
    }
    x([gi.a], qc.prototype, "onKeyDown", null), (t = Bc = Bc || {})[t.Idle = 0] = "Idle", t[t.Typing = 1] = "Typing";
    const Gc = new class {
        mightProducePrintableCharacter(e) {
            return !(e.ctrlKey || e.metaKey || e.altKey) && (31 <= e.keyCode && e.keyCode <= 56 || 21 <= e.keyCode && e.keyCode <= 30 || 93 <= e.keyCode && e.keyCode <= 102 || 80 <= e.keyCode && e.keyCode <= 90)
        }
    };
    class Yc {
        constructor(e, t, i, n) {
            this.list = e, this.view = t, this.keyboardNavigationLabelProvider = i, this.delegate = n, this.enabled = !1, this.state = Bc.Idle, this.automaticKeyboardNavigation = !0, this.triggered = !1, this.previouslyFocused = -1, this.enabledDisposables = new v.b, this.disposables = new v.b, this.updateOptions(e.options)
        }
        updateOptions(e) {
            void 0 === e.enableKeyboardNavigation || e.enableKeyboardNavigation ? this.enable() : this.disable(), void 0 !== e.automaticKeyboardNavigation && (this.automaticKeyboardNavigation = e.automaticKeyboardNavigation)
        }
        enable() {
            if (!this.enabled) {
                var e = D.c.chain(this.enabledDisposables.add(new Sc.a(this.view.domNode, "keydown")).event).filter(e => !Kc(e.target)).filter(() => this.automaticKeyboardNavigation || this.triggered).map(e => new gt.a(e)).filter(e => this.delegate.mightProducePrintableCharacter(e)).forEach(e => {
                    e.stopPropagation(), e.preventDefault()
                }).map(e => e.browserEvent.key).event;
                const t = D.c.debounce(e, () => null, 800);
                D.c.reduce(D.c.any(e, t), (e, t) => null === t ? null : (e || "") + t)(this.onInput, this, this.enabledDisposables), t(this.onClear, this, this.enabledDisposables), this.enabled = !0, this.triggered = !1
            }
        }
        disable() {
            this.enabled && (this.enabledDisposables.clear(), this.enabled = !1, this.triggered = !1)
        }
        onClear() {
            var e, t = this.list.getFocus();
            0 < t.length && t[0] === this.previouslyFocused && (t = null === (e = this.list.options.accessibilityProvider) || void 0 === e ? void 0 : e.getAriaLabel(this.list.element(t[0]))) && Object(Mi.a)(t), this.previouslyFocused = -1
        }
        onInput(e) {
            if (!e) return this.state = Bc.Idle, void(this.triggered = !1);
            var t = this.list.getFocus(),
                i = 0 < t.length ? t[0] : 0,
                n = this.state === Bc.Idle ? 1 : 0;
            this.state = Bc.Typing;
            for (let t = 0; t < this.list.length; t++) {
                var r = (i + t + n) % this.list.length;
                const s = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(r));
                var o = s && s.toString();
                if (void 0 === o || Object(Kd.d)(e, o)) return this.previouslyFocused = i, this.list.setFocus([r]), void this.list.reveal(r)
            }
        }
        dispose() {
            this.disable(), this.enabledDisposables.dispose(), this.disposables.dispose()
        }
    }
    class Zc {
        constructor(e, t) {
            this.list = e, this.view = t, this.disposables = new v.b;
            D.c.chain(this.disposables.add(new Sc.a(t.domNode, "keydown")).event).filter(e => !Kc(e.target)).map(e => new gt.a(e)).filter(e => !(2 !== e.keyCode || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey)).on(this.onTab, this, this.disposables)
        }
        onTab(e) {
            if (e.target === this.view.domNode) {
                var t = this.list.getFocus();
                if (0 !== t.length) {
                    const i = this.view.domElement(t[0]);
                    if (i) {
                        const n = i.querySelector("[tabIndex]");
                        n && n instanceof HTMLElement && -1 !== n.tabIndex && "hidden" !== (t = window.getComputedStyle(n)).visibility && "none" !== t.display && (e.preventDefault(), e.stopPropagation(), n.focus())
                    }
                }
            }
        }
        dispose() {
            this.disposables.dispose()
        }
    }

    function Xc(e) {
        return A.f ? e.browserEvent.metaKey : e.browserEvent.ctrlKey
    }

    function Qc(e) {
        return e.browserEvent.shiftKey
    }
    const Jc = {
        isSelectionSingleChangeEvent: Xc,
        isSelectionRangeChangeEvent: Qc
    };
    class eh {
        constructor(e) {
            this.list = e, this.disposables = new v.b, this._onPointer = new D.b, this.onPointer = this._onPointer.event, !1 !== e.options.multipleSelectionSupport && (this.multipleSelectionController = this.list.options.multipleSelectionController || Jc), this.mouseSupport = void 0 === e.options.mouseSupport || !!e.options.mouseSupport, this.mouseSupport && (e.onMouseDown(this.onMouseDown, this, this.disposables), e.onContextMenu(this.onContextMenu, this, this.disposables), e.onMouseDblClick(this.onDoubleClick, this, this.disposables), e.onTouchStart(this.onMouseDown, this, this.disposables), this.disposables.add(Ki.b.addTarget(e.getHTMLElement()))), D.c.any(e.onMouseClick, e.onMouseMiddleClick, e.onTap)(this.onViewPointer, this, this.disposables)
        }
        updateOptions(e) {
            void 0 !== e.multipleSelectionSupport && (this.multipleSelectionController = void 0, e.multipleSelectionSupport && (this.multipleSelectionController = this.list.options.multipleSelectionController || Jc))
        }
        isSelectionSingleChangeEvent(e) {
            return !!this.multipleSelectionController && this.multipleSelectionController.isSelectionSingleChangeEvent(e)
        }
        isSelectionRangeChangeEvent(e) {
            return !!this.multipleSelectionController && this.multipleSelectionController.isSelectionRangeChangeEvent(e)
        }
        isSelectionChangeEvent(e) {
            return this.isSelectionSingleChangeEvent(e) || this.isSelectionRangeChangeEvent(e)
        }
        onMouseDown(e) {
            $c(e.browserEvent.target) || document.activeElement !== e.browserEvent.target && this.list.domFocus()
        }
        onContextMenu(e) {
            var t;
            $c(e.browserEvent.target) || (t = void 0 === e.index ? [] : [e.index], this.list.setFocus(t, e.browserEvent))
        }
        onViewPointer(e) {
            if (this.mouseSupport && !Kc(e.browserEvent.target) && !$c(e.browserEvent.target)) {
                var t, i = e.index;
                return void 0 === i ? (this.list.setFocus([], e.browserEvent), this.list.setSelection([], e.browserEvent), void this.list.setAnchor(void 0)) : this.isSelectionRangeChangeEvent(e) || this.isSelectionChangeEvent(e) ? this.changeSelection(e) : (this.list.setFocus([i], e.browserEvent), this.list.setAnchor(i), (t = e.browserEvent) instanceof MouseEvent && 2 === t.button || this.list.setSelection([i], e.browserEvent), void this._onPointer.fire(e))
            }
        }
        onDoubleClick(e) {
            var t;
            Kc(e.browserEvent.target) || $c(e.browserEvent.target) || this.isSelectionChangeEvent(e) || (t = this.list.getFocus(), this.list.setSelection(t, e.browserEvent))
        }
        changeSelection(e) {
            const t = e.index;
            let i = this.list.getAnchor();
            if (this.isSelectionRangeChangeEvent(e)) {
                void 0 === i && (i = null != (o = this.list.getFocus()[0]) ? o : t, this.list.setAnchor(i));
                var n = Math.min(i, t),
                    r = Math.max(i, t),
                    o = Object(ne.o)(n, r + 1);
                0 !== (r = function(e, t) {
                    var i = e.indexOf(t);
                    if (-1 === i) return [];
                    const n = [];
                    let r = i - 1;
                    for (; 0 <= r && e[r] === t - (i - r);) n.push(e[r--]);
                    for (n.reverse(), r = i; r < e.length && e[r] === t + (r - i);) n.push(e[r++]);
                    return n
                }(rh(n = this.list.getSelection(), [i]), i)).length && (s = rh(o, function(e, t) {
                    const i = [];
                    let n = 0,
                        r = 0;
                    for (; n < e.length || r < t.length;) n >= e.length ? i.push(t[r++]) : r >= t.length ? i.push(e[n++]) : e[n] !== t[r] ? e[n] < t[r] ? i.push(e[n++]) : r++ : (n++, r++);
                    return i
                }(n, r)), this.list.setSelection(s, e.browserEvent), this.list.setFocus([t], e.browserEvent))
            } else if (this.isSelectionSingleChangeEvent(e)) {
                const i = this.list.getSelection();
                var s = i.filter(e => e !== t);
                this.list.setFocus([t]), this.list.setAnchor(t), i.length === s.length ? this.list.setSelection([...s, t], e.browserEvent) : this.list.setSelection(s, e.browserEvent)
            }
        }
        dispose() {
            this.disposables.dispose()
        }
    }
    class th {
        constructor(e, t) {
            this.styleElement = e, this.selectorSuffix = t
        }
        style(e) {
            var t = this.selectorSuffix && "." + this.selectorSuffix;
            const i = [];
            e.listBackground && (e.listBackground.isOpaque() ? i.push(`.monaco-list${t} .monaco-list-rows { background: ${e.listBackground}; }`) : A.f || console.warn(`List with id '${this.selectorSuffix}' was styled with a non-opaque background color. This will break sub-pixel antialiasing.`)), e.listFocusBackground && (i.push(`.monaco-list${t}:focus .monaco-list-row.focused { background-color: ${e.listFocusBackground}; }`), i.push(`.monaco-list${t}:focus .monaco-list-row.focused:hover { background-color: ${e.listFocusBackground}; }`)), e.listFocusForeground && i.push(`.monaco-list${t}:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`), e.listActiveSelectionBackground && (i.push(`.monaco-list${t}:focus .monaco-list-row.selected { background-color: ${e.listActiveSelectionBackground}; }`), i.push(`.monaco-list${t}:focus .monaco-list-row.selected:hover { background-color: ${e.listActiveSelectionBackground}; }`)), e.listActiveSelectionForeground && i.push(`.monaco-list${t}:focus .monaco-list-row.selected { color: ${e.listActiveSelectionForeground}; }`), e.listActiveSelectionIconForeground && i.push(`.monaco-list${t}:focus .monaco-list-row.selected .codicon { color: ${e.listActiveSelectionIconForeground}; }`), e.listFocusAndSelectionBackground && i.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${t}:focus .monaco-list-row.selected.focused { background-color: ${e.listFocusAndSelectionBackground}; }\n\t\t\t`), e.listFocusAndSelectionForeground && i.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${t}:focus .monaco-list-row.selected.focused { color: ${e.listFocusAndSelectionForeground}; }\n\t\t\t`), e.listInactiveFocusForeground && (i.push(`.monaco-list${t} .monaco-list-row.focused { color:  ${e.listInactiveFocusForeground}; }`), i.push(`.monaco-list${t} .monaco-list-row.focused:hover { color:  ${e.listInactiveFocusForeground}; }`)), e.listInactiveSelectionIconForeground && i.push(`.monaco-list${t} .monaco-list-row.focused .codicon { color:  ${e.listInactiveSelectionIconForeground}; }`), e.listInactiveFocusBackground && (i.push(`.monaco-list${t} .monaco-list-row.focused { background-color:  ${e.listInactiveFocusBackground}; }`), i.push(`.monaco-list${t} .monaco-list-row.focused:hover { background-color:  ${e.listInactiveFocusBackground}; }`)), e.listInactiveSelectionBackground && (i.push(`.monaco-list${t} .monaco-list-row.selected { background-color:  ${e.listInactiveSelectionBackground}; }`), i.push(`.monaco-list${t} .monaco-list-row.selected:hover { background-color:  ${e.listInactiveSelectionBackground}; }`)), e.listInactiveSelectionForeground && i.push(`.monaco-list${t} .monaco-list-row.selected { color: ${e.listInactiveSelectionForeground}; }`), e.listHoverBackground && i.push(`.monaco-list${t}:not(.drop-target) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${e.listHoverBackground}; }`), e.listHoverForeground && i.push(`.monaco-list${t} .monaco-list-row:hover:not(.selected):not(.focused) { color:  ${e.listHoverForeground}; }`), e.listSelectionOutline && i.push(`.monaco-list${t} .monaco-list-row.selected { outline: 1px dotted ${e.listSelectionOutline}; outline-offset: -1px; }`), e.listFocusOutline && i.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${t}:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }\n\t\t\t`), e.listInactiveFocusOutline && i.push(`.monaco-list${t} .monaco-list-row.focused { outline: 1px dotted ${e.listInactiveFocusOutline}; outline-offset: -1px; }`), e.listHoverOutline && i.push(`.monaco-list${t} .monaco-list-row:hover { outline: 1px dashed ${e.listHoverOutline}; outline-offset: -1px; }`), e.listDropBackground && i.push(`\n\t\t\t\t.monaco-list${t}.drop-target,\n\t\t\t\t.monaco-list${t} .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list${t} .monaco-list-row.drop-target { background-color: ${e.listDropBackground} !important; color: inherit !important; }\n\t\t\t`), e.listFilterWidgetBackground && i.push(`.monaco-list-type-filter { background-color: ${e.listFilterWidgetBackground} }`), e.listFilterWidgetOutline && i.push(`.monaco-list-type-filter { border: 1px solid ${e.listFilterWidgetOutline}; }`), e.listFilterWidgetNoMatchesOutline && i.push(`.monaco-list-type-filter.no-matches { border: 1px solid ${e.listFilterWidgetNoMatchesOutline}; }`), e.listMatchesShadow && i.push(`.monaco-list-type-filter { box-shadow: 1px 1px 1px ${e.listMatchesShadow}; }`), e.tableColumnsBorder && i.push(`\n\t\t\t\t.monaco-table:hover > .monaco-split-view2,\n\t\t\t\t.monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: ${e.tableColumnsBorder};\n\t\t\t}`), this.styleElement.textContent = i.join("\n")
        }
    }
    const ih = {
            listFocusBackground: uo.a.fromHex("#7FB0D0"),
            listActiveSelectionBackground: uo.a.fromHex("#0E639C"),
            listActiveSelectionForeground: uo.a.fromHex("#FFFFFF"),
            listActiveSelectionIconForeground: uo.a.fromHex("#FFFFFF"),
            listFocusAndSelectionBackground: uo.a.fromHex("#094771"),
            listFocusAndSelectionForeground: uo.a.fromHex("#FFFFFF"),
            listInactiveSelectionBackground: uo.a.fromHex("#3F3F46"),
            listInactiveSelectionIconForeground: uo.a.fromHex("#FFFFFF"),
            listHoverBackground: uo.a.fromHex("#2A2D2E"),
            listDropBackground: uo.a.fromHex("#383B3D"),
            treeIndentGuidesStroke: uo.a.fromHex("#a9a9a9"),
            tableColumnsBorder: uo.a.fromHex("#cccccc").transparent(.2)
        },
        nh = {
            keyboardSupport: !0,
            mouseSupport: !0,
            multipleSelectionSupport: !0,
            dnd: {
                getDragURI: () => null,
                onDragStart() {},
                onDragOver: () => !1,
                drop() {}
            }
        };

    function rh(e, t) {
        const i = [];
        let n = 0,
            r = 0;
        for (; n < e.length || r < t.length;) n >= e.length ? i.push(t[r++]) : r >= t.length ? i.push(e[n++]) : e[n] !== t[r] ? e[n] < t[r] ? i.push(e[n++]) : i.push(t[r++]) : (i.push(e[n]), n++, r++);
        return i
    }
    const oh = (e, t) => e - t;
    class sh {
        constructor(e, t) {
            this._templateId = e, this.renderers = t
        }
        get templateId() {
            return this._templateId
        }
        renderTemplate(e) {
            return this.renderers.map(t => t.renderTemplate(e))
        }
        renderElement(e, t, i, n) {
            let r = 0;
            for (const o of this.renderers) o.renderElement(e, t, i[r++], n)
        }
        disposeElement(e, t, i, n) {
            let r = 0;
            for (const o of this.renderers) o.disposeElement && o.disposeElement(e, t, i[r], n), r += 1
        }
        disposeTemplate(e) {
            let t = 0;
            for (const i of this.renderers) i.disposeTemplate(e[t++])
        }
    }
    class ah {
        constructor(e) {
            this.accessibilityProvider = e, this.templateId = "a18n"
        }
        renderTemplate(e) {
            return e
        }
        renderElement(e, t, i) {
            var n = this.accessibilityProvider.getAriaLabel(e);
            n ? i.setAttribute("aria-label", n) : i.removeAttribute("aria-label"), "number" == typeof(e = this.accessibilityProvider.getAriaLevel && this.accessibilityProvider.getAriaLevel(e)) ? i.setAttribute("aria-level", "" + e) : i.removeAttribute("aria-level")
        }
        disposeTemplate(e) {}
    }
    class lh {
        constructor(e, t) {
            this.list = e, this.dnd = t
        }
        getDragElements(e) {
            const t = this.list.getSelectedElements();
            return -1 < t.indexOf(e) ? t : [e]
        }
        getDragURI(e) {
            return this.dnd.getDragURI(e)
        }
        getDragLabel(e, t) {
            if (this.dnd.getDragLabel) return this.dnd.getDragLabel(e, t)
        }
        onDragStart(e, t) {
            this.dnd.onDragStart && this.dnd.onDragStart(e, t)
        }
        onDragOver(e, t, i, n) {
            return this.dnd.onDragOver(e, t, i, n)
        }
        onDragLeave(e, t, i, n) {
            var r, o;
            null !== (o = (r = this.dnd).onDragLeave) && void 0 !== o && o.call(r, e, t, i, n)
        }
        onDragEnd(e) {
            this.dnd.onDragEnd && this.dnd.onDragEnd(e)
        }
        drop(e, t, i, n) {
            this.dnd.drop(e, t, i, n)
        }
    }
    class dh {
        constructor(e, t, i, n, r = nh) {
            this.user = e, this._options = r, this.focus = new zc("focused"), this.anchor = new zc("anchor"), this.eventBufferer = new D.d, this._ariaLabel = "", this.disposables = new v.b, this._onDidDispose = new D.b, this.onDidDispose = this._onDidDispose.event, e = this._options.accessibilityProvider && this._options.accessibilityProvider.getWidgetRole ? null === (l = this._options.accessibilityProvider) || void 0 === l ? void 0 : l.getWidgetRole() : "list", this.selection = new Hc("listbox" !== e), Object(I.e)(r, ih, !1);
            const o = [this.focus.renderer, this.selection.renderer];
            this.accessibilityProvider = r.accessibilityProvider, this.accessibilityProvider && (o.push(new ah(this.accessibilityProvider)), this.accessibilityProvider.onDidChangeActiveDescendant && this.accessibilityProvider.onDidChangeActiveDescendant(this.onDidChangeActiveDescendant, this, this.disposables)), n = n.map(e => new sh(e.templateId, [...o, e]));
            var a, l = Object.assign(Object.assign({}, r), {
                dnd: r.dnd && new lh(this, r.dnd)
            });
            this.view = new jc(t, i, n, l), this.view.domNode.setAttribute("role", e), r.styleController ? this.styleController = r.styleController(this.view.domId) : (a = Object(s.t)(this.view.domNode), this.styleController = new th(a, this.view.domId)), this.spliceable = new kc([new Uc(this.focus, this.view, r.identityProvider), new Uc(this.selection, this.view, r.identityProvider), new Uc(this.anchor, this.view, r.identityProvider), this.view]), this.disposables.add(this.focus), this.disposables.add(this.selection), this.disposables.add(this.anchor), this.disposables.add(this.view), this.disposables.add(this._onDidDispose), this.disposables.add(new Zc(this, this.view)), "boolean" == typeof r.keyboardSupport && !r.keyboardSupport || (this.keyboardController = new qc(this, this.view, r), this.disposables.add(this.keyboardController)), r.keyboardNavigationLabelProvider && (a = r.keyboardNavigationDelegate || Gc, this.typeLabelController = new Yc(this, this.view, r.keyboardNavigationLabelProvider, a), this.disposables.add(this.typeLabelController)), this.mouseController = this.createMouseController(r), this.disposables.add(this.mouseController), this.onDidChangeFocus(this._onFocusChange, this, this.disposables), this.onDidChangeSelection(this._onSelectionChange, this, this.disposables), this.accessibilityProvider && (this.ariaLabel = this.accessibilityProvider.getWidgetAriaLabel()), !1 !== this._options.multipleSelectionSupport && this.view.domNode.setAttribute("aria-multiselectable", "true")
        }
        get onDidChangeFocus() {
            return D.c.map(this.eventBufferer.wrapEvent(this.focus.onChange), e => this.toListEvent(e))
        }
        get onDidChangeSelection() {
            return D.c.map(this.eventBufferer.wrapEvent(this.selection.onChange), e => this.toListEvent(e))
        }
        get domId() {
            return this.view.domId
        }
        get onMouseClick() {
            return this.view.onMouseClick
        }
        get onMouseDblClick() {
            return this.view.onMouseDblClick
        }
        get onMouseMiddleClick() {
            return this.view.onMouseMiddleClick
        }
        get onPointer() {
            return this.mouseController.onPointer
        }
        get onMouseDown() {
            return this.view.onMouseDown
        }
        get onTouchStart() {
            return this.view.onTouchStart
        }
        get onTap() {
            return this.view.onTap
        }
        get onContextMenu() {
            let e = !1;
            var t = D.c.chain(this.disposables.add(new Sc.a(this.view.domNode, "keydown")).event).map(e => new gt.a(e)).filter(t => e = 58 === t.keyCode || t.shiftKey && 68 === t.keyCode).map(Sc.b).filter(() => !1).event,
                i = D.c.chain(this.disposables.add(new Sc.a(this.view.domNode, "keyup")).event).forEach(() => e = !1).map(e => new gt.a(e)).filter(e => 58 === e.keyCode || e.shiftKey && 68 === e.keyCode).map(Sc.b).map(({
                    browserEvent: e
                }) => {
                    var t;
                    return {
                        index: t = (t = this.getFocus()).length ? t[0] : void 0,
                        element: void 0 !== t ? this.view.element(t) : void 0,
                        anchor: void 0 !== t ? this.view.domElement(t) : this.view.domNode,
                        browserEvent: e
                    }
                }).event,
                n = D.c.chain(this.view.onContextMenu).filter(t => !e).map(({
                    element: e,
                    index: t,
                    browserEvent: i
                }) => ({
                    element: e,
                    index: t,
                    anchor: {
                        x: i.pageX + 1,
                        y: i.pageY
                    },
                    browserEvent: i
                })).event;
            return D.c.any(t, i, n)
        }
        get onKeyDown() {
            return this.disposables.add(new Sc.a(this.view.domNode, "keydown")).event
        }
        get onDidFocus() {
            return D.c.signal(this.disposables.add(new Sc.a(this.view.domNode, "focus", !0)).event)
        }
        createMouseController(e) {
            return new eh(this)
        }
        updateOptions(e = {}) {
            var t;
            this._options = Object.assign(Object.assign({}, this._options), e), this.typeLabelController && this.typeLabelController.updateOptions(this._options), void 0 !== this._options.multipleSelectionController && (this._options.multipleSelectionSupport ? this.view.domNode.setAttribute("aria-multiselectable", "true") : this.view.domNode.removeAttribute("aria-multiselectable")), this.mouseController.updateOptions(e), null !== (t = this.keyboardController) && void 0 !== t && t.updateOptions(e), this.view.updateOptions(e)
        }
        get options() {
            return this._options
        }
        splice(e, t, i = []) {
            if (e < 0 || e > this.view.length) throw new Oc(this.user, "Invalid start index: " + e);
            if (t < 0) throw new Oc(this.user, "Invalid delete count: " + t);
            0 === t && 0 === i.length || this.eventBufferer.bufferEvents(() => this.spliceable.splice(e, t, i))
        }
        rerender() {
            this.view.rerender()
        }
        element(e) {
            return this.view.element(e)
        }
        get length() {
            return this.view.length
        }
        get contentHeight() {
            return this.view.contentHeight
        }
        get scrollTop() {
            return this.view.getScrollTop()
        }
        set scrollTop(e) {
            this.view.setScrollTop(e)
        }
        get ariaLabel() {
            return this._ariaLabel
        }
        set ariaLabel(e) {
            this._ariaLabel = e, this.view.domNode.setAttribute("aria-label", e)
        }
        domFocus() {
            this.view.domNode.focus({
                preventScroll: !0
            })
        }
        layout(e, t) {
            this.view.layout(e, t)
        }
        setSelection(e, t) {
            for (const t of e)
                if (t < 0 || t >= this.length) throw new Oc(this.user, "Invalid index " + t);
            this.selection.set(e, t)
        }
        getSelection() {
            return this.selection.get()
        }
        getSelectedElements() {
            return this.getSelection().map(e => this.view.element(e))
        }
        setAnchor(e) {
            if (void 0 !== e) {
                if (e < 0 || e >= this.length) throw new Oc(this.user, "Invalid index " + e);
                this.anchor.set([e])
            } else this.anchor.set([])
        }
        getAnchor() {
            return Object(ne.j)(this.anchor.get(), void 0)
        }
        getAnchorElement() {
            var e = this.getAnchor();
            return void 0 === e ? void 0 : this.element(e)
        }
        setFocus(e, t) {
            for (const t of e)
                if (t < 0 || t >= this.length) throw new Oc(this.user, "Invalid index " + t);
            this.focus.set(e, t)
        }
        focusNext(e = 1, t = !1, i, n) {
            var r;
            0 !== this.length && (r = this.focus.get(), -1 < (n = this.findNextIndex(0 < r.length ? r[0] + e : 0, t, n)) && this.setFocus([n], i))
        }
        focusPrevious(e = 1, t = !1, i, n) {
            var r;
            0 !== this.length && (r = this.focus.get(), -1 < (n = this.findPreviousIndex(0 < r.length ? r[0] - e : 0, t, n)) && this.setFocus([n], i))
        }
        focusNextPage(e, t) {
            return Vc(this, void 0, void 0, (function*() {
                let i = this.view.indexAt(this.view.getScrollTop() + this.view.renderHeight);
                i = 0 === i ? 0 : i - 1;
                var n, r = this.view.element(i),
                    o = this.getFocusedElements()[0];
                o !== r ? -1 < (n = this.findPreviousIndex(i, !1, t)) && o !== this.view.element(n) ? this.setFocus([n], e) : this.setFocus([i], e) : (n = this.view.getScrollTop(), this.view.setScrollTop(n + this.view.renderHeight - this.view.elementHeight(i)), this.view.getScrollTop() !== n && (this.setFocus([]), yield Object(q.k)(0), yield this.focusNextPage(e, t)))
            }))
        }
        focusPreviousPage(e, t) {
            return Vc(this, void 0, void 0, (function*() {
                let i;
                var n = this.view.getScrollTop();
                i = 0 === n ? this.view.indexAt(n) : this.view.indexAfter(n - 1);
                var r = this.view.element(i),
                    o = this.getFocusedElements()[0];
                o !== r ? -1 < (r = this.findNextIndex(i, !1, t)) && o !== this.view.element(r) ? this.setFocus([r], e) : this.setFocus([i], e) : (this.view.setScrollTop((n = n) - this.view.renderHeight), this.view.getScrollTop() !== n && (this.setFocus([]), yield Object(q.k)(0), yield this.focusPreviousPage(e, t)))
            }))
        }
        focusLast(e, t) {
            0 === this.length || -1 < (t = this.findPreviousIndex(this.length - 1, !1, t)) && this.setFocus([t], e)
        }
        focusFirst(e, t) {
            this.focusNth(0, e, t)
        }
        focusNth(e, t, i) {
            0 === this.length || -1 < (i = this.findNextIndex(e, !1, i)) && this.setFocus([i], t)
        }
        findNextIndex(e, t = !1, i) {
            for (let n = 0; n < this.length; n++) {
                if (e >= this.length && !t) return -1;
                if (e %= this.length, !i || i(this.element(e))) return e;
                e++
            }
            return -1
        }
        findPreviousIndex(e, t = !1, i) {
            for (let n = 0; n < this.length; n++) {
                if (e < 0 && !t) return -1;
                if (e = (this.length + e % this.length) % this.length, !i || i(this.element(e))) return e;
                e--
            }
            return -1
        }
        getFocus() {
            return this.focus.get()
        }
        getFocusedElements() {
            return this.getFocus().map(e => this.view.element(e))
        }
        reveal(e, t) {
            if (e < 0 || e >= this.length) throw new Oc(this.user, "Invalid index " + e);
            var i, n = this.view.getScrollTop(),
                r = this.view.elementTop(e);
            e = this.view.elementHeight(e);
            Object(ve.i)(t) ? (i = e - this.view.renderHeight, this.view.setScrollTop(i * Object(Lc.b)(t, 0, 1) + r)) : (i = r + e, t = n + this.view.renderHeight, r < n && t <= i || (r < n || t <= i && e >= this.view.renderHeight ? this.view.setScrollTop(r) : t <= i && this.view.setScrollTop(i - this.view.renderHeight)))
        }
        getRelativeTop(e) {
            if (e < 0 || e >= this.length) throw new Oc(this.user, "Invalid index " + e);
            var t = this.view.getScrollTop(),
                i = this.view.elementTop(e);
            e = this.view.elementHeight(e);
            return i < t || i + e > t + this.view.renderHeight ? null : (e -= this.view.renderHeight, Math.abs((t - i) / e))
        }
        getHTMLElement() {
            return this.view.domNode
        }
        style(e) {
            this.styleController.style(e)
        }
        toListEvent({
            indexes: e,
            browserEvent: t
        }) {
            return {
                indexes: e,
                elements: e.map(e => this.view.element(e)),
                browserEvent: t
            }
        }
        _onFocusChange() {
            var e = this.focus.get();
            this.view.domNode.classList.toggle("element-focused", 0 < e.length), this.onDidChangeActiveDescendant()
        }
        onDidChangeActiveDescendant() {
            var e, t = this.focus.get();
            if (0 < t.length) {
                let i;
                null !== (e = this.accessibilityProvider) && void 0 !== e && e.getActiveDescendantId && (i = this.accessibilityProvider.getActiveDescendantId(this.view.element(t[0]))), this.view.domNode.setAttribute("aria-activedescendant", i || this.view.getElementDomId(t[0]))
            } else this.view.domNode.removeAttribute("aria-activedescendant")
        }
        _onSelectionChange() {
            var e = this.selection.get();
            this.view.domNode.classList.toggle("selection-none", 0 === e.length), this.view.domNode.classList.toggle("selection-single", 1 === e.length), this.view.domNode.classList.toggle("selection-multiple", 1 < e.length)
        }
        dispose() {
            this._onDidDispose.fire(), this.disposables.dispose(), this._onDidDispose.dispose()
        }
    }
    x([gi.a], dh.prototype, "onDidChangeFocus", null), x([gi.a], dh.prototype, "onDidChangeSelection", null), x([gi.a], dh.prototype, "onContextMenu", null), x([gi.a], dh.prototype, "onKeyDown", null), x([gi.a], dh.prototype, "onDidFocus", null);
    class ch {
        constructor(e, t) {
            this.renderer = e, this.modelProvider = t
        }
        get templateId() {
            return this.renderer.templateId
        }
        renderTemplate(e) {
            return {
                data: this.renderer.renderTemplate(e),
                disposable: v.a.None
            }
        }
        renderElement(e, t, i, n) {
            if (i.disposable && i.disposable.dispose(), i.data) {
                const t = this.modelProvider();
                if (t.isResolved(e)) return this.renderer.renderElement(t.get(e), e, i.data, n);
                const r = new a.b,
                    o = t.resolve(e, r.token);
                i.disposable = {
                    dispose: () => r.cancel()
                }, this.renderer.renderPlaceholder(e, i.data), o.then(t => this.renderer.renderElement(t, e, i.data, n))
            }
        }
        disposeTemplate(e) {
            e.disposable && (e.disposable.dispose(), e.disposable = void 0), e.data && (this.renderer.disposeTemplate(e.data), e.data = void 0)
        }
    }
    class hh {
        constructor(e, t) {
            this.modelProvider = e, this.accessibilityProvider = t
        }
        getWidgetAriaLabel() {
            return this.accessibilityProvider.getWidgetAriaLabel()
        }
        getAriaLabel(e) {
            const t = this.modelProvider();
            return t.isResolved(e) ? this.accessibilityProvider.getAriaLabel(t.get(e)) : null
        }
    }
    var uh;
    i(437);
    const ph = {
        separatorBorder: uo.a.transparent
    };
    class gh {
        constructor(e, t, i, n) {
            this.container = e, this.view = t, this.disposable = n, this._cachedVisibleSize = void 0, "number" == typeof i ? (this._size = i, this._cachedVisibleSize = void 0, e.classList.add("visible")) : (this._size = 0, this._cachedVisibleSize = i.cachedVisibleSize)
        }
        set size(e) {
            this._size = e
        }
        get size() {
            return this._size
        }
        get visible() {
            return void 0 === this._cachedVisibleSize
        }
        setVisible(e, t) {
            e !== this.visible && (e ? (this.size = Object(Lc.b)(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize), this._cachedVisibleSize = void 0) : (this._cachedVisibleSize = "number" == typeof t ? t : this.size, this.size = 0), this.container.classList.toggle("visible", e), this.view.setVisible && this.view.setVisible(e))
        }
        get minimumSize() {
            return this.visible ? this.view.minimumSize : 0
        }
        get viewMinimumSize() {
            return this.view.minimumSize
        }
        get maximumSize() {
            return this.visible ? this.view.maximumSize : 0
        }
        get viewMaximumSize() {
            return this.view.maximumSize
        }
        get priority() {
            return this.view.priority
        }
        get snap() {
            return !!this.view.snap
        }
        set enabled(e) {
            this.container.style.pointerEvents = e ? "" : "none"
        }
        layout(e, t) {
            this.layoutContainer(e), this.view.layout(this.size, e, t)
        }
        dispose() {
            return this.disposable.dispose(), this.view
        }
    }
    class fh extends gh {
        layoutContainer(e) {
            this.container.style.top = e + "px", this.container.style.height = this.size + "px"
        }
    }
    class mh extends gh {
        layoutContainer(e) {
            this.container.style.left = e + "px", this.container.style.width = this.size + "px"
        }
    }(ae = uh = uh || {})[ae.Idle = 0] = "Idle", ae[ae.Busy = 1] = "Busy", (S = {}).Distribute = {
        type: "distribute"
    }, S.Split = function(e) {
        return {
            type: "split",
            index: e
        }
    }, S.Invisible = function(e) {
        return {
            type: "invisible",
            cachedVisibleSize: e
        }
    };
    class vh extends v.a {
        constructor(e, t = {}) {
            var i;
            super(), this.size = 0, this.contentSize = 0, this.proportions = void 0, this.viewItems = [], this.sashItems = [], this.state = uh.Idle, this._onDidSashChange = this._register(new D.b), this.onDidSashChange = this._onDidSashChange.event, this._onDidSashReset = this._register(new D.b), this._startSnappingEnabled = !0, this._endSnappingEnabled = !0, this.orientation = ve.l(t.orientation) ? 0 : t.orientation, this.inverseAltBehavior = !!t.inverseAltBehavior, this.proportionalLayout = !!ve.l(t.proportionalLayout) || !!t.proportionalLayout, this.getSashOrthogonalSize = t.getSashOrthogonalSize, this.el = document.createElement("div"), this.el.classList.add("monaco-split-view2"), this.el.classList.add(0 === this.orientation ? "vertical" : "horizontal"), e.appendChild(this.el), this.sashContainer = Object(s.n)(this.el, Object(s.a)(".sash-container")), this.viewContainer = Object(s.a)(".split-view-container"), this.scrollable = new bs.a(125, s.R), this.scrollableElement = this._register(new Dr.c(this.viewContainer, {
                vertical: 0 === this.orientation ? null !== (i = t.scrollbarVisibility) && void 0 !== i ? i : 1 : 2,
                horizontal: 1 === this.orientation ? null !== (i = t.scrollbarVisibility) && void 0 !== i ? i : 1 : 2
            }, this.scrollable)), this.onDidScroll = this.scrollableElement.onScroll, this._register(this.onDidScroll(e => {
                this.viewContainer.scrollTop = e.scrollTop, this.viewContainer.scrollLeft = e.scrollLeft
            })), Object(s.n)(this.el, this.scrollableElement.getDomNode()), this.style(t.styles || ph), t.descriptor && (this.size = t.descriptor.size, t.descriptor.views.forEach((e, t) => {
                var i = ve.l(e.visible) || e.visible ? e.size : {
                    type: "invisible",
                    cachedVisibleSize: e.size
                };
                e = e.view;
                this.doAddView(e, i, t, !0)
            }), this.contentSize = this.viewItems.reduce((e, t) => e + t.size, 0), this.saveProportions())
        }
        get orthogonalStartSash() {
            return this._orthogonalStartSash
        }
        set orthogonalStartSash(e) {
            for (const t of this.sashItems) t.sash.orthogonalStartSash = e;
            this._orthogonalStartSash = e
        }
        get orthogonalEndSash() {
            return this._orthogonalEndSash
        }
        set orthogonalEndSash(e) {
            for (const t of this.sashItems) t.sash.orthogonalEndSash = e;
            this._orthogonalEndSash = e
        }
        get startSnappingEnabled() {
            return this._startSnappingEnabled
        }
        set startSnappingEnabled(e) {
            this._startSnappingEnabled !== e && (this._startSnappingEnabled = e, this.updateSashEnablement())
        }
        get endSnappingEnabled() {
            return this._endSnappingEnabled
        }
        set endSnappingEnabled(e) {
            this._endSnappingEnabled !== e && (this._endSnappingEnabled = e, this.updateSashEnablement())
        }
        style(e) {
            e.separatorBorder.isTransparent() ? (this.el.classList.remove("separator-border"), this.el.style.removeProperty("--separator-border")) : (this.el.classList.add("separator-border"), this.el.style.setProperty("--separator-border", e.separatorBorder.toString()))
        }
        addView(e, t, i = this.viewItems.length, n) {
            this.doAddView(e, t, i, n)
        }
        layout(e, t) {
            var i = Math.max(this.size, this.contentSize);
            if (this.size = e, this.layoutContext = t, this.proportions)
                for (let t = 0; t < this.viewItems.length; t++) {
                    const i = this.viewItems[t];
                    i.size = Object(Lc.b)(Math.round(this.proportions[t] * e), i.minimumSize, i.maximumSize)
                } else {
                    const r = Object(ne.o)(this.viewItems.length);
                    var n = r.filter(e => 1 === this.viewItems[e].priority);
                    t = r.filter(e => 2 === this.viewItems[e].priority);
                    this.resize(this.viewItems.length - 1, e - i, void 0, n, t)
                }
            this.distributeEmptySpace(), this.layoutViews()
        }
        saveProportions() {
            this.proportionalLayout && 0 < this.contentSize && (this.proportions = this.viewItems.map(e => e.size / this.contentSize))
        }
        onSashStart({
            sash: e,
            start: t,
            alt: i
        }) {
            for (const e of this.viewItems) e.enabled = !1;
            const n = this.sashItems.findIndex(t => t.sash === e),
                r = Object(v.e)(Object(s.g)(document.body, "keydown", e => o(this.sashDragState.current, e.altKey)), Object(s.g)(document.body, "keyup", () => o(this.sashDragState.current, !1))),
                o = (e, t) => {
                    const i = this.viewItems.map(e => e.size);
                    let o, s, a = Number.NEGATIVE_INFINITY,
                        l = Number.POSITIVE_INFINITY;
                    if ((t = this.inverseAltBehavior ? !t : t) && (l = (c = n === this.sashItems.length - 1) ? (a = ((h = this.viewItems[n]).minimumSize - h.size) / 2, (h.maximumSize - h.size) / 2) : (a = ((u = this.viewItems[n + 1]).size - u.maximumSize) / 2, (u.size - u.minimumSize) / 2)), !t) {
                        const e = Object(ne.o)(n, -1),
                            t = Object(ne.o)(n + 1, this.viewItems.length);
                        var d = e.reduce((e, t) => e + (this.viewItems[t].minimumSize - i[t]), 0),
                            c = e.reduce((e, t) => e + (this.viewItems[t].viewMaximumSize - i[t]), 0),
                            h = 0 === t.length ? Number.POSITIVE_INFINITY : t.reduce((e, t) => e + (i[t] - this.viewItems[t].minimumSize), 0),
                            u = 0 === t.length ? Number.NEGATIVE_INFINITY : t.reduce((e, t) => e + (i[t] - this.viewItems[t].viewMaximumSize), 0);
                        const r = Math.max(d, u),
                            a = Math.min(h, c);
                        var p, g;
                        h = this.findFirstSnapIndex(e), c = this.findFirstSnapIndex(t);
                        "number" == typeof h && (g = this.viewItems[h], p = Math.floor(g.viewMinimumSize / 2), o = {
                            index: h,
                            limitDelta: g.visible ? r - p : r + p,
                            size: g.size
                        }), "number" == typeof c && (p = this.viewItems[c], g = Math.floor(p.viewMinimumSize / 2), s = {
                            index: c,
                            limitDelta: p.visible ? a + g : a - g,
                            size: p.size
                        })
                    }
                    this.sashDragState = {
                        start: e,
                        current: e,
                        index: n,
                        sizes: i,
                        minDelta: a,
                        maxDelta: l,
                        alt: t,
                        snapBefore: o,
                        snapAfter: s,
                        disposable: r
                    }
                };
            o(t, i)
        }
        onSashChange({
            current: e
        }) {
            var {
                index: t,
                start: i,
                sizes: n,
                alt: r,
                minDelta: o,
                maxDelta: s,
                snapBefore: a,
                snapAfter: l
            } = this.sashDragState;
            this.sashDragState.current = e, o = this.resize(t, e - i, n, void 0, void 0, o, s, a, l), r && (s = t === this.sashItems.length - 1, a = this.viewItems.map(e => e.size), r = (l = this.viewItems[s ? t : t + 1]).size - l.maximumSize, l = l.size - l.minimumSize, this.resize(s ? t - 1 : t + 1, -o, a, void 0, void 0, r, l)), this.distributeEmptySpace(), this.layoutViews()
        }
        onSashEnd(e) {
            this._onDidSashChange.fire(e), this.sashDragState.disposable.dispose(), this.saveProportions();
            for (const e of this.viewItems) e.enabled = !0
        }
        onViewChange(e, t) {
            var i = this.viewItems.indexOf(e);
            i < 0 || i >= this.viewItems.length || (t = "number" == typeof t ? t : e.size, t = Object(Lc.b)(t, e.minimumSize, e.maximumSize), this.inverseAltBehavior && 0 < i ? (this.resize(i - 1, Math.floor((e.size - t) / 2)), this.distributeEmptySpace(), this.layoutViews()) : (e.size = t, this.relayout([i], void 0)))
        }
        resizeView(e, t) {
            if (this.state !== uh.Idle) throw new Error("Cant modify splitview");
            if (this.state = uh.Busy, !(e < 0 || e >= this.viewItems.length)) {
                const r = Object(ne.o)(this.viewItems.length).filter(t => t !== e);
                var i = [...r.filter(e => 1 === this.viewItems[e].priority), e],
                    n = r.filter(e => 2 === this.viewItems[e].priority);
                const o = this.viewItems[e];
                t = Math.round(t), t = Object(Lc.b)(t, o.minimumSize, Math.min(o.maximumSize, this.size)), o.size = t, this.relayout(i, n), this.state = uh.Idle
            }
        }
        distributeViewSizes() {
            const e = [];
            let t = 0;
            for (const i of this.viewItems) 0 < i.maximumSize - i.minimumSize && (e.push(i), t += i.size);
            var i = Math.floor(t / e.length);
            for (const t of e) t.size = Object(Lc.b)(i, t.minimumSize, t.maximumSize);
            const n = Object(ne.o)(this.viewItems.length);
            var r = n.filter(e => 1 === this.viewItems[e].priority),
                o = n.filter(e => 2 === this.viewItems[e].priority);
            this.relayout(r, o)
        }
        getViewSize(e) {
            return e < 0 || e >= this.viewItems.length ? -1 : this.viewItems[e].size
        }
        doAddView(e, t, i = this.viewItems.length, n) {
            if (this.state !== uh.Idle) throw new Error("Cant modify splitview");
            this.state = uh.Busy;
            const r = Object(s.a)(".split-view-view");
            i === this.viewItems.length ? this.viewContainer.appendChild(r) : this.viewContainer.insertBefore(r, this.viewContainer.children.item(i));
            const o = e.onDidChange(e => this.onViewChange(c, e));
            var a = Object(v.i)(() => this.viewContainer.removeChild(r));
            const l = Object(v.e)(o, a);
            let d;
            d = "number" == typeof t ? t : "split" === t.type ? this.getViewSize(t.index) / 2 : "invisible" === t.type ? {
                cachedVisibleSize: t.cachedVisibleSize
            } : e.minimumSize;
            const c = new(0 === this.orientation ? fh : mh)(r, e, d, l);
            if (this.viewItems.splice(i, 0, c), 1 < this.viewItems.length) {
                var h = {
                    orthogonalStartSash: this.orthogonalStartSash,
                    orthogonalEndSash: this.orthogonalEndSash
                };
                const e = 0 === this.orientation ? new va.a(this.sashContainer, {
                    getHorizontalSashTop: e => this.getSashPosition(e),
                    getHorizontalSashWidth: this.getSashOrthogonalSize
                }, Object.assign(Object.assign({}, h), {
                    orientation: 1
                })) : new va.a(this.sashContainer, {
                    getVerticalSashLeft: e => this.getSashPosition(e),
                    getVerticalSashHeight: this.getSashOrthogonalSize
                }, Object.assign(Object.assign({}, h), {
                    orientation: 0
                }));
                var u = 0 === this.orientation ? t => ({
                    sash: e,
                    start: t.startY,
                    current: t.currentY,
                    alt: t.altKey
                }) : t => ({
                    sash: e,
                    start: t.startX,
                    current: t.currentX,
                    alt: t.altKey
                });
                a = D.c.map(e.onDidStart, u)(this.onSashStart, this);
                const t = D.c.map(e.onDidChange, u)(this.onSashChange, this);
                h = D.c.map(e.onDidEnd, () => this.sashItems.findIndex(t => t.sash === e))(this.onSashEnd, this), u = e.onDidReset(() => {
                    var t = this.sashItems.findIndex(t => t.sash === e),
                        i = Object(ne.o)(t, -1),
                        n = Object(ne.o)(t + 1, this.viewItems.length);
                    i = this.findFirstSnapIndex(i), n = this.findFirstSnapIndex(n);
                    "number" == typeof i && !this.viewItems[i].visible || "number" == typeof n && !this.viewItems[n].visible || this._onDidSashReset.fire(t)
                });
                const n = Object(v.e)(a, t, h, u, e);
                u = {
                    sash: e,
                    disposable: n
                }, this.sashItems.splice(i - 1, 0, u)
            }
            let p;
            r.appendChild(e.element), "number" != typeof t && "split" === t.type && (p = [t.index]), n || this.relayout([i], p), this.state = uh.Idle, n || "number" == typeof t || "distribute" !== t.type || this.distributeViewSizes()
        }
        relayout(e, t) {
            var i = this.viewItems.reduce((e, t) => e + t.size, 0);
            this.resize(this.viewItems.length - 1, this.size - i, void 0, e, t), this.distributeEmptySpace(), this.layoutViews(), this.saveProportions()
        }
        resize(e, t, i = this.viewItems.map(e => e.size), n, r, o = Number.NEGATIVE_INFINITY, s = Number.POSITIVE_INFINITY, a, l) {
            if (e < 0 || e >= this.viewItems.length) return 0;
            const d = Object(ne.o)(e, -1),
                c = Object(ne.o)(e + 1, this.viewItems.length);
            if (r)
                for (const e of r) Object(ne.n)(d, e), Object(ne.n)(c, e);
            if (n)
                for (const e of n) Object(ne.m)(d, e), Object(ne.m)(c, e);
            var h = d.map(e => this.viewItems[e]),
                u = d.map(e => i[e]),
                p = c.map(e => this.viewItems[e]),
                g = c.map(e => i[e]),
                f = d.reduce((e, t) => e + (this.viewItems[t].minimumSize - i[t]), 0),
                m = d.reduce((e, t) => e + (this.viewItems[t].maximumSize - i[t]), 0),
                v = 0 === c.length ? Number.POSITIVE_INFINITY : c.reduce((e, t) => e + (i[t] - this.viewItems[t].minimumSize), 0),
                b = 0 === c.length ? Number.NEGATIVE_INFINITY : c.reduce((e, t) => e + (i[t] - this.viewItems[t].maximumSize), 0);
            b = Math.max(f, b, o), v = Math.min(v, m, s);
            let _ = !1;
            if (a) {
                const e = this.viewItems[a.index];
                _ = (m = t >= a.limitDelta) !== e.visible, e.setVisible(m, a.size)
            }
            if (!_ && l) {
                const e = this.viewItems[l.index];
                _ = (a = t < l.limitDelta) !== e.visible, e.setVisible(a, l.size)
            }
            if (_) return this.resize(e, t, i, n, r, o, s);
            for (let e = 0, i = t = Object(Lc.b)(t, b, v); e < h.length; e++) {
                const t = h[e];
                var w = Object(Lc.b)(u[e] + i, t.minimumSize, t.maximumSize);
                i -= w - u[e], t.size = w
            }
            for (let e = 0, i = t; e < p.length; e++) {
                const t = p[e];
                var y = Object(Lc.b)(g[e] - i, t.minimumSize, t.maximumSize);
                i += y - g[e], t.size = y
            }
            return t
        }
        distributeEmptySpace(e) {
            var t = this.viewItems.reduce((e, t) => e + t.size, 0);
            let i = this.size - t;
            const n = Object(ne.o)(this.viewItems.length - 1, -1);
            t = n.filter(e => 1 === this.viewItems[e].priority);
            for (const e of n.filter(e => 2 === this.viewItems[e].priority)) Object(ne.n)(n, e);
            for (const e of t) Object(ne.m)(n, e);
            "number" == typeof e && Object(ne.m)(n, e);
            for (let e = 0; 0 !== i && e < n.length; e++) {
                const t = this.viewItems[n[e]];
                var r = Object(Lc.b)(t.size + i, t.minimumSize, t.maximumSize);
                i -= r - t.size, t.size = r
            }
        }
        layoutViews() {
            this.contentSize = this.viewItems.reduce((e, t) => e + t.size, 0);
            let e = 0;
            for (const t of this.viewItems) t.layout(e, this.layoutContext), e += t.size;
            this.sashItems.forEach(e => e.sash.layout()), this.updateSashEnablement(), this.updateScrollableElement()
        }
        updateScrollableElement() {
            0 === this.orientation ? this.scrollableElement.setScrollDimensions({
                height: this.size,
                scrollHeight: this.contentSize
            }) : this.scrollableElement.setScrollDimensions({
                width: this.size,
                scrollWidth: this.contentSize
            })
        }
        updateSashEnablement() {
            let e = !1;
            var t = this.viewItems.map(t => e = 0 < t.size - t.minimumSize || e);
            e = !1;
            var i = this.viewItems.map(t => e = 0 < t.maximumSize - t.size || e);
            const n = [...this.viewItems].reverse();
            e = !1;
            var r = n.map(t => e = 0 < t.size - t.minimumSize || e).reverse();
            e = !1;
            var o = n.map(t => e = 0 < t.maximumSize - t.size || e).reverse();
            let s = 0;
            for (let e = 0; e < this.sashItems.length; e++) {
                const {
                    sash: n
                } = this.sashItems[e];
                var a = this.viewItems[e];
                s += a.size;
                var l, d = !(t[e] && o[e + 1]),
                    c = !(i[e] && r[e + 1]);
                d && c ? (l = Object(ne.o)(e, -1), a = Object(ne.o)(e + 1, this.viewItems.length), l = this.findFirstSnapIndex(l), a = this.findFirstSnapIndex(a), l = "number" == typeof l && !this.viewItems[l].visible, a = "number" == typeof a && !this.viewItems[a].visible, l && r[e] && (0 < s || this.startSnappingEnabled) ? n.state = 1 : a && t[e] && (s < this.contentSize || this.endSnappingEnabled) ? n.state = 2 : n.state = 0) : n.state = d && !c ? 1 : !d && c ? 2 : 3
            }
        }
        getSashPosition(e) {
            let t = 0;
            for (let i = 0; i < this.sashItems.length; i++)
                if (t += this.viewItems[i].size, this.sashItems[i].sash === e) return t;
            return 0
        }
        findFirstSnapIndex(e) {
            for (const i of e) {
                var t = this.viewItems[i];
                if (t.visible && t.snap) return i
            }
            for (const t of e) {
                var i = this.viewItems[t];
                if (i.visible && 0 < i.maximumSize - i.minimumSize) return;
                if (!i.visible && i.snap) return t
            }
        }
        dispose() {
            super.dispose(), this.viewItems.forEach(e => e.dispose()), this.viewItems = [], this.sashItems.forEach(e => e.disposable.dispose()), this.sashItems = []
        }
    }
    var bh;
    i(439);
    class _h {
        constructor(e, t, i) {
            this.columns = e, this.getColumnSize = i, this.templateId = _h.TemplateId, this.renderedTemplates = new Set;
            const n = new Map(t.map(e => [e.templateId, e]));
            this.renderers = [];
            for (const t of e) {
                var r = n.get(t.templateId);
                if (!r) throw new Error(`Table cell renderer for template id ${t.templateId} not found.`);
                this.renderers.push(r)
            }
        }
        renderTemplate(e) {
            var t = Object(s.n)(e, Object(s.a)(".monaco-table-tr"));
            const i = [],
                n = [];
            for (let e = 0; e < this.columns.length; e++) {
                const r = this.renderers[e],
                    o = Object(s.n)(t, Object(s.a)(".monaco-table-td", {
                        "data-col-index": e
                    }));
                o.style.width = this.getColumnSize(e) + "px", i.push(o), n.push(r.renderTemplate(o))
            }
            return e = {
                container: e,
                cellContainers: i,
                cellTemplateData: n
            }, this.renderedTemplates.add(e), e
        }
        renderElement(e, t, i, n) {
            for (let o = 0; o < this.columns.length; o++) {
                var r = this.columns[o].project(e);
                this.renderers[o].renderElement(r, t, i.cellTemplateData[o], n)
            }
        }
        disposeElement(e, t, i, n) {
            for (let o = 0; o < this.columns.length; o++) {
                const s = this.renderers[o];
                if (s.disposeElement) {
                    var r = this.columns[o].project(e);
                    s.disposeElement(r, t, i.cellTemplateData[o], n)
                }
            }
        }
        disposeTemplate(e) {
            for (let t = 0; t < this.columns.length; t++) {
                this.renderers[t].disposeTemplate(e.cellTemplateData[t])
            }
            Object(s.q)(e.container), this.renderedTemplates.delete(e)
        }
        layoutColumn(e, t) {
            for (var {
                    cellContainers: i
                } of this.renderedTemplates) i[e].style.width = t + "px"
        }
    }
    _h.TemplateId = "row";
    class wh {
        constructor(e, t) {
            this.column = e, this.index = t, this._onDidLayout = new D.b, this.onDidLayout = this._onDidLayout.event, this.element = Object(s.a)(".monaco-table-th", {
                "data-col-index": t,
                title: e.tooltip
            }, e.label)
        }
        get minimumSize() {
            var e;
            return null !== (e = this.column.minimumWidth) && void 0 !== e ? e : 120
        }
        get maximumSize() {
            var e;
            return null !== (e = this.column.maximumWidth) && void 0 !== e ? e : Number.POSITIVE_INFINITY
        }
        get onDidChange() {
            var e;
            return null !== (e = this.column.onDidChangeWidthConstraints) && void 0 !== e ? e : D.c.None
        }
        layout(e) {
            this._onDidLayout.fire([this.index, e])
        }
    }
    class yh {
        constructor(e, t, i, n, r, o) {
            this.virtualDelegate = i, this.domId = "table_id_" + ++yh.InstanceCount, this.cachedHeight = 0, this.domNode = Object(s.n)(t, Object(s.a)(".monaco-table." + this.domId));
            const a = n.map((e, t) => new wh(e, t));
            var l;
            t = {
                size: a.reduce((e, t) => e + t.column.weight, 0),
                views: a.map(e => ({
                    size: e.column.weight,
                    view: e
                }))
            };
            this.splitview = new vh(this.domNode, {
                orientation: 1,
                scrollbarVisibility: 2,
                getSashOrthogonalSize: () => this.cachedHeight,
                descriptor: t
            }), this.splitview.el.style.height = i.headerRowHeight + "px", this.splitview.el.style.lineHeight = i.headerRowHeight + "px";
            const d = new _h(n, r, e => this.splitview.getViewSize(e));
            this.list = new dh(e, this.domNode, (l = i, {
                getHeight: e => l.getHeight(e),
                getTemplateId: () => _h.TemplateId
            }), [d], o), this.columnLayoutDisposable = D.c.any(...a.map(e => e.onDidLayout))(([e, t]) => d.layoutColumn(e, t)), this.styleElement = Object(s.t)(this.domNode), this.style({})
        }
        get onDidChangeFocus() {
            return this.list.onDidChangeFocus
        }
        get onDidChangeSelection() {
            return this.list.onDidChangeSelection
        }
        get onMouseDblClick() {
            return this.list.onMouseDblClick
        }
        get onPointer() {
            return this.list.onPointer
        }
        get onDidFocus() {
            return this.list.onDidFocus
        }
        get onDidDispose() {
            return this.list.onDidDispose
        }
        updateOptions(e) {
            this.list.updateOptions(e)
        }
        splice(e, t, i = []) {
            this.list.splice(e, t, i)
        }
        getHTMLElement() {
            return this.domNode
        }
        style(e) {
            const t = [];
            t.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\ttop: ${this.virtualDelegate.headerRowHeight+1}px;\n\t\t\theight: calc(100% - ${this.virtualDelegate.headerRowHeight}px);\n\t\t}`), this.styleElement.textContent = t.join("\n"), this.list.style(e)
        }
        getSelectedElements() {
            return this.list.getSelectedElements()
        }
        getSelection() {
            return this.list.getSelection()
        }
        getFocus() {
            return this.list.getFocus()
        }
        dispose() {
            this.splitview.dispose(), this.list.dispose(), this.columnLayoutDisposable.dispose()
        }
    }
    yh.InstanceCount = 0, (t = bh = bh || {})[t.Unknown = 0] = "Unknown", t[t.Twistie = 1] = "Twistie", t[t.Element = 2] = "Element";
    class Ch extends Error {
        constructor(e, t) {
            super(`TreeError [${e}] ${t}`)
        }
    }
    class xh {
        constructor(e) {
            this.fn = e, this._map = new WeakMap
        }
        map(e) {
            let t = this._map.get(e);
            return t || (t = this.fn(e), this._map.set(e, t)), t
        }
    }
    var Sh = i(115);

    function kh(e) {
        return "object" == typeof e && "visibility" in e && "data" in e
    }

    function Lh(e) {
        switch (e) {
            case !0:
                return 1;
            case !1:
                return 0;
            default:
                return e
        }
    }

    function Oh(e) {
        return "boolean" == typeof e.collapsible
    }
    class Eh {
        constructor(e, t, i, n = {}) {
            this.user = e, this.list = t, this.rootRef = [], this.eventBufferer = new D.d, this._onDidChangeCollapseState = new D.b, this.onDidChangeCollapseState = this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event), this._onDidChangeRenderNodeCount = new D.b, this.onDidChangeRenderNodeCount = this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event), this._onDidSplice = new D.b, this.onDidSplice = this._onDidSplice.event, this.collapseByDefault = void 0 !== n.collapseByDefault && n.collapseByDefault, this.filter = n.filter, this.autoExpandSingleChildren = void 0 !== n.autoExpandSingleChildren && n.autoExpandSingleChildren, this.root = {
                parent: void 0,
                element: i,
                children: [],
                depth: 0,
                visibleChildrenCount: 0,
                visibleChildIndex: -1,
                collapsible: !1,
                collapsed: !1,
                renderNodeCount: 0,
                visibility: 1,
                visible: !0,
                filterData: void 0
            }
        }
        splice(e, t, i = Sd.a.empty(), n = {}) {
            if (0 === e.length) throw new Ch(this.user, "Invalid tree location");
            n.diffIdentityProvider ? this.spliceSmart(n.diffIdentityProvider, e, t, i, n) : this.spliceSimple(e, t, i, n)
        }
        spliceSmart(e, t, i, n, r, o) {
            var s;
            void 0 === n && (n = Sd.a.empty()), void 0 === o && (o = null !== (s = r.diffDepth) && void 0 !== s ? s : 0);
            const {
                parentNode: a
            } = this.getParentNodeWithListIndex(t);
            if (!a.lastDiffIds) return this.spliceSimple(t, i, n, r);
            const l = [...n],
                d = t[t.length - 1],
                c = new Sh.a({
                    getElements: () => a.lastDiffIds
                }, {
                    getElements: () => [...a.children.slice(0, d), ...l, ...a.children.slice(d + i)].map(t => e.getId(t.element).toString())
                }).ComputeDiff(!1);
            if (c.quitEarly) return a.lastDiffIds = void 0, this.spliceSimple(t, i, l, r);
            const h = t.slice(0, -1);
            var u = (t, i, n) => {
                if (0 < o)
                    for (let s = 0; s < n; s++) t--, i--, this.spliceSmart(e, [...h, t, 0], Number.MAX_SAFE_INTEGER, l[i].children, r, o - 1)
            };
            let p = Math.min(a.children.length, d + i),
                g = l.length;
            for (const e of c.changes.sort((e, t) => t.originalStart - e.originalStart)) u(p, g, p - (e.originalStart + e.originalLength)), p = e.originalStart, g = e.modifiedStart - d, this.spliceSimple([...h, p], e.originalLength, Sd.a.slice(l, g, g + e.modifiedLength), r);
            u(p, g, p)
        }
        spliceSimple(e, t, i = Sd.a.empty(), {
            onDidCreateNode: n,
            onDidDeleteNode: r,
            diffIdentityProvider: o
        }) {
            const {
                parentNode: s,
                listIndex: a,
                revealed: l,
                visible: d
            } = this.getParentNodeWithListIndex(e), c = [];
            var h = Sd.a.map(i, e => this.createTreeNode(e, s, s.visible ? 1 : 0, l, c, n)),
                u = e[e.length - 1];
            i = 0 < s.children.length;
            let p = 0;
            for (let e = u; 0 <= e && e < s.children.length; e--) {
                var g = s.children[e];
                if (g.visible) {
                    p = g.visibleChildIndex;
                    break
                }
            }
            const f = [];
            let m = 0,
                v = 0;
            for (const e of h) f.push(e), v += e.renderNodeCount, e.visible && (e.visibleChildIndex = p + m++);
            const b = Object(ne.p)(s.children, u, t, f);
            o ? s.lastDiffIds ? Object(ne.p)(s.lastDiffIds, u, t, f.map(e => o.getId(e.element).toString())) : s.lastDiffIds = s.children.map(e => o.getId(e.element).toString()) : s.lastDiffIds = void 0;
            let _ = 0;
            for (const e of b) e.visible && _++;
            if (0 !== _)
                for (let e = u + f.length; e < s.children.length; e++) {
                    const t = s.children[e];
                    t.visible && (t.visibleChildIndex -= _)
                }
            if (s.visibleChildrenCount += m - _, l && d && (w = b.reduce((e, t) => e + (t.visible ? t.renderNodeCount : 0), 0), this._updateAncestorsRenderNodeCount(s, v - w), this.list.splice(a, w, c)), 0 < b.length && r) {
                const e = t => {
                    r(t), t.children.forEach(e)
                };
                b.forEach(e)
            }
            var w = 0 < s.children.length;
            i != w && this.setCollapsible(e.slice(0, -1), w), this._onDidSplice.fire({
                insertedNodes: f,
                deletedNodes: b
            });
            let y = s;
            for (; y;) {
                if (2 === y.visibility) {
                    this.refilter();
                    break
                }
                y = y.parent
            }
        }
        rerender(e) {
            if (0 === e.length) throw new Ch(this.user, "Invalid tree location");
            var {
                node: t,
                listIndex: i,
                revealed: e
            } = this.getTreeNodeWithListIndex(e);
            t.visible && e && this.list.splice(i, 1, [t])
        }
        has(e) {
            return this.hasTreeNode(e)
        }
        getListIndex(e) {
            var {
                listIndex: t,
                visible: i,
                revealed: e
            } = this.getTreeNodeWithListIndex(e);
            return i && e ? t : -1
        }
        getListRenderCount(e) {
            return this.getTreeNode(e).renderNodeCount
        }
        isCollapsible(e) {
            return this.getTreeNode(e).collapsible
        }
        setCollapsible(e, t) {
            var i = this.getTreeNode(e);
            const n = {
                collapsible: t = void 0 === t ? !i.collapsible : t
            };
            return this.eventBufferer.bufferEvents(() => this._setCollapseState(e, n))
        }
        isCollapsed(e) {
            return this.getTreeNode(e).collapsed
        }
        setCollapsed(e, t, i) {
            var n = this.getTreeNode(e);
            const r = {
                collapsed: t = void 0 === t ? !n.collapsed : t,
                recursive: i || !1
            };
            return this.eventBufferer.bufferEvents(() => this._setCollapseState(e, r))
        }
        _setCollapseState(e, t) {
            var {
                node: i,
                listIndex: n,
                revealed: r
            } = this.getTreeNodeWithListIndex(e), r = this._setListNodeCollapseState(i, n, r, t);
            if (i !== this.root && this.autoExpandSingleChildren && r && !Oh(t) && i.collapsible && !i.collapsed && !t.recursive) {
                let n = -1;
                for (let e = 0; e < i.children.length; e++)
                    if (i.children[e].visible) {
                        if (-1 < n) {
                            n = -1;
                            break
                        }
                        n = e
                    } - 1 < n && this._setCollapseState([...e, n], t)
            }
            return r
        }
        _setListNodeCollapseState(e, t, i, n) {
            if (n = this._setNodeCollapseState(e, n, !1), !i || !e.visible || !n) return n;
            i = e.renderNodeCount;
            const r = this.updateNodeAfterCollapseChange(e);
            return this.list.splice(t + 1, i - (-1 === t ? 0 : 1), r.slice(1)), n
        }
        _setNodeCollapseState(e, t, i) {
            let n;
            if (e === this.root ? n = !1 : (Oh(t) ? (n = e.collapsible !== t.collapsible, e.collapsible = t.collapsible) : e.collapsible ? (n = e.collapsed !== t.collapsed, e.collapsed = t.collapsed) : n = !1, n && this._onDidChangeCollapseState.fire({
                    node: e,
                    deep: i
                })), !Oh(t) && t.recursive)
                for (const i of e.children) n = this._setNodeCollapseState(i, t, !0) || n;
            return n
        }
        expandTo(e) {
            this.eventBufferer.bufferEvents(() => {
                let t = this.getTreeNode(e);
                for (; t.parent;) t = t.parent, e = e.slice(0, e.length - 1), t.collapsed && this._setCollapseState(e, {
                    collapsed: !1,
                    recursive: !1
                })
            })
        }
        refilter() {
            var e = this.root.renderNodeCount,
                t = this.updateNodeAfterFilterChange(this.root);
            this.list.splice(0, e, t)
        }
        createTreeNode(e, t, i, n, r, o) {
            const s = {
                    parent: t,
                    element: e.element,
                    children: [],
                    depth: t.depth + 1,
                    visibleChildrenCount: 0,
                    visibleChildIndex: -1,
                    collapsible: "boolean" == typeof e.collapsible ? e.collapsible : void 0 !== e.collapsed,
                    collapsed: void 0 === e.collapsed ? this.collapseByDefault : e.collapsed,
                    renderNodeCount: 1,
                    visibility: 1,
                    visible: !0,
                    filterData: void 0
                },
                a = this._filterNode(s, i);
            s.visibility = a, n && r.push(s), e = e.children || Sd.a.empty();
            const l = n && 0 !== a && !s.collapsed;
            let d = 0,
                c = 1;
            for (const t of Sd.a.map(e, e => this.createTreeNode(e, s, a, l, r, o))) s.children.push(t), c += t.renderNodeCount, t.visible && (t.visibleChildIndex = d++);
            return s.collapsible = s.collapsible || 0 < s.children.length, s.visibleChildrenCount = d, s.visible = 2 === a ? 0 < d : 1 === a, s.visible ? s.collapsed || (s.renderNodeCount = c) : (s.renderNodeCount = 0, n && r.pop()), o && o(s), s
        }
        updateNodeAfterCollapseChange(e) {
            var t = e.renderNodeCount,
                i = [];
            return this._updateNodeAfterCollapseChange(e, i), this._updateAncestorsRenderNodeCount(e.parent, i.length - t), i
        }
        _updateNodeAfterCollapseChange(e, t) {
            if (!1 === e.visible) return 0;
            if (t.push(e), e.renderNodeCount = 1, !e.collapsed)
                for (const i of e.children) e.renderNodeCount += this._updateNodeAfterCollapseChange(i, t);
            return this._onDidChangeRenderNodeCount.fire(e), e.renderNodeCount
        }
        updateNodeAfterFilterChange(e) {
            var t = e.renderNodeCount,
                i = [];
            return this._updateNodeAfterFilterChange(e, e.visible ? 1 : 0, i), this._updateAncestorsRenderNodeCount(e.parent, i.length - t), i
        }
        _updateNodeAfterFilterChange(e, t, i, n = !0) {
            let r;
            if (e !== this.root) {
                if (r = this._filterNode(e, t), 0 === r) return e.visible = !1, e.renderNodeCount = 0, !1;
                n && i.push(e)
            }
            t = i.length, e.renderNodeCount = e === this.root ? 0 : 1;
            let o = !1;
            if (e.collapsed && 0 === r) e.visibleChildrenCount = 0;
            else {
                let t = 0;
                for (const s of e.children) o = this._updateNodeAfterFilterChange(s, r, i, n && !e.collapsed) || o, s.visible && (s.visibleChildIndex = t++);
                e.visibleChildrenCount = t
            }
            return e !== this.root && (e.visible = 2 === r ? o : 1 === r, e.visibility = r), e.visible ? e.collapsed || (e.renderNodeCount += i.length - t) : (e.renderNodeCount = 0, n && i.pop()), this._onDidChangeRenderNodeCount.fire(e), e.visible
        }
        _updateAncestorsRenderNodeCount(e, t) {
            if (0 !== t)
                for (; e;) e.renderNodeCount += t, this._onDidChangeRenderNodeCount.fire(e), e = e.parent
        }
        _filterNode(e, t) {
            return "boolean" == typeof(t = this.filter ? this.filter.filter(e.element, t) : 1) ? (e.filterData = void 0, t ? 1 : 0) : kh(t) ? (e.filterData = t.data, Lh(t.visibility)) : (e.filterData = void 0, Lh(t))
        }
        hasTreeNode(e, t = this.root) {
            if (!e || 0 === e.length) return !0;
            var [i, ...e] = e;
            return !(i < 0 || i > t.children.length) && this.hasTreeNode(e, t.children[i])
        }
        getTreeNode(e, t = this.root) {
            if (!e || 0 === e.length) return t;
            var [i, ...e] = e;
            if (i < 0 || i > t.children.length) throw new Ch(this.user, "Invalid tree location");
            return this.getTreeNode(e, t.children[i])
        }
        getTreeNodeWithListIndex(e) {
            if (0 === e.length) return {
                node: this.root,
                listIndex: -1,
                revealed: !0,
                visible: !1
            };
            var {
                parentNode: t,
                listIndex: i,
                revealed: n,
                visible: r
            } = this.getParentNodeWithListIndex(e);
            if ((e = e[e.length - 1]) < 0 || e > t.children.length) throw new Ch(this.user, "Invalid tree location");
            return {
                node: e = t.children[e],
                listIndex: i,
                revealed: n,
                visible: r && e.visible
            }
        }
        getParentNodeWithListIndex(e, t = this.root, i = 0, n = !0, r = !0) {
            var [o, ...e] = e;
            if (o < 0 || o > t.children.length) throw new Ch(this.user, "Invalid tree location");
            for (let e = 0; e < o; e++) i += t.children[e].renderNodeCount;
            return n = n && !t.collapsed, r = r && t.visible, 0 === e.length ? {
                parentNode: t,
                listIndex: i,
                revealed: n,
                visible: r
            } : this.getParentNodeWithListIndex(e, t.children[o], i + 1, n, r)
        }
        getNode(e = []) {
            return this.getTreeNode(e)
        }
        getNodeLocation(e) {
            const t = [];
            let i = e;
            for (; i.parent;) t.push(i.parent.children.indexOf(i)), i = i.parent;
            return t.reverse()
        }
        getParentNodeLocation(e) {
            if (0 !== e.length) return 1 === e.length ? [] : Object(ne.r)(e)[0]
        }
    }
    const Nh = Object(Sa.e)("tree-item-expanded", Sa.b.chevronDown),
        Dh = Object(Sa.e)("tree-filter-on-type-on", Sa.b.listFilter),
        Ih = Object(Sa.e)("tree-filter-on-type-off", Sa.b.listSelection),
        Th = Object(Sa.e)("tree-filter-clear", Sa.b.close),
        Mh = Object(Sa.e)("tree-item-loading", Sa.b.loading);
    var Ph;
    i(441);
    class Ah extends Pc {
        constructor(e) {
            super(e.elements.map(e => e.element)), this.data = e
        }
    }

    function Rh(e) {
        return e instanceof Pc ? new Ah(e) : e
    }
    class Fh {
        constructor(e, t) {
            this.modelProvider = e, this.dnd = t, this.autoExpandDisposable = v.a.None
        }
        getDragURI(e) {
            return this.dnd.getDragURI(e.element)
        }
        getDragLabel(e, t) {
            if (this.dnd.getDragLabel) return this.dnd.getDragLabel(e.map(e => e.element), t)
        }
        onDragStart(e, t) {
            this.dnd.onDragStart && this.dnd.onDragStart(Rh(e), t)
        }
        onDragOver(e, t, i, n, r = !0) {
            var o = this.dnd.onDragOver(Rh(e), t && t.element, i, n),
                s = this.autoExpandNode !== t;
            if (s && (this.autoExpandDisposable.dispose(), this.autoExpandNode = t), void 0 === t) return o;
            if (s && "boolean" != typeof o && o.autoExpand && (this.autoExpandDisposable = Object(q.i)(() => {
                    const e = this.modelProvider();
                    var i = e.getNodeLocation(t);
                    e.isCollapsed(i) && e.setCollapsed(i, !1), this.autoExpandNode = void 0
                }, 500)), "boolean" == typeof o || !o.accept || void 0 === o.bubble || o.feedback) return r ? o : {
                accept: "boolean" == typeof o ? o : o.accept,
                effect: "boolean" == typeof o ? void 0 : o.effect,
                feedback: [i]
            };
            if (1 === o.bubble) {
                const r = this.modelProvider(),
                    o = r.getNodeLocation(t);
                var a = r.getParentNodeLocation(o);
                i = r.getNode(a), a = a && r.getListIndex(a);
                return this.onDragOver(e, i, a, n, !1)
            }
            const l = this.modelProvider(),
                d = l.getNodeLocation(t);
            return a = l.getListIndex(d), n = l.getListRenderCount(d), Object.assign(Object.assign({}, o), {
                feedback: Object(ne.o)(a, a + n)
            })
        }
        drop(e, t, i, n) {
            this.autoExpandDisposable.dispose(), this.autoExpandNode = void 0, this.dnd.drop(Rh(e), t && t.element, i, n)
        }
        onDragEnd(e) {
            this.dnd.onDragEnd && this.dnd.onDragEnd(e)
        }
    }
    class jh {
        constructor(e) {
            this.delegate = e
        }
        getHeight(e) {
            return this.delegate.getHeight(e.element)
        }
        getTemplateId(e) {
            return this.delegate.getTemplateId(e.element)
        }
        hasDynamicHeight(e) {
            return !!this.delegate.hasDynamicHeight && this.delegate.hasDynamicHeight(e.element)
        }
        setDynamicHeight(e, t) {
            this.delegate.setDynamicHeight && this.delegate.setDynamicHeight(e.element, t)
        }
    }(x = Ph = Ph || {}).None = "none", x.OnHover = "onHover", x.Always = "always";
    class Bh {
        constructor(e, t = []) {
            this._elements = t, this.onDidChange = D.c.forEach(e, e => this._elements = e)
        }
        get elements() {
            return this._elements
        }
    }
    class Vh {
        constructor(e, t, i, n, r = {}) {
            this.renderer = e, this.modelProvider = t, this.activeNodes = n, this.renderedElements = new Map, this.renderedNodes = new Map, this.indent = Vh.DefaultIndent, this.hideTwistiesOfChildlessElements = !1, this.shouldRenderIndentGuides = !1, this.renderedIndentGuides = new kt, this.activeIndentNodes = new Set, this.indentGuidesDisposable = v.a.None, this.disposables = new v.b, this.templateId = e.templateId, this.updateOptions(r), D.c.map(i, e => e.node)(this.onDidChangeNodeTwistieState, this, this.disposables), e.onDidChangeTwistieState && e.onDidChangeTwistieState(this.onDidChangeTwistieState, this, this.disposables)
        }
        updateOptions(e = {}) {
            var t;
            void 0 !== e.indent && (this.indent = Object(Lc.b)(e.indent, 0, 40)), void 0 === e.renderIndentGuides || (t = e.renderIndentGuides !== Ph.None) !== this.shouldRenderIndentGuides && (this.shouldRenderIndentGuides = t, this.indentGuidesDisposable.dispose(), t && (t = new v.b, this.activeNodes.onDidChange(this._onDidChangeActiveNodes, this, t), this.indentGuidesDisposable = t, this._onDidChangeActiveNodes(this.activeNodes.elements))), void 0 !== e.hideTwistiesOfChildlessElements && (this.hideTwistiesOfChildlessElements = e.hideTwistiesOfChildlessElements)
        }
        renderTemplate(e) {
            var t = Object(s.n)(e, Object(s.a)(".monaco-tl-row")),
                i = Object(s.n)(t, Object(s.a)(".monaco-tl-indent")),
                n = Object(s.n)(t, Object(s.a)(".monaco-tl-twistie"));
            t = Object(s.n)(t, Object(s.a)(".monaco-tl-contents")), t = this.renderer.renderTemplate(t);
            return {
                container: e,
                indent: i,
                twistie: n,
                indentGuidesDisposable: v.a.None,
                templateData: t
            }
        }
        renderElement(e, t, i, n) {
            "number" == typeof n && (this.renderedNodes.set(e, {
                templateData: i,
                height: n
            }), this.renderedElements.set(e.element, e));
            var r = Vh.DefaultIndent + (e.depth - 1) * this.indent;
            i.twistie.style.paddingLeft = r + "px", i.indent.style.width = r + this.indent - 16 + "px", this.renderTwistie(e, i), "number" == typeof n && this.renderIndentGuides(e, i), this.renderer.renderElement(e, t, i.templateData, n)
        }
        disposeElement(e, t, i, n) {
            i.indentGuidesDisposable.dispose(), this.renderer.disposeElement && this.renderer.disposeElement(e, t, i.templateData, n), "number" == typeof n && (this.renderedNodes.delete(e), this.renderedElements.delete(e.element))
        }
        disposeTemplate(e) {
            this.renderer.disposeTemplate(e.templateData)
        }
        onDidChangeTwistieState(e) {
            (e = this.renderedElements.get(e)) && this.onDidChangeNodeTwistieState(e)
        }
        onDidChangeNodeTwistieState(e) {
            var t = this.renderedNodes.get(e);
            t && (this.renderTwistie(e, t.templateData), this._onDidChangeActiveNodes(this.activeNodes.elements), this.renderIndentGuides(e, t.templateData))
        }
        renderTwistie(e, t) {
            t.twistie.classList.remove(...Nh.classNamesArray);
            let i = !1;
            this.renderer.renderTwistie && (i = this.renderer.renderTwistie(e.element, t.twistie)), e.collapsible && (!this.hideTwistiesOfChildlessElements || 0 < e.visibleChildrenCount) ? (i || t.twistie.classList.add(...Nh.classNamesArray), t.twistie.classList.add("collapsible"), t.twistie.classList.toggle("collapsed", e.collapsed)) : t.twistie.classList.remove("collapsible", "collapsed"), e.collapsible ? t.container.setAttribute("aria-expanded", String(!e.collapsed)) : t.container.removeAttribute("aria-expanded")
        }
        renderIndentGuides(e, t) {
            if (Object(s.q)(t.indent), t.indentGuidesDisposable.dispose(), this.shouldRenderIndentGuides) {
                const n = new v.b,
                    r = this.modelProvider();
                let o = e;
                for (;;) {
                    var i = r.getNodeLocation(o);
                    if (!(i = r.getParentNodeLocation(i))) break;
                    const e = r.getNode(i),
                        a = Object(s.a)(".indent-guide", {
                            style: `width: ${this.indent}px`
                        });
                    this.activeIndentNodes.has(e) && a.classList.add("active"), 0 === t.indent.childElementCount ? t.indent.appendChild(a) : t.indent.insertBefore(a, t.indent.firstElementChild), this.renderedIndentGuides.add(e, a), n.add(Object(v.i)(() => this.renderedIndentGuides.delete(e, a))), o = e
                }
                t.indentGuidesDisposable = n
            }
        }
        _onDidChangeActiveNodes(e) {
            if (this.shouldRenderIndentGuides) {
                const t = new Set,
                    i = this.modelProvider();
                e.forEach(e => {
                    var n = i.getNodeLocation(e);
                    try {
                        var r = i.getParentNodeLocation(n);
                        e.collapsible && 0 < e.children.length && !e.collapsed ? t.add(e) : r && t.add(i.getNode(r))
                    } catch (e) {}
                }), this.activeIndentNodes.forEach(e => {
                    t.has(e) || this.renderedIndentGuides.forEach(e, e => e.classList.remove("active"))
                }), t.forEach(e => {
                    this.activeIndentNodes.has(e) || this.renderedIndentGuides.forEach(e, e => e.classList.add("active"))
                }), this.activeIndentNodes = t
            }
        }
        dispose() {
            this.renderedNodes.clear(), this.renderedElements.clear(), this.indentGuidesDisposable.dispose(), Object(v.f)(this.disposables)
        }
    }
    Vh.DefaultIndent = 8;
    class Wh {
        constructor(e, t, i) {
            this.tree = e, this.keyboardNavigationLabelProvider = t, this._filter = i, this._totalCount = 0, this._matchCount = 0, this._pattern = "", this._lowercasePattern = "", this.disposables = new v.b, e.onWillRefilter(this.reset, this, this.disposables)
        }
        get totalCount() {
            return this._totalCount
        }
        get matchCount() {
            return this._matchCount
        }
        set pattern(e) {
            this._pattern = e, this._lowercasePattern = e.toLowerCase()
        }
        filter(e, t) {
            if (this._filter) {
                if (t = this._filter.filter(e, t), this.tree.options.simpleKeyboardNavigation) return t;
                let i;
                if (i = "boolean" == typeof t ? t ? 1 : 0 : kh(t) ? Lh(t.visibility) : t, 0 === i) return !1
            }
            if (this._totalCount++, this.tree.options.simpleKeyboardNavigation || !this._pattern) return this._matchCount++, {
                data: Kd.a.Default,
                visibility: !0
            };
            e = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);
            var i = Array.isArray(e) ? e : [e];
            for (const e of i) {
                const t = e && e.toString();
                if (void 0 === t) return {
                    data: Kd.a.Default,
                    visibility: !0
                };
                var n = Object(Kd.b)(this._pattern, this._lowercasePattern, 0, t, t.toLowerCase(), 0, !0);
                if (n) return this._matchCount++, 1 === i.length ? {
                    data: n,
                    visibility: !0
                } : {
                    data: {
                        label: t,
                        score: n
                    },
                    visibility: !0
                }
            }
            return this.tree.options.filterOnType ? 2 : {
                data: Kd.a.Default,
                visibility: !0
            }
        }
        reset() {
            this._totalCount = 0, this._matchCount = 0
        }
        dispose() {
            Object(v.f)(this.disposables)
        }
    }
    class zh {
        constructor(e, t, i, n, r) {
            this.tree = e, this.view = i, this.filter = n, this.keyboardNavigationDelegate = r, this._enabled = !1, this._pattern = "", this._empty = !1, this._onDidChangeEmptyState = new D.b, this.positionClassName = "ne", this.automaticKeyboardNavigation = !0, this.triggered = !1, this._onDidChangePattern = new D.b, this.enabledDisposables = new v.b, this.disposables = new v.b, this.domNode = Object(s.a)(".monaco-list-type-filter." + this.positionClassName), this.domNode.draggable = !0, this.disposables.add(Object(s.g)(this.domNode, "dragstart", () => this.onDragStart())), this.messageDomNode = Object(s.n)(i.getHTMLElement(), Object(s.a)(".monaco-list-type-filter-message")), this.labelDomNode = Object(s.n)(this.domNode, Object(s.a)("span.label")), i = Object(s.n)(this.domNode, Object(s.a)(".controls")), this._filterOnType = !!e.options.filterOnType, this.filterOnTypeDomNode = Object(s.n)(i, Object(s.a)("input.filter")), this.filterOnTypeDomNode.type = "checkbox", this.filterOnTypeDomNode.checked = this._filterOnType, this.filterOnTypeDomNode.tabIndex = -1, this.updateFilterOnTypeTitleAndIcon(), this.disposables.add(Object(s.g)(this.filterOnTypeDomNode, "input", () => this.onDidChangeFilterOnType())), this.clearDomNode = Object(s.n)(i, Object(s.a)("button.clear" + Th.cssSelector)), this.clearDomNode.tabIndex = -1, this.clearDomNode.title = Object(yt.a)("clear", "清除"), this.keyboardNavigationEventFilter = e.options.keyboardNavigationEventFilter, t.onDidSplice(this.onDidSpliceModel, this, this.disposables), this.updateOptions(e.options)
        }
        get enabled() {
            return this._enabled
        }
        get pattern() {
            return this._pattern
        }
        get filterOnType() {
            return this._filterOnType
        }
        updateOptions(e) {
            e.simpleKeyboardNavigation ? this.disable() : this.enable(), void 0 !== e.filterOnType && (this._filterOnType = !!e.filterOnType, this.filterOnTypeDomNode.checked = this._filterOnType, this.updateFilterOnTypeTitleAndIcon()), void 0 !== e.automaticKeyboardNavigation && (this.automaticKeyboardNavigation = e.automaticKeyboardNavigation), this.tree.refilter(), this.render(), this.automaticKeyboardNavigation || this.onEventOrInput("")
        }
        enable() {
            var e, t;
            this._enabled || (t = this.enabledDisposables.add(new Sc.a(this.view.getHTMLElement(), "keydown")), e = D.c.chain(t.event).filter(e => !Kc(e.target) || e.target === this.filterOnTypeDomNode).filter(e => "Dead" !== e.key && !/^Media/.test(e.key)).map(e => new gt.a(e)).filter(this.keyboardNavigationEventFilter || (() => !0)).filter(() => this.automaticKeyboardNavigation || this.triggered).filter(e => this.keyboardNavigationDelegate.mightProducePrintableCharacter(e) && !(18 === e.keyCode || 16 === e.keyCode || 15 === e.keyCode || 17 === e.keyCode) || (0 < this.pattern.length || this.triggered) && (9 === e.keyCode || 1 === e.keyCode) && !e.altKey && !e.ctrlKey && !e.metaKey || 1 === e.keyCode && (A.f ? e.altKey && !e.metaKey : e.ctrlKey) && !e.shiftKey).forEach(e => {
                e.stopPropagation(), e.preventDefault()
            }).event, t = this.enabledDisposables.add(new Sc.a(this.clearDomNode, "click")), D.c.chain(D.c.any(e, t.event)).event(this.onEventOrInput, this, this.enabledDisposables), this.filter.pattern = "", this.tree.refilter(), this.render(), this._enabled = !0, this.triggered = !1)
        }
        disable() {
            this._enabled && (this.domNode.remove(), this.enabledDisposables.clear(), this.tree.refilter(), this.render(), this._enabled = !1, this.triggered = !1)
        }
        onEventOrInput(e) {
            "string" == typeof e ? this.onInput(e) : e instanceof MouseEvent || 9 === e.keyCode || 1 === e.keyCode && (A.f ? e.altKey : e.ctrlKey) ? this.onInput("") : 1 === e.keyCode ? this.onInput(0 === this.pattern.length ? "" : this.pattern.substr(0, this.pattern.length - 1)) : this.onInput(this.pattern + e.browserEvent.key)
        }
        onInput(e) {
            const t = this.view.getHTMLElement();
            e && !this.domNode.parentElement ? t.append(this.domNode) : !e && this.domNode.parentElement && (this.domNode.remove(), this.tree.domFocus()), this._pattern = e, this._onDidChangePattern.fire(e), this.filter.pattern = e, this.tree.refilter(), e && this.tree.focusNext(0, !0, void 0, e => !Kd.a.isDefault(e.filterData));
            var i = this.tree.getFocus();
            0 < i.length && (i = i[0], null === this.tree.getRelativeTop(i) && this.tree.reveal(i, .5)), this.render(), e || (this.triggered = !1)
        }
        onDragStart() {
            var e = this.view.getHTMLElement();
            const {
                left: t
            } = Object(s.A)(e), i = e.clientWidth, n = i / 2, r = this.domNode.clientWidth, o = new v.b;
            let a = this.positionClassName;
            const l = () => {
                    switch (a) {
                        case "nw":
                            this.domNode.style.top = "4px", this.domNode.style.left = "4px";
                            break;
                        case "ne":
                            this.domNode.style.top = "4px", this.domNode.style.left = i - r - 6 + "px"
                    }
                },
                d = () => {
                    this.positionClassName = a, this.domNode.className = "monaco-list-type-filter " + this.positionClassName, this.domNode.style.top = "", this.domNode.style.left = "", Object(v.f)(o)
                };
            l(), this.domNode.classList.remove(a), this.domNode.classList.add("dragging"), o.add(Object(v.i)(() => this.domNode.classList.remove("dragging"))), o.add(Object(s.g)(document, "dragover", e => (e => {
                e.preventDefault();
                var i = e.clientX - t;
                e.dataTransfer && (e.dataTransfer.dropEffect = "none"), a = i < n ? "nw" : "ne", l()
            })(e))), o.add(Object(s.g)(this.domNode, "dragend", () => d())), Ec.c.CurrentDragAndDropData = new Ec.b("vscode-ui"), o.add(Object(v.i)(() => Ec.c.CurrentDragAndDropData = void 0))
        }
        onDidSpliceModel() {
            this._enabled && 0 !== this.pattern.length && (this.tree.refilter(), this.render())
        }
        onDidChangeFilterOnType() {
            this.tree.updateOptions({
                filterOnType: this.filterOnTypeDomNode.checked
            }), this.tree.refilter(), this.tree.domFocus(), this.render(), this.updateFilterOnTypeTitleAndIcon()
        }
        updateFilterOnTypeTitleAndIcon() {
            this.filterOnType ? (this.filterOnTypeDomNode.classList.remove(...Ih.classNamesArray), this.filterOnTypeDomNode.classList.add(...Dh.classNamesArray), this.filterOnTypeDomNode.title = Object(yt.a)("disable filter on type", "Disable Filter on Type")) : (this.filterOnTypeDomNode.classList.remove(...Dh.classNamesArray), this.filterOnTypeDomNode.classList.add(...Ih.classNamesArray), this.filterOnTypeDomNode.title = Object(yt.a)("enable filter on type", "Enable Filter on Type"))
        }
        render() {
            var e = 0 < this.filter.totalCount && 0 === this.filter.matchCount;
            this.pattern && this.tree.options.filterOnType && e ? (this.messageDomNode.textContent = Object(yt.a)("empty", "No elements found"), this._empty = !0) : (this.messageDomNode.innerText = "", this._empty = !1), this.domNode.classList.toggle("no-matches", e), this.domNode.title = Object(yt.a)("found", "Matched {0} out of {1} elements", this.filter.matchCount, this.filter.totalCount), this.labelDomNode.textContent = 16 < this.pattern.length ? "…" + this.pattern.substr(this.pattern.length - 16) : this.pattern, this._onDidChangeEmptyState.fire(this._empty)
        }
        shouldAllowFocus(e) {
            return !(this.enabled && this.pattern && !this.filterOnType) || 0 < this.filter.totalCount && this.filter.matchCount <= 1 || !Kd.a.isDefault(e.filterData)
        }
        dispose() {
            this._enabled && (this.domNode.remove(), this.enabledDisposables.dispose(), this._enabled = !1, this.triggered = !1), this._onDidChangePattern.dispose(), Object(v.f)(this.disposables)
        }
    }

    function Hh(e) {
        let t = bh.Unknown;
        return Object(s.G)(e.browserEvent.target, "monaco-tl-twistie", "monaco-tl-row") ? t = bh.Twistie : Object(s.G)(e.browserEvent.target, "monaco-tl-contents", "monaco-tl-row") && (t = bh.Element), {
            browserEvent: e.browserEvent,
            element: e.element ? e.element.element : null,
            target: t
        }
    }

    function Uh(e, t) {
        t(e), e.children.forEach(e => Uh(e, t))
    }
    class Kh {
        constructor(e, t) {
            this.getFirstViewElementWithTrait = e, this.identityProvider = t, this.nodes = [], this._onDidChange = new D.b, this.onDidChange = this._onDidChange.event
        }
        get nodeSet() {
            return this._nodeSet || (this._nodeSet = this.createNodeSet()), this._nodeSet
        }
        set(e, t) {
            (null != t && t.__forceEvent || !Object(ne.g)(this.nodes, e)) && this._set(e, !1, t)
        }
        _set(e, t, i) {
            if (this.nodes = [...e], this.elements = void 0, this._nodeSet = void 0, !t) {
                const e = this;
                this._onDidChange.fire({
                    get elements() {
                        return e.get()
                    },
                    browserEvent: i
                })
            }
        }
        get() {
            return this.elements || (this.elements = this.nodes.map(e => e.element)), [...this.elements]
        }
        getNodes() {
            return this.nodes
        }
        has(e) {
            return this.nodeSet.has(e)
        }
        onDidModelSplice({
            insertedNodes: e,
            deletedNodes: t
        }) {
            if (!this.identityProvider) {
                const e = this.createNodeSet(),
                    i = t => e.delete(t);
                return t.forEach(e => Uh(e, i)), void this.set([...e.values()])
            }
            const i = new Set,
                n = e => i.add(this.identityProvider.getId(e.element).toString());
            t.forEach(e => Uh(e, n));
            const r = new Map,
                o = e => r.set(this.identityProvider.getId(e.element).toString(), e);
            e.forEach(e => Uh(e, o));
            const s = [];
            for (const e of this.nodes) {
                var a = this.identityProvider.getId(e.element).toString();
                i.has(a) ? (a = r.get(a)) && s.push(a) : s.push(e)
            }
            0 < this.nodes.length && 0 === s.length && (e = this.getFirstViewElementWithTrait()) && s.push(e), this._set(s, !0)
        }
        createNodeSet() {
            const e = new Set;
            for (const t of this.nodes) e.add(t);
            return e
        }
    }
    class $h extends eh {
        constructor(e, t) {
            super(e), this.tree = t
        }
        onViewPointer(e) {
            if (!Kc(e.browserEvent.target) && !$c(e.browserEvent.target)) {
                if (!(n = e.element)) return super.onViewPointer(e);
                if (this.isSelectionRangeChangeEvent(e) || this.isSelectionSingleChangeEvent(e)) return super.onViewPointer(e);
                const r = e.browserEvent.target;
                var t = r.classList.contains("monaco-tl-twistie") || r.classList.contains("monaco-icon-label") && r.classList.contains("folder-icon") && e.browserEvent.offsetX < 16;
                let o = !1;
                if (o = "function" == typeof this.tree.expandOnlyOnTwistieClick ? this.tree.expandOnlyOnTwistieClick(n.element) : !!this.tree.expandOnlyOnTwistieClick, o && !t && 2 !== e.browserEvent.detail) return super.onViewPointer(e);
                if (!this.tree.expandOnDoubleClick && 2 === e.browserEvent.detail) return super.onViewPointer(e);
                if (n.collapsible) {
                    const r = this.tree.model;
                    var i = r.getNodeLocation(n),
                        n = e.browserEvent.altKey;
                    if (this.tree.setFocus([i]), r.setCollapsed(i, void 0, n), o && t) return
                }
                super.onViewPointer(e)
            }
        }
        onDoubleClick(e) {
            !e.browserEvent.target.classList.contains("monaco-tl-twistie") && this.tree.expandOnDoubleClick && super.onDoubleClick(e)
        }
    }
    class qh extends dh {
        constructor(e, t, i, n, r, o, s, a) {
            super(e, t, i, n, a), this.focusTrait = r, this.selectionTrait = o, this.anchorTrait = s
        }
        createMouseController(e) {
            return new $h(this, e.tree)
        }
        splice(e, t, i = []) {
            if (super.splice(e, t, i), 0 !== i.length) {
                const t = [],
                    n = [];
                let r;
                i.forEach((i, o) => {
                    this.focusTrait.has(i) && t.push(e + o), this.selectionTrait.has(i) && n.push(e + o), this.anchorTrait.has(i) && (r = e + o)
                }), 0 < t.length && super.setFocus(Object(ne.f)([...super.getFocus(), ...t])), 0 < n.length && super.setSelection(Object(ne.f)([...super.getSelection(), ...n])), "number" == typeof r && super.setAnchor(r)
            }
        }
        setFocus(e, t, i = !1) {
            super.setFocus(e, t), i || this.focusTrait.set(e.map(e => this.element(e)), t)
        }
        setSelection(e, t, i = !1) {
            super.setSelection(e, t), i || this.selectionTrait.set(e.map(e => this.element(e)), t)
        }
        setAnchor(e, t = !1) {
            super.setAnchor(e), t || (void 0 === e ? this.anchorTrait.set([]) : this.anchorTrait.set([this.element(e)]))
        }
    }
    class Gh {
        constructor(e, t, i, n, r = {}) {
            this._options = r, this.eventBufferer = new D.d, this.disposables = new v.b, this._onWillRefilter = new D.b, this.onWillRefilter = this._onWillRefilter.event, this._onDidUpdateOptions = new D.b;
            var o, a, l;
            i = new jh(i);
            const d = new D.f,
                c = new D.f,
                h = new Bh(c.event);
            for (o of (this.renderers = n.map(e => new Vh(e, () => this.model, d.event, h, r)), this.renderers)) this.disposables.add(o);
            let u;
            r.keyboardNavigationLabelProvider && (u = new Wh(this, r.keyboardNavigationLabelProvider, r.filter), r = Object.assign(Object.assign({}, r), {
                filter: u
            }), this.disposables.add(u)), this.focus = new Kh(() => this.view.getFocusedElements()[0], r.identityProvider), this.selection = new Kh(() => this.view.getSelectedElements()[0], r.identityProvider), this.anchor = new Kh(() => this.view.getAnchorElement(), r.identityProvider), this.view = new qh(e, t, i, this.renderers, this.focus, this.selection, this.anchor, Object.assign(Object.assign({}, (a = () => this.model, (l = r) && Object.assign(Object.assign({}, l), {
                identityProvider: l.identityProvider && {
                    getId: e => l.identityProvider.getId(e.element)
                },
                dnd: l.dnd && new Fh(a, l.dnd),
                multipleSelectionController: l.multipleSelectionController && {
                    isSelectionSingleChangeEvent: e => l.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), {
                        element: e.element
                    })),
                    isSelectionRangeChangeEvent: e => l.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), {
                        element: e.element
                    }))
                },
                accessibilityProvider: l.accessibilityProvider && Object.assign(Object.assign({}, l.accessibilityProvider), {
                    getSetSize(e) {
                        const t = a();
                        return e = t.getNodeLocation(e), e = t.getParentNodeLocation(e), t.getNode(e).visibleChildrenCount
                    },
                    getPosInSet: e => e.visibleChildIndex + 1,
                    isChecked: l.accessibilityProvider && l.accessibilityProvider.isChecked ? e => l.accessibilityProvider.isChecked(e.element) : void 0,
                    getRole: l.accessibilityProvider && l.accessibilityProvider.getRole ? e => l.accessibilityProvider.getRole(e.element) : () => "treeitem",
                    getAriaLabel: e => l.accessibilityProvider.getAriaLabel(e.element),
                    getWidgetAriaLabel: () => l.accessibilityProvider.getWidgetAriaLabel(),
                    getWidgetRole: l.accessibilityProvider && l.accessibilityProvider.getWidgetRole ? () => l.accessibilityProvider.getWidgetRole() : () => "tree",
                    getAriaLevel: l.accessibilityProvider && l.accessibilityProvider.getAriaLevel ? e => l.accessibilityProvider.getAriaLevel(e.element) : e => e.depth,
                    getActiveDescendantId: l.accessibilityProvider.getActiveDescendantId && (e => l.accessibilityProvider.getActiveDescendantId(e.element))
                }),
                keyboardNavigationLabelProvider: l.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, l.keyboardNavigationLabelProvider), {
                    getKeyboardNavigationLabel: e => l.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)
                }),
                enableKeyboardNavigation: l.simpleKeyboardNavigation
            }))), {
                tree: this
            })), this.model = this.createModel(e, this.view, r), d.input = this.model.onDidChangeCollapseState;
            const p = D.c.forEach(this.model.onDidSplice, e => {
                this.eventBufferer.bufferEvents(() => {
                    this.focus.onDidModelSplice(e), this.selection.onDidModelSplice(e)
                })
            });
            if (p(() => null, null, this.disposables), c.input = D.c.chain(D.c.any(p, this.focus.onDidChange, this.selection.onDidChange)).debounce(() => null, 0).map(() => {
                    const e = new Set;
                    for (const t of this.focus.getNodes()) e.add(t);
                    for (const t of this.selection.getNodes()) e.add(t);
                    return [...e.values()]
                }).event, !1 !== r.keyboardSupport) {
                const e = D.c.chain(this.view.onKeyDown).filter(e => !Kc(e.target)).map(e => new gt.a(e));
                e.filter(e => 15 === e.keyCode).on(this.onLeftArrow, this, this.disposables), e.filter(e => 17 === e.keyCode).on(this.onRightArrow, this, this.disposables), e.filter(e => 10 === e.keyCode).on(this.onSpace, this, this.disposables)
            }
            if (r.keyboardNavigationLabelProvider) {
                const e = r.keyboardNavigationDelegate || Gc;
                this.typeFilterController = new zh(this, this.model, this.view, u, e), this.focusNavigationFilter = e => this.typeFilterController.shouldAllowFocus(e), this.disposables.add(this.typeFilterController)
            }
            this.styleElement = Object(s.t)(this.view.getHTMLElement()), this.getHTMLElement().classList.toggle("always", this._options.renderIndentGuides === Ph.Always)
        }
        get onDidChangeFocus() {
            return this.eventBufferer.wrapEvent(this.focus.onDidChange)
        }
        get onDidChangeSelection() {
            return this.eventBufferer.wrapEvent(this.selection.onDidChange)
        }
        get onMouseDblClick() {
            return D.c.map(this.view.onMouseDblClick, Hh)
        }
        get onPointer() {
            return D.c.map(this.view.onPointer, Hh)
        }
        get onDidFocus() {
            return this.view.onDidFocus
        }
        get onDidChangeCollapseState() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.onDidChangeCollapseState
        }
        get expandOnDoubleClick() {
            return void 0 === this._options.expandOnDoubleClick || this._options.expandOnDoubleClick
        }
        get expandOnlyOnTwistieClick() {
            return void 0 === this._options.expandOnlyOnTwistieClick || this._options.expandOnlyOnTwistieClick
        }
        get onDidDispose() {
            return this.view.onDidDispose
        }
        updateOptions(e = {}) {
            this._options = Object.assign(Object.assign({}, this._options), e);
            for (const t of this.renderers) t.updateOptions(e);
            this.view.updateOptions(Object.assign(Object.assign({}, this._options), {
                enableKeyboardNavigation: this._options.simpleKeyboardNavigation
            })), this.typeFilterController && this.typeFilterController.updateOptions(this._options), this._onDidUpdateOptions.fire(this._options), this.getHTMLElement().classList.toggle("always", this._options.renderIndentGuides === Ph.Always)
        }
        get options() {
            return this._options
        }
        getHTMLElement() {
            return this.view.getHTMLElement()
        }
        get scrollTop() {
            return this.view.scrollTop
        }
        set scrollTop(e) {
            this.view.scrollTop = e
        }
        domFocus() {
            this.view.domFocus()
        }
        layout(e, t) {
            this.view.layout(e, t)
        }
        style(e) {
            var t = "." + this.view.domId;
            const i = [];
            e.treeIndentGuidesStroke && (i.push(`.monaco-list${t}:hover .monaco-tl-indent > .indent-guide, .monaco-list${t}.always .monaco-tl-indent > .indent-guide  { border-color: ${e.treeIndentGuidesStroke.transparent(.4)}; }`), i.push(`.monaco-list${t} .monaco-tl-indent > .indent-guide.active { border-color: ${e.treeIndentGuidesStroke}; }`)), this.styleElement.textContent = i.join("\n"), this.view.style(e)
        }
        collapse(e, t = !1) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.setCollapsed(e, !0, t)
        }
        expand(e, t = !1) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.setCollapsed(e, !1, t)
        }
        isCollapsible(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.isCollapsible(e)
        }
        setCollapsible(e, t) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.setCollapsible(e, t)
        }
        isCollapsed(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.isCollapsed(e)
        }
        refilter() {
            this._onWillRefilter.fire(void 0), this.model.refilter()
        }
        setSelection(e, t) {
            var i = e.map(e => this.model.getNode(e));
            this.selection.set(i, t), e = e.map(e => this.model.getListIndex(e)).filter(e => -1 < e), this.view.setSelection(e, t, !0)
        }
        getSelection() {
            return this.selection.get()
        }
        setFocus(e, t) {
            var i = e.map(e => this.model.getNode(e));
            this.focus.set(i, t), e = e.map(e => this.model.getListIndex(e)).filter(e => -1 < e), this.view.setFocus(e, t, !0)
        }
        focusNext(e = 1, t = !1, i, n = this.focusNavigationFilter) {
            this.view.focusNext(e, t, i, n)
        }
        getFocus() {
            return this.focus.get()
        }
        reveal(e, t) {
            this.model.expandTo(e), -1 !== (e = this.model.getListIndex(e)) && this.view.reveal(e, t)
        }
        getRelativeTop(e) {
            return -1 === (e = this.model.getListIndex(e)) ? null : this.view.getRelativeTop(e)
        }
        onLeftArrow(e) {
            e.preventDefault(), e.stopPropagation(), 0 !== (e = this.view.getFocusedElements()).length && (e = e[0], e = this.model.getNodeLocation(e), this.model.setCollapsed(e, !0) || (e = this.model.getParentNodeLocation(e)) && (e = this.model.getListIndex(e), this.view.reveal(e), this.view.setFocus([e])))
        }
        onRightArrow(e) {
            if (e.preventDefault(), e.stopPropagation(), 0 !== (e = this.view.getFocusedElements()).length) {
                const t = e[0];
                e = this.model.getNodeLocation(t), this.model.setCollapsed(e, !1) || t.children.some(e => e.visible) && ([e] = this.view.getFocus(), this.view.reveal(e += 1), this.view.setFocus([e]))
            }
        }
        onSpace(e) {
            e.preventDefault(), e.stopPropagation();
            var t = this.view.getFocusedElements();
            0 !== t.length && (t = t[0], t = this.model.getNodeLocation(t), e = e.browserEvent.altKey, this.model.setCollapsed(t, void 0, e))
        }
        dispose() {
            Object(v.f)(this.disposables), this.view.dispose()
        }
    }
    class Yh {
        constructor(e, t, i = {}) {
            this.user = e, this.rootRef = null, this.nodes = new Map, this.nodesByIdentity = new Map, this.model = new Eh(e, t, null, i), this.onDidSplice = this.model.onDidSplice, this.onDidChangeCollapseState = this.model.onDidChangeCollapseState, this.onDidChangeRenderNodeCount = this.model.onDidChangeRenderNodeCount, i.sorter && (this.sorter = {
                compare: (e, t) => i.sorter.compare(e.element, t.element)
            }), this.identityProvider = i.identityProvider
        }
        setChildren(e, t = Sd.a.empty(), i = {}) {
            e = this.getElementLocation(e), this._setChildren(e, this.preserveCollapseState(t), i)
        }
        _setChildren(e, t = Sd.a.empty(), i) {
            const n = new Set,
                r = new Set;
            this.model.splice([...e, 0], Number.MAX_VALUE, t, Object.assign(Object.assign({}, i), {
                onDidCreateNode: e => {
                    var t;
                    null !== e.element && (e = e, n.add(e.element), this.nodes.set(e.element, e), this.identityProvider && (t = this.identityProvider.getId(e.element).toString(), r.add(t), this.nodesByIdentity.set(t, e)), null !== (t = i.onDidCreateNode) && void 0 !== t && t.call(i, e))
                },
                onDidDeleteNode: e => {
                    var t;
                    null !== e.element && (e = e, n.has(e.element) || this.nodes.delete(e.element), this.identityProvider && (t = this.identityProvider.getId(e.element).toString(), r.has(t) || this.nodesByIdentity.delete(t)), null !== (t = i.onDidDeleteNode) && void 0 !== t && t.call(i, e))
                }
            }))
        }
        preserveCollapseState(e = Sd.a.empty()) {
            return this.sorter && (e = [...e].sort(this.sorter.compare.bind(this.sorter))), Sd.a.map(e, e => {
                let t = this.nodes.get(e.element);
                if (!t && this.identityProvider && (n = this.identityProvider.getId(e.element).toString(), t = this.nodesByIdentity.get(n)), !t) return Object.assign(Object.assign({}, e), {
                    children: this.preserveCollapseState(e.children)
                });
                var i = ("boolean" == typeof e.collapsible ? e : t).collapsible,
                    n = (void 0 !== e.collapsed ? e : t).collapsed;
                return Object.assign(Object.assign({}, e), {
                    collapsible: i,
                    collapsed: n,
                    children: this.preserveCollapseState(e.children)
                })
            })
        }
        rerender(e) {
            e = this.getElementLocation(e), this.model.rerender(e)
        }
        has(e) {
            return this.nodes.has(e)
        }
        getListIndex(e) {
            return e = this.getElementLocation(e), this.model.getListIndex(e)
        }
        getListRenderCount(e) {
            return e = this.getElementLocation(e), this.model.getListRenderCount(e)
        }
        isCollapsible(e) {
            return e = this.getElementLocation(e), this.model.isCollapsible(e)
        }
        setCollapsible(e, t) {
            return e = this.getElementLocation(e), this.model.setCollapsible(e, t)
        }
        isCollapsed(e) {
            return e = this.getElementLocation(e), this.model.isCollapsed(e)
        }
        setCollapsed(e, t, i) {
            return e = this.getElementLocation(e), this.model.setCollapsed(e, t, i)
        }
        expandTo(e) {
            e = this.getElementLocation(e), this.model.expandTo(e)
        }
        refilter() {
            this.model.refilter()
        }
        getNode(e = null) {
            if (null === e) "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getNode(this.model.rootRef);
            var t = this.nodes.get(e);
            if (!t) throw new Ch(this.user, "Tree element not found: " + e);
            return t
        }
        getNodeLocation(e) {
            return e.element
        }
        getParentNodeLocation(e) {
            if (null === e) throw new Ch(this.user, "Invalid getParentNodeLocation call");
            var t = this.nodes.get(e);
            if (!t) throw new Ch(this.user, "Tree element not found: " + e);
            return t = this.model.getNodeLocation(t), t = this.model.getParentNodeLocation(t), this.model.getNode(t).element
        }
        getElementLocation(e) {
            if (null === e) return [];
            var t = this.nodes.get(e);
            if (!t) throw new Ch(this.user, "Tree element not found: " + e);
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getNodeLocation(t)
        }
    }

    function Zh(e) {
        return {
            element: {
                elements: [e.element],
                incompressible: e.incompressible || !1
            },
            children: Sd.a.map(Sd.a.from(e.children), Zh),
            collapsible: e.collapsible,
            collapsed: e.collapsed
        }
    }

    function Xh(e) {
        const t = [e.element];
        var i = e.incompressible || !1;
        let n, r;
        for (;
            [r, n] = Sd.a.consume(Sd.a.from(e.children), 2), 1 === r.length && !r[0].incompressible;) e = r[0], t.push(e.element);
        return {
            element: {
                elements: t,
                incompressible: i
            },
            children: Sd.a.map(Sd.a.concat(r, n), Xh),
            collapsible: e.collapsible,
            collapsed: e.collapsed
        }
    }

    function Qh(e) {
        return function e(t, i = 0) {
            let n;
            return n = i < t.element.elements.length - 1 ? [e(t, i + 1)] : Sd.a.map(Sd.a.from(t.children), t => e(t, 0)), 0 === i && t.element.incompressible ? {
                element: t.element.elements[i],
                children: n,
                incompressible: !0,
                collapsible: t.collapsible,
                collapsed: t.collapsed
            } : {
                element: t.element.elements[i],
                children: n,
                collapsible: t.collapsible,
                collapsed: t.collapsed
            }
        }(e, 0)
    }
    class Jh {
        constructor(e, t, i = {}) {
            this.user = e, this.rootRef = null, this.nodes = new Map, this.model = new Yh(e, t, i), this.enabled = void 0 === i.compressionEnabled || i.compressionEnabled, this.identityProvider = i.identityProvider
        }
        get onDidSplice() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.onDidSplice
        }
        get onDidChangeCollapseState() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.onDidChangeCollapseState
        }
        get onDidChangeRenderNodeCount() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.onDidChangeRenderNodeCount
        }
        setChildren(e, t = Sd.a.empty(), i) {
            var n, r = i.diffIdentityProvider && (n = i.diffIdentityProvider, {
                getId: e => e.elements.map(e => n.getId(e).toString()).join("\0")
            });
            if (null !== e) {
                if (!(i = this.nodes.get(e))) throw new Error("Unknown compressed tree node");
                const n = this.model.getNode(i);
                i = this.model.getParentNodeLocation(i);
                const o = this.model.getNode(i);
                e = function e(t, i, n) {
                    return t.element === i ? Object.assign(Object.assign({}, t), {
                        children: n
                    }) : Object.assign(Object.assign({}, t), {
                        children: Sd.a.map(Sd.a.from(t.children), t => e(t, i, n))
                    })
                }(Qh(n), e, t);
                const s = (this.enabled ? Xh : Zh)(e);
                e = o.children.map(e => e === n ? s : e), this._setChildren(o.element, e, {
                    diffIdentityProvider: r,
                    diffDepth: n.depth - o.depth
                })
            } else t = Sd.a.map(t, this.enabled ? Xh : Zh), this._setChildren(null, t, {
                diffIdentityProvider: r,
                diffDepth: 1 / 0
            })
        }
        setCompressionEnabled(e) {
            var t;
            e !== this.enabled && (this.enabled = e, t = this.model.getNode().children, t = Sd.a.map(t, Qh), e = Sd.a.map(t, e ? Xh : Zh), this._setChildren(null, e, {
                diffIdentityProvider: this.identityProvider,
                diffDepth: 1 / 0
            }))
        }
        _setChildren(e, t, i) {
            const n = new Set;
            this.model.setChildren(e, t, Object.assign(Object.assign({}, i), {
                onDidCreateNode: e => {
                    for (const t of e.element.elements) n.add(t), this.nodes.set(t, e.element)
                },
                onDidDeleteNode: e => {
                    for (const t of e.element.elements) n.has(t) || this.nodes.delete(t)
                }
            }))
        }
        has(e) {
            return this.nodes.has(e)
        }
        getListIndex(e) {
            return e = this.getCompressedNode(e), this.model.getListIndex(e)
        }
        getListRenderCount(e) {
            return e = this.getCompressedNode(e), this.model.getListRenderCount(e)
        }
        getNode(e) {
            return void 0 === e ? this.model.getNode() : (e = this.getCompressedNode(e), this.model.getNode(e))
        }
        getNodeLocation(e) {
            return null === (e = this.model.getNodeLocation(e)) ? null : e.elements[e.elements.length - 1]
        }
        getParentNodeLocation(e) {
            return e = this.getCompressedNode(e), null === (e = this.model.getParentNodeLocation(e)) ? null : e.elements[e.elements.length - 1]
        }
        isCollapsible(e) {
            return e = this.getCompressedNode(e), this.model.isCollapsible(e)
        }
        setCollapsible(e, t) {
            return e = this.getCompressedNode(e), this.model.setCollapsible(e, t)
        }
        isCollapsed(e) {
            return e = this.getCompressedNode(e), this.model.isCollapsed(e)
        }
        setCollapsed(e, t, i) {
            return e = this.getCompressedNode(e), this.model.setCollapsed(e, t, i)
        }
        expandTo(e) {
            e = this.getCompressedNode(e), this.model.expandTo(e)
        }
        rerender(e) {
            e = this.getCompressedNode(e), this.model.rerender(e)
        }
        refilter() {
            this.model.refilter()
        }
        getCompressedNode(e) {
            if (null === e) return null;
            var t = this.nodes.get(e);
            if (!t) throw new Ch(this.user, "Tree element not found: " + e);
            return t
        }
    }
    const eu = e => e[e.length - 1];
    class tu {
        constructor(e, t) {
            this.unwrapper = e, this.node = t
        }
        get element() {
            return null === this.node.element ? null : this.unwrapper(this.node.element)
        }
        get children() {
            return this.node.children.map(e => new tu(this.unwrapper, e))
        }
        get depth() {
            return this.node.depth
        }
        get visibleChildrenCount() {
            return this.node.visibleChildrenCount
        }
        get visibleChildIndex() {
            return this.node.visibleChildIndex
        }
        get collapsible() {
            return this.node.collapsible
        }
        get collapsed() {
            return this.node.collapsed
        }
        get visible() {
            return this.node.visible
        }
        get filterData() {
            return this.node.filterData
        }
    }
    class iu {
        constructor(e, t, i = {}) {
            this.rootRef = null, this.elementMapper = i.elementMapper || eu;
            const n = e => this.elementMapper(e.elements);
            var r, o, s, a;
            this.nodeMapper = new xh(e => new tu(n, e)), this.model = new Jh(e, (s = this.nodeMapper, a = t, {
                splice(e, t, i) {
                    a.splice(e, t, i.map(e => s.map(e)))
                },
                updateElementHeight(e, t) {
                    a.updateElementHeight(e, t)
                }
            }), (r = n, o = i, Object.assign(Object.assign({}, o), {
                identityProvider: o.identityProvider && {
                    getId: e => o.identityProvider.getId(r(e))
                },
                sorter: o.sorter && {
                    compare: (e, t) => o.sorter.compare(e.elements[0], t.elements[0])
                },
                filter: o.filter && {
                    filter: (e, t) => o.filter.filter(r(e), t)
                }
            })))
        }
        get onDidSplice() {
            return D.c.map(this.model.onDidSplice, ({
                insertedNodes: e,
                deletedNodes: t
            }) => ({
                insertedNodes: e.map(e => this.nodeMapper.map(e)),
                deletedNodes: t.map(e => this.nodeMapper.map(e))
            }))
        }
        get onDidChangeCollapseState() {
            return D.c.map(this.model.onDidChangeCollapseState, ({
                node: e,
                deep: t
            }) => ({
                node: this.nodeMapper.map(e),
                deep: t
            }))
        }
        get onDidChangeRenderNodeCount() {
            return D.c.map(this.model.onDidChangeRenderNodeCount, e => this.nodeMapper.map(e))
        }
        setChildren(e, t = Sd.a.empty(), i = {}) {
            this.model.setChildren(e, t, i)
        }
        setCompressionEnabled(e) {
            this.model.setCompressionEnabled(e)
        }
        has(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.has(e)
        }
        getListIndex(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getListIndex(e)
        }
        getListRenderCount(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getListRenderCount(e)
        }
        getNode(e) {
            return this.nodeMapper.map(this.model.getNode(e))
        }
        getNodeLocation(e) {
            return e.element
        }
        getParentNodeLocation(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getParentNodeLocation(e)
        }
        isCollapsible(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.isCollapsible(e)
        }
        setCollapsible(e, t) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.setCollapsible(e, t)
        }
        isCollapsed(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.isCollapsed(e)
        }
        setCollapsed(e, t, i) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.setCollapsed(e, t, i)
        }
        expandTo(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.expandTo(e)
        }
        rerender(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.rerender(e)
        }
        refilter() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.refilter()
        }
        getCompressedTreeNode(e = null) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getNode(e)
        }
    }
    class nu extends Gh {
        constructor(e, t, i, n, r = {}) {
            super(e, t, i, n, r)
        }
        get onDidChangeCollapseState() {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.onDidChangeCollapseState
        }
        setChildren(e, t = Sd.a.empty(), i) {
            this.model.setChildren(e, t, i)
        }
        rerender(e) {
            void 0 !== e ? this.model.rerender(e) : this.view.rerender()
        }
        hasElement(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.has(e)
        }
        createModel(e, t, i) {
            return new Yh(e, t, i)
        }
    }
    class ru {
        constructor(e, t) {
            this._compressedTreeNodeProvider = e, this.renderer = t, this.templateId = t.templateId, t.onDidChangeTwistieState && (this.onDidChangeTwistieState = t.onDidChangeTwistieState)
        }
        get compressedTreeNodeProvider() {
            return this._compressedTreeNodeProvider()
        }
        renderTemplate(e) {
            return {
                compressedTreeNode: void 0,
                data: this.renderer.renderTemplate(e)
            }
        }
        renderElement(e, t, i, n) {
            var r = this.compressedTreeNodeProvider.getCompressedTreeNode(e.element);
            1 === r.element.elements.length ? (i.compressedTreeNode = void 0, this.renderer.renderElement(e, t, i.data, n)) : (i.compressedTreeNode = r, this.renderer.renderCompressedElements(r, t, i.data, n))
        }
        disposeElement(e, t, i, n) {
            i.compressedTreeNode ? this.renderer.disposeCompressedElements && this.renderer.disposeCompressedElements(i.compressedTreeNode, t, i.data, n) : this.renderer.disposeElement && this.renderer.disposeElement(e, t, i.data, n)
        }
        disposeTemplate(e) {
            this.renderer.disposeTemplate(e.data)
        }
        renderTwistie(e, t) {
            return !!this.renderer.renderTwistie && this.renderer.renderTwistie(e, t)
        }
    }! function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        3 < o && s && Object.defineProperty(t, i, s)
    }([gi.a], ru.prototype, "compressedTreeNodeProvider", null);
    class ou extends nu {
        constructor(e, t, i, n, r = {}) {
            const o = () => this;
            var s, a;
            super(e, t, i, n.map(e => new ru(o, e)), (s = o, (a = r) && Object.assign(Object.assign({}, a), {
                keyboardNavigationLabelProvider: a.keyboardNavigationLabelProvider && {
                    getKeyboardNavigationLabel(e) {
                        let t;
                        try {
                            t = s().getCompressedTreeNode(e)
                        } catch (t) {
                            return a.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e)
                        }
                        return 1 === t.element.elements.length ? a.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e) : a.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.element.elements)
                    }
                }
            })))
        }
        setChildren(e, t = Sd.a.empty(), i) {
            this.model.setChildren(e, t, i)
        }
        createModel(e, t, i) {
            return new iu(e, t, i)
        }
        updateOptions(e = {}) {
            super.updateOptions(e), void 0 !== e.compressionEnabled && this.model.setCompressionEnabled(e.compressionEnabled)
        }
        getCompressedTreeNode(e = null) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model.getCompressedTreeNode(e)
        }
    }
    var su = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };

    function au(e) {
        return Object.assign(Object.assign({}, e), {
            children: [],
            refreshPromise: void 0,
            stale: !0,
            slow: !1,
            collapsedByDefault: void 0
        })
    }

    function lu(e, t) {
        return !!t.parent && (t.parent === e || lu(e, t.parent))
    }
    class du {
        constructor(e) {
            this.node = e
        }
        get element() {
            return this.node.element.element
        }
        get children() {
            return this.node.children.map(e => new du(e))
        }
        get depth() {
            return this.node.depth
        }
        get visibleChildrenCount() {
            return this.node.visibleChildrenCount
        }
        get visibleChildIndex() {
            return this.node.visibleChildIndex
        }
        get collapsible() {
            return this.node.collapsible
        }
        get collapsed() {
            return this.node.collapsed
        }
        get visible() {
            return this.node.visible
        }
        get filterData() {
            return this.node.filterData
        }
    }
    class cu {
        constructor(e, t, i) {
            this.renderer = e, this.nodeMapper = t, this.onDidChangeTwistieState = i, this.renderedNodes = new Map, this.templateId = e.templateId
        }
        renderTemplate(e) {
            return {
                templateData: this.renderer.renderTemplate(e)
            }
        }
        renderElement(e, t, i, n) {
            this.renderer.renderElement(this.nodeMapper.map(e), t, i.templateData, n)
        }
        renderTwistie(e, t) {
            return e.slow ? (t.classList.add(...Mh.classNamesArray), !0) : (t.classList.remove(...Mh.classNamesArray), !1)
        }
        disposeElement(e, t, i, n) {
            this.renderer.disposeElement && this.renderer.disposeElement(this.nodeMapper.map(e), t, i.templateData, n)
        }
        disposeTemplate(e) {
            this.renderer.disposeTemplate(e.templateData)
        }
        dispose() {
            this.renderedNodes.clear()
        }
    }

    function hu(e) {
        return {
            browserEvent: e.browserEvent,
            elements: e.elements.map(e => e.element)
        }
    }

    function uu(e) {
        return {
            browserEvent: e.browserEvent,
            element: e.element && e.element.element,
            target: e.target
        }
    }
    class pu extends Pc {
        constructor(e) {
            super(e.elements.map(e => e.element)), this.data = e
        }
    }

    function gu(e) {
        return e instanceof Pc ? new pu(e) : e
    }
    class fu {
        constructor(e) {
            this.dnd = e
        }
        getDragURI(e) {
            return this.dnd.getDragURI(e.element)
        }
        getDragLabel(e, t) {
            if (this.dnd.getDragLabel) return this.dnd.getDragLabel(e.map(e => e.element), t)
        }
        onDragStart(e, t) {
            this.dnd.onDragStart && this.dnd.onDragStart(gu(e), t)
        }
        onDragOver(e, t, i, n, r = 0) {
            return this.dnd.onDragOver(gu(e), t && t.element, i, n)
        }
        drop(e, t, i, n) {
            this.dnd.drop(gu(e), t && t.element, i, n)
        }
        onDragEnd(e) {
            this.dnd.onDragEnd && this.dnd.onDragEnd(e)
        }
    }

    function mu(e) {
        return e && Object.assign(Object.assign({}, e), {
            collapseByDefault: !0,
            identityProvider: e.identityProvider && {
                getId: t => e.identityProvider.getId(t.element)
            },
            dnd: e.dnd && new fu(e.dnd),
            multipleSelectionController: e.multipleSelectionController && {
                isSelectionSingleChangeEvent: t => e.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, t), {
                    element: t.element
                })),
                isSelectionRangeChangeEvent: t => e.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, t), {
                    element: t.element
                }))
            },
            accessibilityProvider: e.accessibilityProvider && Object.assign(Object.assign({}, e.accessibilityProvider), {
                getPosInSet: void 0,
                getSetSize: void 0,
                getRole: e.accessibilityProvider.getRole ? t => e.accessibilityProvider.getRole(t.element) : () => "treeitem",
                isChecked: e.accessibilityProvider.isChecked ? t => {
                    var i;
                    return !(null === (i = e.accessibilityProvider) || void 0 === i || !i.isChecked(t.element))
                } : void 0,
                getAriaLabel: t => e.accessibilityProvider.getAriaLabel(t.element),
                getWidgetAriaLabel: () => e.accessibilityProvider.getWidgetAriaLabel(),
                getWidgetRole: e.accessibilityProvider.getWidgetRole ? () => e.accessibilityProvider.getWidgetRole() : () => "tree",
                getAriaLevel: e.accessibilityProvider.getAriaLevel && (t => e.accessibilityProvider.getAriaLevel(t.element)),
                getActiveDescendantId: e.accessibilityProvider.getActiveDescendantId && (t => e.accessibilityProvider.getActiveDescendantId(t.element))
            }),
            filter: e.filter && {
                filter: (t, i) => e.filter.filter(t.element, i)
            },
            keyboardNavigationLabelProvider: e.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, e.keyboardNavigationLabelProvider), {
                getKeyboardNavigationLabel: t => e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)
            }),
            sorter: void 0,
            expandOnlyOnTwistieClick: void 0 === e.expandOnlyOnTwistieClick ? void 0 : "function" != typeof e.expandOnlyOnTwistieClick ? e.expandOnlyOnTwistieClick : t => e.expandOnlyOnTwistieClick(t.element),
            additionalScrollHeight: e.additionalScrollHeight
        })
    }

    function vu(e, t) {
        t(e), e.children.forEach(e => vu(e, t))
    }
    class bu {
        constructor(e, t, i, n, r, o = {}) {
            this.user = e, this.dataSource = r, this.nodes = new Map, this.subTreeRefreshPromises = new Map, this.refreshPromises = new Map, this._onDidRender = new D.b, this._onDidChangeNodeSlowState = new D.b, this.nodeMapper = new xh(e => new du(e)), this.disposables = new v.b, this.identityProvider = o.identityProvider, this.autoExpandSingleChildren = void 0 !== o.autoExpandSingleChildren && o.autoExpandSingleChildren, this.sorter = o.sorter, this.collapseByDefault = o.collapseByDefault, this.tree = this.createTree(e, t, i, n, o), this.root = au({
                element: void 0,
                parent: null,
                hasChildren: !0
            }), this.identityProvider && (this.root = Object.assign(Object.assign({}, this.root), {
                id: null
            })), this.nodes.set(null, this.root), this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState, this, this.disposables)
        }
        get onDidChangeFocus() {
            return D.c.map(this.tree.onDidChangeFocus, hu)
        }
        get onDidChangeSelection() {
            return D.c.map(this.tree.onDidChangeSelection, hu)
        }
        get onMouseDblClick() {
            return D.c.map(this.tree.onMouseDblClick, uu)
        }
        get onPointer() {
            return D.c.map(this.tree.onPointer, uu)
        }
        get onDidFocus() {
            return this.tree.onDidFocus
        }
        get onDidDispose() {
            return this.tree.onDidDispose
        }
        createTree(e, t, i, n, r) {
            return i = new jh(i), n = n.map(e => new cu(e, this.nodeMapper, this._onDidChangeNodeSlowState.event)), r = mu(r) || {}, new nu(e, t, i, n, r)
        }
        updateOptions(e = {}) {
            this.tree.updateOptions(e)
        }
        getHTMLElement() {
            return this.tree.getHTMLElement()
        }
        get scrollTop() {
            return this.tree.scrollTop
        }
        set scrollTop(e) {
            this.tree.scrollTop = e
        }
        domFocus() {
            this.tree.domFocus()
        }
        layout(e, t) {
            this.tree.layout(e, t)
        }
        style(e) {
            this.tree.style(e)
        }
        getInput() {
            return this.root.element
        }
        setInput(e, t) {
            return su(this, void 0, void 0, (function*() {
                this.refreshPromises.forEach(e => e.cancel()), this.refreshPromises.clear(), this.root.element = e;
                var i = t && {
                    viewState: t,
                    focus: [],
                    selection: []
                };
                yield this._updateChildren(e, !0, !1, i), i && (this.tree.setFocus(i.focus), this.tree.setSelection(i.selection)), t && "number" == typeof t.scrollTop && (this.scrollTop = t.scrollTop)
            }))
        }
        _updateChildren(e = this.root.element, t = !0, i = !1, n, r) {
            return su(this, void 0, void 0, (function*() {
                if (void 0 === this.root.element) throw new Ch(this.user, "Tree input not set");
                this.root.refreshPromise && (yield this.root.refreshPromise, yield D.c.toPromise(this._onDidRender.event));
                var o = this.getDataNode(e);
                if (yield this.refreshAndRenderNode(o, t, n, r), i) try {
                    this.tree.rerender(o)
                } catch (o) {}
            }))
        }
        rerender(e) {
            void 0 !== e && e !== this.root.element ? (e = this.getDataNode(e), this.tree.rerender(e)) : this.tree.rerender()
        }
        collapse(e, t = !1) {
            return e = this.getDataNode(e), this.tree.collapse(e === this.root ? null : e, t)
        }
        expand(e, t = !1) {
            return su(this, void 0, void 0, (function*() {
                if (void 0 === this.root.element) throw new Ch(this.user, "Tree input not set");
                this.root.refreshPromise && (yield this.root.refreshPromise, yield D.c.toPromise(this._onDidRender.event));
                var i = this.getDataNode(e);
                if (this.tree.hasElement(i) && !this.tree.isCollapsible(i)) return !1;
                if (i.refreshPromise && (yield this.root.refreshPromise, yield D.c.toPromise(this._onDidRender.event)), i !== this.root && !i.refreshPromise && !this.tree.isCollapsed(i)) return !1;
                var n = this.tree.expand(i === this.root ? null : i, t);
                return i.refreshPromise && (yield this.root.refreshPromise, yield D.c.toPromise(this._onDidRender.event)), n
            }))
        }
        setSelection(e, t) {
            e = e.map(e => this.getDataNode(e)), this.tree.setSelection(e, t)
        }
        getSelection() {
            return this.tree.getSelection().map(e => e.element)
        }
        setFocus(e, t) {
            e = e.map(e => this.getDataNode(e)), this.tree.setFocus(e, t)
        }
        getFocus() {
            return this.tree.getFocus().map(e => e.element)
        }
        reveal(e, t) {
            this.tree.reveal(this.getDataNode(e), t)
        }
        getDataNode(e) {
            var t = this.nodes.get(e === this.root.element ? null : e);
            if (!t) throw new Ch(this.user, "Data tree node not found: " + e);
            return t
        }
        refreshAndRenderNode(e, t, i, n) {
            return su(this, void 0, void 0, (function*() {
                yield this.refreshNode(e, t, i), this.render(e, i, n)
            }))
        }
        refreshNode(e, t, i) {
            return su(this, void 0, void 0, (function*() {
                let n;
                return this.subTreeRefreshPromises.forEach((r, o) => {
                    var s;
                    n || (s = o) !== (o = e) && !lu(s, o) && !lu(o, s) || (n = r.then(() => this.refreshNode(e, t, i)))
                }), n || this.doRefreshSubTree(e, t, i)
            }))
        }
        doRefreshSubTree(e, t, i) {
            return su(this, void 0, void 0, (function*() {
                let n;
                e.refreshPromise = new Promise(e => n = e), this.subTreeRefreshPromises.set(e, e.refreshPromise), e.refreshPromise.finally(() => {
                    e.refreshPromise = void 0, this.subTreeRefreshPromises.delete(e)
                });
                try {
                    const r = yield this.doRefreshNode(e, t, i);
                    e.stale = !1, yield q.d.settled(r.map(e => this.doRefreshSubTree(e, t, i)))
                } finally {
                    n()
                }
            }))
        }
        doRefreshNode(e, t, i) {
            return su(this, void 0, void 0, (function*() {
                let n;
                if (e.hasChildren = !!this.dataSource.hasChildren(e.element), e.hasChildren) {
                    const t = Object(q.k)(800);
                    t.then(() => {
                        e.slow = !0, this._onDidChangeNodeSlowState.fire(e)
                    }, e => null), n = this.doGetChildren(e).finally(() => t.cancel())
                } else n = Promise.resolve(Sd.a.empty());
                try {
                    var r = yield n;
                    return this.setChildren(e, r, t, i)
                } catch (n) {
                    if (e !== this.root && this.tree.hasElement(e) && this.tree.collapse(e), Object(se.e)(n)) return [];
                    throw n
                } finally {
                    e.slow && (e.slow = !1, this._onDidChangeNodeSlowState.fire(e))
                }
            }))
        }
        doGetChildren(e) {
            let t = this.refreshPromises.get(e);
            return t || (t = Object(q.h)(() => su(this, void 0, void 0, (function*() {
                var t = yield this.dataSource.getChildren(e.element);
                return this.processChildren(t)
            }))), this.refreshPromises.set(e, t), t.finally(() => {
                this.refreshPromises.delete(e)
            }))
        }
        _onDidChangeCollapseState({
            node: e,
            deep: t
        }) {
            null !== e.element && !e.collapsed && e.element.stale && (t ? this.collapse(e.element.element) : this.refreshAndRenderNode(e.element, !1).catch(se.f))
        }
        setChildren(e, t, i, n) {
            const r = [...t];
            if (0 === e.children.length && 0 === r.length) return [];
            const o = new Map,
                s = new Map;
            for (const t of e.children) {
                var a;
                o.set(t.element, t), this.identityProvider && (a = this.tree.isCollapsed(t), s.set(t.id, {
                    node: t,
                    collapsed: a
                }))
            }
            const l = [],
                d = r.map(t => {
                    var r = !!this.dataSource.hasChildren(t);
                    if (!this.identityProvider) {
                        const i = au({
                            element: t,
                            parent: e,
                            hasChildren: r
                        });
                        return r && this.collapseByDefault && !this.collapseByDefault(t) && (i.collapsedByDefault = !1, l.push(i)), i
                    }
                    var a = this.identityProvider.getId(t).toString(),
                        d = s.get(a);
                    if (d) {
                        const e = d.node;
                        return o.delete(e.element), this.nodes.delete(e.element), this.nodes.set(t, e), e.element = t, e.hasChildren = r, i ? d.collapsed ? (e.children.forEach(e => vu(e, e => this.nodes.delete(e.element))), e.children.splice(0, e.children.length), e.stale = !0) : l.push(e) : r && this.collapseByDefault && !this.collapseByDefault(t) && (e.collapsedByDefault = !1, l.push(e)), e
                    }
                    const c = au({
                        element: t,
                        parent: e,
                        id: a,
                        hasChildren: r
                    });
                    return n && n.viewState.focus && -1 < n.viewState.focus.indexOf(a) && n.focus.push(c), n && n.viewState.selection && -1 < n.viewState.selection.indexOf(a) && n.selection.push(c), n && n.viewState.expanded && -1 < n.viewState.expanded.indexOf(a) ? l.push(c) : r && this.collapseByDefault && !this.collapseByDefault(t) && (c.collapsedByDefault = !1, l.push(c)), c
                });
            for (const e of o.values()) vu(e, e => this.nodes.delete(e.element));
            for (const e of d) this.nodes.set(e.element, e);
            return e.children.splice(0, e.children.length, ...d), e !== this.root && this.autoExpandSingleChildren && 1 === d.length && 0 === l.length && (d[0].collapsedByDefault = !1, l.push(d[0])), l
        }
        render(e, t, i) {
            var n = e.children.map(e => this.asTreeElement(e, t)),
                r = i && Object.assign(Object.assign({}, i), {
                    diffIdentityProvider: i.diffIdentityProvider && {
                        getId: e => i.diffIdentityProvider.getId(e.element)
                    }
                });
            this.tree.setChildren(e === this.root ? null : e, n, r), e !== this.root && this.tree.setCollapsible(e, e.hasChildren), this._onDidRender.fire()
        }
        asTreeElement(e, t) {
            if (e.stale) return {
                element: e,
                collapsible: e.hasChildren,
                collapsed: !0
            };
            let i;
            return i = !(t && t.viewState.expanded && e.id && -1 < t.viewState.expanded.indexOf(e.id)) && e.collapsedByDefault, e.collapsedByDefault = void 0, {
                element: e,
                children: e.hasChildren ? Sd.a.map(e.children, e => this.asTreeElement(e, t)) : [],
                collapsible: e.hasChildren,
                collapsed: i
            }
        }
        processChildren(e) {
            return this.sorter ? [...e].sort(this.sorter.compare.bind(this.sorter)) : e
        }
        dispose() {
            this.disposables.dispose()
        }
    }
    class _u {
        constructor(e) {
            this.node = e
        }
        get element() {
            return {
                elements: this.node.element.elements.map(e => e.element),
                incompressible: this.node.element.incompressible
            }
        }
        get children() {
            return this.node.children.map(e => new _u(e))
        }
        get depth() {
            return this.node.depth
        }
        get visibleChildrenCount() {
            return this.node.visibleChildrenCount
        }
        get visibleChildIndex() {
            return this.node.visibleChildIndex
        }
        get collapsible() {
            return this.node.collapsible
        }
        get collapsed() {
            return this.node.collapsed
        }
        get visible() {
            return this.node.visible
        }
        get filterData() {
            return this.node.filterData
        }
    }
    class wu {
        constructor(e, t, i, n) {
            this.renderer = e, this.nodeMapper = t, this.compressibleNodeMapperProvider = i, this.onDidChangeTwistieState = n, this.renderedNodes = new Map, this.disposables = [], this.templateId = e.templateId
        }
        renderTemplate(e) {
            return {
                templateData: this.renderer.renderTemplate(e)
            }
        }
        renderElement(e, t, i, n) {
            this.renderer.renderElement(this.nodeMapper.map(e), t, i.templateData, n)
        }
        renderCompressedElements(e, t, i, n) {
            this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e), t, i.templateData, n)
        }
        renderTwistie(e, t) {
            return e.slow ? (t.classList.add(...Mh.classNamesArray), !0) : (t.classList.remove(...Mh.classNamesArray), !1)
        }
        disposeElement(e, t, i, n) {
            this.renderer.disposeElement && this.renderer.disposeElement(this.nodeMapper.map(e), t, i.templateData, n)
        }
        disposeCompressedElements(e, t, i, n) {
            this.renderer.disposeCompressedElements && this.renderer.disposeCompressedElements(this.compressibleNodeMapperProvider().map(e), t, i.templateData, n)
        }
        disposeTemplate(e) {
            this.renderer.disposeTemplate(e.templateData)
        }
        dispose() {
            this.renderedNodes.clear(), this.disposables = Object(v.f)(this.disposables)
        }
    }
    class yu extends bu {
        constructor(e, t, i, n, r, o, s = {}) {
            super(e, t, i, r, o, s), this.compressionDelegate = n, this.compressibleNodeMapper = new xh(e => new _u(e)), this.filter = s.filter
        }
        createTree(e, t, i, n, r) {
            var o;
            i = new jh(i), n = n.map(e => new wu(e, this.nodeMapper, () => this.compressibleNodeMapper, this._onDidChangeNodeSlowState.event)), r = (r = (o = r) && mu(o)) && Object.assign(Object.assign({}, r), {
                keyboardNavigationLabelProvider: r.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, r.keyboardNavigationLabelProvider), {
                    getCompressedNodeKeyboardNavigationLabel: e => o.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(e.map(e => e.element))
                })
            }) || {};
            return new ou(e, t, i, n, r)
        }
        asTreeElement(e, t) {
            return Object.assign({
                incompressible: this.compressionDelegate.isIncompressible(e.element)
            }, super.asTreeElement(e, t))
        }
        updateOptions(e = {}) {
            this.tree.updateOptions(e)
        }
        render(e, t) {
            if (!this.identityProvider) return super.render(e, t);
            const i = e => this.identityProvider.getId(e).toString();
            var n = e => {
                const t = new Set;
                for (const r of e) {
                    var n = this.tree.getCompressedTreeNode(r === this.root ? null : r);
                    if (n.element)
                        for (const e of n.element.elements) t.add(i(e.element))
                }
                return t
            };
            const r = n(this.tree.getSelection()),
                o = n(this.tree.getFocus());
            super.render(e, t);
            const s = this.getSelection();
            let a = !1;
            const l = this.getFocus();
            let d = !1;
            const c = e => {
                var t = e.element;
                if (t)
                    for (let e = 0; e < t.elements.length; e++) {
                        var n = i(t.elements[e].element),
                            h = t.elements[t.elements.length - 1].element;
                        r.has(n) && -1 === s.indexOf(h) && (s.push(h), a = !0), o.has(n) && -1 === l.indexOf(h) && (l.push(h), d = !0)
                    }
                e.children.forEach(c)
            };
            c(this.tree.getCompressedTreeNode(e === this.root ? null : e)), a && this.setSelection(s), d && this.setFocus(l)
        }
        processChildren(e) {
            return this.filter && (e = Sd.a.filter(e, e => {
                if (2 === (e = "boolean" == typeof(e = e = this.filter.filter(e, 1)) ? e ? 1 : 0 : kh(e) ? Lh(e.visibility) : Lh(e))) throw new Error("Recursive tree visibility not supported in async data compressed trees");
                return 1 === e
            })), super.processChildren(e)
        }
    }
    class Cu extends Gh {
        constructor(e, t, i, n, r, o = {}) {
            super(e, t, i, n, o), this.user = e, this.dataSource = r, this.identityProvider = o.identityProvider
        }
        createModel(e, t, i) {
            return new Yh(e, t, i)
        }
    }
    new Yt.c("isWindows", A.i, Object(yt.a)("isWindows", "Whether the operating system is Windows")), ae = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, S = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    const xu = Object(_.c)("listService");
    let Su = class {
        constructor(e) {
            this._themeService = e, this.disposables = new v.b, this.lists = [], this._lastFocusedWidget = void 0, this._hasCreatedStyleController = !1
        }
        get lastFocusedList() {
            return this._lastFocusedWidget
        }
        register(e, t) {
            var i;
            if (this._hasCreatedStyleController || (this._hasCreatedStyleController = !0, i = new th(Object(s.t)(), ""), this.disposables.add(dc(i, this._themeService))), this.lists.some(t => t.widget === e)) throw new Error("Cannot register the same widget multiple times");
            const n = {
                widget: e,
                extraContextKeys: t
            };
            return this.lists.push(n), e.getHTMLElement() === document.activeElement && (this._lastFocusedWidget = e), Object(v.e)(e.onDidFocus(() => this._lastFocusedWidget = e), Object(v.i)(() => this.lists.splice(this.lists.indexOf(n), 1)), e.onDidDispose(() => {
                this.lists = this.lists.filter(e => e !== n), this._lastFocusedWidget === e && (this._lastFocusedWidget = void 0)
            }))
        }
        dispose() {
            this.disposables.dispose()
        }
    };
    Su = ae([S(0, ir.b)], Su);
    const ku = new Yt.c("listFocus", !0),
        Lu = new Yt.c("listSupportsMultiselect", !0);
    Yt.a.and(ku, Yt.a.not("inputFocus"));
    const Ou = new Yt.c("listHasSelectionOrFocus", !1),
        Eu = new Yt.c("listDoubleSelection", !1),
        Nu = new Yt.c("listMultiSelection", !1),
        Du = new Yt.c("listSelectionNavigation", !1),
        Iu = "listAutomaticKeyboardNavigation";

    function Tu(e, t) {
        return t = e.createScoped(t.getHTMLElement()), ku.bindTo(t), t
    }
    const Mu = "workbench.list.multiSelectModifier",
        Pu = "workbench.list.openMode",
        Au = "workbench.list.horizontalScrolling",
        Ru = "workbench.list.keyboardNavigation",
        Fu = "workbench.list.automaticKeyboardNavigation",
        ju = "workbench.tree.indent",
        Bu = "workbench.tree.renderIndentGuides",
        Vu = "workbench.list.smoothScrolling",
        Wu = "workbench.list.mouseWheelScrollSensitivity",
        zu = "workbench.list.fastScrollSensitivity",
        Hu = "workbench.tree.expandMode";

    function Uu(e) {
        return "alt" === e.getValue(Mu)
    }
    class Ku extends v.a {
        constructor(e) {
            super(), this.configurationService = e, this.useAltAsMultipleSelectionModifier = Uu(e), this.registerListeners()
        }
        registerListeners() {
            this._register(this.configurationService.onDidChange配置(e => {
                e.affects配置(Mu) && (this.useAltAsMultipleSelectionModifier = Uu(this.configurationService))
            }))
        }
        isSelectionSingleChangeEvent(e) {
            return this.useAltAsMultipleSelectionModifier ? e.browserEvent.altKey : Xc(e)
        }
        isSelectionRangeChangeEvent(e) {
            return Qc(e)
        }
    }

    function $u(e, t, i) {
        const n = new v.b;
        return [Object.assign(Object.assign({}, e), {
            keyboardNavigationDelegate: {
                mightProducePrintableCharacter: e => i.mightProducePrintableCharacter(e)
            },
            smoothScrolling: Boolean(t.getValue(Vu)),
            mouseWheelScrollSensitivity: t.getValue(Wu),
            fastScrollSensitivity: t.getValue(zu),
            multipleSelectionController: null !== (e = e.multipleSelectionController) && void 0 !== e ? e : n.add(new Ku(t))
        }), n]
    }
    let qu = class extends dh {
        constructor(e, t, i, n, r, o, s, a, l, d) {
            var c = void 0 !== r.horizontalScrolling ? r.horizontalScrolling : Boolean(l.getValue(Au)),
                [h, d] = $u(r, l, d);
            super(e, t, i, n, Object.assign(Object.assign(Object.assign({
                keyboardSupport: !1
            }, ac(a.getColorTheme(), cc)), h), {
                horizontalScrolling: c
            })), this.disposables.add(d), this.contextKeyService = Tu(o, this), this.themeService = a, this.listSupportsMultiSelect = Lu.bindTo(this.contextKeyService), this.listSupportsMultiSelect.set(!1 !== r.multipleSelectionSupport);
            Du.bindTo(this.contextKeyService).set(Boolean(r.selectionNavigation)), this.listHasSelectionOrFocus = Ou.bindTo(this.contextKeyService), this.listDoubleSelection = Eu.bindTo(this.contextKeyService), this.listMultiSelection = Nu.bindTo(this.contextKeyService), this.horizontalScrolling = r.horizontalScrolling, this._useAltAsMultipleSelectionModifier = Uu(l), this.disposables.add(this.contextKeyService), this.disposables.add(s.register(this)), r.overrideStyles && this.updateStyles(r.overrideStyles), this.disposables.add(this.onDidChangeSelection(() => {
                const e = this.getSelection(),
                    t = this.getFocus();
                this.contextKeyService.bufferChangeEvents(() => {
                    this.listHasSelectionOrFocus.set(0 < e.length || 0 < t.length), this.listMultiSelection.set(1 < e.length), this.listDoubleSelection.set(2 === e.length)
                })
            })), this.disposables.add(this.onDidChangeFocus(() => {
                var e = this.getSelection(),
                    t = this.getFocus();
                this.listHasSelectionOrFocus.set(0 < e.length || 0 < t.length)
            })), this.disposables.add(l.onDidChange配置(e => {
                e.affects配置(Mu) && (this._useAltAsMultipleSelectionModifier = Uu(l));
                let t = {};
                var i, n;
                e.affects配置(Au) && void 0 === this.horizontalScrolling && (i = Boolean(l.getValue(Au)), t = Object.assign(Object.assign({}, t), {
                    horizontalScrolling: i
                })), e.affects配置(Vu) && (n = Boolean(l.getValue(Vu)), t = Object.assign(Object.assign({}, t), {
                    smoothScrolling: n
                })), e.affects配置(Wu) && (n = l.getValue(Wu), t = Object.assign(Object.assign({}, t), {
                    mouseWheelScrollSensitivity: n
                })), e.affects配置(zu) && (e = l.getValue(zu), t = Object.assign(Object.assign({}, t), {
                    fastScrollSensitivity: e
                })), 0 < Object.keys(t).length && this.updateOptions(t)
            })), this.navigator = new Yu(this, Object.assign({
                configurationService: l
            }, r)), this.disposables.add(this.navigator)
        }
        updateOptions(e) {
            super.updateOptions(e), e.overrideStyles && this.updateStyles(e.overrideStyles), void 0 !== e.multipleSelectionSupport && this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)
        }
        updateStyles(e) {
            var t;
            null !== (t = this._styler) && void 0 !== t && t.dispose(), this._styler = dc(this, this.themeService, e)
        }
        dispose() {
            var e;
            null !== (e = this._styler) && void 0 !== e && e.dispose(), super.dispose()
        }
    };
    qu = ae([S(5, Yt.b), S(6, xu), S(7, ir.b), S(8, Wt.a), S(9, al.a)], qu), t = class extends class {
        constructor(e, t, i, n, r = {}) {
            const o = () => this.model;
            n = n.map(e => new ch(e, o)), this.list = new dh(e, t, i, n, (n = o, r = r, Object.assign(Object.assign({}, r), {
                accessibilityProvider: r.accessibilityProvider && new hh(n, r.accessibilityProvider)
            })))
        }
        updateOptions(e) {
            this.list.updateOptions(e)
        }
        getHTMLElement() {
            return this.list.getHTMLElement()
        }
        get onDidFocus() {
            return this.list.onDidFocus
        }
        get onDidDispose() {
            return this.list.onDidDispose
        }
        get onMouseDblClick() {
            return D.c.map(this.list.onMouseDblClick, ({
                element: e,
                index: t,
                browserEvent: i
            }) => ({
                element: void 0 === e ? void 0 : this._model.get(e),
                index: t,
                browserEvent: i
            }))
        }
        get onPointer() {
            return D.c.map(this.list.onPointer, ({
                element: e,
                index: t,
                browserEvent: i
            }) => ({
                element: void 0 === e ? void 0 : this._model.get(e),
                index: t,
                browserEvent: i
            }))
        }
        get onDidChangeSelection() {
            return D.c.map(this.list.onDidChangeSelection, ({
                elements: e,
                indexes: t,
                browserEvent: i
            }) => ({
                elements: e.map(e => this._model.get(e)),
                indexes: t,
                browserEvent: i
            }))
        }
        get model() {
            return this._model
        }
        set model(e) {
            this._model = e, this.list.splice(0, this.list.length, Object(ne.o)(e.length))
        }
        getFocus() {
            return this.list.getFocus()
        }
        getSelection() {
            return this.list.getSelection()
        }
        getSelectedElements() {
            return this.getSelection().map(e => this.model.get(e))
        }
        style(e) {
            this.list.style(e)
        }
        dispose() {
            this.list.dispose()
        }
    } {
        constructor(e, t, i, n, r, o, s, a, l, d) {
            var c = void 0 !== r.horizontalScrolling ? r.horizontalScrolling : Boolean(l.getValue(Au)),
                [h, d] = $u(r, l, d);
            super(e, t, i, n, Object.assign(Object.assign(Object.assign({
                keyboardSupport: !1
            }, ac(a.getColorTheme(), cc)), h), {
                horizontalScrolling: c
            })), this.disposables = new v.b, this.disposables.add(d), this.contextKeyService = Tu(o, this), this.themeService = a, this.horizontalScrolling = r.horizontalScrolling, this.listSupportsMultiSelect = Lu.bindTo(this.contextKeyService), this.listSupportsMultiSelect.set(!1 !== r.multipleSelectionSupport);
            Du.bindTo(this.contextKeyService).set(Boolean(r.selectionNavigation)), this._useAltAsMultipleSelectionModifier = Uu(l), this.disposables.add(this.contextKeyService), this.disposables.add(s.register(this)), r.overrideStyles && this.updateStyles(r.overrideStyles), r.overrideStyles && this.disposables.add(dc(this, a, r.overrideStyles)), this.disposables.add(l.onDidChange配置(e => {
                e.affects配置(Mu) && (this._useAltAsMultipleSelectionModifier = Uu(l));
                let t = {};
                var i, n;
                e.affects配置(Au) && void 0 === this.horizontalScrolling && (i = Boolean(l.getValue(Au)), t = Object.assign(Object.assign({}, t), {
                    horizontalScrolling: i
                })), e.affects配置(Vu) && (n = Boolean(l.getValue(Vu)), t = Object.assign(Object.assign({}, t), {
                    smoothScrolling: n
                })), e.affects配置(Wu) && (n = l.getValue(Wu), t = Object.assign(Object.assign({}, t), {
                    mouseWheelScrollSensitivity: n
                })), e.affects配置(zu) && (e = l.getValue(zu), t = Object.assign(Object.assign({}, t), {
                    fastScrollSensitivity: e
                })), 0 < Object.keys(t).length && this.updateOptions(t)
            })), this.navigator = new Yu(this, Object.assign({
                configurationService: l
            }, r)), this.disposables.add(this.navigator)
        }
        updateOptions(e) {
            super.updateOptions(e), e.overrideStyles && this.updateStyles(e.overrideStyles), void 0 !== e.multipleSelectionSupport && this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)
        }
        updateStyles(e) {
            var t;
            null !== (t = this._styler) && void 0 !== t && t.dispose(), this._styler = dc(this, this.themeService, e)
        }
        dispose() {
            var e;
            null !== (e = this._styler) && void 0 !== e && e.dispose(), this.disposables.dispose(), super.dispose()
        }
    }, t = ae([S(5, Yt.b), S(6, xu), S(7, ir.b), S(8, Wt.a), S(9, al.a)], t), x = class extends yh {
        constructor(e, t, i, n, r, o, s, a, l, d, c) {
            var h = void 0 !== o.horizontalScrolling ? o.horizontalScrolling : Boolean(d.getValue(Au)),
                [u, c] = $u(o, d, c);
            super(e, t, i, n, r, Object.assign(Object.assign(Object.assign({
                keyboardSupport: !1
            }, ac(l.getColorTheme(), cc)), u), {
                horizontalScrolling: h
            })), this.disposables = new v.b, this.disposables.add(c), this.contextKeyService = Tu(s, this), this.themeService = l, this.listSupportsMultiSelect = Lu.bindTo(this.contextKeyService), this.listSupportsMultiSelect.set(!1 !== o.multipleSelectionSupport);
            Du.bindTo(this.contextKeyService).set(Boolean(o.selectionNavigation)), this.listHasSelectionOrFocus = Ou.bindTo(this.contextKeyService), this.listDoubleSelection = Eu.bindTo(this.contextKeyService), this.listMultiSelection = Nu.bindTo(this.contextKeyService), this.horizontalScrolling = o.horizontalScrolling, this._useAltAsMultipleSelectionModifier = Uu(d), this.disposables.add(this.contextKeyService), this.disposables.add(a.register(this)), o.overrideStyles && this.updateStyles(o.overrideStyles), this.disposables.add(this.onDidChangeSelection(() => {
                const e = this.getSelection(),
                    t = this.getFocus();
                this.contextKeyService.bufferChangeEvents(() => {
                    this.listHasSelectionOrFocus.set(0 < e.length || 0 < t.length), this.listMultiSelection.set(1 < e.length), this.listDoubleSelection.set(2 === e.length)
                })
            })), this.disposables.add(this.onDidChangeFocus(() => {
                var e = this.getSelection(),
                    t = this.getFocus();
                this.listHasSelectionOrFocus.set(0 < e.length || 0 < t.length)
            })), this.disposables.add(d.onDidChange配置(e => {
                e.affects配置(Mu) && (this._useAltAsMultipleSelectionModifier = Uu(d));
                let t = {};
                var i, n;
                e.affects配置(Au) && void 0 === this.horizontalScrolling && (i = Boolean(d.getValue(Au)), t = Object.assign(Object.assign({}, t), {
                    horizontalScrolling: i
                })), e.affects配置(Vu) && (n = Boolean(d.getValue(Vu)), t = Object.assign(Object.assign({}, t), {
                    smoothScrolling: n
                })), e.affects配置(Wu) && (n = d.getValue(Wu), t = Object.assign(Object.assign({}, t), {
                    mouseWheelScrollSensitivity: n
                })), e.affects配置(zu) && (e = d.getValue(zu), t = Object.assign(Object.assign({}, t), {
                    fastScrollSensitivity: e
                })), 0 < Object.keys(t).length && this.updateOptions(t)
            })), this.navigator = new Zu(this, Object.assign({
                configurationService: d
            }, o)), this.disposables.add(this.navigator)
        }
        updateOptions(e) {
            super.updateOptions(e), e.overrideStyles && this.updateStyles(e.overrideStyles), void 0 !== e.multipleSelectionSupport && this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)
        }
        updateStyles(e) {
            var t;
            null !== (t = this._styler) && void 0 !== t && t.dispose(), this._styler = dc(this, this.themeService, e)
        }
        dispose() {
            var e;
            null !== (e = this._styler) && void 0 !== e && e.dispose(), this.disposables.dispose(), super.dispose()
        }
    }, x = ae([S(6, Yt.b), S(7, xu), S(8, ir.b), S(9, Wt.a), S(10, al.a)], x);
    class Gu extends v.a {
        constructor(e, t) {
            super(), this.widget = e, this._onDidOpen = this._register(new D.b), this.onDidOpen = this._onDidOpen.event, this._register(D.c.filter(this.widget.onDidChangeSelection, e => e.browserEvent instanceof KeyboardEvent)(e => this.onSelectionFromKeyboard(e))), this._register(this.widget.onPointer(e => this.onPointer(e.element, e.browserEvent))), this._register(this.widget.onMouseDblClick(e => this.onMouseDblClick(e.element, e.browserEvent))), "boolean" != typeof(null == t ? void 0 : t.openOnSingleClick) && null != t && t.configurationService ? (this.openOnSingleClick = "doubleClick" !== (null == t ? void 0 : t.configurationService.getValue(Pu)), this._register(null == t ? void 0 : t.configurationService.onDidChange配置(() => {
                this.openOnSingleClick = "doubleClick" !== (null == t ? void 0 : t.configurationService.getValue(Pu))
            }))) : this.openOnSingleClick = null === (e = null == t ? void 0 : t.openOnSingleClick) || void 0 === e || e
        }
        onSelectionFromKeyboard(e) {
            var t, i;
            1 === e.elements.length && (t = "boolean" != typeof(i = e.browserEvent).preserveFocus || i.preserveFocus, i = "boolean" == typeof i.pinned ? i.pinned : !t, this._open(this.getSelectedElement(), t, i, !1, e.browserEvent))
        }
        onPointer(e, t) {
            var i, n;
            this.openOnSingleClick && (2 === t.detail || (i = 1 === t.button, n = t.ctrlKey || t.metaKey || t.altKey, this._open(e, !0, i, n, t)))
        }
        onMouseDblClick(e, t) {
            if (t) {
                const n = t.target;
                var i;
                n.classList.contains("monaco-tl-twistie") || n.classList.contains("monaco-icon-label") && n.classList.contains("folder-icon") && t.offsetX < 16 || (i = t.ctrlKey || t.metaKey || t.altKey, this._open(e, !1, !0, i, t))
            }
        }
        _open(e, t, i, n, r) {
            e && this._onDidOpen.fire({
                editorOptions: {
                    preserveFocus: t,
                    pinned: i,
                    revealIfVisible: !0
                },
                sideBySide: n,
                element: e,
                browserEvent: r
            })
        }
    }
    class Yu extends Gu {
        constructor(e, t) {
            super(e, t), this.widget = e
        }
        getSelectedElement() {
            return this.widget.getSelectedElements()[0]
        }
    }
    class Zu extends Gu {
        constructor(e, t) {
            super(e, t)
        }
        getSelectedElement() {
            return this.widget.getSelectedElements()[0]
        }
    }
    class Xu extends Gu {
        constructor(e, t) {
            super(e, t)
        }
        getSelectedElement() {
            var e;
            return null !== (e = this.widget.getSelection()[0]) && void 0 !== e ? e : void 0
        }
    }
    var Qu;
    t = class extends nu {
        constructor(e, t, i, n, r, o, s, a, l, d, c) {
            var {
                options: h,
                getAutomaticKeyboardNavigation: u,
                disposable: d
            } = Ju(t, r, o, l, d, c);
            super(e, t, i, n, h), this.disposables.add(d), this.internals = new ep(this, r, u, r.overrideStyles, o, s, a, l, c), this.disposables.add(this.internals)
        }
        updateOptions(e) {
            super.updateOptions(e), this.internals.updateOptions(e)
        }
    }, t = ae([S(5, Yt.b), S(6, xu), S(7, ir.b), S(8, Wt.a), S(9, al.a), S(10, Ks)], t), x = class extends ou {
        constructor(e, t, i, n, r, o, s, a, l, d, c) {
            var {
                options: h,
                getAutomaticKeyboardNavigation: u,
                disposable: d
            } = Ju(t, r, o, l, d, c);
            super(e, t, i, n, h), this.disposables.add(d), this.internals = new ep(this, r, u, r.overrideStyles, o, s, a, l, c), this.disposables.add(this.internals)
        }
        updateOptions(e = {}) {
            super.updateOptions(e), e.overrideStyles && this.internals.updateStyleOverrides(e.overrideStyles), this.internals.updateOptions(e)
        }
    }, x = ae([S(5, Yt.b), S(6, xu), S(7, ir.b), S(8, Wt.a), S(9, al.a), S(10, Ks)], x), t = class extends Cu {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h) {
            var {
                options: u,
                getAutomaticKeyboardNavigation: p,
                disposable: c
            } = Ju(t, o, s, d, c, h);
            super(e, t, i, n, r, u), this.disposables.add(c), this.internals = new ep(this, o, p, o.overrideStyles, s, a, l, d, h), this.disposables.add(this.internals)
        }
        updateOptions(e = {}) {
            super.updateOptions(e), e.overrideStyles && this.internals.updateStyleOverrides(e.overrideStyles), this.internals.updateOptions(e)
        }
    }, t = ae([S(6, Yt.b), S(7, xu), S(8, ir.b), S(9, Wt.a), S(10, al.a), S(11, Ks)], t), x = class extends bu {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h) {
            var {
                options: u,
                getAutomaticKeyboardNavigation: p,
                disposable: c
            } = Ju(t, o, s, d, c, h);
            super(e, t, i, n, r, u), this.disposables.add(c), this.internals = new ep(this, o, p, o.overrideStyles, s, a, l, d, h), this.disposables.add(this.internals)
        }
        get onDidOpen() {
            return this.internals.onDidOpen
        }
        updateOptions(e = {}) {
            super.updateOptions(e), e.overrideStyles && this.internals.updateStyleOverrides(e.overrideStyles), this.internals.updateOptions(e)
        }
    }, x = ae([S(6, Yt.b), S(7, xu), S(8, ir.b), S(9, Wt.a), S(10, al.a), S(11, Ks)], x), t = class extends yu {
        constructor(e, t, i, n, r, o, s, a, l, d, c, h, u) {
            var {
                options: p,
                getAutomaticKeyboardNavigation: g,
                disposable: h
            } = Ju(t, s, a, c, h, u);
            super(e, t, i, n, r, o, p), this.disposables.add(h), this.internals = new ep(this, s, g, s.overrideStyles, a, l, d, c, u), this.disposables.add(this.internals)
        }
        updateOptions(e) {
            super.updateOptions(e), this.internals.updateOptions(e)
        }
    };

    function Ju(e, t, i, n, r, o) {
        var s = () => {
                let e = Boolean(i.getContextKeyValue(Iu));
                return e = e && Boolean(n.getValue(Fu)), e
            },
            a = o.isScreenReaderOptimized(),
            l = t.simpleKeyboardNavigation || a ? "simple" : n.getValue(Ru),
            d = void 0 !== t.horizontalScrolling ? t.horizontalScrolling : Boolean(n.getValue(Au)),
            [c, o] = $u(t, n, r);
        a = t.additionalScrollHeight;
        return {
            getAutomaticKeyboardNavigation: s,
            disposable: o,
            options: Object.assign(Object.assign({
                keyboardSupport: !1
            }, c), {
                indent: "number" == typeof n.getValue(ju) ? n.getValue(ju) : void 0,
                renderIndentGuides: n.getValue(Bu),
                smoothScrolling: Boolean(n.getValue(Vu)),
                automaticKeyboardNavigation: s(),
                simpleKeyboardNavigation: "simple" === l,
                filterOnType: "filter" === l,
                horizontalScrolling: d,
                keyboardNavigationEventFilter: function(e, t) {
                    let i = !1;
                    return n => i ? i = !1 : (n = t.softDispatch(n, e)) && n.enterChord ? !(i = !0) : !(i = !1)
                }(e, r),
                additionalScrollHeight: a,
                hideTwistiesOfChildlessElements: t.hideTwistiesOfChildlessElements,
                expandOnlyOnTwistieClick: null !== (t = t.expandOnlyOnTwistieClick) && void 0 !== t ? t : "doubleClick" === n.getValue(Hu)
            })
        }
    }
    t = ae([S(7, Yt.b), S(8, xu), S(9, ir.b), S(10, Wt.a), S(11, al.a), S(12, Ks)], t);
    let ep = class {
        constructor(e, t, i, n, r, o, s, a, l) {
            this.tree = e, this.themeService = s, this.disposables = [], this.contextKeyService = Tu(r, e), this.listSupportsMultiSelect = Lu.bindTo(this.contextKeyService), this.listSupportsMultiSelect.set(!1 !== t.multipleSelectionSupport);
            Du.bindTo(this.contextKeyService).set(Boolean(t.selectionNavigation)), this.hasSelectionOrFocus = Ou.bindTo(this.contextKeyService), this.hasDoubleSelection = Eu.bindTo(this.contextKeyService), this.hasMultiSelection = Nu.bindTo(this.contextKeyService), this._useAltAsMultipleSelectionModifier = Uu(a);
            const d = new Set;
            d.add(Iu);
            const c = () => {
                var t = l.isScreenReaderOptimized() ? "simple" : a.getValue(Ru);
                e.updateOptions({
                    simpleKeyboardNavigation: "simple" === t,
                    filterOnType: "filter" === t
                })
            };
            this.updateStyleOverrides(n), this.disposables.push(this.contextKeyService, o.register(e), e.onDidChangeSelection(() => {
                const t = e.getSelection(),
                    i = e.getFocus();
                this.contextKeyService.bufferChangeEvents(() => {
                    this.hasSelectionOrFocus.set(0 < t.length || 0 < i.length), this.hasMultiSelection.set(1 < t.length), this.hasDoubleSelection.set(2 === t.length)
                })
            }), e.onDidChangeFocus(() => {
                var t = e.getSelection(),
                    i = e.getFocus();
                this.hasSelectionOrFocus.set(0 < t.length || 0 < i.length)
            }), a.onDidChange配置(n => {
                let r = {};
                var o, s, l;
                n.affects配置(Mu) && (this._useAltAsMultipleSelectionModifier = Uu(a)), n.affects配置(ju) && (o = a.getValue(ju), r = Object.assign(Object.assign({}, r), {
                    indent: o
                })), n.affects配置(Bu) && (s = a.getValue(Bu), r = Object.assign(Object.assign({}, r), {
                    renderIndentGuides: s
                })), n.affects配置(Vu) && (s = Boolean(a.getValue(Vu)), r = Object.assign(Object.assign({}, r), {
                    smoothScrolling: s
                })), n.affects配置(Ru) && c(), n.affects配置(Fu) && (r = Object.assign(Object.assign({}, r), {
                    automaticKeyboardNavigation: i()
                })), n.affects配置(Au) && void 0 === t.horizontalScrolling && (l = Boolean(a.getValue(Au)), r = Object.assign(Object.assign({}, r), {
                    horizontalScrolling: l
                })), n.affects配置(Hu) && void 0 === t.expandOnlyOnTwistieClick && (r = Object.assign(Object.assign({}, r), {
                    expandOnlyOnTwistieClick: "doubleClick" === a.getValue(Hu)
                })), n.affects配置(Wu) && (l = a.getValue(Wu), r = Object.assign(Object.assign({}, r), {
                    mouseWheelScrollSensitivity: l
                })), n.affects配置(zu) && (n = a.getValue(zu), r = Object.assign(Object.assign({}, r), {
                    fastScrollSensitivity: n
                })), 0 < Object.keys(r).length && e.updateOptions(r)
            }), this.contextKeyService.onDidChangeContext(t => {
                t.affectsSome(d) && e.updateOptions({
                    automaticKeyboardNavigation: i()
                })
            }), l.onDidChangeScreenReaderOptimized(() => c())), this.navigator = new Xu(e, Object.assign({
                configurationService: a
            }, t)), this.disposables.push(this.navigator)
        }
        get onDidOpen() {
            return this.navigator.onDidOpen
        }
        updateOptions(e) {
            void 0 !== e.multipleSelectionSupport && this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)
        }
        updateStyleOverrides(e) {
            Object(v.f)(this.styler), this.styler = e ? dc(this.tree, this.themeService, e) : v.a.None
        }
        dispose() {
            this.disposables = Object(v.f)(this.disposables), Object(v.f)(this.styler), this.styler = void 0
        }
    };
    ep = ae([S(4, Yt.b), S(5, xu), S(6, ir.b), S(7, Wt.a), S(8, Ks)], ep);
    xt.a.as(Ct.a.配置).register配置({
            id: "workbench",
            order: 7,
            title: Object(yt.a)("workbench配置Title", "Workbench"),
            type: "object",
            properties: {
                "workbench.list.multiSelectModifier": {
                    type: "string",
                    enum: ["ctrlCmd", "alt"],
                    enumDescriptions: [Object(yt.a)("multiSelectModifier.ctrlCmd", "Maps to `Control` on Windows and Linux and to `Command` on macOS."), Object(yt.a)("multiSelectModifier.alt", "Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],
                    default: "ctrlCmd",
                    description: Object(yt.a)({
                        key: "multiSelectModifier",
                        comment: ["- `ctrlCmd` refers to a value the setting can take and should not be localized.", "- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]
                    }, "The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")
                },
                "workbench.list.openMode": {
                    type: "string",
                    enum: ["singleClick", "doubleClick"],
                    default: "singleClick",
                    description: Object(yt.a)({
                        key: "openModeModifier",
                        comment: ["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]
                    }, "Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")
                },
                "workbench.list.horizontalScrolling": {
                    type: "boolean",
                    default: !1,
                    description: Object(yt.a)("horizontalScrolling setting", "Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")
                },
                "workbench.tree.indent": {
                    type: "number",
                    default: 8,
                    minimum: 0,
                    maximum: 40,
                    description: Object(yt.a)("tree indent setting", "Controls tree indentation in pixels.")
                },
                "workbench.tree.renderIndentGuides": {
                    type: "string",
                    enum: ["none", "onHover", "always"],
                    default: "onHover",
                    description: Object(yt.a)("render tree indent guides", "Controls whether the tree should render indent guides.")
                },
                [Vu]: {
                    type: "boolean",
                    default: !1,
                    description: Object(yt.a)("list smoothScrolling setting", "Controls whether lists and trees have smooth scrolling.")
                },
                [Wu]: {
                    type: "number",
                    default: 1,
                    description: Object(yt.a)("Mouse Wheel Scroll Sensitivity", "A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")
                },
                [zu]: {
                    type: "number",
                    default: 5,
                    description: Object(yt.a)("Fast Scroll Sensitivity", "Scrolling speed multiplier when pressing `Alt`.")
                },
                "workbench.list.keyboardNavigation": {
                    type: "string",
                    enum: ["simple", "highlight", "filter"],
                    enumDescriptions: [Object(yt.a)("keyboardNavigationSettingKey.simple", "Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."), Object(yt.a)("keyboardNavigationSettingKey.highlight", "Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."), Object(yt.a)("keyboardNavigationSettingKey.filter", "Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],
                    default: "highlight",
                    description: Object(yt.a)("keyboardNavigationSettingKey", "Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.")
                },
                "workbench.list.automaticKeyboardNavigation": {
                    type: "boolean",
                    default: !0,
                    markdownDescription: Object(yt.a)("automatic keyboard navigation setting", "Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut.")
                },
                "workbench.tree.expandMode": {
                    type: "string",
                    enum: ["singleClick", "doubleClick"],
                    default: "singleClick",
                    description: Object(yt.a)("expand mode", "Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")
                }
            }
        }), (x = Qu = Qu || {})[x.Hint = 1] = "Hint", x[x.Info = 2] = "Info", x[x.Warning = 4] = "Warning", x[x.Error = 8] = "错误",
        function(e) {
            e.compare = function(e, t) {
                return t - e
            };
            const t = Object.create(null);
            t[e.Error] = Object(yt.a)("sev.error", "错误"), t[e.Warning] = Object(yt.a)("sev.warning", "Warning"), t[e.Info] = Object(yt.a)("sev.info", "Info"), e.toString = function(e) {
                return t[e] || ""
            }, e.fromSeverity = function(t) {
                switch (t) {
                    case mt.a.Error:
                        return e.Error;
                    case mt.a.Warning:
                        return e.Warning;
                    case mt.a.Info:
                        return e.Info;
                    case mt.a.Ignore:
                        return e.Hint
                }
            }, e.toSeverity = function(t) {
                switch (t) {
                    case e.Error:
                        return mt.a.Error;
                    case e.Warning:
                        return mt.a.Warning;
                    case e.Info:
                        return mt.a.Info;
                    case e.Hint:
                        return mt.a.Ignore
                }
            }
        }(Qu = Qu || {}),
        function(e) {
            const t = "";

            function i(e, i) {
                let n = [t];
                return e.source ? n.push(e.source.replace("¦", "\\¦")) : n.push(t), e.code ? "string" == typeof e.code ? n.push(e.code.replace("¦", "\\¦")) : n.push(e.code.value.replace("¦", "\\¦")) : n.push(t), void 0 !== e.severity && null !== e.severity ? n.push(Qu.toString(e.severity)) : n.push(t), e.message && i ? n.push(e.message.replace("¦", "\\¦")) : n.push(t), void 0 !== e.startLineNumber && null !== e.startLineNumber ? n.push(e.startLineNumber.toString()) : n.push(t), void 0 !== e.startColumn && null !== e.startColumn ? n.push(e.startColumn.toString()) : n.push(t), void 0 !== e.endLineNumber && null !== e.endLineNumber ? n.push(e.endLineNumber.toString()) : n.push(t), void 0 !== e.endColumn && null !== e.endColumn ? n.push(e.endColumn.toString()) : n.push(t), n.push(t), n.join("¦")
            }
            e.makeKey = function(e) {
                return i(e, !0)
            }, e.makeKeyOptionalMessage = i
        }({});
    const tp = Object(_.c)("markerService");
    class ip {
        constructor() {
            this._byResource = new d.b, this._byOwner = new Map
        }
        set(e, t, i) {
            let n = this._byResource.get(e);
            n || (n = new Map, this._byResource.set(e, n)), n.set(t, i);
            let r = this._byOwner.get(t);
            r || (r = new d.b, this._byOwner.set(t, r)), r.set(e, i)
        }
        get(e, t) {
            let i = this._byResource.get(e);
            return null == i ? void 0 : i.get(t)
        }
        delete(e, t) {
            let i = !1,
                n = !1,
                r = this._byResource.get(e);
            r && (i = r.delete(t));
            let o = this._byOwner.get(t);
            if (o && (n = o.delete(e)), i !== n) throw new Error("illegal state");
            return i && n
        }
        values(e) {
            var t;
            return "string" == typeof e ? null !== (t = null === (t = this._byOwner.get(e)) || void 0 === t ? void 0 : t.values()) && void 0 !== t ? t : Sd.a.empty() : h.a.isUri(e) ? null !== (e = null === (e = this._byResource.get(e)) || void 0 === e ? void 0 : e.values()) && void 0 !== e ? e : Sd.a.empty() : Sd.a.map(Sd.a.concat(...this._byOwner.values()), e => e[1])
        }
    }
    class np {
        constructor(e) {
            this.errors = 0, this.infos = 0, this.warnings = 0, this.unknowns = 0, this._data = new d.b, this._service = e, this._subscription = e.onMarkerChanged(this._update, this)
        }
        dispose() {
            this._subscription.dispose()
        }
        _update(e) {
            for (const i of e) {
                var t = this._data.get(i);
                t && this._substract(t), t = this._resourceStats(i), this._add(t), this._data.set(i, t)
            }
        }
        _resourceStats(e) {
            const t = {
                errors: 0,
                warnings: 0,
                infos: 0,
                unknowns: 0
            };
            if (e.scheme === g.c.inMemory || e.scheme === g.c.walkThrough || e.scheme === g.c.walkThroughSnippet) return t;
            for (var {
                    severity: i
                } of this._service.read({
                    resource: e
                })) i === Qu.Error ? t.errors += 1 : i === Qu.Warning ? t.warnings += 1 : i === Qu.Info ? t.infos += 1 : t.unknowns += 1;
            return t
        }
        _substract(e) {
            this.errors -= e.errors, this.warnings -= e.warnings, this.infos -= e.infos, this.unknowns -= e.unknowns
        }
        _add(e) {
            this.errors += e.errors, this.warnings += e.warnings, this.infos += e.infos, this.unknowns += e.unknowns
        }
    }
    class rp {
        constructor() {
            this._onMarkerChanged = new D.a({
                delay: 0,
                merge: rp._merge
            }), this.onMarkerChanged = this._onMarkerChanged.event, this._data = new ip, this._stats = new np(this)
        }
        dispose() {
            this._stats.dispose(), this._onMarkerChanged.dispose()
        }
        remove(e, t) {
            for (const i of t || []) this.changeOne(e, i, [])
        }
        changeOne(e, t, i) {
            if (Object(ne.k)(i)) this._data.delete(t, e) && this._onMarkerChanged.fire([t]);
            else {
                const r = [];
                for (const o of i) {
                    var n = rp._toMarker(e, t, o);
                    n && r.push(n)
                }
                this._data.set(t, e, r), this._onMarkerChanged.fire([t])
            }
        }
        static _toMarker(e, t, i) {
            let {
                code: n,
                severity: r,
                message: o,
                source: s,
                startLineNumber: a,
                startColumn: l,
                endLineNumber: d,
                endColumn: c,
                relatedInformation: h,
                tags: u
            } = i;
            if (o) return a = 0 < a ? a : 1, l = 0 < l ? l : 1, d = d >= a ? d : a, c = 0 < c ? c : l, {
                resource: t,
                owner: e,
                code: n,
                severity: r,
                message: o,
                source: s,
                startLineNumber: a,
                startColumn: l,
                endLineNumber: d,
                endColumn: c,
                relatedInformation: h,
                tags: u
            }
        }
        read(e = Object.create(null)) {
            let {
                owner: t,
                resource: i,
                severities: n,
                take: r
            } = e;
            if ((!r || r < 0) && (r = -1), t && i) {
                if (e = this._data.get(i, t)) {
                    const t = [];
                    for (const i of e)
                        if (rp._accept(i, n)) {
                            var o = t.push(i);
                            if (0 < r && o === r) break
                        } return t
                }
                return []
            }
            if (t || i) {
                const e = [];
                for (const o of this._data.values(null != i ? i : t))
                    for (const t of o)
                        if (rp._accept(t, n)) {
                            var s = e.push(t);
                            if (0 < r && s === r) return e
                        } return e
            } {
                const e = [];
                for (var a of this._data.values())
                    for (var l of a)
                        if (rp._accept(l, n) && (l = e.push(l), 0 < r && l === r)) return e;
                return e
            }
        }
        static _accept(e, t) {
            return void 0 === t || (t & e.severity) === e.severity
        }
        static _merge(e) {
            const t = new d.b;
            for (var i of e)
                for (var n of i) t.set(n, !0);
            return Array.from(t.keys())
        }
    }
    var op = i(156);
    t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let sp = class {
        constructor(e) {
            this._commandService = e
        }
        createMenu(e, t, i) {
            return new ap(e, Object.assign({
                emitEventsForSubmenuChanges: !1,
                eventDebounceDelay: 50
            }, i), this._commandService, t, this)
        }
    };
    sp = t([ae(0, m.b)], sp);
    let ap = class e {
        constructor(e, t, i, n, r) {
            this._id = e, this._options = t, this._commandService = i, this._contextKeyService = n, this._menuService = r, this._disposables = new v.b, this._menuGroups = [], this._contextKeys = new Set, this._build();
            const o = new q.e(() => {
                this._build(), this._onDidChange.fire(this)
            }, t.eventDebounceDelay);
            this._disposables.add(o), this._disposables.add(sl.d.onDidChangeMenu(t => {
                t.has(e) && o.schedule()
            }));
            const s = this._disposables.add(new v.b);
            this._onDidChange = new D.b({
                onFirstListenerAdd: () => {
                    const e = new q.e(() => this._onDidChange.fire(this), t.eventDebounceDelay);
                    s.add(e), s.add(n.onDidChangeContext(t => {
                        t.affectsSome(this._contextKeys) && e.schedule()
                    }))
                },
                onLastListenerRemove: s.clear.bind(s)
            }), this.onDidChange = this._onDidChange.event
        }
        dispose() {
            this._disposables.dispose(), this._onDidChange.dispose()
        }
        _build() {
            this._menuGroups.length = 0, this._contextKeys.clear();
            const t = sl.d.getMenuItems(this._id);
            let i;
            t.sort(e._compareMenuItems);
            for (const e of t) {
                var n = e.group || "";
                i && i[0] === n || (i = [n, []], this._menuGroups.push(i)), i[1].push(e), this._collectContextKeys(e)
            }
        }
        _collectContextKeys(t) {
            var i;
            e._fillInKbExprKeys(t.when, this._contextKeys), Object(sl.f)(t) ? (t.command.precondition && e._fillInKbExprKeys(t.command.precondition, this._contextKeys), t.command.toggled && (i = t.command.toggled.condition || t.command.toggled, e._fillInKbExprKeys(i, this._contextKeys))) : this._options.emitEventsForSubmenuChanges && sl.d.getMenuItems(t.submenu).forEach(this._collectContextKeys, this)
        }
        getActions(e) {
            const t = [];
            for (var i of this._menuGroups) {
                var n, [r, i] = i;
                const o = [];
                for (const t of i) this._contextKeyService.contextMatchesRules(t.when) && (n = Object(sl.f)(t) ? new sl.c(t.command, t.alt, e, this._contextKeyService, this._commandService) : new sl.e(t, this._menuService, this._contextKeyService, e), o.push(n));
                0 < o.length && t.push([r, o])
            }
            return t
        }
        static _fillInKbExprKeys(e, t) {
            if (e)
                for (var i of e.keys()) t.add(i)
        }
        static _compareMenuItems(t, i) {
            let n = t.group;
            var r = i.group;
            if (n !== r) {
                if (!n) return 1;
                if (!r) return -1;
                if ("navigation" === n) return -1;
                if ("navigation" === r) return 1;
                var o = n.localeCompare(r);
                if (0 !== o) return o
            }
            return (r = t.order || 0) < (o = i.order || 0) ? -1 : o < r ? 1 : e._compareTitles((Object(sl.f)(t) ? t.command : t).title, (Object(sl.f)(i) ? i.command : i).title)
        }
        static _compareTitles(e, t) {
            const i = "string" == typeof e ? e : e.original;
            return t = "string" == typeof t ? t : t.original, i.localeCompare(t)
        }
    };
    ap = t([ae(2, m.b), ae(3, Yt.b), ae(4, sl.a)], ap), S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    class lp extends v.a {
        constructor(e) {
            super(), this.model = e, this._markersData = new Map, this._register(Object(v.i)(() => {
                this.model.deltaDecorations([...this._markersData.keys()], []), this._markersData.clear()
            }))
        }
        update(e, t) {
            var i = [...this._markersData.keys()];
            this._markersData.clear();
            var n = this.model.deltaDecorations(i, t);
            for (let t = 0; t < n.length; t++) this._markersData.set(n[t], e[t]);
            return 0 !== i.length || 0 !== n.length
        }
        getMarker(e) {
            return this._markersData.get(e.id)
        }
    }
    let dp = class extends v.a {
        constructor(e, t) {
            super(), this._markerService = t, this._onDidChangeMarker = this._register(new D.b), this._markerDecorations = new d.b, e.getModels().forEach(e => this._onModelAdded(e)), this._register(e.onModelAdded(this._onModelAdded, this)), this._register(e.onModelRemoved(this._onModelRemoved, this)), this._register(this._markerService.onMarkerChanged(this._handleMarkerChange, this))
        }
        dispose() {
            super.dispose(), this._markerDecorations.forEach(e => e.dispose()), this._markerDecorations.clear()
        }
        getMarker(e, t) {
            const i = this._markerDecorations.get(e);
            return i && i.getMarker(t) || null
        }
        _handleMarkerChange(e) {
            e.forEach(e => {
                (e = this._markerDecorations.get(e)) && this._updateDecorations(e)
            })
        }
        _onModelAdded(e) {
            var t = new lp(e);
            this._markerDecorations.set(e.uri, t), this._updateDecorations(t)
        }
        _onModelRemoved(e) {
            const t = this._markerDecorations.get(e.uri);
            t && (t.dispose(), this._markerDecorations.delete(e.uri)), e.uri.scheme !== g.c.inMemory && e.uri.scheme !== g.c.internal && e.uri.scheme !== g.c.vscode || this._markerService && this._markerService.read({
                resource: e.uri
            }).map(e => e.owner).forEach(t => this._markerService.remove(t, [e.uri]))
        }
        _updateDecorations(e) {
            const t = this._markerService.read({
                resource: e.model.uri,
                take: 500
            });
            var i = t.map(t => ({
                range: this._createDecorationRange(e.model, t),
                options: this._createDecorationOption(t)
            }));
            e.update(t, i) && this._onDidChangeMarker.fire(e.model)
        }
        _createDecorationRange(e, t) {
            let i = T.a.lift(t);
            return t.severity !== Qu.Hint || this._hasMarkerTag(t, 1) || this._hasMarkerTag(t, 2) || (i = i.setEndPosition(i.startLineNumber, i.startColumn + 2)), e.validateRange(i)
        }
        _createDecorationOption(e) {
            let t, i, n, r = void 0,
                o = void 0;
            switch (e.severity) {
                case Qu.Hint:
                    t = this._hasMarkerTag(e, 2) ? void 0 : this._hasMarkerTag(e, 1) ? "squiggly-unnecessary" : "squiggly-hint", i = 0;
                    break;
                case Qu.Warning:
                    t = "squiggly-warning", r = Object(ir.g)(tr.I), i = 20, n = {
                        color: Object(ir.g)(Ir.Sb),
                        position: W.f.Inline
                    };
                    break;
                case Qu.Info:
                    t = "squiggly-info", r = Object(ir.g)(tr.H), i = 10;
                    break;
                default:
                    Qu.Error, t = "squiggly-error", r = Object(ir.g)(tr.G), i = 30, n = {
                        color: Object(ir.g)(Ir.Lb),
                        position: W.f.Inline
                    }
            }
            return e.tags && (-1 !== e.tags.indexOf(1) && (o = "squiggly-inline-unnecessary"), -1 !== e.tags.indexOf(2) && (o = "squiggly-inline-deprecated")), {
                description: "marker-decoration",
                stickiness: 1,
                className: t,
                showIfCollapsed: !0,
                overviewRuler: {
                    color: r,
                    position: W.g.Right
                },
                minimap: n,
                zIndex: i,
                inlineClassName: o
            }
        }
        _hasMarkerTag(e, t) {
            return !!e.tags && 0 <= e.tags.indexOf(t)
        }
    };
    dp = S([x(0, ee.a), x(1, tp)], dp), t = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, ae = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let cp = class extends v.a {
        constructor(e, t) {
            super(), this._contextKeyService = e, this._configurationService = t, this._accessibilitySupport = 0, this._onDidChangeScreenReaderOptimized = new D.b, this._accessibilityModeEnabledContext = $s.bindTo(this._contextKeyService);
            const i = () => this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());
            this._register(this._configurationService.onDidChange配置(e => {
                e.affects配置("editor.accessibilitySupport") && (i(), this._onDidChangeScreenReaderOptimized.fire())
            })), i(), this.onDidChangeScreenReaderOptimized(() => i())
        }
        get onDidChangeScreenReaderOptimized() {
            return this._onDidChangeScreenReaderOptimized.event
        }
        isScreenReaderOptimized() {
            var e = this._configurationService.getValue("editor.accessibilitySupport");
            return "on" === e || "auto" === e && 2 === this._accessibilitySupport
        }
        getAccessibilitySupport() {
            return this._accessibilitySupport
        }
    };
    cp = t([ae(0, Yt.b), ae(1, Wt.a)], cp);
    var hp = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };
    class up {
        constructor() {
            this.mapTextToType = new Map, this.findText = ""
        }
        writeText(e, t) {
            return hp(this, void 0, void 0, (function*() {
                if (t) this.mapTextToType.set(t, e);
                else {
                    try {
                        return yield navigator.clipboard.writeText(e)
                    } catch (e) {
                        console.error(e)
                    }
                    const t = document.activeElement,
                        i = document.body.appendChild(Object(s.a)("textarea", {
                            "aria-hidden": !0
                        }));
                    i.style.height = "1px", i.style.width = "1px", i.style.position = "absolute", i.value = e, i.focus(), i.select(), document.execCommand("copy"), t instanceof HTMLElement && t.focus(), document.body.removeChild(i)
                }
            }))
        }
        readText(e) {
            return hp(this, void 0, void 0, (function*() {
                if (e) return this.mapTextToType.get(e) || "";
                try {
                    return yield navigator.clipboard.readText()
                } catch (e) {
                    return console.error(e), ""
                }
            }))
        }
        readFindText() {
            return hp(this, void 0, void 0, (function*() {
                return this.findText
            }))
        }
        writeFindText(e) {
            return hp(this, void 0, void 0, (function*() {
                this.findText = e
            }))
        }
    }
    S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    var pp = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };

    function gp(e) {
        return e.scheme === g.c.file ? e.fsPath : e.path
    }
    let fp = 0;
    class mp {
        constructor(e, t, i, n, r, o, s) {
            this.id = ++fp, this.type = 0, this.actual = e, this.label = e.label, this.confirmBeforeUndo = e.confirmBeforeUndo || !1, this.resourceLabel = t, this.strResource = i, this.resourceLabels = [this.resourceLabel], this.strResources = [this.strResource], this.groupId = n, this.groupOrder = r, this.sourceId = o, this.sourceOrder = s, this.isValid = !0
        }
        setValid(e) {
            this.isValid = e
        }
        toString() {
            return `[id:${this.id}] [group:${this.groupId}] [${this.isValid?"  VALID":"INVALID"}] ${this.actual.constructor.name} - ${this.actual}`
        }
    }
    class vp {
        constructor(e, t) {
            this.resourceLabel = e, this.reason = t
        }
    }
    class bp {
        constructor() {
            this.elements = new Map
        }
        createMessage() {
            const e = [],
                t = [];
            for (var [, i] of this.elements) {
                (0 === i.reason ? e : t).push(i.resourceLabel)
            }
            let n = [];
            return 0 < e.length && n.push(yt.a({
                key: "externalRemoval",
                comment: ["{0} is a list of filenames"]
            }, "The following files have been closed and modified on disk: {0}.", e.join(", "))), 0 < t.length && n.push(yt.a({
                key: "noParallelUniverses",
                comment: ["{0} is a list of filenames"]
            }, "The following files have been modified in an incompatible way: {0}.", t.join(", "))), n.join("\n")
        }
        get size() {
            return this.elements.size
        }
        has(e) {
            return this.elements.has(e)
        }
        set(e, t) {
            this.elements.set(e, t)
        }
        delete(e) {
            return this.elements.delete(e)
        }
    }
    class _p {
        constructor(e, t, i, n, r, o, s) {
            this.id = ++fp, this.type = 1, this.actual = e, this.label = e.label, this.confirmBeforeUndo = e.confirmBeforeUndo || !1, this.resourceLabels = t, this.strResources = i, this.groupId = n, this.groupOrder = r, this.sourceId = o, this.sourceOrder = s, this.removedResources = null, this.invalidatedResources = null
        }
        canSplit() {
            return "function" == typeof this.actual.split
        }
        removeResource(e, t, i) {
            this.removedResources || (this.removedResources = new bp), this.removedResources.has(t) || this.removedResources.set(t, new vp(e, i))
        }
        setValid(e, t, i) {
            i ? this.invalidatedResources && (this.invalidatedResources.delete(t), 0 === this.invalidatedResources.size && (this.invalidatedResources = null)) : (this.invalidatedResources || (this.invalidatedResources = new bp), this.invalidatedResources.has(t) || this.invalidatedResources.set(t, new vp(e, 0)))
        }
        toString() {
            return `[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?"INVALID":"  VALID"}] ${this.actual.constructor.name} - ${this.actual}`
        }
    }
    class wp {
        constructor(e, t) {
            this.resourceLabel = e, this.strResource = t, this._past = [], this._future = [], this.locked = !1, this.versionId = 1
        }
        dispose() {
            for (const e of this._past) 1 === e.type && e.removeResource(this.resourceLabel, this.strResource, 0);
            for (const e of this._future) 1 === e.type && e.removeResource(this.resourceLabel, this.strResource, 0);
            this.versionId++
        }
        toString() {
            let e = [];
            e.push(`* ${this.strResource}:`);
            for (let t = 0; t < this._past.length; t++) e.push("   * [UNDO] " + this._past[t]);
            for (let t = this._future.length - 1; 0 <= t; t--) e.push("   * [REDO] " + this._future[t]);
            return e.join("\n")
        }
        flushAllElements() {
            this._past = [], this._future = [], this.versionId++
        }
        _setElementValidFlag(e, t) {
            1 === e.type ? e.setValid(this.resourceLabel, this.strResource, t) : e.setValid(t)
        }
        setElementsValidFlag(e, t) {
            for (const i of this._past) t(i.actual) && this._setElementValidFlag(i, e);
            for (const i of this._future) t(i.actual) && this._setElementValidFlag(i, e)
        }
        pushElement(e) {
            for (const e of this._future) 1 === e.type && e.removeResource(this.resourceLabel, this.strResource, 1);
            this._future = [], this._past.push(e), this.versionId++
        }
        createSnapshot(e) {
            const t = [];
            for (let e = 0, i = this._past.length; e < i; e++) t.push(this._past[e].id);
            for (let e = this._future.length - 1; 0 <= e; e--) t.push(this._future[e].id);
            return new Nl.b(e, t)
        }
        restoreSnapshot(e) {
            var t = e.elements.length;
            let i = !0,
                n = 0,
                r = -1;
            for (let o = 0, s = this._past.length; o < s; o++, n++) {
                const s = this._past[o];
                i && (n >= t || s.id !== e.elements[n]) && (i = !1, r = 0), i || 1 !== s.type || s.removeResource(this.resourceLabel, this.strResource, 0)
            }
            let o = -1;
            for (let r = this._future.length - 1; 0 <= r; r--, n++) {
                const s = this._future[r];
                i && (n >= t || s.id !== e.elements[n]) && (i = !1, o = r), i || 1 !== s.type || s.removeResource(this.resourceLabel, this.strResource, 0)
            } - 1 !== r && (this._past = this._past.slice(0, r)), -1 !== o && (this._future = this._future.slice(o + 1)), this.versionId++
        }
        getElements() {
            const e = [],
                t = [];
            for (const t of this._past) e.push(t.actual);
            for (const e of this._future) t.push(e.actual);
            return {
                past: e,
                future: t
            }
        }
        getClosestPastElement() {
            return 0 === this._past.length ? null : this._past[this._past.length - 1]
        }
        getSecondClosestPastElement() {
            return this._past.length < 2 ? null : this._past[this._past.length - 2]
        }
        getClosestFutureElement() {
            return 0 === this._future.length ? null : this._future[this._future.length - 1]
        }
        hasPastElements() {
            return 0 < this._past.length
        }
        hasFutureElements() {
            return 0 < this._future.length
        }
        splitPastWorkspaceElement(e, t) {
            for (let i = this._past.length - 1; 0 <= i; i--)
                if (this._past[i] === e) {
                    t.has(this.strResource) ? this._past[i] = t.get(this.strResource) : this._past.splice(i, 1);
                    break
                } this.versionId++
        }
        splitFutureWorkspaceElement(e, t) {
            for (let i = this._future.length - 1; 0 <= i; i--)
                if (this._future[i] === e) {
                    t.has(this.strResource) ? this._future[i] = t.get(this.strResource) : this._future.splice(i, 1);
                    break
                } this.versionId++
        }
        moveBackward(e) {
            this._past.pop(), this._future.push(e), this.versionId++
        }
        moveForward(e) {
            this._future.pop(), this._past.push(e), this.versionId++
        }
    }
    class yp {
        constructor(e) {
            this.editStacks = e, this._versionIds = [];
            for (let e = 0, t = this.editStacks.length; e < t; e++) this._versionIds[e] = this.editStacks[e].versionId
        }
        isValid() {
            for (let e = 0, t = this.editStacks.length; e < t; e++)
                if (this._versionIds[e] !== this.editStacks[e].versionId) return !1;
            return !0
        }
    }
    const Cp = new wp("", "");
    Cp.locked = !0;
    let xp = class {
        constructor(e, t) {
            this._dialogService = e, this._notificationService = t, this._editStacks = new Map, this._uriComparisonKeyComputers = []
        }
        getUriComparisonKey(e) {
            for (const t of this._uriComparisonKeyComputers)
                if (t[0] === e.scheme) return t[1].getComparisonKey(e);
            return e.toString()
        }
        _print(e) {
            console.log("------------------------------------"), console.log(`AFTER ${e}: `);
            let t = [];
            for (const e of this._editStacks) t.push(e[1].toString());
            console.log(t.join("\n"))
        }
        pushElement(e, t = Nl.c.None, i = Nl.d.None) {
            if (0 === e.type) {
                var n = gp(e.resource),
                    r = this.getUriComparisonKey(e.resource);
                this._pushElement(new mp(e, n, r, t.id, t.nextOrder(), i.id, i.nextOrder()))
            } else {
                const n = new Set,
                    r = [],
                    a = [];
                for (const t of e.resources) {
                    var o = gp(t),
                        s = this.getUriComparisonKey(t);
                    n.has(s) || (n.add(s), r.push(o), a.push(s))
                }
                1 === r.length ? this._pushElement(new mp(e, r[0], a[0], t.id, t.nextOrder(), i.id, i.nextOrder())) : this._pushElement(new _p(e, r, a, t.id, t.nextOrder(), i.id, i.nextOrder()))
            }
        }
        _pushElement(e) {
            for (let n = 0, r = e.strResources.length; n < r; n++) {
                var t = e.resourceLabels[n],
                    i = e.strResources[n];
                let r;
                this._editStacks.has(i) ? r = this._editStacks.get(i) : (r = new wp(t, i), this._editStacks.set(i, r)), r.pushElement(e)
            }
        }
        getLastElement(e) {
            if (e = this.getUriComparisonKey(e), this._editStacks.has(e)) {
                const t = this._editStacks.get(e);
                return t.hasFutureElements() ? null : (e = t.getClosestPastElement()) ? e.actual : null
            }
            return null
        }
        _splitPastWorkspaceElement(e, t) {
            var i = e.actual.split();
            const n = new Map;
            for (const e of i) {
                var r = gp(e.resource),
                    o = this.getUriComparisonKey(e.resource);
                o = new mp(e, r, o, 0, 0, 0, 0);
                n.set(o.strResource, o)
            }
            for (const i of e.strResources)
                if (!t || !t.has(i)) {
                    this._editStacks.get(i).splitPastWorkspaceElement(e, n)
                }
        }
        _splitFutureWorkspaceElement(e, t) {
            var i = e.actual.split();
            const n = new Map;
            for (const e of i) {
                var r = gp(e.resource),
                    o = this.getUriComparisonKey(e.resource);
                o = new mp(e, r, o, 0, 0, 0, 0);
                n.set(o.strResource, o)
            }
            for (const i of e.strResources)
                if (!t || !t.has(i)) {
                    this._editStacks.get(i).splitFutureWorkspaceElement(e, n)
                }
        }
        removeElements(e) {
            if (e = "string" == typeof e ? e : this.getUriComparisonKey(e), this._editStacks.has(e)) {
                this._editStacks.get(e).dispose(), this._editStacks.delete(e)
            }
        }
        setElementsValidFlag(e, t, i) {
            if (e = this.getUriComparisonKey(e), this._editStacks.has(e)) {
                this._editStacks.get(e).setElementsValidFlag(t, i)
            }
        }
        createSnapshot(e) {
            var t = this.getUriComparisonKey(e);
            if (this._editStacks.has(t)) {
                return this._editStacks.get(t).createSnapshot(e)
            }
            return new Nl.b(e, [])
        }
        restoreSnapshot(e) {
            var t = this.getUriComparisonKey(e.resource);
            if (this._editStacks.has(t)) {
                const i = this._editStacks.get(t);
                i.restoreSnapshot(e), i.hasPastElements() || i.hasFutureElements() || (i.dispose(), this._editStacks.delete(t))
            }
        }
        getElements(e) {
            if (e = this.getUriComparisonKey(e), this._editStacks.has(e)) {
                return this._editStacks.get(e).getElements()
            }
            return {
                past: [],
                future: []
            }
        }
        _findClosestUndoElementWithSource(e) {
            if (!e) return [null, null];
            let t = null,
                i = null;
            for (var [n, r] of this._editStacks)(r = r.getClosestPastElement()) && r.sourceId === e && (!t || r.sourceOrder > t.sourceOrder) && (t = r, i = n);
            return [t, i]
        }
        canUndo(e) {
            if (e instanceof Nl.d) {
                var [, t] = this._findClosestUndoElementWithSource(e.id);
                return !!t
            }
            if (e = this.getUriComparisonKey(e), this._editStacks.has(e)) {
                return this._editStacks.get(e).hasPastElements()
            }
            return !1
        }
        _onError(e, t) {
            Object(se.f)(e);
            for (const e of t.strResources) this.removeElements(e);
            this._notificationService.error(e)
        }
        _acquireLocks(e) {
            for (const t of e.editStacks)
                if (t.locked) throw new Error("Cannot acquire edit stack lock");
            for (const t of e.editStacks) t.locked = !0;
            return () => {
                for (const t of e.editStacks) t.locked = !1
            }
        }
        _safeInvokeWithLocks(e, t, i, n, r) {
            const o = this._acquireLocks(i);
            let s;
            try {
                s = t()
            } catch (t) {
                return o(), n.dispose(), this._onError(t, e)
            }
            return s ? s.then(() => (o(), n.dispose(), r()), t => (o(), n.dispose(), this._onError(t, e))) : (o(), n.dispose(), r())
        }
        _invokeWorkspacePrepare(e) {
            return pp(this, void 0, void 0, (function*() {
                if (void 0 === e.actual.prepareUndoRedo) return v.a.None;
                var t = e.actual.prepareUndoRedo();
                return void 0 === t ? v.a.None : t
            }))
        }
        _invokeResourcePrepare(e, t) {
            if (1 !== e.actual.type || void 0 === e.actual.prepareUndoRedo) return t(v.a.None);
            const i = e.actual.prepareUndoRedo();
            return i ? Object(v.g)(i) ? t(i) : i.then(e => t(e)) : t(v.a.None)
        }
        _getAffectedEditStacks(e) {
            const t = [];
            for (const i of e.strResources) t.push(this._editStacks.get(i) || Cp);
            return new yp(t)
        }
        _tryToSplitAndUndo(e, t, i, n) {
            if (t.canSplit()) return this._splitPastWorkspaceElement(t, i), this._notificationService.warn(n), new Sp(this._undo(e, 0, !0));
            for (const e of t.strResources) this.removeElements(e);
            return this._notificationService.warn(n), new Sp
        }
        _checkWorkspaceUndo(e, t, i, n) {
            if (t.removedResources) return this._tryToSplitAndUndo(e, t, t.removedResources, yt.a({
                key: "cannotWorkspaceUndo",
                comment: ["{0} is a label for an operation. {1} is another message."]
            }, "Could not undo '{0}' across all files. {1}", t.label, t.removedResources.createMessage()));
            if (n && t.invalidatedResources) return this._tryToSplitAndUndo(e, t, t.invalidatedResources, yt.a({
                key: "cannotWorkspaceUndo",
                comment: ["{0} is a label for an operation. {1} is another message."]
            }, "Could not undo '{0}' across all files. {1}", t.label, t.invalidatedResources.createMessage()));
            const r = [];
            for (const e of i.editStacks) e.getClosestPastElement() !== t && r.push(e.resourceLabel);
            if (0 < r.length) return this._tryToSplitAndUndo(e, t, null, yt.a({
                key: "cannotWorkspaceUndoDueToChanges",
                comment: ["{0} is a label for an operation. {1} is a list of filenames."]
            }, "Could not undo '{0}' across all files because changes were made to {1}", t.label, r.join(", ")));
            const o = [];
            for (const e of i.editStacks) e.locked && o.push(e.resourceLabel);
            return 0 < o.length ? this._tryToSplitAndUndo(e, t, null, yt.a({
                key: "cannotWorkspaceUndoDueToInProgressUndoRedo",
                comment: ["{0} is a label for an operation. {1} is a list of filenames."]
            }, "Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}", t.label, o.join(", "))) : i.isValid() ? null : this._tryToSplitAndUndo(e, t, null, yt.a({
                key: "cannotWorkspaceUndoDueToInMeantimeUndoRedo",
                comment: ["{0} is a label for an operation. {1} is a list of filenames."]
            }, "Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime", t.label))
        }
        _workspaceUndo(e, t, i) {
            var n = this._getAffectedEditStacks(t),
                r = this._checkWorkspaceUndo(e, t, n, !1);
            return r ? r.returnValue : this._confirmAndExecuteWorkspaceUndo(e, t, n, i)
        }
        _isPartOfUndoGroup(e) {
            if (!e.groupId) return !1;
            for (var [, t] of this._editStacks) {
                var i = t.getClosestPastElement();
                if (i) {
                    if (i === e && (t = t.getSecondClosestPastElement()) && t.groupId === e.groupId) return !0;
                    if (i.groupId === e.groupId) return !0
                }
            }
            return !1
        }
        _confirmAndExecuteWorkspaceUndo(e, t, i, n) {
            return pp(this, void 0, void 0, (function*() {
                if (t.canSplit() && !this._isPartOfUndoGroup(t)) {
                    var r = yield this._dialogService.show(mt.a.Info, yt.a("confirmWorkspace", "Would you like to undo '{0}' across all files?", t.label), [yt.a({
                        key: "ok",
                        comment: ["{0} denotes a number that is > 1"]
                    }, "Undo in {0} Files", i.editStacks.length), yt.a("nok", "Undo this File"), yt.a("cancel", "取消")], {
                        cancelId: 2
                    });
                    if (2 === r.choice) return;
                    if (1 === r.choice) return this._splitPastWorkspaceElement(t, null), this._undo(e, 0, !0);
                    if (r = this._checkWorkspaceUndo(e, t, i, !1)) return r.returnValue;
                    n = !0
                }
                let o;
                try {
                    o = yield this._invokeWorkspacePrepare(t)
                } catch (r) {
                    return this._onError(r, t)
                }
                if (r = this._checkWorkspaceUndo(e, t, i, !0)) return o.dispose(), r.returnValue;
                for (const e of i.editStacks) e.moveBackward(t);
                return this._safeInvokeWithLocks(t, () => t.actual.undo(), i, o, () => this._continueUndoInGroup(t.groupId, n))
            }))
        }
        _resourceUndo(e, t, i) {
            if (t.isValid) {
                if (!e.locked) return this._invokeResourcePrepare(t, n => (e.moveBackward(t), this._safeInvokeWithLocks(t, () => t.actual.undo(), new yp([e]), n, () => this._continueUndoInGroup(t.groupId, i))));
                var n = yt.a({
                    key: "cannotResourceUndoDueToInProgressUndoRedo",
                    comment: ["{0} is a label for an operation."]
                }, "Could not undo '{0}' because there is already an undo or redo operation running.", t.label);
                this._notificationService.warn(n)
            } else e.flushAllElements()
        }
        _findClosestUndoElementInGroup(e) {
            if (!e) return [null, null];
            let t = null,
                i = null;
            for (var [n, r] of this._editStacks)(r = r.getClosestPastElement()) && r.groupId === e && (!t || r.groupOrder > t.groupOrder) && (t = r, i = n);
            return [t, i]
        }
        _continueUndoInGroup(e, t) {
            if (e) {
                var [, e] = this._findClosestUndoElementInGroup(e);
                return e ? this._undo(e, 0, t) : void 0
            }
        }
        undo(e) {
            if (e instanceof Nl.d) {
                var [, t] = this._findClosestUndoElementWithSource(e.id);
                return t ? this._undo(t, e.id, !1) : void 0
            }
            return "string" == typeof e ? this._undo(e, 0, !1) : this._undo(this.getUriComparisonKey(e), 0, !1)
        }
        _undo(e, t = 0, i) {
            if (this._editStacks.has(e)) {
                const s = this._editStacks.get(e);
                var n = s.getClosestPastElement();
                if (n) {
                    if (n.groupId) {
                        var [r, o] = this._findClosestUndoElementInGroup(n.groupId);
                        if (n !== r && o) return this._undo(o, t, i)
                    }
                    if ((n.sourceId !== t || n.confirmBeforeUndo) && !i) return this._confirmAndContinueUndo(e, t, n);
                    try {
                        return 1 === n.type ? this._workspaceUndo(e, n, i) : this._resourceUndo(s, n, i)
                    } finally {}
                }
            }
        }
        _confirmAndContinueUndo(e, t, i) {
            return pp(this, void 0, void 0, (function*() {
                if (1 !== (yield this._dialogService.show(mt.a.Info, yt.a("confirmDifferentSource", "Would you like to undo '{0}'?", i.label), [yt.a("confirmDifferentSource.yes", "Yes"), yt.a("cancel", "取消")], {
                        cancelId: 1
                    })).choice) return this._undo(e, t, !0)
            }))
        }
        _findClosestRedoElementWithSource(e) {
            if (!e) return [null, null];
            let t = null,
                i = null;
            for (var [n, r] of this._editStacks)(r = r.getClosestFutureElement()) && r.sourceId === e && (!t || r.sourceOrder < t.sourceOrder) && (t = r, i = n);
            return [t, i]
        }
        canRedo(e) {
            if (e instanceof Nl.d) {
                var [, t] = this._findClosestRedoElementWithSource(e.id);
                return !!t
            }
            if (e = this.getUriComparisonKey(e), this._editStacks.has(e)) {
                return this._editStacks.get(e).hasFutureElements()
            }
            return !1
        }
        _tryToSplitAndRedo(e, t, i, n) {
            if (t.canSplit()) return this._splitFutureWorkspaceElement(t, i), this._notificationService.warn(n), new Sp(this._redo(e));
            for (const e of t.strResources) this.removeElements(e);
            return this._notificationService.warn(n), new Sp
        }
        _checkWorkspaceRedo(e, t, i, n) {
            if (t.removedResources) return this._tryToSplitAndRedo(e, t, t.removedResources, yt.a({
                key: "cannotWorkspaceRedo",
                comment: ["{0} is a label for an operation. {1} is another message."]
            }, "Could not redo '{0}' across all files. {1}", t.label, t.removedResources.createMessage()));
            if (n && t.invalidatedResources) return this._tryToSplitAndRedo(e, t, t.invalidatedResources, yt.a({
                key: "cannotWorkspaceRedo",
                comment: ["{0} is a label for an operation. {1} is another message."]
            }, "Could not redo '{0}' across all files. {1}", t.label, t.invalidatedResources.createMessage()));
            const r = [];
            for (const e of i.editStacks) e.getClosestFutureElement() !== t && r.push(e.resourceLabel);
            if (0 < r.length) return this._tryToSplitAndRedo(e, t, null, yt.a({
                key: "cannotWorkspaceRedoDueToChanges",
                comment: ["{0} is a label for an operation. {1} is a list of filenames."]
            }, "Could not redo '{0}' across all files because changes were made to {1}", t.label, r.join(", ")));
            const o = [];
            for (const e of i.editStacks) e.locked && o.push(e.resourceLabel);
            return 0 < o.length ? this._tryToSplitAndRedo(e, t, null, yt.a({
                key: "cannotWorkspaceRedoDueToInProgressUndoRedo",
                comment: ["{0} is a label for an operation. {1} is a list of filenames."]
            }, "Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}", t.label, o.join(", "))) : i.isValid() ? null : this._tryToSplitAndRedo(e, t, null, yt.a({
                key: "cannotWorkspaceRedoDueToInMeantimeUndoRedo",
                comment: ["{0} is a label for an operation. {1} is a list of filenames."]
            }, "Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime", t.label))
        }
        _workspaceRedo(e, t) {
            var i = this._getAffectedEditStacks(t),
                n = this._checkWorkspaceRedo(e, t, i, !1);
            return n ? n.returnValue : this._executeWorkspaceRedo(e, t, i)
        }
        _executeWorkspaceRedo(e, t, i) {
            return pp(this, void 0, void 0, (function*() {
                let n;
                try {
                    n = yield this._invokeWorkspacePrepare(t)
                } catch (n) {
                    return this._onError(n, t)
                }
                var r = this._checkWorkspaceRedo(e, t, i, !0);
                if (r) return n.dispose(), r.returnValue;
                for (const e of i.editStacks) e.moveForward(t);
                return this._safeInvokeWithLocks(t, () => t.actual.redo(), i, n, () => this._continueRedoInGroup(t.groupId))
            }))
        }
        _resourceRedo(e, t) {
            if (t.isValid) {
                if (!e.locked) return this._invokeResourcePrepare(t, i => (e.moveForward(t), this._safeInvokeWithLocks(t, () => t.actual.redo(), new yp([e]), i, () => this._continueRedoInGroup(t.groupId))));
                var i = yt.a({
                    key: "cannotResourceRedoDueToInProgressUndoRedo",
                    comment: ["{0} is a label for an operation."]
                }, "Could not redo '{0}' because there is already an undo or redo operation running.", t.label);
                this._notificationService.warn(i)
            } else e.flushAllElements()
        }
        _findClosestRedoElementInGroup(e) {
            if (!e) return [null, null];
            let t = null,
                i = null;
            for (var [n, r] of this._editStacks)(r = r.getClosestFutureElement()) && r.groupId === e && (!t || r.groupOrder < t.groupOrder) && (t = r, i = n);
            return [t, i]
        }
        _continueRedoInGroup(e) {
            if (e) {
                var [, e] = this._findClosestRedoElementInGroup(e);
                return e ? this._redo(e) : void 0
            }
        }
        redo(e) {
            if (e instanceof Nl.d) {
                var [, t] = this._findClosestRedoElementWithSource(e.id);
                return t ? this._redo(t) : void 0
            }
            return "string" == typeof e ? this._redo(e) : this._redo(this.getUriComparisonKey(e))
        }
        _redo(e) {
            if (this._editStacks.has(e)) {
                const r = this._editStacks.get(e);
                var t = r.getClosestFutureElement();
                if (t) {
                    if (t.groupId) {
                        var [i, n] = this._findClosestRedoElementInGroup(t.groupId);
                        if (t !== i && n) return this._redo(n)
                    }
                    try {
                        return 1 === t.type ? this._workspaceRedo(e, t) : this._resourceRedo(r, t)
                    } finally {}
                }
            }
        }
    };
    xp = S([x(0, mc), x(1, hi.a)], xp);
    class Sp {
        constructor(e) {
            this.returnValue = e
        }
    }
    Object(ba.b)(Nl.a, xp), i(443);
    const kp = new RegExp(`(\\\\)?\\$\\((${Sa.a.iconNameExpression}(?:${Sa.a.iconModifierExpression})?)\\)`, "g");

    function Lp(e) {
        const t = new Array;
        let i, n = 0;
        for (; null !== (o = kp.exec(e));) {
            i = o.index || 0, t.push(e.substring(n, i)), n = (o.index || 0) + o[0].length;
            var [, r, o] = o;
            t.push(r ? `$(${o})` : function(e) {
                const t = s.a("span");
                return t.classList.add(...Sa.a.asClassNameArray(e)), t
            }({
                id: o
            }))
        }
        return n < e.length && t.push(e.substring(n)), t
    }
    i(445);
    const Op = {
        buttonBackground: uo.a.fromHex("#0E639C"),
        buttonHoverBackground: uo.a.fromHex("#006BB3"),
        buttonForeground: uo.a.white
    };
    class Ep extends v.a {
        constructor(e, t) {
            super(), this._onDidClick = this._register(new D.b), this.options = t || Object.create(null), Object(I.e)(this.options, Op, !1), this.buttonForeground = this.options.buttonForeground, this.buttonBackground = this.options.buttonBackground, this.buttonHoverBackground = this.options.buttonHoverBackground, this.buttonSecondaryForeground = this.options.buttonSecondaryForeground, this.buttonSecondaryBackground = this.options.buttonSecondaryBackground, this.buttonSecondaryHoverBackground = this.options.buttonSecondaryHoverBackground, this.buttonBorder = this.options.buttonBorder, this._element = document.createElement("a"), this._element.classList.add("monaco-button"), this._element.tabIndex = 0, this._element.setAttribute("role", "button"), e.appendChild(this._element), this._register(Ki.b.addTarget(this._element)), [s.d.CLICK, Ki.a.Tap].forEach(e => {
                this._register(Object(s.g)(this._element, e, e => {
                    this.enabled ? this._onDidClick.fire(e) : s.c.stop(e)
                }))
            }), this._register(Object(s.g)(this._element, s.d.KEY_DOWN, e => {
                const t = new gt.a(e);
                let i = !1;
                this.enabled && (t.equals(3) || t.equals(10)) ? (this._onDidClick.fire(e), i = !0) : t.equals(9) && (this._element.blur(), i = !0), i && s.c.stop(t, !0)
            })), this._register(Object(s.g)(this._element, s.d.MOUSE_OVER, e => {
                this._element.classList.contains("disabled") || this.setHoverBackground()
            })), this._register(Object(s.g)(this._element, s.d.MOUSE_OUT, e => {
                this.applyStyles()
            })), this.focusTracker = this._register(Object(s.T)(this._element)), this._register(this.focusTracker.onDidFocus(() => this.setHoverBackground())), this._register(this.focusTracker.onDidBlur(() => this.applyStyles())), this.applyStyles()
        }
        get onDidClick() {
            return this._onDidClick.event
        }
        setHoverBackground() {
            let e;
            e = this.options.secondary ? this.buttonSecondaryHoverBackground ? this.buttonSecondaryHoverBackground.toString() : null : this.buttonHoverBackground ? this.buttonHoverBackground.toString() : null, e && (this._element.style.backgroundColor = e)
        }
        style(e) {
            this.buttonForeground = e.buttonForeground, this.buttonBackground = e.buttonBackground, this.buttonHoverBackground = e.buttonHoverBackground, this.buttonSecondaryForeground = e.buttonSecondaryForeground, this.buttonSecondaryBackground = e.buttonSecondaryBackground, this.buttonSecondaryHoverBackground = e.buttonSecondaryHoverBackground, this.buttonBorder = e.buttonBorder, this.applyStyles()
        }
        applyStyles() {
            if (this._element) {
                let t, i;
                t = this.options.secondary ? (i = this.buttonSecondaryForeground ? this.buttonSecondaryForeground.toString() : "", this.buttonSecondaryBackground ? this.buttonSecondaryBackground.toString() : "") : (i = this.buttonForeground ? this.buttonForeground.toString() : "", this.buttonBackground ? this.buttonBackground.toString() : "");
                var e = this.buttonBorder ? this.buttonBorder.toString() : "";
                this._element.style.color = i, this._element.style.backgroundColor = t, this._element.style.borderWidth = e ? "1px" : "", this._element.style.borderStyle = e ? "solid" : "", this._element.style.borderColor = e
            }
        }
        get element() {
            return this._element
        }
        set label(e) {
            this._element.classList.add("monaco-text-button"), this.options.supportIcons ? Object(s.N)(this._element, ...Lp(e)) : this._element.textContent = e, "string" == typeof this.options.title ? this._element.title = this.options.title : this.options.title && (this._element.title = e)
        }
        set enabled(e) {
            e ? (this._element.classList.remove("disabled"), this._element.setAttribute("aria-disabled", String(!1)), this._element.tabIndex = 0) : (this._element.classList.add("disabled"), this._element.setAttribute("aria-disabled", String(!0)))
        }
        get enabled() {
            return !this._element.classList.contains("disabled")
        }
    }
    i(447);
    const Np = {
        badgeBackground: uo.a.fromHex("#4D4D4D"),
        badgeForeground: uo.a.fromHex("#FFFFFF")
    };
    class Dp {
        constructor(e, t) {
            this.count = 0, this.options = t || Object.create(null), Object(I.e)(this.options, Np, !1), this.badgeBackground = this.options.badgeBackground, this.badgeForeground = this.options.badgeForeground, this.badgeBorder = this.options.badgeBorder, this.element = Object(s.n)(e, Object(s.a)(".monaco-count-badge")), this.countFormat = this.options.countFormat || "{0}", this.titleFormat = this.options.titleFormat || "", this.setCount(this.options.count || 0)
        }
        setCount(e) {
            this.count = e, this.render()
        }
        setTitleFormat(e) {
            this.titleFormat = e, this.render()
        }
        render() {
            this.element.textContent = Object(b.v)(this.countFormat, this.count), this.element.title = Object(b.v)(this.titleFormat, this.count), this.applyStyles()
        }
        style(e) {
            this.badgeBackground = e.badgeBackground, this.badgeForeground = e.badgeForeground, this.badgeBorder = e.badgeBorder, this.applyStyles()
        }
        applyStyles() {
            var e, t, i;
            this.element && (e = this.badgeBackground ? this.badgeBackground.toString() : "", t = this.badgeForeground ? this.badgeForeground.toString() : "", i = this.badgeBorder ? this.badgeBorder.toString() : "", this.element.style.backgroundColor = e, this.element.style.color = t, this.element.style.borderWidth = i ? "1px" : "", this.element.style.borderStyle = i ? "solid" : "", this.element.style.borderColor = i)
        }
    }
    i(449);
    const Ip = "infinite",
        Tp = {
            progressBarBackground: uo.a.fromHex("#0E70C0")
        };
    class Mp extends v.a {
        constructor(e, t) {
            super(), this.options = t || Object.create(null), Object(I.e)(this.options, Tp, !1), this.workedVal = 0, this.progressBarBackground = this.options.progressBarBackground, this._register(this.showDelayedScheduler = new q.e(() => Object(s.S)(this.element), 0)), this.create(e)
        }
        create(e) {
            this.element = document.createElement("div"), this.element.classList.add("monaco-progress-container"), this.element.setAttribute("role", "progressbar"), this.element.setAttribute("aria-valuemin", "0"), e.appendChild(this.element), this.bit = document.createElement("div"), this.bit.classList.add("progress-bit"), this.element.appendChild(this.bit), this.applyStyles()
        }
        off() {
            this.bit.style.width = "inherit", this.bit.style.opacity = "1", this.element.classList.remove("active", Ip, "discrete"), this.workedVal = 0, this.totalWork = void 0
        }
        stop() {
            return this.doDone(!1)
        }
        doDone(e) {
            return this.element.classList.add("done"), this.element.classList.contains(Ip) ? this.bit.style.opacity = "0" : this.bit.style.width = "inherit", e ? setTimeout(() => this.off(), 200) : this.off(), this
        }
        infinite() {
            return this.bit.style.width = "2%", this.bit.style.opacity = "1", this.element.classList.remove("discrete", "done"), this.element.classList.add("active", Ip), this
        }
        getContainer() {
            return this.element
        }
        style(e) {
            this.progressBarBackground = e.progressBarBackground, this.applyStyles()
        }
        applyStyles() {
            var e;
            this.bit && (e = this.progressBarBackground ? this.progressBarBackground.toString() : "", this.bit.style.backgroundColor = e)
        }
    }
    class Pp {
        constructor(e) {
            this._prefix = e, this._lastId = 0
        }
        nextId() {
            return this._prefix + ++this._lastId
        }
    }
    var Ap, Rp;
    new Pp("id#"), i(164);
    const Fp = {},
        jp = new Pp("quick-input-button-icon-");

    function Bp(e) {
        if (e) {
            let i;
            var t = e.dark.toString();
            return Fp[t] ? i = Fp[t] : (i = jp.nextId(), s.s("." + i, "background-image: " + s.p(e.light || e.dark)), s.s(`.vs-dark .${i}, .hc-black .${i}`, "background-image: " + s.p(e.dark)), Fp[t] = i), i
        }
    }
    const Vp = {
        ctrlCmd: !1,
        alt: !1
    };
    (t = Ap = Ap || {})[t.Blur = 1] = "Blur", t[t.Gesture = 2] = "Gesture", t[t.Other = 3] = "Other", (ae = Rp = Rp || {})[ae.NONE = 0] = "NONE", ae[ae.FIRST = 1] = "FIRST", ae[ae.SECOND = 2] = "SECOND", ae[ae.LAST = 3] = "LAST";
    var Wp = i(152);
    const zp = s.a;
    class Hp extends v.a {
        constructor(e) {
            super(), this.parent = e, this.onKeyDown = e => s.g(this.inputBox.inputElement, s.d.KEY_DOWN, t => {
                e(new gt.a(t))
            }), this.onMouseDown = e => s.g(this.inputBox.inputElement, s.d.MOUSE_DOWN, t => {
                e(new $i.a(t))
            }), this.onDidChange = e => this.inputBox.onDidChange(e), this.container = s.n(this.parent, zp(".quick-input-box")), this.inputBox = this._register(new Wp.b(this.container, void 0))
        }
        get value() {
            return this.inputBox.value
        }
        set value(e) {
            this.inputBox.value = e
        }
        select(e = null) {
            this.inputBox.select(e)
        }
        isSelectionAtEnd() {
            return this.inputBox.isSelectionAtEnd()
        }
        get placeholder() {
            return this.inputBox.inputElement.getAttribute("placeholder") || ""
        }
        set placeholder(e) {
            this.inputBox.setPlaceHolder(e)
        }
        get ariaLabel() {
            return this.inputBox.getAriaLabel()
        }
        set ariaLabel(e) {
            this.inputBox.setAriaLabel(e)
        }
        get password() {
            return "password" === this.inputBox.inputElement.type
        }
        set password(e) {
            this.inputBox.inputElement.type = e ? "password" : "text"
        }
        setAttribute(e, t) {
            this.inputBox.inputElement.setAttribute(e, t)
        }
        removeAttribute(e) {
            this.inputBox.inputElement.removeAttribute(e)
        }
        showDecoration(e) {
            e === mt.a.Ignore ? this.inputBox.hideMessage() : this.inputBox.showMessage({
                type: e === mt.a.Info ? 1 : e === mt.a.Warning ? 2 : 3,
                content: ""
            })
        }
        stylesForType(e) {
            return this.inputBox.stylesForType(e === mt.a.Info ? 1 : e === mt.a.Warning ? 2 : 3)
        }
        setFocus() {
            this.inputBox.focus()
        }
        layout() {
            this.inputBox.layout()
        }
        style(e) {
            this.inputBox.style(e)
        }
    }
    class Up {
        constructor(e, t) {
            this.supportIcons = t, this.text = "", this.title = "", this.highlights = [], this.didEverRender = !1, this.domNode = document.createElement("span"), this.domNode.className = "monaco-highlighted-label", e.appendChild(this.domNode)
        }
        get element() {
            return this.domNode
        }
        set(e, t = [], i = "", n) {
            e = e || "", n && (e = Up.escapeNewLines(e, t)), this.didEverRender && this.text === e && this.title === i && I.c(this.highlights, t) || (this.text = e, this.title = i, this.highlights = t, this.render())
        }
        render() {
            const e = [];
            let t = 0;
            for (const n of this.highlights)
                if (n.end !== n.start) {
                    t < n.start && (i = this.text.substring(t, n.start), e.push(s.a("span", void 0, ...this.supportIcons ? Lp(i) : [i])), t = n.end);
                    var i = this.text.substring(n.start, n.end);
                    const r = s.a("span.highlight", void 0, ...this.supportIcons ? Lp(i) : [i]);
                    n.extraClasses && r.classList.add(n.extraClasses), e.push(r), t = n.end
                } var n;
            t < this.text.length && (n = this.text.substring(t), e.push(s.a("span", void 0, ...this.supportIcons ? Lp(n) : [n]))), s.N(this.domNode, ...e), this.title ? this.domNode.title = this.title : this.domNode.removeAttribute("title"), this.didEverRender = !0
        }
        static escapeNewLines(e, t) {
            let i, n = 0;
            return e.replace(/\r\n|\r|\n/g, (e, r) => {
                i = "\r\n" === e ? -1 : 0, r += n;
                for (const e of t) e.end <= r || (e.start >= r && (e.start += i), e.end >= r && (e.end += i));
                return n += i, "⏎"
            })
        }
    }

    function Kp(e) {
        return e instanceof class {
            constructor(e = "", t = !1) {
                if (this.value = e, "string" != typeof this.value) throw Object(se.c)("value");
                "boolean" == typeof t ? (this.isTrusted = t, this.supportThemeIcons = !1, this.supportHtml = !1) : (this.isTrusted = null !== (e = t.isTrusted) && void 0 !== e ? e : void 0, this.supportThemeIcons = null !== (e = t.supportThemeIcons) && void 0 !== e && e, this.supportHtml = null !== (t = t.supportHtml) && void 0 !== t && t)
            }
            appendText(e, t = 0) {
                return this.value += (this.supportThemeIcons ? e.replace(Gd, (e, t) => t ? e : "\\" + e) : e).replace(/[\\`*_{}[\]()#+\-!]/g, "\\$&").replace(/([ \t]+)/g, (e, t) => "&nbsp;".repeat(t.length)).replace(/\>/gm, "\\>").replace(/\n/g, 1 === t ? "\\\n" : "\n\n"), this
            }
            appendMarkdown(e) {
                return this.value += e, this
            }
            appendCodeblock(e, t) {
                return this.value += "\n```", this.value += e, this.value += "\n", this.value += t, this.value += "\n```\n", this
            }
        } || e && "object" == typeof e && !("string" != typeof e.value || "boolean" != typeof e.isTrusted && void 0 !== e.isTrusted || "boolean" != typeof e.supportThemeIcons && void 0 !== e.supportThemeIcons)
    }
    var $p = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };
    class qp {
        constructor(e, t, i) {
            this.hoverDelegate = e, this.target = t, this.fadeInAnimation = i
        }
        update(e, t) {
            var i;
            return $p(this, void 0, void 0, (function*() {
                if (this._cancellationTokenSource && (this._cancellationTokenSource.dispose(!0), this._cancellationTokenSource = void 0), !this.isDisposed) {
                    let r;
                    if (void 0 === e || Object(ve.k)(e) || e instanceof HTMLElement) r = e;
                    else if (Object(ve.h)(e.markdown)) {
                        this._hoverWidget || this.show(Object(yt.a)("iconLabel.loading", "正在加载..."), t), this._cancellationTokenSource = new a.b;
                        var n = this._cancellationTokenSource.token;
                        if (r = yield e.markdown(n), this.isDisposed || n.isCancellationRequested) return
                    } else r = null !== (i = e.markdown) && void 0 !== i ? i : e.markdownNotSupportedFallback;
                    this.show(r, t)
                }
            }))
        }
        show(e, t) {
            const i = this._hoverWidget;
            this.hasContent(e) && (e = {
                content: e,
                target: this.target,
                showPointer: "element" === this.hoverDelegate.placement,
                hoverPosition: 2,
                skipFadeInAnimation: !this.fadeInAnimation || !!i
            }, this._hoverWidget = this.hoverDelegate.showHover(e, t)), null != i && i.dispose()
        }
        hasContent(e) {
            return !(!e || Kp(e) && !e.value)
        }
        get isDisposed() {
            var e;
            return null === (e = this._hoverWidget) || void 0 === e ? void 0 : e.isDisposed
        }
        dispose() {
            var e;
            null !== (e = this._hoverWidget) && void 0 !== e && e.dispose(), null !== (e = this._cancellationTokenSource) && void 0 !== e && e.dispose(!0), this._cancellationTokenSource = void 0
        }
    }
    i(452);
    class Gp {
        constructor(e) {
            this._element = e
        }
        get element() {
            return this._element
        }
        set textContent(e) {
            this.disposed || e === this._textContent || (this._textContent = e, this._element.textContent = e)
        }
        set className(e) {
            this.disposed || e === this._className || (this._className = e, this._element.className = e)
        }
        set empty(e) {
            this.disposed || e === this._empty || (this._empty = e, this._element.style.marginLeft = e ? "0" : "")
        }
        dispose() {
            this.disposed = !0
        }
    }
    class Yp extends v.a {
        constructor(e, t) {
            super(), this.customHovers = new Map, this.domNode = this._register(new Gp(s.n(e, s.a(".monaco-icon-label")))), this.labelContainer = s.n(this.domNode.element, s.a(".monaco-icon-label-container")), e = s.n(this.labelContainer, s.a("span.monaco-icon-name-container")), this.descriptionContainer = this._register(new Gp(s.n(this.labelContainer, s.a("span.monaco-icon-description-container")))), null != t && t.supportHighlights || null != t && t.supportIcons ? this.nameNode = new Xp(e, !!t.supportIcons) : this.nameNode = new Zp(e), null != t && t.supportDescriptionHighlights ? this.descriptionNodeFactory = () => new Up(s.n(this.descriptionContainer.element, s.a("span.label-description")), !!t.supportIcons) : this.descriptionNodeFactory = () => this._register(new Gp(s.n(this.descriptionContainer.element, s.a("span.label-description")))), this.hoverDelegate = null == t ? void 0 : t.hoverDelegate
        }
        get element() {
            return this.domNode.element
        }
        setLabel(e, t, i) {
            const n = ["monaco-icon-label"];
            i && (i.extraClasses && n.push(...i.extraClasses), i.italic && n.push("italic"), i.strikethrough && n.push("strikethrough")), this.domNode.className = n.join(" "), this.setupHover(null != i && i.descriptionTitle ? this.labelContainer : this.element, null == i ? void 0 : i.title), this.nameNode.setLabel(e, i), (t || this.descriptionNode) && (this.descriptionNode || (this.descriptionNode = this.descriptionNodeFactory()), this.descriptionNode instanceof Up ? (this.descriptionNode.set(t || "", i ? i.descriptionMatches : void 0), this.setupHover(this.descriptionNode.element, null == i ? void 0 : i.descriptionTitle)) : (this.descriptionNode.textContent = t || "", this.setupHover(this.descriptionNode.element, (null == i ? void 0 : i.descriptionTitle) || ""), this.descriptionNode.empty = !t))
        }
        setupHover(e, t) {
            const i = this.customHovers.get(e);
            var n;
            i && (i.dispose(), this.customHovers.delete(e)), t ? this.hoverDelegate ? (n = function(e, t, i) {
                let n, r;
                const o = (t, i) => {
                        t && (null != r && r.dispose(), r = void 0), i && (null != n && n.dispose(), n = void 0), null !== (i = e.onDidHideHover) && void 0 !== i && i.call(e)
                    },
                    a = (n, o, s) => new q.g(() => $p(this, void 0, void 0, (function*() {
                        r && !r.isDisposed || (r = new qp(e, s || t, 0 < n), yield r.update(i, o))
                    })), n),
                    l = s.g(t, s.d.MOUSE_OVER, () => {
                        if (!n) {
                            const i = new v.b;
                            i.add(s.g(t, s.d.MOUSE_LEAVE, e => o(!1, e.fromElement === t), !0)), i.add(s.g(t, s.d.MOUSE_DOWN, () => o(!0, !0), !0));
                            const r = {
                                targetElements: [t],
                                dispose: () => {}
                            };
                            void 0 !== e.placement && "mouse" !== e.placement || i.add(s.g(t, s.d.MOUSE_MOVE, e => r.x = e.x + 10, !0)), i.add(a(e.delay, !1, r)), n = i
                        }
                    }, !0);
                return {
                    show: e => {
                        o(!1, !0), a(0, e)
                    },
                    hide: () => {
                        o(!0, !0)
                    },
                    update: e => $p(this, void 0, void 0, (function*() {
                        i = e, yield null == r ? void 0 : r.update(i)
                    })),
                    dispose: () => {
                        l.dispose(), o(!0, !0)
                    }
                }
            }(this.hoverDelegate, e, t)) && this.customHovers.set(e, n) : (n = e, t = t, Object(ve.k)(t) ? n.title = t : null != t && t.markdownNotSupportedFallback ? n.title = t.markdownNotSupportedFallback : n.removeAttribute("title")) : e.removeAttribute("title")
        }
        dispose() {
            super.dispose();
            for (const e of this.customHovers.values()) e.dispose();
            this.customHovers.clear()
        }
    }
    class Zp {
        constructor(e) {
            this.container = e, this.label = void 0, this.singleLabel = void 0
        }
        setLabel(e, t) {
            if (this.label !== e || !Object(I.c)(this.options, t))
                if (this.label = e, this.options = t, "string" == typeof e) this.singleLabel || (this.container.innerText = "", this.container.classList.remove("multiple"), this.singleLabel = s.n(this.container, s.a("a.label-name", {
                    id: null == t ? void 0 : t.domId
                }))), this.singleLabel.textContent = e;
                else {
                    this.container.innerText = "", this.container.classList.add("multiple"), this.singleLabel = void 0;
                    for (let r = 0; r < e.length; r++) {
                        var i = e[r],
                            n = (null == t ? void 0 : t.domId) && `${null==t?void 0:t.domId}_${r}`;
                        s.n(this.container, s.a("a.label-name", {
                            id: n,
                            "data-icon-label-count": e.length,
                            "data-icon-label-index": r,
                            role: "treeitem"
                        }, i)), r < e.length - 1 && s.n(this.container, s.a("span.label-separator", void 0, (null == t ? void 0 : t.separator) || "/"))
                    }
                }
        }
    }
    class Xp {
        constructor(e, t) {
            this.container = e, this.supportIcons = t, this.label = void 0, this.singleLabel = void 0
        }
        setLabel(e, t) {
            if (this.label !== e || !Object(I.c)(this.options, t))
                if (this.label = e, this.options = t, "string" == typeof e) this.singleLabel || (this.container.innerText = "", this.container.classList.remove("multiple"), this.singleLabel = new Up(s.n(this.container, s.a("a.label-name", {
                    id: null == t ? void 0 : t.domId
                })), this.supportIcons)), this.singleLabel.set(e, null == t ? void 0 : t.matches, void 0, null == t ? void 0 : t.labelEscapeNewLines);
                else {
                    this.container.innerText = "", this.container.classList.add("multiple"), this.singleLabel = void 0;
                    var i = (null == t ? void 0 : t.separator) || "/",
                        n = function(e, t, i) {
                            if (i) {
                                let n = 0;
                                return e.map(e => {
                                    const r = {
                                        start: n,
                                        end: n + e.length
                                    };
                                    return e = i.map(e => Rd.intersect(r, e)).filter(e => !Rd.isEmpty(e)).map(({
                                        start: e,
                                        end: t
                                    }) => ({
                                        start: e - n,
                                        end: t - n
                                    })), n = r.end + t.length, e
                                })
                            }
                        }(e, i, null == t ? void 0 : t.matches);
                    for (let l = 0; l < e.length; l++) {
                        var r = e[l],
                            o = n ? n[l] : void 0,
                            a = (null == t ? void 0 : t.domId) && `${null==t?void 0:t.domId}_${l}`;
                        a = s.a("a.label-name", {
                            id: a,
                            "data-icon-label-count": e.length,
                            "data-icon-label-index": l,
                            role: "treeitem"
                        });
                        new Up(s.n(this.container, a), this.supportIcons).set(r, o, void 0, null == t ? void 0 : t.labelEscapeNewLines), l < e.length - 1 && s.n(a, s.a("span.label-separator", void 0, i))
                    }
                }
        }
    }
    i(454);
    const Qp = s.a;
    class Jp {
        constructor(e, t, i) {
            this.os = t, this.keyElements = new Set, this.options = i || Object.create(null), this.labelBackground = this.options.keybindingLabelBackground, this.labelForeground = this.options.keybindingLabelForeground, this.labelBorder = this.options.keybindingLabelBorder, this.labelBottomBorder = this.options.keybindingLabelBottomBorder, this.labelShadow = this.options.keybindingLabelShadow, this.domNode = s.n(e, Qp(".monaco-keybinding")), this.didEverRender = !1, e.appendChild(this.domNode)
        }
        get element() {
            return this.domNode
        }
        set(e, t) {
            this.didEverRender && this.keybinding === e && Jp.areSame(this.matches, t) || (this.keybinding = e, this.matches = t, this.render())
        }
        render() {
            var e, t;
            this.clear(), this.keybinding ? ([e, t] = this.keybinding.getParts(), e && this.renderPart(this.domNode, e, this.matches ? this.matches.firstPart : null), t && (s.n(this.domNode, Qp("span.monaco-keybinding-key-chord-separator", void 0, " ")), this.renderPart(this.domNode, t, this.matches ? this.matches.chordPart : null)), this.domNode.title = this.keybinding.getAriaLabel() || "") : this.options && this.options.renderUnboundKeybindings && this.renderUnbound(this.domNode), this.applyStyles(), this.didEverRender = !0
        }
        clear() {
            s.q(this.domNode), this.keyElements.clear()
        }
        renderPart(e, t, i) {
            var n = ri.modifierLabels[this.os];
            t.ctrlKey && this.renderKey(e, n.ctrlKey, Boolean(null == i ? void 0 : i.ctrlKey), n.separator), t.shiftKey && this.renderKey(e, n.shiftKey, Boolean(null == i ? void 0 : i.shiftKey), n.separator), t.altKey && this.renderKey(e, n.altKey, Boolean(null == i ? void 0 : i.altKey), n.separator), t.metaKey && this.renderKey(e, n.metaKey, Boolean(null == i ? void 0 : i.metaKey), n.separator), (t = t.keyLabel) && this.renderKey(e, t, Boolean(null == i ? void 0 : i.keyCode), "")
        }
        renderKey(e, t, i, n) {
            s.n(e, this.createKeyElement(t, i ? ".highlight" : "")), n && s.n(e, Qp("span.monaco-keybinding-key-separator", void 0, n))
        }
        renderUnbound(e) {
            s.n(e, this.createKeyElement(Object(yt.a)("unbound", "Unbound")))
        }
        createKeyElement(e, t = "") {
            return e = Qp("span.monaco-keybinding-key" + t, void 0, e), this.keyElements.add(e), e
        }
        style(e) {
            this.labelBackground = e.keybindingLabelBackground, this.labelForeground = e.keybindingLabelForeground, this.labelBorder = e.keybindingLabelBorder, this.labelBottomBorder = e.keybindingLabelBottomBorder, this.labelShadow = e.keybindingLabelShadow, this.applyStyles()
        }
        applyStyles() {
            var e;
            if (this.element) {
                for (const t of this.keyElements) this.labelBackground && (t.style.backgroundColor = null === (e = this.labelBackground) || void 0 === e ? void 0 : e.toString()), this.labelBorder && (t.style.borderColor = this.labelBorder.toString()), this.labelBottomBorder && (t.style.borderBottomColor = this.labelBottomBorder.toString()), this.labelShadow && (t.style.boxShadow = "inset 0 -1px 0 " + this.labelShadow);
                this.labelForeground && (this.element.style.color = this.labelForeground.toString())
            }
        }
        static areSame(e, t) {
            return e === t || !e && !t || !!e && !!t && Object(I.c)(e.firstPart, t.firstPart) && Object(I.c)(e.chordPart, t.chordPart)
        }
    }
    const eg = new q.b(() => {
        const e = new Intl.Collator(void 0, {
            numeric: !0,
            sensitivity: "base"
        });
        return {
            collator: e,
            collatorIsNumeric: e.resolvedOptions().numeric
        }
    });
    var tg;
    S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    };
    const ig = s.a;
    class ng {
        constructor(e) {
            this.hidden = !1, this._onChecked = new D.b, this.onChecked = this._onChecked.event, Object.assign(this, e)
        }
        get checked() {
            return !!this._checked
        }
        set checked(e) {
            e !== this._checked && (this._checked = e, this._onChecked.fire(e))
        }
        dispose() {
            this._onChecked.dispose()
        }
    }
    class rg {
        get templateId() {
            return rg.ID
        }
        renderTemplate(e) {
            const t = Object.create(null);
            t.toDisposeElement = [], t.toDisposeTemplate = [], t.entry = s.n(e, ig(".quick-input-list-entry"));
            var i = s.n(t.entry, ig("label.quick-input-list-label"));
            return t.toDisposeTemplate.push(s.l(i, s.d.CLICK, e => {
                t.checkbox.offsetParent || e.preventDefault()
            })), t.checkbox = s.n(i, ig("input.quick-input-list-checkbox")), t.checkbox.type = "checkbox", t.toDisposeTemplate.push(s.l(t.checkbox, s.d.CHANGE, e => {
                t.element.checked = t.checkbox.checked
            })), e = s.n(i, ig(".quick-input-list-rows")), i = s.n(e, ig(".quick-input-list-row")), e = s.n(e, ig(".quick-input-list-row")), t.label = new Yp(i, {
                supportHighlights: !0,
                supportDescriptionHighlights: !0,
                supportIcons: !0
            }), i = s.n(i, ig(".quick-input-list-entry-keybinding")), t.keybinding = new Jp(i, A.a), e = s.n(e, ig(".quick-input-list-label-meta")), t.detail = new Up(e, !0), t.separator = s.n(t.entry, ig(".quick-input-list-separator")), t.actionBar = new Ca.a(t.entry), t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"), t.toDisposeTemplate.push(t.actionBar), t
        }
        renderElement(e, t, i) {
            i.toDisposeElement = Object(v.f)(i.toDisposeElement), i.element = e, i.checkbox.checked = e.checked, i.toDisposeElement.push(e.onChecked(e => i.checkbox.checked = e));
            var {
                labelHighlights: n,
                descriptionHighlights: r,
                detailHighlights: o
            } = e;
            const s = Object.create(null);
            s.matches = n || [], s.descriptionTitle = e.saneDescription, s.descriptionMatches = r || [], s.extraClasses = e.item.iconClasses, s.italic = e.item.italic, s.strikethrough = e.item.strikethrough, i.label.setLabel(e.saneLabel, e.saneDescription, s), i.keybinding.set(e.item.keybinding), i.detail.set(e.saneDetail, o), e.separator && e.separator.label ? (i.separator.textContent = e.separator.label, i.separator.style.display = "") : i.separator.style.display = "none", i.entry.classList.toggle("quick-input-list-separator-border", !!e.separator), i.actionBar.clear();
            const a = e.item.buttons;
            a && a.length ? (i.actionBar.push(a.map((t, i) => {
                let n = t.iconClass || (t.iconPath ? Bp(t.iconPath) : void 0);
                t.alwaysVisible && (n = n ? n + " always-visible" : "always-visible");
                const r = new xa.a("id-" + i, "", n, !0, () => function(e, t, i, n) {
                    return new(i = i || Promise)((function(r, o) {
                        function s(e) {
                            try {
                                l(n.next(e))
                            } catch (e) {
                                o(e)
                            }
                        }

                        function a(e) {
                            try {
                                l(n.throw(e))
                            } catch (e) {
                                o(e)
                            }
                        }

                        function l(e) {
                            var t;
                            e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                                e(t)
                            }))).then(s, a)
                        }
                        l((n = n.apply(e, t || [])).next())
                    }))
                }(this, void 0, void 0, (function*() {
                    e.fireButtonTriggered({
                        button: t,
                        item: e.item
                    })
                })));
                return r.tooltip = t.tooltip || "", r
            }), {
                icon: !0,
                label: !1
            }), i.entry.classList.add("has-actions")) : i.entry.classList.remove("has-actions")
        }
        disposeElement(e, t, i) {
            i.toDisposeElement = Object(v.f)(i.toDisposeElement)
        }
        disposeTemplate(e) {
            e.toDisposeElement = Object(v.f)(e.toDisposeElement), e.toDisposeTemplate = Object(v.f)(e.toDisposeTemplate)
        }
    }
    rg.ID = "listelement";
    class og {
        getHeight(e) {
            return e.saneDetail ? 44 : 22
        }
        getTemplateId(e) {
            return rg.ID
        }
    }(x = tg = tg || {})[x.First = 1] = "First", x[x.Second = 2] = "Second", x[x.Last = 3] = "Last", x[x.Next = 4] = "Next", x[x.Previous = 5] = "Previous", x[x.NextPage = 6] = "NextPage", x[x.PreviousPage = 7] = "PreviousPage";
    class sg {
        constructor(e, t, i) {
            this.parent = e, this.inputElements = [], this.elements = [], this.elementsToIndexes = new Map, this.matchOnDescription = !1, this.matchOnDetail = !1, this.matchOnLabel = !0, this.matchOnMeta = !0, this.sortByLabel = !0, this._onChangedAllVisibleChecked = new D.b, this.onChangedAllVisibleChecked = this._onChangedAllVisibleChecked.event, this._onChangedCheckedCount = new D.b, this.onChangedCheckedCount = this._onChangedCheckedCount.event, this._onChangedVisibleCount = new D.b, this.onChangedVisibleCount = this._onChangedVisibleCount.event, this._onChangedCheckedElements = new D.b, this.onChangedCheckedElements = this._onChangedCheckedElements.event, this._onButtonTriggered = new D.b, this.onButtonTriggered = this._onButtonTriggered.event, this._onKeyDown = new D.b, this.onKeyDown = this._onKeyDown.event, this._onLeave = new D.b, this.onLeave = this._onLeave.event, this._fireCheckedEvents = !0, this.elementDisposables = [], this.disposables = [], this.id = t, this.container = s.n(this.parent, ig(".quick-input-list"));
            var n = new og;
            e = new ag;
            this.list = i.createList("QuickInput", this.container, n, [new rg], {
                identityProvider: {
                    getId: e => e.saneLabel
                },
                setRowLineHeight: !1,
                multipleSelectionSupport: !1,
                horizontalScrolling: !1,
                accessibilityProvider: e
            }), this.list.getHTMLElement().id = t, this.disposables.push(this.list), this.disposables.push(this.list.onKeyDown(e => {
                var t = new gt.a(e);
                switch (t.keyCode) {
                    case 10:
                        this.toggleCheckbox();
                        break;
                    case 31:
                        (A.f ? e.metaKey : e.ctrlKey) && this.list.setFocus(Object(ne.o)(this.list.length));
                        break;
                    case 16:
                        var i = this.list.getFocus();
                        1 === i.length && 0 === i[0] && this._onLeave.fire();
                        break;
                    case 18:
                        1 === (i = this.list.getFocus()).length && i[0] === this.list.length - 1 && this._onLeave.fire()
                }
                this._onKeyDown.fire(t)
            })), this.disposables.push(this.list.onMouseDown(e => {
                2 !== e.browserEvent.button && e.browserEvent.preventDefault()
            })), this.disposables.push(s.g(this.container, s.d.CLICK, e => {
                (e.x || e.y) && this._onLeave.fire()
            })), this.disposables.push(this.list.onMouseMiddleClick(e => {
                this._onLeave.fire()
            })), this.disposables.push(this.list.onContextMenu(e => {
                "number" == typeof e.index && (e.browserEvent.preventDefault(), this.list.setSelection([e.index]))
            })), this.disposables.push(this._onChangedAllVisibleChecked, this._onChangedCheckedCount, this._onChangedVisibleCount, this._onChangedCheckedElements, this._onButtonTriggered, this._onLeave, this._onKeyDown)
        }
        get onDidChangeFocus() {
            return D.c.map(this.list.onDidChangeFocus, e => e.elements.map(e => e.item))
        }
        get onDidChangeSelection() {
            return D.c.map(this.list.onDidChangeSelection, e => ({
                items: e.elements.map(e => e.item),
                event: e.browserEvent
            }))
        }
        get scrollTop() {
            return this.list.scrollTop
        }
        set scrollTop(e) {
            this.list.scrollTop = e
        }
        getAllVisibleChecked() {
            return this.allVisibleChecked(this.elements, !1)
        }
        allVisibleChecked(e, t = !0) {
            for (let n = 0, r = e.length; n < r; n++) {
                var i = e[n];
                if (!i.hidden) {
                    if (!i.checked) return !1;
                    t = !0
                }
            }
            return t
        }
        getCheckedCount() {
            let e = 0;
            var t = this.elements;
            for (let i = 0, n = t.length; i < n; i++) t[i].checked && e++;
            return e
        }
        getVisibleCount() {
            let e = 0;
            var t = this.elements;
            for (let i = 0, n = t.length; i < n; i++) t[i].hidden || e++;
            return e
        }
        setAllVisibleChecked(e) {
            try {
                this._fireCheckedEvents = !1, this.elements.forEach(t => {
                    t.hidden || (t.checked = e)
                })
            } finally {
                this._fireCheckedEvents = !0, this.fireCheckedEvents()
            }
        }
        setElements(e) {
            this.elementDisposables = Object(v.f)(this.elementDisposables);
            const t = e => this.fireButtonTriggered(e);
            this.inputElements = e, this.elements = e.reduce((i, n, r) => {
                if ("separator" !== n.type) {
                    var o = r && e[r - 1];
                    const l = n.label && n.label.replace(/\r?\n/g, " ");
                    var s = n.meta && n.meta.replace(/\r?\n/g, " ");
                    const d = n.description && n.description.replace(/\r?\n/g, " "),
                        c = n.detail && n.detail.replace(/\r?\n/g, " ");
                    var a = n.ariaLabel || [l, d, c].map(e => Object(Sa.c)(e)).filter(e => !!e).join(", ");
                    i.push(new ng({
                        index: r,
                        item: n,
                        saneLabel: l,
                        saneMeta: s,
                        saneAriaLabel: a,
                        saneDescription: d,
                        saneDetail: c,
                        labelHighlights: null === (a = n.highlights) || void 0 === a ? void 0 : a.label,
                        descriptionHighlights: null === (a = n.highlights) || void 0 === a ? void 0 : a.description,
                        detailHighlights: null === (n = n.highlights) || void 0 === n ? void 0 : n.detail,
                        checked: !1,
                        separator: o && "separator" === o.type ? o : void 0,
                        fireButtonTriggered: t
                    }))
                }
                return i
            }, []), this.elementDisposables.push(...this.elements), this.elementDisposables.push(...this.elements.map(e => e.onChecked(() => this.fireCheckedEvents()))), this.elementsToIndexes = this.elements.reduce((e, t, i) => (e.set(t.item, i), e), new Map), this.list.splice(0, this.list.length), this.list.splice(0, this.list.length, this.elements), this._onChangedVisibleCount.fire(this.elements.length)
        }
        getFocusedElements() {
            return this.list.getFocusedElements().map(e => e.item)
        }
        setFocusedElements(e) {
            this.list.setFocus(e.filter(e => this.elementsToIndexes.has(e)).map(e => this.elementsToIndexes.get(e))), 0 < e.length && "number" == typeof(e = this.list.getFocus()[0]) && this.list.reveal(e)
        }
        getActiveDescendant() {
            return this.list.getHTMLElement().getAttribute("aria-activedescendant")
        }
        setSelectedElements(e) {
            this.list.setSelection(e.filter(e => this.elementsToIndexes.has(e)).map(e => this.elementsToIndexes.get(e)))
        }
        getCheckedElements() {
            return this.elements.filter(e => e.checked).map(e => e.item)
        }
        setCheckedElements(e) {
            try {
                this._fireCheckedEvents = !1;
                const t = new Set;
                for (const i of e) t.add(i);
                for (const e of this.elements) e.checked = t.has(e.item)
            } finally {
                this._fireCheckedEvents = !0, this.fireCheckedEvents()
            }
        }
        set enabled(e) {
            this.list.getHTMLElement().style.pointerEvents = e ? "" : "none"
        }
        focus(e) {
            if (this.list.length) {
                switch (e = (e = (e = e === tg.Next && this.list.getFocus()[0] === this.list.length - 1 ? tg.First : e) === tg.Previous && 0 === this.list.getFocus()[0] ? tg.Last : e) === tg.Second && this.list.length < 2 ? tg.First : e) {
                    case tg.First:
                        this.list.focusFirst();
                        break;
                    case tg.Second:
                        this.list.focusNth(1);
                        break;
                    case tg.Last:
                        this.list.focusLast();
                        break;
                    case tg.Next:
                        this.list.focusNext();
                        break;
                    case tg.Previous:
                        this.list.focusPrevious();
                        break;
                    case tg.NextPage:
                        this.list.focusNextPage();
                        break;
                    case tg.PreviousPage:
                        this.list.focusPreviousPage()
                }
                "number" == typeof(e = this.list.getFocus()[0]) && this.list.reveal(e)
            }
        }
        clearFocus() {
            this.list.setFocus([])
        }
        domFocus() {
            this.list.domFocus()
        }
        layout(e) {
            this.list.getHTMLElement().style.maxHeight = e ? `calc(${44*Math.floor(e/44)}px)` : "", this.list.layout()
        }
        filter(e) {
            if (!(this.sortByLabel || this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) return this.list.layout(), !1;
            if ((e = e.trim()) && (this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {
                let t;
                this.elements.forEach(i => {
                    var n = this.matchOnLabel ? Object(ve.o)(Xd(e, Zd(i.saneLabel))) : void 0,
                        r = this.matchOnDescription ? Object(ve.o)(Xd(e, Zd(i.saneDescription || ""))) : void 0,
                        o = this.matchOnDetail ? Object(ve.o)(Xd(e, Zd(i.saneDetail || ""))) : void 0,
                        s = this.matchOnMeta ? Object(ve.o)(Xd(e, Zd(i.saneMeta || ""))) : void 0;
                    n || r || o || s ? (i.labelHighlights = n, i.descriptionHighlights = r, i.detailHighlights = o, i.hidden = !1) : (i.labelHighlights = void 0, i.descriptionHighlights = void 0, i.detailHighlights = void 0, i.hidden = !i.item.alwaysShow), i.separator = void 0, this.sortByLabel || (o = i.index && this.inputElements[i.index - 1], t = o && "separator" === o.type ? o : t, t && !i.hidden && (i.separator = t, t = void 0))
                })
            } else this.elements.forEach(e => {
                e.labelHighlights = void 0, e.descriptionHighlights = void 0, e.detailHighlights = void 0, e.hidden = !1;
                var t = e.index && this.inputElements[e.index - 1];
                e.separator = t && "separator" === t.type ? t : void 0
            });
            const t = this.elements.filter(e => !e.hidden);
            if (this.sortByLabel && e) {
                const i = e.toLowerCase();
                t.sort((e, t) => {
                    return r = t, o = i, e = (n = e).labelHighlights || [], t = r.labelHighlights || [], !e.length || t.length ? e.length || !t.length ? 0 !== e.length || 0 !== t.length ? function(e, t, i) {
                        const n = e.toLowerCase(),
                            r = t.toLowerCase();
                        return (e = function(e, t, i) {
                            const n = e.toLowerCase(),
                                r = t.toLowerCase(),
                                o = n.startsWith(i),
                                s = r.startsWith(i);
                            if (o !== s) return o ? -1 : 1;
                            if (o && s) {
                                if (n.length < r.length) return -1;
                                if (n.length > r.length) return 1
                            }
                            return 0
                        }(e, t, i)) ? e : (t = n.endsWith(i)) !== r.endsWith(i) ? t ? -1 : 1 : (t = (e = n) || "", e = (i = r) || "", i = eg.value.collator.compare(t, e), 0 !== (i = eg.value.collatorIsNumeric && 0 === i && t !== e ? t < e ? -1 : 1 : i) ? i : n.localeCompare(r))
                    }(n.saneLabel, r.saneLabel, o) : 0 : 1 : -1;
                    var n, r, o
                })
            }
            return this.elementsToIndexes = t.reduce((e, t, i) => (e.set(t.item, i), e), new Map), this.list.splice(0, this.list.length, t), this.list.setFocus([]), this.list.layout(), this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()), this._onChangedVisibleCount.fire(t.length), !0
        }
        toggleCheckbox() {
            try {
                this._fireCheckedEvents = !1;
                var e = this.list.getFocusedElements(),
                    t = this.allVisibleChecked(e);
                for (const i of e) i.checked = !t
            } finally {
                this._fireCheckedEvents = !0, this.fireCheckedEvents()
            }
        }
        display(e) {
            this.container.style.display = e ? "" : "none"
        }
        isDisplayed() {
            return "none" !== this.container.style.display
        }
        dispose() {
            this.elementDisposables = Object(v.f)(this.elementDisposables), this.disposables = Object(v.f)(this.disposables)
        }
        fireCheckedEvents() {
            this._fireCheckedEvents && (this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()), this._onChangedCheckedCount.fire(this.getCheckedCount()), this._onChangedCheckedElements.fire(this.getCheckedElements()))
        }
        fireButtonTriggered(e) {
            this._onButtonTriggered.fire(e)
        }
        style(e) {
            this.list.style(e)
        }
    }
    S([gi.a], sg.prototype, "onDidChangeFocus", null), S([gi.a], sg.prototype, "onDidChangeSelection", null);
    class ag {
        getWidgetAriaLabel() {
            return Object(yt.a)("quickInput", "Quick Input")
        }
        getAriaLabel(e) {
            return e.saneAriaLabel
        }
        getWidgetRole() {
            return "listbox"
        }
        getRole() {
            return "option"
        }
    }
    var lg, dg = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };
    const cg = s.a,
        hg = {
            iconClass: Object(Sa.e)("quick-input-back", Sa.b.arrowLeft).classNames,
            tooltip: Object(yt.a)("quickInput.back", "Back"),
            handle: -1
        };
    class ug extends v.a {
        constructor(e) {
            super(), this.ui = e, this.visible = !1, this._enabled = !0, this._busy = !1, this._ignoreFocusOut = !1, this._buttons = [], this.noValidationMessage = ug.noPromptMessage, this._severity = mt.a.Ignore, this.buttonsUpdated = !1, this.onDidTriggerButtonEmitter = this._register(new D.b), this.onDidHideEmitter = this._register(new D.b), this.onDisposeEmitter = this._register(new D.b), this.visibleDisposables = this._register(new v.b), this.onDidHide = this.onDidHideEmitter.event
        }
        get title() {
            return this._title
        }
        set title(e) {
            this._title = e, this.update()
        }
        get description() {
            return this._description
        }
        set description(e) {
            this._description = e, this.update()
        }
        get step() {
            return this._steps
        }
        set step(e) {
            this._steps = e, this.update()
        }
        get totalSteps() {
            return this._totalSteps
        }
        set totalSteps(e) {
            this._totalSteps = e, this.update()
        }
        get enabled() {
            return this._enabled
        }
        set enabled(e) {
            this._enabled = e, this.update()
        }
        get contextKey() {
            return this._contextKey
        }
        set contextKey(e) {
            this._contextKey = e, this.update()
        }
        get busy() {
            return this._busy
        }
        set busy(e) {
            this._busy = e, this.update()
        }
        get ignoreFocusOut() {
            return this._ignoreFocusOut
        }
        set ignoreFocusOut(e) {
            var t = this._ignoreFocusOut !== e && !A.c;
            this._ignoreFocusOut = e && !A.c, t && this.update()
        }
        get buttons() {
            return this._buttons
        }
        set buttons(e) {
            this._buttons = e, this.buttonsUpdated = !0, this.update()
        }
        get validationMessage() {
            return this._validationMessage
        }
        set validationMessage(e) {
            this._validationMessage = e, this.update()
        }
        get severity() {
            return this._severity
        }
        set severity(e) {
            this._severity = e, this.update()
        }
        show() {
            this.visible || (this.visibleDisposables.add(this.ui.onDidTriggerButton(e => {
                -1 !== this.buttons.indexOf(e) && this.onDidTriggerButtonEmitter.fire(e)
            })), this.ui.show(this), this.visible = !0, this._lastValidationMessage = void 0, this._lastSeverity = void 0, this.buttons.length && (this.buttonsUpdated = !0), this.update())
        }
        hide() {
            this.visible && this.ui.hide()
        }
        didHide(e = Ap.Other) {
            this.visible = !1, this.visibleDisposables.clear(), this.onDidHideEmitter.fire({
                reason: e
            })
        }
        update() {
            if (this.visible) {
                var e = this.getTitle();
                if (e && this.ui.title.textContent !== e ? this.ui.title.textContent = e : e || "&nbsp;" === this.ui.title.innerHTML || (this.ui.title.innerText = " "), e = this.getDescription(), this.ui.description1.textContent !== e && (this.ui.description1.textContent = e), this.ui.description2.textContent !== e && (this.ui.description2.textContent = e), this.busy && !this.busyDelay && (this.busyDelay = new q.g, this.busyDelay.setIfNotSet(() => {
                        this.visible && this.ui.progressBar.infinite()
                    }, 800)), !this.busy && this.busyDelay && (this.ui.progressBar.stop(), this.busyDelay.cancel(), this.busyDelay = void 0), this.buttonsUpdated) {
                    this.buttonsUpdated = !1, this.ui.leftActionBar.clear();
                    const e = this.buttons.filter(e => e === hg);
                    this.ui.leftActionBar.push(e.map((e, t) => {
                        const i = new xa.a("id-" + t, "", e.iconClass || Bp(e.iconPath), !0, () => dg(this, void 0, void 0, (function*() {
                            this.onDidTriggerButtonEmitter.fire(e)
                        })));
                        return i.tooltip = e.tooltip || "", i
                    }), {
                        icon: !0,
                        label: !1
                    }), this.ui.rightActionBar.clear();
                    const t = this.buttons.filter(e => e !== hg);
                    this.ui.rightActionBar.push(t.map((e, t) => {
                        const i = new xa.a("id-" + t, "", e.iconClass || Bp(e.iconPath), !0, () => dg(this, void 0, void 0, (function*() {
                            this.onDidTriggerButtonEmitter.fire(e)
                        })));
                        return i.tooltip = e.tooltip || "", i
                    }), {
                        icon: !0,
                        label: !1
                    })
                }
                this.ui.ignoreFocusOut = this.ignoreFocusOut, this.ui.setEnabled(this.enabled), this.ui.setContextKey(this.contextKey), e = this.validationMessage || this.noValidationMessage, this._lastValidationMessage !== e && (this._lastValidationMessage = e, s.N(this.ui.message, ...Lp(e))), this._lastSeverity !== this.severity && (this._lastSeverity = this.severity, this.showMessageDecoration(this.severity))
            }
        }
        getTitle() {
            return this.title && this.step ? `${this.title} (${this.getSteps()})` : this.title || (this.step ? this.getSteps() : "")
        }
        getDescription() {
            return this.description || ""
        }
        getSteps() {
            return this.step && this.totalSteps ? Object(yt.a)("quickInput.steps", "{0}/{1}", this.step, this.totalSteps) : this.step ? String(this.step) : ""
        }
        showMessageDecoration(e) {
            this.ui.inputBox.showDecoration(e), e !== mt.a.Ignore ? (e = this.ui.inputBox.stylesForType(e), this.ui.message.style.color = e.foreground ? "" + e.foreground : "", this.ui.message.style.backgroundColor = e.background ? "" + e.background : "", this.ui.message.style.border = e.border ? "1px solid " + e.border : "", this.ui.message.style.paddingBottom = "4px") : (this.ui.message.style.color = "", this.ui.message.style.backgroundColor = "", this.ui.message.style.border = "", this.ui.message.style.paddingBottom = "")
        }
        dispose() {
            this.hide(), this.onDisposeEmitter.fire(), super.dispose()
        }
    }
    ug.noPromptMessage = Object(yt.a)("inputModeEntry", "Press 'Enter' to confirm your input or 'Escape' to cancel");
    class pg extends ug {
        constructor() {
            super(...arguments), this._value = "", this.onDidChangeValueEmitter = this._register(new D.b), this.onWillAcceptEmitter = this._register(new D.b), this.onDidAcceptEmitter = this._register(new D.b), this.onDidCustomEmitter = this._register(new D.b), this._items = [], this.itemsUpdated = !1, this._canSelectMany = !1, this._canAcceptInBackground = !1, this._matchOnDescription = !1, this._matchOnDetail = !1, this._matchOnLabel = !0, this._sortByLabel = !0, this._autoFocusOnList = !0, this._keepScrollPosition = !1, this._itemActivation = this.ui.isScreenReaderOptimized() ? Rp.NONE : Rp.FIRST, this._activeItems = [], this.activeItemsUpdated = !1, this.activeItemsToConfirm = [], this.onDidChangeActiveEmitter = this._register(new D.b), this._selectedItems = [], this.selectedItemsUpdated = !1, this.selectedItemsToConfirm = [], this.onDidChangeSelectionEmitter = this._register(new D.b), this.onDidTriggerItemButtonEmitter = this._register(new D.b), this.valueSelectionUpdated = !0, this._ok = "default", this._customButton = !1, this.filterValue = e => e, this.onDidChangeValue = this.onDidChangeValueEmitter.event, this.onWillAccept = this.onWillAcceptEmitter.event, this.onDidAccept = this.onDidAcceptEmitter.event, this.onDidChangeActive = this.onDidChangeActiveEmitter.event, this.onDidChangeSelection = this.onDidChangeSelectionEmitter.event, this.onDidTriggerItemButton = this.onDidTriggerItemButtonEmitter.event
        }
        get quickNavigate() {
            return this._quickNavigate
        }
        set quickNavigate(e) {
            this._quickNavigate = e, this.update()
        }
        get value() {
            return this._value
        }
        set value(e) {
            this._value !== e && (this._value = e || "", this.update(), this.onDidChangeValueEmitter.fire(this._value))
        }
        set ariaLabel(e) {
            this._ariaLabel = e, this.update()
        }
        get ariaLabel() {
            return this._ariaLabel
        }
        get placeholder() {
            return this._placeholder
        }
        set placeholder(e) {
            this._placeholder = e, this.update()
        }
        get items() {
            return this._items
        }
        get scrollTop() {
            return this.ui.list.scrollTop
        }
        set scrollTop(e) {
            this.ui.list.scrollTop = e
        }
        set items(e) {
            this._items = e, this.itemsUpdated = !0, this.update()
        }
        get canSelectMany() {
            return this._canSelectMany
        }
        set canSelectMany(e) {
            this._canSelectMany = e, this.update()
        }
        get canAcceptInBackground() {
            return this._canAcceptInBackground
        }
        set canAcceptInBackground(e) {
            this._canAcceptInBackground = e
        }
        get matchOnDescription() {
            return this._matchOnDescription
        }
        set matchOnDescription(e) {
            this._matchOnDescription = e, this.update()
        }
        get matchOnDetail() {
            return this._matchOnDetail
        }
        set matchOnDetail(e) {
            this._matchOnDetail = e, this.update()
        }
        get matchOnLabel() {
            return this._matchOnLabel
        }
        set matchOnLabel(e) {
            this._matchOnLabel = e, this.update()
        }
        get sortByLabel() {
            return this._sortByLabel
        }
        set sortByLabel(e) {
            this._sortByLabel = e, this.update()
        }
        get autoFocusOnList() {
            return this._autoFocusOnList
        }
        set autoFocusOnList(e) {
            this._autoFocusOnList = e, this.update()
        }
        get keepScrollPosition() {
            return this._keepScrollPosition
        }
        set keepScrollPosition(e) {
            this._keepScrollPosition = e
        }
        get itemActivation() {
            return this._itemActivation
        }
        set itemActivation(e) {
            this._itemActivation = e
        }
        get activeItems() {
            return this._activeItems
        }
        set activeItems(e) {
            this._activeItems = e, this.activeItemsUpdated = !0, this.update()
        }
        get selectedItems() {
            return this._selectedItems
        }
        set selectedItems(e) {
            this._selectedItems = e, this.selectedItemsUpdated = !0, this.update()
        }
        get keyMods() {
            return this._quickNavigate ? Vp : this.ui.keyMods
        }
        set valueSelection(e) {
            this._valueSelection = e, this.valueSelectionUpdated = !0, this.update()
        }
        get customButton() {
            return this._customButton
        }
        set customButton(e) {
            this._customButton = e, this.update()
        }
        get customLabel() {
            return this._customButtonLabel
        }
        set customLabel(e) {
            this._customButtonLabel = e, this.update()
        }
        get customHover() {
            return this._customButtonHover
        }
        set customHover(e) {
            this._customButtonHover = e, this.update()
        }
        get ok() {
            return this._ok
        }
        set ok(e) {
            this._ok = e, this.update()
        }
        get hideInput() {
            return !!this._hideInput
        }
        set hideInput(e) {
            this._hideInput = e, this.update()
        }
        trySelectFirst() {
            this.autoFocusOnList && (this.canSelectMany || this.ui.list.focus(tg.First))
        }
        show() {
            this.visible || (this.visibleDisposables.add(this.ui.inputBox.onDidChange(e => {
                e !== this.value && (this._value = e, this.ui.list.filter(this.filterValue(this.ui.inputBox.value)) && this.trySelectFirst(), this.onDidChangeValueEmitter.fire(e))
            })), this.visibleDisposables.add(this.ui.inputBox.onMouseDown(e => {
                this.autoFocusOnList || this.ui.list.clearFocus()
            })), this.visibleDisposables.add((this._hideInput ? this.ui.list : this.ui.inputBox).onKeyDown(e => {
                switch (e.keyCode) {
                    case 18:
                        this.ui.list.focus(tg.Next), this.canSelectMany && this.ui.list.domFocus(), s.c.stop(e, !0);
                        break;
                    case 16:
                        this.ui.list.getFocusedElements().length ? this.ui.list.focus(tg.Previous) : this.ui.list.focus(tg.Last), this.canSelectMany && this.ui.list.domFocus(), s.c.stop(e, !0);
                        break;
                    case 12:
                        this.ui.list.focus(tg.NextPage), this.canSelectMany && this.ui.list.domFocus(), s.c.stop(e, !0);
                        break;
                    case 11:
                        this.ui.list.focus(tg.PreviousPage), this.canSelectMany && this.ui.list.domFocus(), s.c.stop(e, !0);
                        break;
                    case 17:
                        if (!this._canAcceptInBackground) return;
                        if (!this.ui.inputBox.isSelectionAtEnd()) return;
                        this.activeItems[0] && (this._selectedItems = [this.activeItems[0]], this.onDidChangeSelectionEmitter.fire(this.selectedItems), this.handleAccept(!0));
                        break;
                    case 14:
                        !e.ctrlKey && !e.metaKey || e.shiftKey || e.altKey || (this.ui.list.focus(tg.First), s.c.stop(e, !0));
                        break;
                    case 13:
                        !e.ctrlKey && !e.metaKey || e.shiftKey || e.altKey || (this.ui.list.focus(tg.Last), s.c.stop(e, !0))
                }
            })), this.visibleDisposables.add(this.ui.onDidAccept(() => {
                this.canSelectMany ? this.ui.list.getCheckedElements().length || (this._selectedItems = [], this.onDidChangeSelectionEmitter.fire(this.selectedItems)) : this.activeItems[0] && (this._selectedItems = [this.activeItems[0]], this.onDidChangeSelectionEmitter.fire(this.selectedItems)), this.handleAccept(!1)
            })), this.visibleDisposables.add(this.ui.onDidCustom(() => {
                this.onDidCustomEmitter.fire()
            })), this.visibleDisposables.add(this.ui.list.onDidChangeFocus(e => {
                this.activeItemsUpdated || this.activeItemsToConfirm !== this._activeItems && Object(ne.g)(e, this._activeItems, (e, t) => e === t) || (this._activeItems = e, this.onDidChangeActiveEmitter.fire(e))
            })), this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({
                items: e,
                event: t
            }) => {
                this.canSelectMany ? e.length && this.ui.list.setSelectedElements([]) : this.selectedItemsToConfirm !== this._selectedItems && Object(ne.g)(e, this._selectedItems, (e, t) => e === t) || (this._selectedItems = e, this.onDidChangeSelectionEmitter.fire(e), e.length && this.handleAccept(t instanceof MouseEvent && 1 === t.button))
            })), this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(e => {
                this.canSelectMany && (this.selectedItemsToConfirm !== this._selectedItems && Object(ne.g)(e, this._selectedItems, (e, t) => e === t) || (this._selectedItems = e, this.onDidChangeSelectionEmitter.fire(e)))
            })), this.visibleDisposables.add(this.ui.list.onButtonTriggered(e => this.onDidTriggerItemButtonEmitter.fire(e))), this.visibleDisposables.add(this.registerQuickNavigation()), this.valueSelectionUpdated = !0), super.show()
        }
        handleAccept(e) {
            let t = !1;
            this.onWillAcceptEmitter.fire({
                veto: () => t = !0
            }), t || this.onDidAcceptEmitter.fire({
                inBackground: e
            })
        }
        registerQuickNavigation() {
            return s.g(this.ui.container, s.d.KEY_UP, e => {
                if (!this.canSelectMany && this._quickNavigate) {
                    const t = new gt.a(e),
                        i = t.keyCode;
                    this._quickNavigate.keybindings.some(e => {
                        var [n, e] = e.getParts();
                        return !(e || (n.shiftKey && 4 === i ? t.ctrlKey || t.altKey || t.metaKey : !(n.altKey && 6 === i || n.ctrlKey && 5 === i || n.metaKey && 57 === i)))
                    }) && (this.activeItems[0] && (this._selectedItems = [this.activeItems[0]], this.onDidChangeSelectionEmitter.fire(this.selectedItems), this.handleAccept(!1)), this._quickNavigate = void 0)
                }
            })
        }
        update() {
            if (this.visible) {
                var e = this.keepScrollPosition ? this.scrollTop : 0,
                    t = !!this._hideInput && 0 < this._items.length;
                this.ui.container.classList.toggle("hidden-input", t && !this.description);
                var i = {
                    title: !!this.title || !!this.step || !!this.buttons.length,
                    description: !!this.description,
                    checkAll: this.canSelectMany && !this._hideCheckAll,
                    checkBox: this.canSelectMany,
                    inputBox: !t,
                    progressBar: !t,
                    visibleCount: !0,
                    count: this.canSelectMany,
                    ok: "default" === this.ok ? this.canSelectMany : this.ok,
                    list: !0,
                    message: !!this.validationMessage,
                    customButton: this.customButton
                };
                if (this.ui.setVisibilities(i), super.update(), this.ui.inputBox.value !== this.value && (this.ui.inputBox.value = this.value), this.valueSelectionUpdated && (this.valueSelectionUpdated = !1, this.ui.inputBox.select(this._valueSelection && {
                        start: this._valueSelection[0],
                        end: this._valueSelection[1]
                    })), this.ui.inputBox.placeholder !== (this.placeholder || "") && (this.ui.inputBox.placeholder = this.placeholder || ""), t = this.ariaLabel || this.placeholder || pg.DEFAULT_ARIA_LABEL, this.ui.inputBox.ariaLabel !== t && (this.ui.inputBox.ariaLabel = t), this.ui.list.matchOnDescription = this.matchOnDescription, this.ui.list.matchOnDetail = this.matchOnDetail, this.ui.list.matchOnLabel = this.matchOnLabel, this.ui.list.sortByLabel = this.sortByLabel, this.itemsUpdated) switch (this.itemsUpdated = !1, this.ui.list.setElements(this.items), this.ui.list.filter(this.filterValue(this.ui.inputBox.value)), this.ui.checkAll.checked = this.ui.list.getAllVisibleChecked(), this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()), this.ui.count.setCount(this.ui.list.getCheckedCount()), this._itemActivation) {
                    case Rp.NONE:
                        this._itemActivation = Rp.FIRST;
                        break;
                    case Rp.SECOND:
                        this.ui.list.focus(tg.Second), this._itemActivation = Rp.FIRST;
                        break;
                    case Rp.LAST:
                        this.ui.list.focus(tg.Last), this._itemActivation = Rp.FIRST;
                        break;
                    default:
                        this.trySelectFirst()
                }
                this.ui.container.classList.contains("show-checkboxes") !== !!this.canSelectMany && (this.canSelectMany ? this.ui.list.clearFocus() : this.trySelectFirst()), this.activeItemsUpdated && (this.activeItemsUpdated = !1, this.activeItemsToConfirm = this._activeItems, this.ui.list.setFocusedElements(this.activeItems), this.activeItemsToConfirm === this._activeItems && (this.activeItemsToConfirm = null)), this.selectedItemsUpdated && (this.selectedItemsUpdated = !1, this.selectedItemsToConfirm = this._selectedItems, this.canSelectMany ? this.ui.list.setCheckedElements(this.selectedItems) : this.ui.list.setSelectedElements(this.selectedItems), this.selectedItemsToConfirm === this._selectedItems && (this.selectedItemsToConfirm = null)), this.ui.customButton.label = this.customLabel || "", this.ui.customButton.element.title = this.customHover || "", this.ui.setComboboxAccessibility(!0), i.inputBox || (this.ui.list.domFocus(), this.canSelectMany && this.ui.list.focus(tg.First)), this.keepScrollPosition && (this.scrollTop = e)
            }
        }
    }
    pg.DEFAULT_ARIA_LABEL = Object(yt.a)("quickInputBox.ariaLabel", "Type to narrow down results.");
    class gg extends v.a {
        constructor(e) {
            super(), this.options = e, this.comboboxAccessibility = !1, this.enabled = !0, this.onDidAcceptEmitter = this._register(new D.b), this.onDidCustomEmitter = this._register(new D.b), this.onDidTriggerButtonEmitter = this._register(new D.b), this.keyMods = {
                ctrlCmd: !1,
                alt: !1
            }, this.controller = null, this.onShowEmitter = this._register(new D.b), this.onShow = this.onShowEmitter.event, this.onHideEmitter = this._register(new D.b), this.onHide = this.onHideEmitter.event, this.idPrefix = e.idPrefix, this.parentElement = e.container, this.styles = e.styles, this.registerKeyModsListeners()
        }
        registerKeyModsListeners() {
            var e = e => {
                this.keyMods.ctrlCmd = e.ctrlKey || e.metaKey, this.keyMods.alt = e.altKey
            };
            this._register(s.g(window, s.d.KEY_DOWN, e, !0)), this._register(s.g(window, s.d.KEY_UP, e, !0)), this._register(s.g(window, s.d.MOUSE_DOWN, e, !0))
        }
        getUI() {
            if (this.ui) return this.ui;
            const e = s.n(this.parentElement, cg(".quick-input-widget.show-file-icons"));
            e.tabIndex = -1, e.style.display = "none";
            var t = s.t(e),
                i = s.n(e, cg(".quick-input-titlebar"));
            const n = this._register(new Ca.a(i));
            n.domNode.classList.add("quick-input-left-action-bar");
            var r = s.n(i, cg(".quick-input-title"));
            const o = this._register(new Ca.a(i));
            o.domNode.classList.add("quick-input-right-action-bar");
            var a = s.n(e, cg(".quick-input-description")),
                l = s.n(e, cg(".quick-input-header"));
            const d = s.n(l, cg("input.quick-input-check-all"));
            d.type = "checkbox", this._register(s.l(d, s.d.CHANGE, e => {
                var t = d.checked;
                y.setAllVisibleChecked(t)
            })), this._register(s.g(d, s.d.CLICK, e => {
                (e.x || e.y) && p.setFocus()
            }));
            var c = s.n(l, cg(".quick-input-description")),
                h = s.n(l, cg(".quick-input-and-message")),
                u = s.n(h, cg(".quick-input-filter"));
            const p = this._register(new Hp(u));
            p.setAttribute("aria-describedby", this.idPrefix + "message");
            const g = s.n(u, cg(".quick-input-visible-count"));
            g.setAttribute("aria-live", "polite"), g.setAttribute("aria-atomic", "true");
            const f = new Dp(g, {
                    countFormat: Object(yt.a)({
                        key: "quickInput.visibleCount",
                        comment: ["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]
                    }, "{0} Results")
                }),
                m = s.n(u, cg(".quick-input-count"));
            m.setAttribute("aria-live", "polite");
            const v = new Dp(m, {
                countFormat: Object(yt.a)({
                    key: "quickInput.countSelected",
                    comment: ["This tells the user how many items are selected in a list of items to select from. The items can be anything."]
                }, "{0} Selected")
            });
            var b = s.n(l, cg(".quick-input-action"));
            const _ = new Ep(b);
            _.label = Object(yt.a)("ok", "OK"), this._register(_.onDidClick(e => {
                this.onDidAcceptEmitter.fire()
            })), l = s.n(l, cg(".quick-input-action"));
            const w = new Ep(l);
            w.label = Object(yt.a)("custom", "自定义"), this._register(w.onDidClick(e => {
                this.onDidCustomEmitter.fire()
            })), h = s.n(h, cg(`#${this.idPrefix}message.quick-input-message`));
            const y = this._register(new sg(e, this.idPrefix + "list", this.options));
            this._register(y.onChangedAllVisibleChecked(e => {
                d.checked = e
            })), this._register(y.onChangedVisibleCount(e => {
                f.setCount(e)
            })), this._register(y.onChangedCheckedCount(e => {
                v.setCount(e)
            })), this._register(y.onLeave(() => {
                setTimeout(() => {
                    p.setFocus(), this.controller instanceof pg && this.controller.canSelectMany && y.clearFocus()
                }, 0)
            })), this._register(y.onDidChangeFocus(() => {
                this.comboboxAccessibility && this.getUI().inputBox.setAttribute("aria-activedescendant", this.getUI().list.getActiveDescendant() || "")
            }));
            const C = new Mp(e);
            C.getContainer().classList.add("quick-input-progress");
            const x = s.T(e);
            return this._register(x), this._register(s.g(e, s.d.FOCUS, e => {
                this.previousFocusElement = e.relatedTarget instanceof HTMLElement ? e.relatedTarget : void 0
            }, !0)), this._register(x.onDidBlur(() => {
                this.getUI().ignoreFocusOut || this.options.ignoreFocusOut() || this.hide(Ap.Blur), this.previousFocusElement = void 0
            })), this._register(s.g(e, s.d.FOCUS, e => {
                p.setFocus()
            })), this._register(s.g(e, s.d.KEY_DOWN, t => {
                var i = new gt.a(t);
                switch (i.keyCode) {
                    case 3:
                        s.c.stop(t, !0), this.onDidAcceptEmitter.fire();
                        break;
                    case 9:
                        s.c.stop(t, !0), this.hide(Ap.Gesture);
                        break;
                    case 2:
                        if (!i.altKey && !i.ctrlKey && !i.metaKey) {
                            const n = [".action-label.codicon"];
                            e.classList.contains("show-checkboxes") ? n.push("input") : n.push("input[type=text]"), this.getUI().list.isDisplayed() && n.push(".monaco-list");
                            const r = e.querySelectorAll(n.join(", "));
                            i.shiftKey && i.target === r[0] ? (s.c.stop(t, !0), r[r.length - 1].focus()) : i.shiftKey || i.target !== r[r.length - 1] || (s.c.stop(t, !0), r[0].focus())
                        }
                }
            })), this.ui = {
                container: e,
                styleSheet: t,
                leftActionBar: n,
                titleBar: i,
                title: r,
                description1: a,
                description2: c,
                rightActionBar: o,
                checkAll: d,
                filterContainer: u,
                inputBox: p,
                visibleCountContainer: g,
                visibleCount: f,
                countContainer: m,
                count: v,
                okContainer: b,
                ok: _,
                message: h,
                customButtonContainer: l,
                customButton: w,
                list: y,
                progressBar: C,
                onDidAccept: this.onDidAcceptEmitter.event,
                onDidCustom: this.onDidCustomEmitter.event,
                onDidTriggerButton: this.onDidTriggerButtonEmitter.event,
                ignoreFocusOut: !1,
                keyMods: this.keyMods,
                isScreenReaderOptimized: () => this.options.isScreenReaderOptimized(),
                show: e => this.show(e),
                hide: () => this.hide(),
                setVisibilities: e => this.setVisibilities(e),
                setComboboxAccessibility: e => this.setComboboxAccessibility(e),
                setEnabled: e => this.setEnabled(e),
                setContextKey: e => this.options.setContextKey(e)
            }, this.updateStyles(), this.ui
        }
        pick(e, t = {}, i = a.a.None) {
            return new Promise((n, r) => {
                let o = e => {
                    o = n, t.onKeyMods && t.onKeyMods(s.keyMods), n(e)
                };
                if (i.isCancellationRequested) return void o(void 0);
                const s = this.createQuickPick();
                let a;
                const l = [s, s.onDidAccept(() => {
                    var e;
                    s.canSelectMany ? (o(s.selectedItems.slice()), s.hide()) : (e = s.activeItems[0]) && (o(e), s.hide())
                }), s.onDidChangeActive(e => {
                    (e = e[0]) && t.onDidFocus && t.onDidFocus(e)
                }), s.onDidChangeSelection(e => {
                    s.canSelectMany || (e = e[0]) && (o(e), s.hide())
                }), s.onDidTriggerItemButton(e => t.onDidTriggerItemButton && t.onDidTriggerItemButton(Object.assign(Object.assign({}, e), {
                    removeItem: () => {
                        if (-1 !== (i = s.items.indexOf(e.item))) {
                            const e = s.items.slice(),
                                n = e.splice(i, 1);
                            var t = s.activeItems.filter(e => e !== n[0]),
                                i = s.keepScrollPosition;
                            s.keepScrollPosition = !0, s.items = e, t && (s.activeItems = t), s.keepScrollPosition = i
                        }
                    }
                }))), s.onDidChangeValue(e => {
                    !a || e || 1 === s.activeItems.length && s.activeItems[0] === a || (s.activeItems = [a])
                }), i.onCancellationRequested(() => {
                    s.hide()
                }), s.onDidHide(() => {
                    Object(v.f)(l), o(void 0)
                })];
                s.title = t.title, s.canSelectMany = !!t.canPickMany, s.placeholder = t.placeHolder, s.ignoreFocusOut = !!t.ignoreFocusLost, s.matchOnDescription = !!t.matchOnDescription, s.matchOnDetail = !!t.matchOnDetail, s.matchOnLabel = void 0 === t.matchOnLabel || t.matchOnLabel, s.autoFocusOnList = void 0 === t.autoFocusOnList || t.autoFocusOnList, s.quickNavigate = t.quickNavigate, s.contextKey = t.contextKey, s.busy = !0, Promise.all([e, t.activeItem]).then(([e, t]) => {
                    a = t, s.busy = !1, s.items = e, s.canSelectMany && (s.selectedItems = e.filter(e => "separator" !== e.type && e.picked)), a && (s.activeItems = [a])
                }), s.show(), Promise.resolve(e).then(void 0, e => {
                    r(e), s.hide()
                })
            })
        }
        createQuickPick() {
            var e = this.getUI();
            return new pg(e)
        }
        show(e) {
            const t = this.getUI();
            this.onShowEmitter.fire();
            const i = this.controller;
            this.controller = e, i && i.didHide(), this.setEnabled(!0), t.leftActionBar.clear(), t.title.textContent = "", t.description1.textContent = "", t.description2.textContent = "", t.rightActionBar.clear(), t.checkAll.checked = !1, t.inputBox.placeholder = "", t.inputBox.password = !1, t.inputBox.showDecoration(mt.a.Ignore), t.visibleCount.setCount(0), t.count.setCount(0), s.N(t.message), t.progressBar.stop(), t.list.setElements([]), t.list.matchOnDescription = !1, t.list.matchOnDetail = !1, t.list.matchOnLabel = !0, t.list.sortByLabel = !0, t.ignoreFocusOut = !1, this.setComboboxAccessibility(!1), t.inputBox.ariaLabel = "", e = this.options.backKeybindingLabel(), hg.tooltip = e ? Object(yt.a)("quickInput.backWithKeybinding", "Back ({0})", e) : Object(yt.a)("quickInput.back", "Back"), t.container.style.display = "", this.updateLayout(), t.inputBox.setFocus()
        }
        setVisibilities(e) {
            const t = this.getUI();
            t.title.style.display = e.title ? "" : "none", t.description1.style.display = e.description && (e.inputBox || e.checkAll) ? "" : "none", t.description2.style.display = !e.description || e.inputBox || e.checkAll ? "none" : "", t.checkAll.style.display = e.checkAll ? "" : "none", t.filterContainer.style.display = e.inputBox ? "" : "none", t.visibleCountContainer.style.display = e.visibleCount ? "" : "none", t.countContainer.style.display = e.count ? "" : "none", t.okContainer.style.display = e.ok ? "" : "none", t.customButtonContainer.style.display = e.customButton ? "" : "none", t.message.style.display = e.message ? "" : "none", t.progressBar.getContainer().style.display = e.progressBar ? "" : "none", t.list.display(!!e.list), t.container.classList[e.checkBox ? "add" : "remove"]("show-checkboxes"), this.updateLayout()
        }
        setComboboxAccessibility(e) {
            if (e !== this.comboboxAccessibility) {
                const t = this.getUI();
                this.comboboxAccessibility = e, this.comboboxAccessibility ? (t.inputBox.setAttribute("role", "combobox"), t.inputBox.setAttribute("aria-haspopup", "true"), t.inputBox.setAttribute("aria-autocomplete", "list"), t.inputBox.setAttribute("aria-activedescendant", t.list.getActiveDescendant() || "")) : (t.inputBox.removeAttribute("role"), t.inputBox.removeAttribute("aria-haspopup"), t.inputBox.removeAttribute("aria-autocomplete"), t.inputBox.removeAttribute("aria-activedescendant"))
            }
        }
        setEnabled(e) {
            if (e !== this.enabled) {
                this.enabled = e;
                for (const t of this.getUI().leftActionBar.viewItems) t.getAction().enabled = e;
                for (const t of this.getUI().rightActionBar.viewItems) t.getAction().enabled = e;
                this.getUI().checkAll.disabled = !e, this.getUI().ok.enabled = e, this.getUI().list.enabled = e
            }
        }
        hide(e) {
            var t;
            const i = this.controller;
            i && (t = !(null !== (t = this.ui) && void 0 !== t && t.container.contains(document.activeElement)), this.controller = null, this.onHideEmitter.fire(), this.getUI().container.style.display = "none", t || (this.previousFocusElement && this.previousFocusElement.offsetParent ? (this.previousFocusElement.focus(), this.previousFocusElement = void 0) : this.options.returnFocus()), i.didHide(e))
        }
        layout(e, t) {
            this.dimension = e, this.titleBarOffset = t, this.updateLayout()
        }
        updateLayout() {
            if (this.ui) {
                this.ui.container.style.top = this.titleBarOffset + "px";
                const t = this.ui.container.style;
                var e = Math.min(.62 * this.dimension.width, gg.MAX_WIDTH);
                t.width = e + "px", t.marginLeft = "-" + e / 2 + "px", this.ui.inputBox.layout(), this.ui.list.layout(this.dimension && .4 * this.dimension.height)
            }
        }
        applyStyles(e) {
            this.styles = e, this.updateStyles()
        }
        updateStyles() {
            if (this.ui) {
                const {
                    quickInputTitleBackground: t,
                    quickInputBackground: i,
                    quickInputForeground: n,
                    contrastBorder: r,
                    widgetShadow: o
                } = this.styles.widget;
                this.ui.titleBar.style.backgroundColor = t ? t.toString() : "", this.ui.container.style.backgroundColor = i ? i.toString() : "", this.ui.container.style.color = n ? n.toString() : "", this.ui.container.style.border = r ? "1px solid " + r : "", this.ui.container.style.boxShadow = o ? "0 0 8px 2px " + o : "", this.ui.inputBox.style(this.styles.inputBox), this.ui.count.style(this.styles.countBadge), this.ui.ok.style(this.styles.button), this.ui.customButton.style(this.styles.button), this.ui.progressBar.style(this.styles.progressBar), this.ui.list.style(this.styles.list);
                const s = [];
                this.styles.list.pickerGroupBorder && s.push(`.quick-input-list .quick-input-list-entry { border-top-color:  ${this.styles.list.pickerGroupBorder}; }`), this.styles.list.pickerGroupForeground && s.push(`.quick-input-list .quick-input-list-separator { color:  ${this.styles.list.pickerGroupForeground}; }`), (this.styles.keybindingLabel.keybindingLabelBackground || this.styles.keybindingLabel.keybindingLabelBorder || this.styles.keybindingLabel.keybindingLabelBottomBorder || this.styles.keybindingLabel.keybindingLabelShadow || this.styles.keybindingLabel.keybindingLabelForeground) && (s.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"), this.styles.keybindingLabel.keybindingLabelBackground && s.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`), this.styles.keybindingLabel.keybindingLabelBorder && s.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`), this.styles.keybindingLabel.keybindingLabelBottomBorder && s.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`), this.styles.keybindingLabel.keybindingLabelShadow && s.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`), this.styles.keybindingLabel.keybindingLabelForeground && s.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`), s.push("}"));
                var e = s.join("\n");
                e !== this.ui.styleSheet.textContent && (this.ui.styleSheet.textContent = e)
            }
        }
    }
    gg.MAX_WIDTH = 600, (t = lg = lg || {})[t.PRESERVE = 0] = "PRESERVE", t[t.LAST = 1] = "LAST";
    const fg = "workbench.contributions.quickaccess";
    xt.a.add(fg, new class {
        constructor() {
            this.providers = [], this.defaultProvider = void 0
        }
        registerQuickAccessProvider(e) {
            return 0 === e.prefix.length ? this.defaultProvider = e : this.providers.push(e), this.providers.sort((e, t) => t.prefix.length - e.prefix.length), Object(v.i)(() => {
                this.providers.splice(this.providers.indexOf(e), 1), this.defaultProvider === e && (this.defaultProvider = void 0)
            })
        }
        getQuickAccessProviders() {
            return Object(ne.e)([this.defaultProvider, ...this.providers])
        }
        getQuickAccessProvider(e) {
            return e && this.providers.find(t => e.startsWith(t.prefix)) || this.defaultProvider
        }
    });
    const mg = Object(_.c)("quickInputService");
    ae = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let vg = class extends v.a {
        constructor(e, t) {
            super(), this.quickInputService = e, this.instantiationService = t, this.registry = xt.a.as(fg), this.mapProviderToDescriptor = new Map, this.lastAcceptedPickerValues = new Map, this.visibleQuickAccess = void 0
        }
        show(e = "", t) {
            this.doShowOrPick(e, !1, t)
        }
        doShowOrPick(e, t, i) {
            const [n, r] = this.getOrInstantiateProvider(e), o = this.visibleQuickAccess;
            var s, l = null == o ? void 0 : o.descriptor;
            if (o && r && l === r) return e === r.prefix || null != i && i.preserveValue || (o.picker.value = e), void this.adjustValueSelection(o.picker, r, i);
            if (r && (null == i || !i.preserveValue)) {
                let t = void 0;
                o && l && l !== r && (s = o.value.substr(l.prefix.length)) && (t = `${r.prefix}${s}`), t || ((s = null == n ? void 0 : n.defaultFilterValue) === lg.LAST ? t = this.lastAcceptedPickerValues.get(r) : "string" == typeof s && (t = `${r.prefix}${s}`)), "string" == typeof t && (e = t)
            }
            const d = new v.b,
                c = d.add(this.quickInputService.createQuickPick());
            c.value = e, this.adjustValueSelection(c, r, i), c.placeholder = null == r ? void 0 : r.placeholder, c.quickNavigate = null == i ? void 0 : i.quickNavigate配置, c.hideInput = !!c.quickNavigate && !o, ("number" == typeof(null == i ? void 0 : i.itemActivation) || null != i && i.quickNavigate配置) && (c.itemActivation = null !== (i = null == i ? void 0 : i.itemActivation) && void 0 !== i ? i : Rp.SECOND), c.contextKey = null == r ? void 0 : r.contextKey, c.filterValue = e => e.substring(r ? r.prefix.length : 0), null != r && r.placeholder && (c.ariaLabel = null == r ? void 0 : r.placeholder);
            let h = void 0,
                u = void 0;
            t && (h = new Promise(e => u = e), d.add(Object(Zr.a)(c.onWillAccept)(e => {
                e.veto(), c.hide()
            }))), d.add(this.registerPickerListeners(c, n, r, e));
            const p = d.add(new a.b);
            return n && d.add(n.provide(c, p.token)), Object(Zr.a)(c.onDidHide)(() => {
                0 === c.selectedItems.length && p.cancel(), d.dispose(), null != u && u(c.selectedItems)
            }), c.show(), t ? h : void 0
        }
        adjustValueSelection(e, t, i) {
            let n;
            n = null != i && i.preserveValue ? [e.value.length, e.value.length] : [null !== (t = null == t ? void 0 : t.prefix.length) && void 0 !== t ? t : 0, e.value.length], e.valueSelection = n
        }
        registerPickerListeners(e, t, i, n) {
            const r = new v.b,
                o = this.visibleQuickAccess = {
                    picker: e,
                    descriptor: i,
                    value: n
                };
            return r.add(Object(v.i)(() => {
                o === this.visibleQuickAccess && (this.visibleQuickAccess = void 0)
            })), r.add(e.onDidChangeValue(e => {
                var [i] = this.getOrInstantiateProvider(e);
                i !== t ? this.show(e, {
                    preserveValue: !0
                }) : o.value = e
            })), i && r.add(e.onDidAccept(() => {
                this.lastAcceptedPickerValues.set(i, e.value)
            })), r
        }
        getOrInstantiateProvider(e) {
            if (!(e = this.registry.getQuickAccessProvider(e))) return [void 0, void 0];
            let t = this.mapProviderToDescriptor.get(e);
            return t || (t = this.instantiationService.createInstance(e.ctor), this.mapProviderToDescriptor.set(e, t)), [t, e]
        }
    };
    vg = ae([x(0, mg), x(1, _.a)], vg);
    var bg;
    S = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, gi = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    }, t = class extends ir.c {
        constructor(e, t, i, n, r) {
            super(i), this.instantiationService = e, this.contextKeyService = t, this.accessibilityService = n, this.layoutService = r, this.contexts = new Map
        }
        get controller() {
            return this._controller || (this._controller = this._register(this.createController())), this._controller
        }
        get quickAccess() {
            return this._quickAccess || (this._quickAccess = this._register(this.instantiationService.createInstance(vg))), this._quickAccess
        }
        createController(e = this.layoutService, t) {
            var i = {
                idPrefix: "quickInput_",
                container: e.container,
                ignoreFocusOut: () => !1,
                isScreenReaderOptimized: () => this.accessibilityService.isScreenReaderOptimized(),
                backKeybindingLabel: () => {},
                setContextKey: e => this.setContextKey(e),
                returnFocus: () => e.focus(),
                createList: (e, t, i, n, r) => this.instantiationService.createInstance(qu, e, t, i, n, r),
                styles: this.computeStyles()
            };
            const n = this._register(new gg(Object.assign(Object.assign({}, i), t)));
            return n.layout(e.dimension, null !== (t = null === (t = e.offset) || void 0 === t ? void 0 : t.top) && void 0 !== t ? t : 0), this._register(e.onDidLayout(t => n.layout(t, null !== (t = null === (t = e.offset) || void 0 === t ? void 0 : t.top) && void 0 !== t ? t : 0))), this._register(n.onShow(() => this.resetContextKeys())), this._register(n.onHide(() => this.resetContextKeys())), n
        }
        setContextKey(e) {
            let t;
            e && (t = this.contexts.get(e), t || (t = new Yt.c(e, !1).bindTo(this.contextKeyService), this.contexts.set(e, t))), t && t.get() || (this.resetContextKeys(), t && t.set(!0))
        }
        resetContextKeys() {
            this.contexts.forEach(e => {
                e.get() && e.reset()
            })
        }
        pick(e, t = {}, i = a.a.None) {
            return this.controller.pick(e, t, i)
        }
        createQuickPick() {
            return this.controller.createQuickPick()
        }
        updateStyles() {
            this.controller.applyStyles(this.computeStyles())
        }
        computeStyles() {
            return {
                widget: Object.assign({}, ac(this.theme, {
                    quickInputBackground: Ir.Xb,
                    quickInputForeground: Ir.Yb,
                    quickInputTitleBackground: Ir.cc,
                    contrastBorder: Ir.h,
                    widgetShadow: Ir.mc
                })),
                inputBox: ac(this.theme, {
                    inputForeground: Ir.Y,
                    inputBackground: Ir.W,
                    inputBorder: Ir.X,
                    inputValidationInfoBackground: Ir.cb,
                    inputValidationInfoForeground: Ir.eb,
                    inputValidationInfoBorder: Ir.db,
                    inputValidationWarningBackground: Ir.fb,
                    inputValidationWarningForeground: Ir.hb,
                    inputValidationWarningBorder: Ir.gb,
                    inputValidationErrorBackground: Ir.Z,
                    inputValidationErrorForeground: Ir.bb,
                    inputValidationErrorBorder: Ir.ab
                }),
                countBadge: ac(this.theme, {
                    badgeBackground: Ir.c,
                    badgeForeground: Ir.d,
                    badgeBorder: Ir.h
                }),
                button: ac(this.theme, {
                    buttonForeground: Ir.f,
                    buttonBackground: Ir.e,
                    buttonHoverBackground: Ir.g,
                    buttonBorder: Ir.h
                }),
                progressBar: ac(this.theme, {
                    progressBarBackground: Ir.Wb
                }),
                keybindingLabel: ac(this.theme, {
                    keybindingLabelBackground: Ir.ib,
                    keybindingLabelForeground: Ir.lb,
                    keybindingLabelBorder: Ir.jb,
                    keybindingLabelBottomBorder: Ir.kb,
                    keybindingLabelShadow: Ir.mc
                }),
                list: ac(this.theme, {
                    listBackground: Ir.Xb,
                    listInactiveFocusForeground: Ir.ac,
                    listInactiveSelectionIconForeground: Ir.bc,
                    listInactiveFocusBackground: Ir.Zb,
                    listFocusOutline: Ir.b,
                    listInactiveFocusOutline: Ir.b,
                    pickerGroupBorder: Ir.Ub,
                    pickerGroupForeground: Ir.Vb
                })
            }
        }
    }, ae = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, x = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    let _g = class extends(t = S([gi(0, _.a), gi(1, Yt.b), gi(2, ir.b), gi(3, Ks), gi(4, gc)], t)) {
        constructor(e, t, i, n, r, o) {
            super(t, i, n, r, o), this.host = void 0;
            const s = yg.get(e);
            this.host = {
                _serviceBrand: void 0,
                get container() {
                    return s.widget.getDomNode()
                },
                get dimension() {
                    return e.getLayoutInfo()
                },
                get onDidLayout() {
                    return e.onDidLayoutChange
                },
                focus: () => e.focus()
            }
        }
        createController() {
            return super.createController(this.host)
        }
    };
    _g = ae([x(1, _.a), x(2, Yt.b), x(3, ir.b), x(4, Ks), x(5, gc)], _g);
    let wg = class {
        constructor(e, t) {
            this.instantiationService = e, this.codeEditorService = t, this.mapEditorToService = new Map
        }
        get activeService() {
            const e = this.codeEditorService.getFocusedCodeEditor();
            if (!e) throw new Error("Quick input service needs a focused editor to work.");
            let t = this.mapEditorToService.get(e);
            if (!t) {
                const i = t = this.instantiationService.createInstance(_g, e);
                this.mapEditorToService.set(e, t), Object(Zr.a)(e.onDidDispose)(() => {
                    i.dispose(), this.mapEditorToService.delete(e)
                })
            }
            return t
        }
        get quickAccess() {
            return this.activeService.quickAccess
        }
        pick(e, t = {}, i = a.a.None) {
            return this.activeService.pick(e, t, i)
        }
        createQuickPick() {
            return this.activeService.createQuickPick()
        }
    };
    wg = ae([x(0, _.a), x(1, o.a)], wg);
    class yg {
        constructor(e) {
            this.editor = e, this.widget = new Cg(this.editor)
        }
        static get(e) {
            return e.getContribution(yg.ID)
        }
        dispose() {
            this.widget.dispose()
        }
    }
    yg.ID = "editor.controller.quickInput";
    class Cg {
        constructor(e) {
            this.codeEditor = e, this.domNode = document.createElement("div"), this.codeEditor.addOverlayWidget(this)
        }
        getId() {
            return Cg.ID
        }
        getDomNode() {
            return this.domNode
        }
        getPosition() {
            return {
                preference: 2
            }
        }
        dispose() {
            this.codeEditor.removeOverlayWidget(this)
        }
    }
    Cg.ID = "editor.contrib.quickInputWidget", Object(Ai.k)(yg.ID, yg),
        function(e) {
            const t = new Us;
            class i {
                constructor(e, t) {
                    this._serviceId = e, this._factory = t, this._value = null
                }
                get id() {
                    return this._serviceId
                }
                get(e) {
                    if (!this._value) {
                        if (e && (this._value = e[this._serviceId.toString()]), this._value || (this._value = this._factory(e)), !this._value) throw new Error("Service " + this._serviceId + " is missing!");
                        t.set(this._serviceId, this._value)
                    }
                    return this._value
                }
            }
            e.LazyStaticService = i;
            let n = [];

            function r(e, t) {
                return t = new i(e, t), n.push(t), t
            }
            e.init = function(e) {
                let t = new Us;
                for (var [i, r] of Object(ba.a)()) t.set(i, r);
                for (var o in e) e.hasOwnProperty(o) && t.set(Object(_.c)(o), e[o]);
                n.forEach(i => t.set(i.id, i.get(e)));
                var s = new yc(t, !0);
                return t.set(_.a, s), [t, s]
            }, e.instantiationService = r(_.a, () => new yc(t, !0));
            const s = new Si;
            e.configurationService = r(Wt.a, () => s), e.resource配置Service = r(te, () => new ki(s)), e.resourcePropertiesService = r(ie, () => new Li(s)), e.contextService = r(ui, () => new Ei), e.labelService = r(xc, () => new Ii), e.telemetryService = r(jd.a, () => new Oi), e.dialogService = r(mc, () => new _i), e.notificationService = r(hi.a, () => new wi), e.markerService = r(tp, () => new rp), e.modeService = r(K.a, e => new El), e.standaloneThemeService = r(ol, () => new xd), e.logService = r(re.b, () => new re.d(new re.a)), e.undoRedoService = r(Nl.a, t => new xp(e.dialogService.get(t), e.notificationService.get(t))), e.language配置Service = r(Q.a, t => new Q.c(e.configurationService.get(t), e.modeService.get(t))), e.modelService = r(ee.a, t => new Xl(e.configurationService.get(t), e.resourcePropertiesService.get(t), e.standaloneThemeService.get(t), e.logService.get(t), e.undoRedoService.get(t), e.modeService.get(t), e.language配置Service.get(t))), e.markerDecorationsService = r(Pi, t => new dp(e.modelService.get(t), e.markerService.get(t))), e.contextKeyService = r(Yt.b, t => new Pd(e.configurationService.get(t))), e.codeEditorService = r(o.a, t => new ml(null, e.contextKeyService.get(t), e.standaloneThemeService.get(t))), e.editorProgressService = r(Ba, () => new bi), e.storageService = r(op.a, () => new op.b), e.editorWorkerService = r(U, t => new ce(e.modelService.get(t), e.resource配置Service.get(t), e.logService.get(t)))
        }(bg = bg || {});
    class xg extends v.a {
        constructor(e, t) {
            super();
            const [i, n] = bg.init(t);
            this._serviceCollection = i, this._instantiationService = n;
            const r = this.get(Wt.a),
                s = this.get(hi.a),
                a = this.get(jd.a),
                l = this.get(ir.b),
                d = this.get(re.b),
                c = this.get(Yt.b);
            var h = (e, i) => {
                let n = null;
                return t && (n = t[e.toString()]), n = n || i(), this._serviceCollection.set(e, n), n
            };
            h(Ks, () => new cp(c, r)), h(xu, () => new Su(l));
            let u = h(m.b, () => new yi(this._instantiationService)),
                p = h(al.a, () => this._register(new Ci(c, u, a, s, d, e))),
                g = h(gc, () => new Ti(bg.codeEditorService.get(o.a), e));
            h(mg, () => new wg(n, bg.codeEditorService.get(o.a)));
            let f = h(Aa.b, () => this._register(new fc(g)));
            h(ja.a, () => new up), h(Aa.a, () => {
                const e = new pc(a, s, f, p, l);
                return e.configure({
                    blockMouse: !1
                }), this._register(e)
            }), h(sl.a, () => new sp(u)), h(vt, () => new Di(bg.modelService.get(ee.a)))
        }
        get(e) {
            var t = this._serviceCollection.get(e);
            if (!t) throw new Error("Missing service " + e);
            return t
        }
        set(e, t) {
            this._serviceCollection.set(e, t)
        }
        has(e) {
            return this._serviceCollection.has(e)
        }
    }

    function Sg(e, t, i) {
        let n = new xg(e, t),
            r = null;
        return n.has($.a) || (r = new vi(bg.modelService.get()), n.set($.a, r)), n.has(y) || n.set(y, new E(n.get(o.a), n.get(m.b))), i = i(n), r && r.setEditor(i), i
    }

    function kg(e, t) {
        return "boolean" == typeof e ? e : t
    }

    function Lg(e, t) {
        return "string" == typeof e ? e : t
    }

    function Og(e, t = !1) {
        const i = function(e) {
            const t = {};
            for (const i of e) t[i] = !0;
            return t
        }(e = t ? e.map((function(e) {
            return e.toLowerCase()
        })) : e);
        return t ? function(e) {
            return void 0 !== i[e.toLowerCase()] && i.hasOwnProperty(e.toLowerCase())
        } : function(e) {
            return void 0 !== i[e] && i.hasOwnProperty(e)
        }
    }

    function Eg(e, t) {
        t = t.replace(/@@/g, "");
        let i, n = 0;
        for (; i = !1, t = t.replace(/@(\w+)/g, (function(n, r) {
                i = !0;
                let o = "";
                if ("string" == typeof e[r]) o = e[r];
                else {
                    if (!(e[r] && e[r] instanceof RegExp)) throw void 0 === e[r] ? Je(e, "language definition does not contain attribute '" + r + "', used at: " + t) : Je(e, "attribute reference '" + r + "' must be a string, used at: " + t);
                    o = e[r].source
                }
                return o ? "(?:" + o + ")" : ""
            })), n++, i && n < 5;);
        t = t.replace(/\x01/g, "@");
        var r = (e.ignoreCase ? "i" : "") + (e.unicode ? "u" : "");
        return new RegExp(t, r)
    }

    function Ng(e, t, i, n) {
        let r = -1,
            o = i,
            s = i.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);
        s && (s[3] && (r = parseInt(s[3]), s[2] && (r += 100)), o = s[4]);
        let a, l = "~",
            d = o;
        if (o && 0 !== o.length ? /^\w*$/.test(d) ? l = "==" : (s = o.match(/^(@|!@|~|!~|==|!=)(.*)$/), s && (l = s[1], d = s[2])) : (l = "!=", d = ""), "~" !== l && "!~" !== l || !/^(\w|\|)*$/.test(d))
            if ("@" === l || "!@" === l) {
                var c = e[d];
                if (!c) throw Je(e, "the @ match target '" + d + "' is not defined, in rule: " + t);
                if (! function(e, t) {
                        if (t && Array.isArray(t)) {
                            for (const i of t)
                                if (!e(i)) return;
                            return 1
                        }
                    }((function(e) {
                        return "string" == typeof e
                    }), c)) throw Je(e, "the @ match target '" + d + "' must be an array of strings, in rule: " + t);
                let i = Og(c, e.ignoreCase);
                a = function(e) {
                    return "@" === l ? i(e) : !i(e)
                }
            } else if ("~" === l || "!~" === l)
            if (d.indexOf("$") < 0) {
                let t = Eg(e, "^" + d + "$");
                a = function(e) {
                    return "~" === l ? t.test(e) : !t.test(e)
                }
            } else a = function(t, i, n, r) {
                return Eg(e, "^" + et(e, d, i, n, r) + "$").test(t)
            };
        else if (d.indexOf("$") < 0) {
            let t = Xe(e, d);
            a = function(e) {
                return "==" === l ? e === t : e !== t
            }
        } else {
            let t = Xe(e, d);
            a = function(i, n, r, o, s) {
                return o = et(e, t, n, r, o), "==" === l ? i === o : i !== o
            }
        } else {
            let t = Og(d.split("|"), e.ignoreCase);
            a = function(e) {
                return "~" === l ? t(e) : !t(e)
            }
        }
        return -1 === r ? {
            name: i,
            value: n,
            test: function(e, t, i, n) {
                return a(e, e, t, i, n)
            }
        } : {
            name: i,
            value: n,
            test: function(e, t, i, n) {
                var o = function(e, t, i, n) {
                    if (n < 0) return e;
                    if (n < t.length) return t[n];
                    if (100 <= n) {
                        n -= 100;
                        let e = i.split(".");
                        if (e.unshift(i), n < e.length) return e[n]
                    }
                    return null
                }(e, t, i, r);
                return a(o || "", e, t, i, n)
            }
        }
    }
    class Dg {
        constructor(e) {
            this.regex = new RegExp(""), this.action = {
                token: ""
            }, this.matchOnlyAtLineStart = !1, this.name = "", this.name = e
        }
        setRegex(e, t) {
            let i;
            if ("string" == typeof t) i = t;
            else {
                if (!(t instanceof RegExp)) throw Je(e, "rules must start with a match string or regular expression: " + this.name);
                i = t.source
            }
            this.matchOnlyAtLineStart = 0 < i.length && "^" === i[0], this.name = this.name + ": " + i, this.regex = Eg(e, "^(?:" + (this.matchOnlyAtLineStart ? i.substr(1) : i) + ")")
        }
        setAction(e, t) {
            this.action = function e(t, i, n) {
                if (n) {
                    if ("string" == typeof n) return n;
                    if (n.token || "" === n.token) {
                        if ("string" != typeof n.token) throw Je(t, "a 'token' attribute must be of type string, in rule: " + i); {
                            let e = {
                                token: n.token
                            };
                            if (0 <= n.token.indexOf("$") && (e.tokenSubst = !0), "string" == typeof n.bracket)
                                if ("@open" === n.bracket) e.bracket = 1;
                                else {
                                    if ("@close" !== n.bracket) throw Je(t, "a 'bracket' attribute must be either '@open' or '@close', in rule: " + i);
                                    e.bracket = -1
                                } if (n.next) {
                                if ("string" != typeof n.next) throw Je(t, "the next state must be a string value in rule: " + i); {
                                    let r = n.next;
                                    if (!/^(@pop|@push|@popall)$/.test(r) && ("@" === r[0] && (r = r.substr(1)), r.indexOf("$") < 0 && ! function(e, t) {
                                            let i = t;
                                            for (; i && 0 < i.length;) {
                                                if (e.stateNames[i]) return 1;
                                                var n = i.lastIndexOf(".");
                                                i = n < 0 ? null : i.substr(0, n)
                                            }
                                        }(t, et(t, r, "", [], "")))) throw Je(t, "the next state '" + n.next + "' is not defined in rule: " + i);
                                    e.next = r
                                }
                            }
                            return "number" == typeof n.goBack && (e.goBack = n.goBack), "string" == typeof n.switchTo && (e.switchTo = n.switchTo), "string" == typeof n.log && (e.log = n.log), "string" == typeof n.nextEmbedded && (e.nextEmbedded = n.nextEmbedded, t.usesEmbedded = !0), e
                        }
                    }
                    if (Array.isArray(n)) {
                        let r = [];
                        for (let o = 0, s = n.length; o < s; o++) r[o] = e(t, i, n[o]);
                        return {
                            group: r
                        }
                    }
                    if (n.cases) {
                        let s = [];
                        for (var r in n.cases) {
                            var o;
                            n.cases.hasOwnProperty(r) && (o = e(t, i, n.cases[r]), "@default" === r || "@" === r || "" === r ? s.push({
                                test: void 0,
                                value: o,
                                name: r
                            }) : "@eos" === r ? s.push({
                                test: function(e, t, i, n) {
                                    return n
                                },
                                value: o,
                                name: r
                            }) : s.push(Ng(t, i, r, o)))
                        }
                        const a = t.defaultToken;
                        return {
                            test: function(e, t, i, n) {
                                for (const r of s)
                                    if (!r.test || r.test(e, t, i, n)) return r.value;
                                return a
                            }
                        }
                    }
                    throw Je(t, "an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: " + i)
                }
                return {
                    token: ""
                }
            }(e, this.name, t)
        }
    }
    class Ig {
        constructor(e, t) {
            this._languageId = e, this._actual = t
        }
        getInitialState() {
            return this._actual.getInitialState()
        }
        tokenize(e, t, i, n) {
            if ("function" == typeof this._actual.tokenize) return Tg.adaptTokenize(this._languageId, this._actual, e, i, n);
            throw new Error("Not supported!")
        }
        tokenize2(e, t, i) {
            return i = this._actual.tokenizeEncoded(e, i), new qe.c(i.tokens, i.endState)
        }
    }
    class Tg {
        constructor(e, t, i, n) {
            this._languageId = e, this._actual = t, this._modeService = i, this._standaloneThemeService = n
        }
        getInitialState() {
            return this._actual.getInitialState()
        }
        static _toClassicTokens(e, t, i) {
            let n = [],
                r = 0;
            for (let s = 0, a = e.length; s < a; s++) {
                var o = e[s];
                let a = o.startIndex;
                0 === s ? a = 0 : a < r && (a = r), n[s] = new qe.a(a + i, o.scopes, t), r = a
            }
            return n
        }
        static adaptTokenize(e, t, i, n, r) {
            let o, s = t.tokenize(i, n);
            return r = Tg._toClassicTokens(s.tokens, e, r), o = s.endState.equals(n) ? n : s.endState, new qe.b(r, o)
        }
        tokenize(e, t, i, n) {
            return Tg.adaptTokenize(this._languageId, this._actual, e, i, n)
        }
        _toBinaryTokens(e, t, i) {
            var n = e.encodeLanguageId(this._languageId);
            const r = this._standaloneThemeService.getColorTheme().tokenTheme;
            let o = [],
                s = 0,
                a = 0;
            for (let e = 0, c = t.length; e < c; e++) {
                var l = t[e],
                    d = r.match(n, l.scopes);
                if (!(0 < s && o[s - 1] === d)) {
                    let t = l.startIndex;
                    0 === e ? t = 0 : t < a && (t = a), o[s++] = t + i, o[s++] = d, a = t
                }
            }
            let c = new Uint32Array(s);
            for (let e = 0; e < s; e++) c[e] = o[e];
            return c
        }
        tokenize2(e, t, i, n) {
            let r, o = this._actual.tokenize(e, i);
            return n = this._toBinaryTokens(this._modeService.languageIdCodec, o.tokens, n), r = o.endState.equals(i) ? i : o.endState, new qe.c(n, r)
        }
    }

    function Mg(e) {
        return e && "function" == typeof e.then
    }
    class Pg {
        constructor(e) {
            this.value = e, this._lower = e.toLowerCase()
        }
        static toKey(e) {
            return "string" == typeof e ? e.toLowerCase() : e._lower
        }
    }
    var Ag = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };
    class Rg {
        static setFormatterSelector(e) {
            return {
                dispose: Rg._selectors.unshift(e)
            }
        }
        static select(e, t, i) {
            return Ag(this, void 0, void 0, (function*() {
                if (0 !== e.length) {
                    const n = Sd.a.first(Rg._selectors);
                    return n ? yield n(e, t, i): void 0
                }
            }))
        }
    }
    Rg._selectors = new l.a, m.a.registerCommand("_executeFormatRangeProvider", (function(e, ...t) {
        return Ag(this, void 0, void 0, (function*() {
            var [i, n, r] = t;
            Object(ve.b)(h.a.isUri(i)), Object(ve.b)(T.a.isIRange(n));
            const o = e.get($.a);
            var s = e.get(U);
            const l = yield o.createModelReference(i);
            try {
                return function(e, t, i, n, r) {
                    return Ag(this, void 0, void 0, (function*() {
                        for (const s of z.i.ordered(t)) {
                            var o = yield Promise.resolve(s.provideDocumentRangeFormattingEdits(t, i, n, r)).catch(se.g);
                            if (Object(ne.l)(o)) return yield e.computeMoreMinimalEdits(t.uri, o)
                        }
                    }))
                }(s, l.object.textEditorModel, T.a.lift(n), r, a.a.None)
            } finally {
                l.dispose()
            }
        }))
    })), m.a.registerCommand("_executeFormatDocumentProvider", (function(e, ...t) {
        return Ag(this, void 0, void 0, (function*() {
            var [i, n] = t;
            Object(ve.b)(h.a.isUri(i));
            const r = e.get($.a);
            var o = e.get(U);
            const s = yield r.createModelReference(i);
            try {
                return function(e, t, i, n) {
                    return Ag(this, void 0, void 0, (function*() {
                        for (const o of function(e) {
                                const t = [],
                                    i = new Set;
                                for (const n of z.g.ordered(e)) t.push(n), n.extensionId && i.add(Pg.toKey(n.extensionId));
                                for (const n of z.i.ordered(e)) {
                                    if (n.extensionId) {
                                        if (i.has(Pg.toKey(n.extensionId))) continue;
                                        i.add(Pg.toKey(n.extensionId))
                                    }
                                    t.push({
                                        displayName: n.displayName,
                                        extensionId: n.extensionId,
                                        provideDocumentFormattingEdits: (e, t, i) => n.provideDocumentRangeFormattingEdits(e, e.getFullModelRange(), t, i)
                                    })
                                }
                                return t
                            }(t)) {
                            var r = yield Promise.resolve(o.provideDocumentFormattingEdits(t, i, n)).catch(se.g);
                            if (Object(ne.l)(r)) return yield e.computeMoreMinimalEdits(t.uri, r)
                        }
                    }))
                }(o, s.object.textEditorModel, n, a.a.None)
            } finally {
                s.dispose()
            }
        }))
    })), m.a.registerCommand("_executeFormatOnTypeProvider", (function(e, ...t) {
        return Ag(this, void 0, void 0, (function*() {
            var [i, n, r, o] = t;
            Object(ve.b)(h.a.isUri(i)), Object(ve.b)(Re.a.isIPosition(n)), Object(ve.b)("string" == typeof r);
            const s = e.get($.a);
            var l = e.get(U);
            const d = yield s.createModelReference(i);
            try {
                return function(e, t, i, n, r) {
                    const o = z.u.ordered(t);
                    return 0 === o.length || o[0].autoFormatTriggerCharacters.indexOf(n) < 0 ? Promise.resolve(void 0) : Promise.resolve(o[0].provideOnTypeFormattingEdits(t, i, n, r, a.a.None)).catch(se.g).then(i => e.computeMoreMinimalEdits(t.uri, i))
                }(l, d.object.textEditorModel, Re.a.lift(n), r, o)
            } finally {
                d.dispose()
            }
        }))
    })), n.g.wrappingIndent.defaultValue = 0, n.g.glyphMargin.defaultValue = !1, n.g.autoIndent.defaultValue = 3, n.g.overviewRulerLanes.defaultValue = 2, Rg.setFormatterSelector((e, t, i) => Promise.resolve(e[0]));
    const Fg = Object(r.a)();
    Fg.editor = {
        create: function(e, t, i) {
            return Sg(e, i || {}, i => new wl(e, t, i, i.get(_.a), i.get(o.a), i.get(m.b), i.get(Yt.b), i.get(al.a), i.get(Aa.b), i.get(ol), i.get(hi.a), i.get(Wt.a), i.get(Ks), i.get(ee.a), i.get(K.a)))
        },
        onDidCreateEditor: function(e) {
            return bg.codeEditorService.get().onCodeEditorAdd(t => {
                e(t)
            })
        },
        createDiffEditor: function(e, t, i) {
            return Sg(e, i || {}, i => new yl(e, t, i, i.get(_.a), i.get(Yt.b), i.get(al.a), i.get(Aa.b), i.get(U), i.get(o.a), i.get(ol), i.get(hi.a), i.get(Wt.a), i.get(Aa.a), i.get(Ba), i.get(ja.a)))
        },
        createDiffNavigator: function(e, t) {
            return new P(e, t)
        },
        createModel: function(e, t, i) {
            return Cl(bg.modelService.get(), bg.modeService.get(), e, t, i)
        },
        setModelLanguage: function(e, t) {
            bg.modelService.get().setMode(e, bg.modeService.get().create(t))
        },
        setModelMarkers: function(e, t, i) {
            e && bg.markerService.get().changeOne(t, e.uri, i)
        },
        getModelMarkers: function(e) {
            return bg.markerService.get().read(e)
        },
        onDidChangeMarkers: function(e) {
            return bg.markerService.get().onMarkerChanged(e)
        },
        getModels: function() {
            return bg.modelService.get().getModels()
        },
        getModel: function(e) {
            return bg.modelService.get().getModel(e)
        },
        onDidCreateModel: function(e) {
            return bg.modelService.get().onModelAdded(e)
        },
        onWillDisposeModel: function(e) {
            return bg.modelService.get().onModelRemoved(e)
        },
        onDidChangeModelLanguage: function(e) {
            return bg.modelService.get().onModelModeChanged(t => {
                e({
                    model: t.model,
                    oldLanguage: t.oldModeId
                })
            })
        },
        createWebWorker: function(e) {
            return t = bg.modelService.get(), new be(t, e = e);
            var t
        },
        colorizeElement: function(e, t) {
            const i = bg.standaloneThemeService.get();
            return i.registerEditorContainer(e), ht.colorizeElement(i, bg.modeService.get(), e, t)
        },
        colorize: function(e, t, i) {
            return bg.standaloneThemeService.get().registerEditorContainer(document.body), ht.colorize(bg.modeService.get(), e, t, i)
        },
        colorizeModelLine: function(e, t, i = 4) {
            return bg.standaloneThemeService.get().registerEditorContainer(document.body), ht.colorizeModelLine(e, t, i)
        },
        tokenize: function(e, t) {
            bg.modeService.get().triggerMode(t);
            let i = (n = t, z.A.get(n) || {
                getInitialState: () => H.b,
                tokenize: (e, t, i, r) => Object(H.c)(n, e, i, r)
            });
            var n, r = Object(b.Q)(e);
            let o = [],
                s = i.getInitialState();
            for (let e = 0, t = r.length; e < t; e++) {
                var a = r[e];
                a = i.tokenize(a, !0, s, 0);
                o[e] = a.tokens, s = a.endState
            }
            return o
        },
        defineTheme: function(e, t) {
            bg.standaloneThemeService.get().defineTheme(e, t)
        },
        setTheme: function(e) {
            bg.standaloneThemeService.get().setTheme(e)
        },
        remeasureFonts: function() {
            Wi.INSTANCE.clearCache()
        },
        registerCommand: function(e, t) {
            return m.a.registerCommand({
                id: e,
                handler: t
            })
        },
        AccessibilitySupport: _e.a,
        ContentWidgetPositionPreference: _e.f,
        CursorChangeReason: _e.g,
        DefaultEndOfLine: _e.h,
        EditorAutoIndentStrategy: _e.j,
        EditorOption: _e.k,
        EndOfLinePreference: _e.l,
        EndOfLineSequence: _e.m,
        MinimapPosition: _e.t,
        MouseTargetType: _e.u,
        OverlayWidgetPositionPreference: _e.v,
        OverviewRulerLane: _e.w,
        RenderLineNumbersType: _e.x,
        RenderMinimap: _e.y,
        ScrollbarVisibility: _e.A,
        ScrollType: _e.z,
        TextEditorCursorBlinkingStyle: _e.F,
        TextEditorCursorStyle: _e.G,
        TrackedRangeStickiness: _e.H,
        WrappingIndent: _e.I,
        配置ChangedEvent: n.b,
        BareFontInfo: j,
        FontInfo: B,
        TextModelResolvedOptions: W.h,
        FindMatch: W.b,
        EditorType: V,
        EditorOptions: n.g
    }, Fg.languages = {
        register: function(e) {
            Vs.registerLanguage(e)
        },
        getLanguages: function() {
            let e = [];
            return e = e.concat(Vs.getLanguages()), e
        },
        onLanguage: function(e, t) {
            let i = bg.modeService.get().onDidEncounterLanguage(n => {
                n === e && (i.dispose(), t())
            });
            return i
        },
        getEncodedLanguageId: function(e) {
            return bg.modeService.get().languageIdCodec.encodeLanguageId(e)
        },
        setLanguage配置: function(e, t) {
            var i = bg.modeService.get().validateLanguageId(e);
            if (!i) throw new Error("Cannot set configuration for unknown language " + e);
            return Q.b.register(i, t, 100)
        },
        setColorMap: function(e) {
            if (e) {
                const t = [null];
                for (let i = 1, n = e.length; i < n; i++) t[i] = uo.a.fromHex(e[i]);
                bg.standaloneThemeService.get().setColorMapOverride(t)
            } else bg.standaloneThemeService.get().setColorMapOverride(null)
        },
        setTokensProvider: function(e, t) {
            const i = bg.modeService.get().validateLanguageId(e);
            if (!i) throw new Error("Cannot set tokens provider for unknown language " + e);
            const n = e => "tokenizeEncoded" in e ? new Ig(i, e) : new Tg(i, e, bg.modeService.get(), bg.standaloneThemeService.get());
            return Mg(t) ? z.A.registerPromise(e, t.then(e => n(e))) : z.A.register(e, n(t))
        },
        setMonarchTokensProvider: function(e, t) {
            const i = t => {
                return i = bg.modeService.get(), n = bg.standaloneThemeService.get(), r = e, t = function(e, t) {
                    if (!t || "object" != typeof t) throw new Error("Monarch: expecting a language definition object");
                    let i = {};
                    i.languageId = e, i.includeLF = kg(t.includeLF, !1), i.noThrow = !1, i.maxStack = 100, i.start = "string" == typeof t.start ? t.start : null, i.ignoreCase = kg(t.ignoreCase, !1), i.unicode = kg(t.unicode, !1), i.tokenPostfix = Lg(t.tokenPostfix, "." + i.languageId), i.defaultToken = Lg(t.defaultToken, "source"), i.usesEmbedded = !1;
                    let n = t;
                    if (n.languageId = e, n.includeLF = i.includeLF, n.ignoreCase = i.ignoreCase, n.unicode = i.unicode, n.noThrow = i.noThrow, n.usesEmbedded = i.usesEmbedded, n.stateNames = t.tokenizer, n.defaultToken = i.defaultToken, !t.tokenizer || "object" != typeof t.tokenizer) throw Je(i, "a language definition must define the 'tokenizer' attribute as an object");
                    for (var r in i.tokenizer = [], t.tokenizer) {
                        var o;
                        t.tokenizer.hasOwnProperty(r) && (i.start || (i.start = r), o = t.tokenizer[r], i.tokenizer[r] = new Array, function e(r, o, s) {
                            for (const a of s) {
                                let s = a.include;
                                if (s) {
                                    if ("string" != typeof s) throw Je(i, "an 'include' attribute must be a string at: " + r);
                                    if ("@" === s[0] && (s = s.substr(1)), !t.tokenizer[s]) throw Je(i, "include target '" + s + "' is not defined at: " + r);
                                    e(r + "." + s, o, t.tokenizer[s])
                                } else {
                                    const e = new Dg(r);
                                    if (Array.isArray(a) && 1 <= a.length && a.length <= 3)
                                        if (e.setRegex(n, a[0]), 3 <= a.length)
                                            if ("string" == typeof a[1]) e.setAction(n, {
                                                token: a[1],
                                                next: a[2]
                                            });
                                            else {
                                                if ("object" != typeof a[1]) throw Je(i, "a next state as the last element of a rule can only be given if the action is either an object or a string, at: " + r); {
                                                    const t = a[1];
                                                    t.next = a[2], e.setAction(n, t)
                                                }
                                            }
                                    else e.setAction(n, a[1]);
                                    else {
                                        if (!a.regex) throw Je(i, "a rule must either be an array, or an object with a 'regex' or 'include' field at: " + r);
                                        a.name && "string" == typeof a.name && (e.name = a.name), a.matchOnlyAtStart && (e.matchOnlyAtLineStart = kg(a.matchOnlyAtLineStart, !1)), e.setRegex(n, a.regex), e.setAction(n, a.action)
                                    }
                                    o.push(e)
                                }
                            }
                        }("tokenizer." + r, i.tokenizer[r], o))
                    }
                    if (i.usesEmbedded = n.usesEmbedded, t.brackets) {
                        if (!Array.isArray(t.brackets)) throw Je(i, "the 'brackets' attribute must be defined as an array")
                    } else t.brackets = [{
                        open: "{",
                        close: "}",
                        token: "delimiter.curly"
                    }, {
                        open: "[",
                        close: "]",
                        token: "delimiter.square"
                    }, {
                        open: "(",
                        close: ")",
                        token: "delimiter.parenthesis"
                    }, {
                        open: "<",
                        close: ">",
                        token: "delimiter.angle"
                    }];
                    let s = [];
                    for (var a of t.brackets) {
                        let e = a;
                        if (e && Array.isArray(e) && 3 === e.length && (e = {
                                token: e[2],
                                open: e[0],
                                close: e[1]
                            }), e.open === e.close) throw Je(i, "open and close brackets in a 'brackets' attribute must be different: " + e.open + "\n hint: use the 'bracket' attribute if matching on equal brackets is required.");
                        if ("string" != typeof e.open || "string" != typeof e.token || "string" != typeof e.close) throw Je(i, "every element in the 'brackets' array must be a '{open,close,token}' object or array");
                        s.push({
                            token: e.token + i.tokenPostfix,
                            open: Xe(i, e.open),
                            close: Xe(i, e.close)
                        })
                    }
                    return i.brackets = s, i.noThrow = !0, i
                }(e, t), new dt(i, n, r, t);
                var i, n, r
            };
            return Mg(t) ? z.A.registerPromise(e, t.then(e => i(e))) : z.A.register(e, i(t))
        },
        registerReferenceProvider: function(e, t) {
            return z.v.register(e, t)
        },
        registerRenameProvider: function(e, t) {
            return z.w.register(e, t)
        },
        registerCompletionItemProvider: function(e, t) {
            return z.d.register(e, t)
        },
        registerSignatureHelpProvider: function(e, t) {
            return z.y.register(e, t)
        },
        registerHoverProvider: function(e, t) {
            return z.o.register(e, {
                provideHover: (e, i, n) => {
                    let r = e.getWordAtPosition(i);
                    return Promise.resolve(t.provideHover(e, i, n)).then(e => {
                        if (e) return !e.range && r && (e.range = new T.a(i.lineNumber, r.startColumn, i.lineNumber, r.endColumn)), e.range || (e.range = new T.a(i.lineNumber, i.column, i.lineNumber, i.column)), e
                    })
                }
            })
        },
        registerDocumentSymbolProvider: function(e, t) {
            return z.l.register(e, t)
        },
        registerDocumentHighlightProvider: function(e, t) {
            return z.h.register(e, t)
        },
        registerLinkedEditingRangeProvider: function(e, t) {
            return z.t.register(e, t)
        },
        registerDefinitionProvider: function(e, t) {
            return z.f.register(e, t)
        },
        registerImplementationProvider: function(e, t) {
            return z.p.register(e, t)
        },
        registerTypeDefinitionProvider: function(e, t) {
            return z.B.register(e, t)
        },
        registerCodeLensProvider: function(e, t) {
            return z.b.register(e, t)
        },
        registerCodeActionProvider: function(e, t, i) {
            return z.a.register(e, {
                providedCodeActionKinds: null == i ? void 0 : i.providedCodeActionKinds,
                provideCodeActions: (e, i, n, r) => {
                    var o = bg.markerService.get().read({
                        resource: e.uri
                    }).filter(e => T.a.areIntersectingOrTouching(e, i));
                    return t.provideCodeActions(e, i, {
                        markers: o,
                        only: n.only
                    }, r)
                },
                resolveCodeAction: t.resolveCodeAction
            })
        },
        registerDocumentFormattingEditProvider: function(e, t) {
            return z.g.register(e, t)
        },
        registerDocumentRangeFormattingEditProvider: function(e, t) {
            return z.i.register(e, t)
        },
        registerOnTypeFormattingEditProvider: function(e, t) {
            return z.u.register(e, t)
        },
        registerLinkProvider: function(e, t) {
            return z.s.register(e, t)
        },
        registerColorProvider: function(e, t) {
            return z.c.register(e, t)
        },
        registerFoldingRangeProvider: function(e, t) {
            return z.n.register(e, t)
        },
        registerDeclarationProvider: function(e, t) {
            return z.e.register(e, t)
        },
        registerSelectionRangeProvider: function(e, t) {
            return z.x.register(e, t)
        },
        registerDocumentSemanticTokensProvider: function(e, t) {
            return z.k.register(e, t)
        },
        registerDocumentRangeSemanticTokensProvider: function(e, t) {
            return z.j.register(e, t)
        },
        registerInlineCompletionsProvider: function(e, t) {
            return z.r.register(e, t)
        },
        registerInlayHintsProvider: function(e, t) {
            return z.q.register(e, t)
        },
        DocumentHighlightKind: _e.i,
        CompletionItemKind: _e.c,
        CompletionItemTag: _e.d,
        CompletionItemInsertTextRule: _e.b,
        SymbolKind: _e.D,
        SymbolTag: _e.E,
        IndentAction: _e.n,
        CompletionTriggerKind: _e.e,
        SignatureHelpTriggerKind: _e.C,
        InlayHintKind: _e.o,
        InlineCompletionTriggerKind: _e.p,
        FoldingRangeKind: z.m
    }, Fg.CancellationTokenSource;
    const jg = Fg.Emitter,
        Bg = Fg.KeyCode,
        Vg = Fg.KeyMod;
    Fg.Position;
    const Wg = Fg.Range,
        zg = Fg.Selection;
    Fg.SelectionDirection;
    const Hg = Fg.MarkerSeverity,
        Ug = Fg.MarkerTag,
        Kg = Fg.Uri;
    Fg.Token;
    const $g = Fg.editor,
        qg = Fg.languages;
    (null !== (r = A.b.MonacoEnvironment) && void 0 !== r && r.globalAPI || "function" == typeof define && i(456)) && (self.monaco = Fg), void 0 !== self.require && "function" == typeof self.require.config && self.require.config({
        ignoreDuplicateModules: ["vscode-languageserver-types", "vscode-languageserver-types/main", "vscode-languageserver-textdocument", "vscode-languageserver-textdocument/main", "vscode-nls", "vscode-nls/vscode-nls", "jsonc-parser", "jsonc-parser/main", "vscode-uri", "vscode-uri/index", "vs/basic-languages/typescript/typescript"]
    })
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return O
    })), i.d(t, "c", (function() {
        return E
    })), i.d(t, "a", (function() {
        return N
    }));
    var n = i(37),
        r = i(1),
        o = i(34),
        s = i(66),
        a = i(118),
        l = i(84),
        d = i(32);
    class c extends l.a {
        constructor(e) {
            super(), this._onActivate = e.onActivate, this.bgDomNode = document.createElement("div"), this.bgDomNode.className = "arrow-background", this.bgDomNode.style.position = "absolute", this.bgDomNode.style.width = e.bgWidth + "px", this.bgDomNode.style.height = e.bgHeight + "px", void 0 !== e.top && (this.bgDomNode.style.top = "0px"), void 0 !== e.left && (this.bgDomNode.style.left = "0px"), void 0 !== e.bottom && (this.bgDomNode.style.bottom = "0px"), void 0 !== e.right && (this.bgDomNode.style.right = "0px"), this.domNode = document.createElement("div"), this.domNode.className = e.className, this.domNode.classList.add(...e.icon.classNamesArray), this.domNode.style.position = "absolute", this.domNode.style.width = "11px", this.domNode.style.height = "11px", void 0 !== e.top && (this.domNode.style.top = e.top + "px"), void 0 !== e.left && (this.domNode.style.left = e.left + "px"), void 0 !== e.bottom && (this.domNode.style.bottom = e.bottom + "px"), void 0 !== e.right && (this.domNode.style.right = e.right + "px"), this._mouseMoveMonitor = this._register(new a.a), this.onmousedown(this.bgDomNode, e => this._arrowMouseDown(e)), this.onmousedown(this.domNode, e => this._arrowMouseDown(e)), this._mousedownRepeatTimer = this._register(new d.c), this._mousedownScheduleRepeatTimer = this._register(new d.g)
        }
        _arrowMouseDown(e) {
            this._onActivate(), this._mousedownRepeatTimer.cancel(), this._mousedownScheduleRepeatTimer.cancelAndSet(() => {
                this._mousedownRepeatTimer.cancelAndSet(() => this._onActivate(), 1e3 / 24)
            }, 200), this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, a.b, e => {}, () => {
                this._mousedownRepeatTimer.cancel(), this._mousedownScheduleRepeatTimer.cancel()
            }), e.preventDefault()
        }
    }
    var h = i(4);
    class u extends h.a {
        constructor(e, t, i) {
            super(), this._visibility = e, this._visibleClassName = t, this._invisibleClassName = i, this._domNode = null, this._isVisible = !1, this._isNeeded = !1, this._rawShouldBeVisible = !1, this._shouldBeVisible = !1, this._revealTimer = this._register(new d.g)
        }
        setVisibility(e) {
            this._visibility !== e && (this._visibility = e, this._updateShouldBeVisible())
        }
        setShouldBeVisible(e) {
            this._rawShouldBeVisible = e, this._updateShouldBeVisible()
        }
        _applyVisibilitySetting() {
            return 2 !== this._visibility && (3 === this._visibility || this._rawShouldBeVisible)
        }
        _updateShouldBeVisible() {
            var e = this._applyVisibilitySetting();
            this._shouldBeVisible !== e && (this._shouldBeVisible = e, this.ensureVisibility())
        }
        setIsNeeded(e) {
            this._isNeeded !== e && (this._isNeeded = e, this.ensureVisibility())
        }
        setDomNode(e) {
            this._domNode = e, this._domNode.setClassName(this._invisibleClassName), this.setShouldBeVisible(!1)
        }
        ensureVisibility() {
            this._isNeeded ? this._shouldBeVisible ? this._reveal() : this._hide(!0) : this._hide(!1)
        }
        _reveal() {
            this._isVisible || (this._isVisible = !0, this._revealTimer.setIfNotSet(() => {
                this._domNode && this._domNode.setClassName(this._visibleClassName)
            }, 0))
        }
        _hide(e) {
            this._revealTimer.cancel(), this._isVisible && (this._isVisible = !1, this._domNode && this._domNode.setClassName(this._invisibleClassName + (e ? " fade" : "")))
        }
    }
    var p = i(9);
    class g extends l.a {
        constructor(e) {
            super(), this._lazyRender = e.lazyRender, this._host = e.host, this._scrollable = e.scrollable, this._scrollByPage = e.scrollByPage, this._scrollbarState = e.scrollbarState, this._visibilityController = this._register(new u(e.visibility, "visible scrollbar " + e.extraScrollbarClassName, "invisible scrollbar " + e.extraScrollbarClassName)), this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._mouseMoveMonitor = this._register(new a.a), this._shouldRender = !0, this.domNode = Object(o.b)(document.createElement("div")), this.domNode.setAttribute("role", "presentation"), this.domNode.setAttribute("aria-hidden", "true"), this._visibilityController.setDomNode(this.domNode), this.domNode.setPosition("absolute"), this.onmousedown(this.domNode.domNode, e => this._domNodeMouseDown(e))
        }
        _createArrow(e) {
            e = this._register(new c(e)), this.domNode.domNode.appendChild(e.bgDomNode), this.domNode.domNode.appendChild(e.domNode)
        }
        _createSlider(e, t, i, n) {
            this.slider = Object(o.b)(document.createElement("div")), this.slider.setClassName("slider"), this.slider.setPosition("absolute"), this.slider.setTop(e), this.slider.setLeft(t), "number" == typeof i && this.slider.setWidth(i), "number" == typeof n && this.slider.setHeight(n), this.slider.setLayerHinting(!0), this.slider.setContain("strict"), this.domNode.domNode.appendChild(this.slider.domNode), this.onmousedown(this.slider.domNode, e => {
                e.leftButton && (e.preventDefault(), this._sliderMouseDown(e, () => {}))
            }), this.onclick(this.slider.domNode, e => {
                e.leftButton && e.stopPropagation()
            })
        }
        _onElementSize(e) {
            return this._scrollbarState.setVisibleSize(e) && (this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._shouldRender = !0, this._lazyRender || this.render()), this._shouldRender
        }
        _onElementScrollSize(e) {
            return this._scrollbarState.setScrollSize(e) && (this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._shouldRender = !0, this._lazyRender || this.render()), this._shouldRender
        }
        _onElementScrollPosition(e) {
            return this._scrollbarState.setScrollPosition(e) && (this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._shouldRender = !0, this._lazyRender || this.render()), this._shouldRender
        }
        beginReveal() {
            this._visibilityController.setShouldBeVisible(!0)
        }
        beginHide() {
            this._visibilityController.setShouldBeVisible(!1)
        }
        render() {
            this._shouldRender && (this._shouldRender = !1, this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize()), this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition()))
        }
        _domNodeMouseDown(e) {
            e.target === this.domNode.domNode && this._onMouseDown(e)
        }
        delegateMouseDown(e) {
            var t, i = (t = this.domNode.domNode.getClientRects()[0].top) + this._scrollbarState.getSliderPosition(),
                n = t + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize();
            i <= (t = this._sliderMousePosition(e)) && t <= n ? e.leftButton && (e.preventDefault(), this._sliderMouseDown(e, () => {})) : this._onMouseDown(e)
        }
        _onMouseDown(e) {
            let t, i;
            i = e.target === this.domNode.domNode && "number" == typeof e.browserEvent.offsetX && "number" == typeof e.browserEvent.offsetY ? (t = e.browserEvent.offsetX, e.browserEvent.offsetY) : (n = r.A(this.domNode.domNode), t = e.posx - n.left, e.posy - n.top);
            var n = this._mouseDownRelativePosition(t, i);
            this._setDesiredScrollPositionNow(this._scrollByPage ? this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(n) : this._scrollbarState.getDesiredScrollPositionFromOffset(n)), e.leftButton && (e.preventDefault(), this._sliderMouseDown(e, () => {}))
        }
        _sliderMouseDown(e, t) {
            const i = this._sliderMousePosition(e),
                n = this._sliderOrthogonalMousePosition(e),
                r = this._scrollbarState.clone();
            this.slider.toggleClassName("active", !0), this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, a.b, e => {
                var t = this._sliderOrthogonalMousePosition(e);
                t = Math.abs(t - n);
                p.i && 140 < t ? this._setDesiredScrollPositionNow(r.getScrollPosition()) : (e = this._sliderMousePosition(e) - i, this._setDesiredScrollPositionNow(r.getDesiredScrollPositionFromDelta(e)))
            }, () => {
                this.slider.toggleClassName("active", !1), this._host.onDragEnd(), t()
            }), this._host.onDragStart()
        }
        _setDesiredScrollPositionNow(e) {
            var t = {};
            this.writeScrollPosition(t, e), this._scrollable.setScrollPositionNow(t)
        }
        updateScrollbarSize(e) {
            this._updateScrollbarSize(e), this._scrollbarState.setScrollbarSize(e), this._shouldRender = !0, this._lazyRender || this.render()
        }
        isNeeded() {
            return this._scrollbarState.isNeeded()
        }
    }
    class f {
        constructor(e, t, i, n, r, o) {
            this._scrollbarSize = Math.round(t), this._oppositeScrollbarSize = Math.round(i), this._arrowSize = Math.round(e), this._visibleSize = n, this._scrollSize = r, this._scrollPosition = o, this._computedAvailableSize = 0, this._computedIsNeeded = !1, this._computedSliderSize = 0, this._computedSliderRatio = 0, this._computedSliderPosition = 0, this._refreshComputedValues()
        }
        clone() {
            return new f(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition)
        }
        setVisibleSize(e) {
            return e = Math.round(e), this._visibleSize !== e && (this._visibleSize = e, this._refreshComputedValues(), !0)
        }
        setScrollSize(e) {
            return e = Math.round(e), this._scrollSize !== e && (this._scrollSize = e, this._refreshComputedValues(), !0)
        }
        setScrollPosition(e) {
            return e = Math.round(e), this._scrollPosition !== e && (this._scrollPosition = e, this._refreshComputedValues(), !0)
        }
        setScrollbarSize(e) {
            this._scrollbarSize = Math.round(e)
        }
        setOppositeScrollbarSize(e) {
            this._oppositeScrollbarSize = Math.round(e)
        }
        static _computeValues(e, t, i, n, r) {
            var o = Math.max(0, i - e),
                s = Math.max(0, o - 2 * t);
            return (e = 0 < n && i < n) ? (r *= i = (s - (t = Math.round(Math.max(20, Math.floor(i * s / n))))) / (n - i), {
                computedAvailableSize: Math.round(o),
                computedIsNeeded: e,
                computedSliderSize: Math.round(t),
                computedSliderRatio: i,
                computedSliderPosition: Math.round(r)
            }) : {
                computedAvailableSize: Math.round(o),
                computedIsNeeded: e,
                computedSliderSize: Math.round(s),
                computedSliderRatio: 0,
                computedSliderPosition: 0
            }
        }
        _refreshComputedValues() {
            var e = f._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition);
            this._computedAvailableSize = e.computedAvailableSize, this._computedIsNeeded = e.computedIsNeeded, this._computedSliderSize = e.computedSliderSize, this._computedSliderRatio = e.computedSliderRatio, this._computedSliderPosition = e.computedSliderPosition
        }
        getArrowSize() {
            return this._arrowSize
        }
        getScrollPosition() {
            return this._scrollPosition
        }
        getRectangleLargeSize() {
            return this._computedAvailableSize
        }
        getRectangleSmallSize() {
            return this._scrollbarSize
        }
        isNeeded() {
            return this._computedIsNeeded
        }
        getSliderSize() {
            return this._computedSliderSize
        }
        getSliderPosition() {
            return this._computedSliderPosition
        }
        getDesiredScrollPositionFromOffset(e) {
            return this._computedIsNeeded ? (e = e - this._arrowSize - this._computedSliderSize / 2, Math.round(e / this._computedSliderRatio)) : 0
        }
        getDesiredScrollPositionFromOffsetPaged(e) {
            if (!this._computedIsNeeded) return 0;
            e -= this._arrowSize;
            let t = this._scrollPosition;
            return e < this._computedSliderPosition ? t -= this._visibleSize : t += this._visibleSize, t
        }
        getDesiredScrollPositionFromDelta(e) {
            return this._computedIsNeeded ? (e = this._computedSliderPosition + e, Math.round(e / this._computedSliderRatio)) : 0
        }
    }
    t = i(33);
    const m = Object(t.e)("scrollbar-button-left", t.b.triangleLeft),
        v = Object(t.e)("scrollbar-button-right", t.b.triangleRight);
    class b extends g {
        constructor(e, t, i) {
            var n = e.getScrollDimensions(),
                r = e.getCurrentScrollPosition();
            super({
                lazyRender: t.lazyRender,
                host: i,
                scrollbarState: new f(t.horizontalHasArrows ? t.arrowSize : 0, 2 === t.horizontal ? 0 : t.horizontalScrollbarSize, 2 === t.vertical ? 0 : t.verticalScrollbarSize, n.width, n.scrollWidth, r.scrollLeft),
                visibility: t.horizontal,
                extraScrollbarClassName: "horizontal",
                scrollable: e,
                scrollByPage: t.scrollByPage
            }), t.horizontalHasArrows && (r = (t.arrowSize - 11) / 2, e = (t.horizontalScrollbarSize - 11) / 2, this._createArrow({
                className: "scra",
                icon: m,
                top: e,
                left: r,
                bottom: void 0,
                right: void 0,
                bgWidth: t.arrowSize,
                bgHeight: t.horizontalScrollbarSize,
                onActivate: () => this._host.onMouseWheel(new s.b(null, 1, 0))
            }), this._createArrow({
                className: "scra",
                icon: v,
                top: e,
                left: void 0,
                bottom: void 0,
                right: r,
                bgWidth: t.arrowSize,
                bgHeight: t.horizontalScrollbarSize,
                onActivate: () => this._host.onMouseWheel(new s.b(null, -1, 0))
            })), this._createSlider(Math.floor((t.horizontalScrollbarSize - t.horizontalSliderSize) / 2), 0, void 0, t.horizontalSliderSize)
        }
        _updateSlider(e, t) {
            this.slider.setWidth(e), this.slider.setLeft(t)
        }
        _renderDomNode(e, t) {
            this.domNode.setWidth(e), this.domNode.setHeight(t), this.domNode.setLeft(0), this.domNode.setBottom(0)
        }
        onDidScroll(e) {
            return this._shouldRender = this._onElementScrollSize(e.scrollWidth) || this._shouldRender, this._shouldRender = this._onElementScrollPosition(e.scrollLeft) || this._shouldRender, this._shouldRender = this._onElementSize(e.width) || this._shouldRender, this._shouldRender
        }
        _mouseDownRelativePosition(e, t) {
            return e
        }
        _sliderMousePosition(e) {
            return e.posx
        }
        _sliderOrthogonalMousePosition(e) {
            return e.posy
        }
        _updateScrollbarSize(e) {
            this.slider.setHeight(e)
        }
        writeScrollPosition(e, t) {
            e.scrollLeft = t
        }
        updateOptions(e) {
            this.updateScrollbarSize(2 === e.horizontal ? 0 : e.horizontalScrollbarSize), this._scrollbarState.setOppositeScrollbarSize(2 === e.vertical ? 0 : e.verticalScrollbarSize), this._visibilityController.setVisibility(e.horizontal), this._scrollByPage = e.scrollByPage
        }
    }
    const _ = Object(t.e)("scrollbar-button-up", t.b.triangleUp),
        w = Object(t.e)("scrollbar-button-down", t.b.triangleDown);
    class y extends g {
        constructor(e, t, i) {
            var n = e.getScrollDimensions(),
                r = e.getCurrentScrollPosition();
            super({
                lazyRender: t.lazyRender,
                host: i,
                scrollbarState: new f(t.verticalHasArrows ? t.arrowSize : 0, 2 === t.vertical ? 0 : t.verticalScrollbarSize, 0, n.height, n.scrollHeight, r.scrollTop),
                visibility: t.vertical,
                extraScrollbarClassName: "vertical",
                scrollable: e,
                scrollByPage: t.scrollByPage
            }), t.verticalHasArrows && (r = (t.arrowSize - 11) / 2, e = (t.verticalScrollbarSize - 11) / 2, this._createArrow({
                className: "scra",
                icon: _,
                top: r,
                left: e,
                bottom: void 0,
                right: void 0,
                bgWidth: t.verticalScrollbarSize,
                bgHeight: t.arrowSize,
                onActivate: () => this._host.onMouseWheel(new s.b(null, 0, 1))
            }), this._createArrow({
                className: "scra",
                icon: w,
                top: void 0,
                left: e,
                bottom: r,
                right: void 0,
                bgWidth: t.verticalScrollbarSize,
                bgHeight: t.arrowSize,
                onActivate: () => this._host.onMouseWheel(new s.b(null, 0, -1))
            })), this._createSlider(0, Math.floor((t.verticalScrollbarSize - t.verticalSliderSize) / 2), t.verticalSliderSize, void 0)
        }
        _updateSlider(e, t) {
            this.slider.setHeight(e), this.slider.setTop(t)
        }
        _renderDomNode(e, t) {
            this.domNode.setWidth(t), this.domNode.setHeight(e), this.domNode.setRight(0), this.domNode.setTop(0)
        }
        onDidScroll(e) {
            return this._shouldRender = this._onElementScrollSize(e.scrollHeight) || this._shouldRender, this._shouldRender = this._onElementScrollPosition(e.scrollTop) || this._shouldRender, this._shouldRender = this._onElementSize(e.height) || this._shouldRender, this._shouldRender
        }
        _mouseDownRelativePosition(e, t) {
            return t
        }
        _sliderMousePosition(e) {
            return e.posy
        }
        _sliderOrthogonalMousePosition(e) {
            return e.posx
        }
        _updateScrollbarSize(e) {
            this.slider.setWidth(e)
        }
        writeScrollPosition(e, t) {
            e.scrollTop = t
        }
        updateOptions(e) {
            this.updateScrollbarSize(2 === e.vertical ? 0 : e.verticalScrollbarSize), this._scrollbarState.setOppositeScrollbarSize(0), this._visibilityController.setVisibility(e.vertical), this._scrollByPage = e.scrollByPage
        }
    }
    var C = i(2),
        x = i(133);
    i(381);
    class S {
        constructor(e, t, i) {
            this.timestamp = e, this.deltaX = t, this.deltaY = i, this.score = 0
        }
    }
    class k {
        constructor() {
            this._capacity = 5, this._memory = [], this._front = -1, this._rear = -1
        }
        isPhysicalMouseWheel() {
            if (-1 === this._front && -1 === this._rear) return !1;
            let e = 1,
                t = 0,
                i = 1,
                n = this._rear;
            for (;;) {
                var r = n === this._front ? e : Math.pow(2, -i);
                if (e -= r, t += this._memory[n].score * r, n === this._front) break;
                n = (this._capacity + n - 1) % this._capacity, i++
            }
            return t <= .5
        }
        accept(e, t, i) {
            const n = new S(e, t, i);
            n.score = this._computeScore(n), -1 === this._front && -1 === this._rear ? (this._memory[0] = n, this._front = 0, this._rear = 0) : (this._rear = (this._rear + 1) % this._capacity, this._rear === this._front && (this._front = (this._front + 1) % this._capacity), this._memory[this._rear] = n)
        }
        _computeScore(e) {
            if (0 < Math.abs(e.deltaX) && 0 < Math.abs(e.deltaY)) return 1;
            let t = .5;
            return -1 === this._front && -1 === this._rear || this._memory[this._rear], this._isAlmostInt(e.deltaX) && this._isAlmostInt(e.deltaY) || (t += .25), Math.min(Math.max(t, 0), 1)
        }
        _isAlmostInt(e) {
            return Math.abs(Math.round(e) - e) < .01
        }
    }
    k.INSTANCE = new k;
    class L extends l.a {
        constructor(e, t, i) {
            super(), this._onScroll = this._register(new C.b), this.onScroll = this._onScroll.event, this._onWillScroll = this._register(new C.b), e.style.overflow = "hidden", this._options = function(e) {
                const t = {
                    lazyRender: void 0 !== e.lazyRender && e.lazyRender,
                    className: void 0 !== e.className ? e.className : "",
                    useShadows: void 0 === e.useShadows || e.useShadows,
                    handleMouseWheel: void 0 === e.handleMouseWheel || e.handleMouseWheel,
                    flipAxes: void 0 !== e.flipAxes && e.flipAxes,
                    consumeMouseWheelIfScrollbarIsNeeded: void 0 !== e.consumeMouseWheelIfScrollbarIsNeeded && e.consumeMouseWheelIfScrollbarIsNeeded,
                    alwaysConsumeMouseWheel: void 0 !== e.alwaysConsumeMouseWheel && e.alwaysConsumeMouseWheel,
                    scrollYToX: void 0 !== e.scrollYToX && e.scrollYToX,
                    mouseWheelScrollSensitivity: void 0 !== e.mouseWheelScrollSensitivity ? e.mouseWheelScrollSensitivity : 1,
                    fastScrollSensitivity: void 0 !== e.fastScrollSensitivity ? e.fastScrollSensitivity : 5,
                    scrollPredominantAxis: void 0 === e.scrollPredominantAxis || e.scrollPredominantAxis,
                    mouseWheelSmoothScroll: void 0 === e.mouseWheelSmoothScroll || e.mouseWheelSmoothScroll,
                    arrowSize: void 0 !== e.arrowSize ? e.arrowSize : 11,
                    listenOnDomNode: void 0 !== e.listenOnDomNode ? e.listenOnDomNode : null,
                    horizontal: void 0 !== e.horizontal ? e.horizontal : 1,
                    horizontalScrollbarSize: void 0 !== e.horizontalScrollbarSize ? e.horizontalScrollbarSize : 10,
                    horizontalSliderSize: void 0 !== e.horizontalSliderSize ? e.horizontalSliderSize : 0,
                    horizontalHasArrows: void 0 !== e.horizontalHasArrows && e.horizontalHasArrows,
                    vertical: void 0 !== e.vertical ? e.vertical : 1,
                    verticalScrollbarSize: void 0 !== e.verticalScrollbarSize ? e.verticalScrollbarSize : 10,
                    verticalHasArrows: void 0 !== e.verticalHasArrows && e.verticalHasArrows,
                    verticalSliderSize: void 0 !== e.verticalSliderSize ? e.verticalSliderSize : 0,
                    scrollByPage: void 0 !== e.scrollByPage && e.scrollByPage
                };
                return t.horizontalSliderSize = void 0 !== e.horizontalSliderSize ? e.horizontalSliderSize : t.horizontalScrollbarSize, t.verticalSliderSize = void 0 !== e.verticalSliderSize ? e.verticalSliderSize : t.verticalScrollbarSize, p.f && (t.className += " mac"), t
            }(t), this._scrollable = i, this._register(this._scrollable.onScroll(e => {
                this._onWillScroll.fire(e), this._onDidScroll(e), this._onScroll.fire(e)
            })), i = {
                onMouseWheel: e => this._onMouseWheel(e),
                onDragStart: () => this._onDragStart(),
                onDragEnd: () => this._onDragEnd()
            }, this._verticalScrollbar = this._register(new y(this._scrollable, this._options, i)), this._horizontalScrollbar = this._register(new b(this._scrollable, this._options, i)), this._domNode = document.createElement("div"), this._domNode.className = "monaco-scrollable-element " + this._options.className, this._domNode.setAttribute("role", "presentation"), this._domNode.style.position = "relative", this._domNode.style.overflow = "hidden", this._domNode.appendChild(e), this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode), this._domNode.appendChild(this._verticalScrollbar.domNode.domNode), this._options.useShadows ? (this._leftShadowDomNode = Object(o.b)(document.createElement("div")), this._leftShadowDomNode.setClassName("shadow"), this._domNode.appendChild(this._leftShadowDomNode.domNode), this._topShadowDomNode = Object(o.b)(document.createElement("div")), this._topShadowDomNode.setClassName("shadow"), this._domNode.appendChild(this._topShadowDomNode.domNode), this._topLeftShadowDomNode = Object(o.b)(document.createElement("div")), this._topLeftShadowDomNode.setClassName("shadow"), this._domNode.appendChild(this._topLeftShadowDomNode.domNode)) : (this._leftShadowDomNode = null, this._topShadowDomNode = null, this._topLeftShadowDomNode = null), this._listenOnDomNode = this._options.listenOnDomNode || this._domNode, this._mouseWheelToDispose = [], this._setListeningToMouseWheel(this._options.handleMouseWheel), this.onmouseover(this._listenOnDomNode, e => this._onMouseOver(e)), this.onnonbubblingmouseout(this._listenOnDomNode, e => this._onMouseOut(e)), this._hideTimeout = this._register(new d.g), this._isDragging = !1, this._mouseIsOver = !1, this._shouldRender = !0, this._revealOnScroll = !0
        }
        dispose() {
            this._mouseWheelToDispose = Object(h.f)(this._mouseWheelToDispose), super.dispose()
        }
        getDomNode() {
            return this._domNode
        }
        getOverviewRulerLayoutInfo() {
            return {
                parent: this._domNode,
                insertBefore: this._verticalScrollbar.domNode.domNode
            }
        }
        delegateVerticalScrollbarMouseDown(e) {
            this._verticalScrollbar.delegateMouseDown(e)
        }
        getScrollDimensions() {
            return this._scrollable.getScrollDimensions()
        }
        setScrollDimensions(e) {
            this._scrollable.setScrollDimensions(e, !1)
        }
        updateClassName(e) {
            this._options.className = e, p.f && (this._options.className += " mac"), this._domNode.className = "monaco-scrollable-element " + this._options.className
        }
        updateOptions(e) {
            void 0 !== e.handleMouseWheel && (this._options.handleMouseWheel = e.handleMouseWheel, this._setListeningToMouseWheel(this._options.handleMouseWheel)), void 0 !== e.mouseWheelScrollSensitivity && (this._options.mouseWheelScrollSensitivity = e.mouseWheelScrollSensitivity), void 0 !== e.fastScrollSensitivity && (this._options.fastScrollSensitivity = e.fastScrollSensitivity), void 0 !== e.scrollPredominantAxis && (this._options.scrollPredominantAxis = e.scrollPredominantAxis), void 0 !== e.horizontal && (this._options.horizontal = e.horizontal), void 0 !== e.vertical && (this._options.vertical = e.vertical), void 0 !== e.horizontalScrollbarSize && (this._options.horizontalScrollbarSize = e.horizontalScrollbarSize), void 0 !== e.verticalScrollbarSize && (this._options.verticalScrollbarSize = e.verticalScrollbarSize), void 0 !== e.scrollByPage && (this._options.scrollByPage = e.scrollByPage), this._horizontalScrollbar.updateOptions(this._options), this._verticalScrollbar.updateOptions(this._options), this._options.lazyRender || this._render()
        }
        _setListeningToMouseWheel(e) {
            0 < this._mouseWheelToDispose.length !== e && (this._mouseWheelToDispose = Object(h.f)(this._mouseWheelToDispose), e && this._mouseWheelToDispose.push(r.g(this._listenOnDomNode, r.d.MOUSE_WHEEL, e => {
                this._onMouseWheel(new s.b(e))
            }, {
                passive: !1
            })))
        }
        _onMouseWheel(e) {
            const t = k.INSTANCE;
            var i = window.devicePixelRatio / Object(n.c)();
            p.i || p.d ? t.accept(Date.now(), e.deltaX / i, e.deltaY / i) : t.accept(Date.now(), e.deltaX, e.deltaY);
            let r = !1;
            if (e.deltaY || e.deltaX) {
                let n = e.deltaY * this._options.mouseWheelScrollSensitivity,
                    s = e.deltaX * this._options.mouseWheelScrollSensitivity;
                this._options.scrollPredominantAxis && (Math.abs(n) >= Math.abs(s) ? s = 0 : n = 0), this._options.flipAxes && ([n, s] = [s, n]), i = !p.f && e.browserEvent && e.browserEvent.shiftKey, !this._options.scrollYToX && !i || s || (s = n, n = 0), e.browserEvent && e.browserEvent.altKey && (s *= this._options.fastScrollSensitivity, n *= this._options.fastScrollSensitivity);
                var o;
                i = this._scrollable.getFutureScrollPosition();
                let a = {};
                n && (o = 50 * n, o = i.scrollTop - (o < 0 ? Math.floor(o) : Math.ceil(o)), this._verticalScrollbar.writeScrollPosition(a, o)), s && (o = 50 * s, o = i.scrollLeft - (o < 0 ? Math.floor(o) : Math.ceil(o)), this._horizontalScrollbar.writeScrollPosition(a, o)), a = this._scrollable.validateScrollPosition(a), i.scrollLeft === a.scrollLeft && i.scrollTop === a.scrollTop || (this._options.mouseWheelSmoothScroll && t.isPhysicalMouseWheel() ? this._scrollable.setScrollPositionSmooth(a) : this._scrollable.setScrollPositionNow(a), r = !0)
            }
            let s = r;
            !s && this._options.alwaysConsumeMouseWheel && (s = !0), !s && this._options.consumeMouseWheelIfScrollbarIsNeeded && (this._verticalScrollbar.isNeeded() || this._horizontalScrollbar.isNeeded()) && (s = !0), s && (e.preventDefault(), e.stopPropagation())
        }
        _onDidScroll(e) {
            this._shouldRender = this._horizontalScrollbar.onDidScroll(e) || this._shouldRender, this._shouldRender = this._verticalScrollbar.onDidScroll(e) || this._shouldRender, this._options.useShadows && (this._shouldRender = !0), this._revealOnScroll && this._reveal(), this._options.lazyRender || this._render()
        }
        renderNow() {
            if (!this._options.lazyRender) throw new Error("Please use `lazyRender` together with `renderNow`!");
            this._render()
        }
        _render() {
            var e, t, i;
            this._shouldRender && (this._shouldRender = !1, this._horizontalScrollbar.render(), this._verticalScrollbar.render(), this._options.useShadows && (t = (i = 0 < (e = this._scrollable.getCurrentScrollPosition()).scrollTop) ? " top" : "", i = (e = 0 < e.scrollLeft) || i ? " top-left-corner" : "", this._leftShadowDomNode.setClassName("shadow" + (e = e ? " left" : "")), this._topShadowDomNode.setClassName("shadow" + t), this._topLeftShadowDomNode.setClassName(`shadow${i}${t}${e}`)))
        }
        _onDragStart() {
            this._isDragging = !0, this._reveal()
        }
        _onDragEnd() {
            this._isDragging = !1, this._hide()
        }
        _onMouseOut(e) {
            this._mouseIsOver = !1, this._hide()
        }
        _onMouseOver(e) {
            this._mouseIsOver = !0, this._reveal()
        }
        _reveal() {
            this._verticalScrollbar.beginReveal(), this._horizontalScrollbar.beginReveal(), this._scheduleHide()
        }
        _hide() {
            this._mouseIsOver || this._isDragging || (this._verticalScrollbar.beginHide(), this._horizontalScrollbar.beginHide())
        }
        _scheduleHide() {
            this._mouseIsOver || this._isDragging || this._hideTimeout.cancelAndSet(() => this._hide(), 500)
        }
    }
    class O extends L {
        constructor(e, t) {
            (t = t || {}).mouseWheelSmoothScroll = !1;
            var i = new x.a(0, e => r.R(e));
            super(e, t, i), this._register(i)
        }
        setScrollPosition(e) {
            this._scrollable.setScrollPositionNow(e)
        }
        getScrollPosition() {
            return this._scrollable.getCurrentScrollPosition()
        }
    }
    class E extends L {
        constructor(e, t, i) {
            super(e, t, i)
        }
        setScrollPosition(e) {
            e.reuseAnimation ? this._scrollable.setScrollPositionSmooth(e, e.reuseAnimation) : this._scrollable.setScrollPositionNow(e)
        }
        getScrollPosition() {
            return this._scrollable.getCurrentScrollPosition()
        }
    }
    class N extends O {
        constructor(e, t) {
            super(e, t), this._element = e, this.onScroll(e => {
                e.scrollTopChanged && (this._element.scrollTop = e.scrollTop), e.scrollLeftChanged && (this._element.scrollLeft = e.scrollLeft)
            }), this.scanDomNode()
        }
        scanDomNode() {
            this.setScrollDimensions({
                width: this._element.clientWidth,
                scrollWidth: this._element.scrollWidth,
                height: this._element.clientHeight,
                scrollHeight: this._element.scrollHeight
            }), this.setScrollPosition({
                scrollLeft: this._element.scrollLeft,
                scrollTop: this._element.scrollTop
            })
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return s
    })), i.d(t, "b", (function() {
        return f
    })), i.d(t, "c", (function() {
        return m
    }));
    var n = i(2),
        r = i(17),
        o = i(0);
    t = i(148), i = i(58);
    const s = {
            配置: "base.contributions.configuration"
        },
        a = {
            properties: {},
            patternProperties: {}
        },
        l = {
            properties: {},
            patternProperties: {}
        },
        d = {
            properties: {},
            patternProperties: {}
        },
        c = {
            properties: {},
            patternProperties: {}
        },
        h = {
            properties: {},
            patternProperties: {}
        },
        u = {
            properties: {},
            patternProperties: {}
        },
        p = "vscode://schemas/settings/resourceLanguage",
        g = i.a.as(t.a.JSONContribution),
        f = new RegExp("\\[.*\\]$");

    function m(e) {
        return e.substring(1, e.length - 1)
    }
    const v = new class {
        constructor() {
            this.overrideIdentifiers = new Set, this._onDidSchemaChange = new n.b, this._onDidUpdate配置 = new n.b, this.defaultValues = {}, this.defaultLanguage配置OverridesNode = {
                id: "defaultOverrides",
                title: o.a("defaultLanguage配置Overrides.title", "Default Language 配置 Overrides"),
                properties: {}
            }, this.configurationContributors = [this.defaultLanguage配置OverridesNode], this.resourceLanguageSettingsSchema = {
                properties: {},
                patternProperties: {},
                additionalProperties: !1,
                errorMessage: "Unknown editor configuration setting",
                allowTrailingCommas: !0,
                allowComments: !0
            }, this.configurationProperties = {}, this.excluded配置Properties = {}, g.registerSchema(p, this.resourceLanguageSettingsSchema)
        }
        register配置(e, t = !0) {
            this.register配置s([e], t)
        }
        register配置s(e, t = !0) {
            t = this.doRegister配置s(e, t), g.registerSchema(p, this.resourceLanguageSettingsSchema), this._onDidSchemaChange.fire(), this._onDidUpdate配置.fire(t)
        }
        registerOverrideIdentifiers(e) {
            for (const t of e) this.overrideIdentifiers.add(t);
            this.updateOverridePropertyPatternKey()
        }
        doRegister配置s(e, t) {
            const i = [];
            return e.forEach(e => {
                i.push(...this.validateAndRegisterProperties(e, t, e.extensionInfo)), this.configurationContributors.push(e), this.registerJSON配置(e)
            }), i
        }
        validateAndRegisterProperties(e, t = !0, i, n = 3) {
            var s;
            n = r.m(e.scope) ? n : e.scope;
            let a = [],
                l = e.properties;
            if (l)
                for (var d in l)
                    if (t && function(e) {
                            return e.trim() ? f.test(e) ? o.a("config.property.languageDefault", "Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.", e) : void 0 === v.get配置Properties()[e] ? null : o.a("config.property.duplicate", "Cannot register '{0}'. This property is already registered.", e) : o.a("config.property.empty", "Cannot register an empty property")
                        }(d)) delete l[d];
                    else {
                        const e = l[d];
                        this.updatePropertyDefaultValue(d, e), f.test(d) ? e.scope = void 0 : (e.scope = r.m(e.scope) ? n : e.scope, e.restricted = r.m(e.restricted) ? !(null === (s = null == i ? void 0 : i.restricted配置s) || void 0 === s || !s.includes(d)) : e.restricted), !l[d].hasOwnProperty("included") || l[d].included ? (this.configurationProperties[d] = l[d], !l[d].deprecationMessage && l[d].markdownDeprecationMessage && (l[d].deprecationMessage = l[d].markdownDeprecationMessage), a.push(d)) : (this.excluded配置Properties[d] = l[d], delete l[d])
                    } if (e = e.allOf)
                for (var c of e) a.push(...this.validateAndRegisterProperties(c, t, i, n));
            return a
        }
        get配置Properties() {
            return this.configurationProperties
        }
        registerJSON配置(e) {
            const t = e => {
                var i = e.properties;
                if (i)
                    for (const e in i) this.updateSchema(e, i[e]);
                let n = e.allOf;
                n && n.forEach(t)
            };
            t(e)
        }
        updateSchema(e, t) {
            switch ((a.properties[e] = t).scope) {
                case 1:
                    l.properties[e] = t;
                    break;
                case 2:
                    d.properties[e] = t;
                    break;
                case 6:
                    c.properties[e] = t;
                    break;
                case 3:
                    h.properties[e] = t;
                    break;
                case 4:
                    u.properties[e] = t;
                    break;
                case 5:
                    u.properties[e] = t, this.resourceLanguageSettingsSchema.properties[e] = t
            }
        }
        updateOverridePropertyPatternKey() {
            for (const i of this.overrideIdentifiers.values()) {
                var e = `[${i}]`,
                    t = {
                        type: "object",
                        description: o.a("overrideSettings.defaultDescription", "Configure editor settings to be overridden for a language."),
                        errorMessage: o.a("overrideSettings.errorMessage", "This setting does not support per-language configuration."),
                        $ref: p
                    };
                this.updatePropertyDefaultValue(e, t), a.properties[e] = t, l.properties[e] = t, d.properties[e] = t, c.properties[e] = t, h.properties[e] = t, u.properties[e] = t
            }
            this._onDidSchemaChange.fire()
        }
        updatePropertyDefaultValue(e, t) {
            let i = this.defaultValues[e];
            r.l(i) && (i = t.default), r.l(i) && (i = function(e) {
                switch (e = Array.isArray(e) ? e[0] : e) {
                    case "boolean":
                        return !1;
                    case "integer":
                    case "number":
                        return 0;
                    case "string":
                        return "";
                    case "array":
                        return [];
                    case "object":
                        return {};
                    default:
                        return null
                }
            }(t.type)), t.default = i
        }
    };
    i.a.add(s.配置, v)
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i = i(26);
    const n = Object(i.c)("textModelService")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return s
    })), i.d(t, "a", (function() {
        return c
    }));
    class n {
        constructor(e, t, i, n) {
            this.originalStart = e, this.originalLength = t, this.modifiedStart = i, this.modifiedLength = n
        }
        getOriginalEnd() {
            return this.originalStart + this.originalLength
        }
        getModifiedEnd() {
            return this.modifiedStart + this.modifiedLength
        }
    }
    var r = i(126);
    class o {
        constructor(e) {
            this.source = e
        }
        getElements() {
            const e = this.source,
                t = new Int32Array(e.length);
            for (let i = 0, n = e.length; i < n; i++) t[i] = e.charCodeAt(i);
            return t
        }
    }

    function s(e, t, i) {
        return new c(new o(e), new o(t)).ComputeDiff(i).changes
    }
    class a {
        static Assert(e, t) {
            if (!e) throw new Error(t)
        }
    }
    class l {
        static Copy(e, t, i, n, r) {
            for (let o = 0; o < r; o++) i[n + o] = e[t + o]
        }
        static Copy2(e, t, i, n, r) {
            for (let o = 0; o < r; o++) i[n + o] = e[t + o]
        }
    }
    class d {
        constructor() {
            this.m_changes = [], this.m_originalStart = 1073741824, this.m_modifiedStart = 1073741824, this.m_originalCount = 0, this.m_modifiedCount = 0
        }
        MarkNextChange() {
            (0 < this.m_originalCount || 0 < this.m_modifiedCount) && this.m_changes.push(new n(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount)), this.m_originalCount = 0, this.m_modifiedCount = 0, this.m_originalStart = 1073741824, this.m_modifiedStart = 1073741824
        }
        AddOriginalElement(e, t) {
            this.m_originalStart = Math.min(this.m_originalStart, e), this.m_modifiedStart = Math.min(this.m_modifiedStart, t), this.m_originalCount++
        }
        AddModifiedElement(e, t) {
            this.m_originalStart = Math.min(this.m_originalStart, e), this.m_modifiedStart = Math.min(this.m_modifiedStart, t), this.m_modifiedCount++
        }
        getChanges() {
            return (0 < this.m_originalCount || 0 < this.m_modifiedCount) && this.MarkNextChange(), this.m_changes
        }
        getReverseChanges() {
            return (0 < this.m_originalCount || 0 < this.m_modifiedCount) && this.MarkNextChange(), this.m_changes.reverse(), this.m_changes
        }
    }
    class c {
        constructor(e, t, i = null) {
            this.ContinueProcessingPredicate = i, this._originalSequence = e, this._modifiedSequence = t;
            var [n, r, o] = c._getElements(e), [i, e, t] = c._getElements(t);
            this._hasStrings = o && t, this._originalStringElements = n, this._originalElementsOrHash = r, this._modifiedStringElements = i, this._modifiedElementsOrHash = e, this.m_forwardHistory = [], this.m_reverseHistory = []
        }
        static _isStringArray(e) {
            return 0 < e.length && "string" == typeof e[0]
        }
        static _getElements(e) {
            var t = e.getElements();
            if (c._isStringArray(t)) {
                const e = new Int32Array(t.length);
                for (let i = 0, n = t.length; i < n; i++) e[i] = Object(r.c)(t[i], 0);
                return [t, e, !0]
            }
            return t instanceof Int32Array ? [
                [], t, !1
            ] : [
                [], new Int32Array(t), !1
            ]
        }
        ElementsAreEqual(e, t) {
            return this._originalElementsOrHash[e] === this._modifiedElementsOrHash[t] && (!this._hasStrings || this._originalStringElements[e] === this._modifiedStringElements[t])
        }
        ElementsAreStrictEqual(e, t) {
            return !!this.ElementsAreEqual(e, t) && c._getStrictElement(this._originalSequence, e) === c._getStrictElement(this._modifiedSequence, t)
        }
        static _getStrictElement(e, t) {
            return "function" == typeof e.getStrictElement ? e.getStrictElement(t) : null
        }
        OriginalElementsAreEqual(e, t) {
            return this._originalElementsOrHash[e] === this._originalElementsOrHash[t] && (!this._hasStrings || this._originalStringElements[e] === this._originalStringElements[t])
        }
        ModifiedElementsAreEqual(e, t) {
            return this._modifiedElementsOrHash[e] === this._modifiedElementsOrHash[t] && (!this._hasStrings || this._modifiedStringElements[e] === this._modifiedStringElements[t])
        }
        ComputeDiff(e) {
            return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, e)
        }
        _ComputeDiff(e, t, i, n, r) {
            var o = [!1];
            let s = this.ComputeDiffRecursive(e, t, i, n, o);
            return r && (s = this.PrettifyChanges(s)), {
                quitEarly: o[0],
                changes: s
            }
        }
        ComputeDiffRecursive(e, t, i, r, o) {
            for (o[0] = !1; e <= t && i <= r && this.ElementsAreEqual(e, i);) e++, i++;
            for (; e <= t && i <= r && this.ElementsAreEqual(t, r);) t--, r--;
            if (t < e || r < i) {
                let o;
                return o = i <= r ? (a.Assert(e === t + 1, "originalStart should only be one more than originalEnd"), [new n(e, 0, i, r - i + 1)]) : e <= t ? (a.Assert(i === r + 1, "modifiedStart should only be one more than modifiedEnd"), [new n(e, t - e + 1, i, 0)]) : (a.Assert(e === t + 1, "originalStart should only be one more than originalEnd"), a.Assert(i === r + 1, "modifiedStart should only be one more than modifiedEnd"), []), o
            }
            var s = [0],
                l = [0],
                d = this.ComputeRecursionPoint(e, t, i, r, s, l, o);
            s = s[0], l = l[0];
            if (null !== d) return d;
            if (o[0]) return [new n(e, t - e + 1, i, r - i + 1)]; {
                d = this.ComputeDiffRecursive(e, s, i, l, o);
                let a = [];
                return a = o[0] ? [new n(s + 1, t - (s + 1) + 1, l + 1, r - (l + 1) + 1)] : this.ComputeDiffRecursive(s + 1, t, l + 1, r, o), this.ConcatenateChanges(d, a)
            }
        }
        WALKTRACE(e, t, i, r, o, s, a, l, c, h, u, p, g, f, m, v, b, _) {
            var w;
            let y = null,
                C = new d,
                x = t,
                S = i,
                k = g[0] - v[0] - r,
                L = -1073741824,
                O = this.m_forwardHistory.length - 1;
            do {
                var E = k + e;
                k = E === x || E < S && c[E - 1] < c[E + 1] ? (f = (u = c[E + 1]) - k - r, u < L && C.MarkNextChange(), L = u, C.AddModifiedElement(u + 1, f), E + 1 - e) : (f = (u = c[E - 1] + 1) - k - r, u < L && C.MarkNextChange(), L = u - 1, C.AddOriginalElement(u, f + 1), E - 1 - e), 0 <= O && (e = (c = this.m_forwardHistory[O])[0], x = 1, S = c.length - 1)
            } while (-1 <= --O);
            if (w = C.getReverseChanges(), _[0]) {
                let e = g[0] + 1,
                    t = v[0] + 1;
                if (null !== w && 0 < w.length) {
                    const i = w[w.length - 1];
                    e = Math.max(e, i.getOriginalEnd()), t = Math.max(t, i.getModifiedEnd())
                }
                y = [new n(e, p - e + 1, t, m - t + 1)]
            } else {
                C = new d, x = s, S = a, k = g[0] - v[0] - l, L = 1073741824, O = b ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;
                do {
                    var N = k + o;
                    k = N === x || N < S && h[N - 1] >= h[N + 1] ? (f = (u = h[N + 1] - 1) - k - l, u > L && C.MarkNextChange(), L = u + 1, C.AddOriginalElement(u + 1, f + 1), N + 1 - o) : (f = (u = h[N - 1]) - k - l, u > L && C.MarkNextChange(), L = u, C.AddModifiedElement(u + 1, f + 1), N - 1 - o), 0 <= O && (o = (h = this.m_reverseHistory[O])[0], x = 1, S = h.length - 1)
                } while (-1 <= --O);
                y = C.getChanges()
            }
            return this.ConcatenateChanges(w, y)
        }
        ComputeRecursionPoint(e, t, i, r, o, s, a) {
            let d = 0,
                c = 0,
                h = 0,
                u = 0,
                p = 0,
                g = 0;
            e--, i--, s[o[0] = 0] = 0, this.m_forwardHistory = [], this.m_reverseHistory = [];
            var f = t - e + (r - i),
                m = 1 + f;
            const v = new Int32Array(m),
                b = new Int32Array(m);
            var _ = r - i,
                w = t - e,
                y = e - i,
                C = t - r,
                x = (w - _) % 2 == 0;
            v[_] = e, b[w] = t, a[0] = !1;
            for (let O = 1; O <= f / 2 + 1; O++) {
                let f = 0,
                    E = 0;
                h = this.ClipDiagonalBound(_ - O, O, _, m), u = this.ClipDiagonalBound(_ + O, O, _, m);
                for (let e = h; e <= u; e += 2) {
                    d = e === h || e < u && v[e - 1] < v[e + 1] ? v[e + 1] : v[e - 1] + 1, c = d - (e - _) - y;
                    for (var S = d; d < t && c < r && this.ElementsAreEqual(d + 1, c + 1);) d++, c++;
                    if (v[e] = d, d + c > f + E && (f = d, E = c), !x && Math.abs(e - w) <= O - 1 && d >= b[e]) return o[0] = d, s[0] = c, S <= b[e] && O <= 1448 ? this.WALKTRACE(_, h, u, y, w, p, g, C, v, b, d, t, o, c, r, s, x, a) : null
                }
                var k = (f - e + (E - i) - O) / 2;
                if (null !== this.ContinueProcessingPredicate && !this.ContinueProcessingPredicate(f, k)) return a[0] = !0, o[0] = f, s[0] = E, 0 < k && O <= 1448 ? this.WALKTRACE(_, h, u, y, w, p, g, C, v, b, d, t, o, c, r, s, x, a) : (e++, i++, [new n(e, t - e + 1, i, r - i + 1)]);
                p = this.ClipDiagonalBound(w - O, O, w, m), g = this.ClipDiagonalBound(w + O, O, w, m);
                for (let n = p; n <= g; n += 2) {
                    d = n === p || n < g && b[n - 1] >= b[n + 1] ? b[n + 1] - 1 : b[n - 1], c = d - (n - w) - C;
                    for (var L = d; d > e && c > i && this.ElementsAreEqual(d, c);) d--, c--;
                    if (b[n] = d, x && Math.abs(n - _) <= O && d <= v[n]) return o[0] = d, s[0] = c, L >= v[n] && O <= 1448 ? this.WALKTRACE(_, h, u, y, w, p, g, C, v, b, d, t, o, c, r, s, x, a) : null
                }
                if (O <= 1447) {
                    let e = new Int32Array(u - h + 2);
                    e[0] = _ - h + 1, l.Copy2(v, h, e, 1, u - h + 1), this.m_forwardHistory.push(e), e = new Int32Array(g - p + 2), e[0] = w - p + 1, l.Copy2(b, p, e, 1, g - p + 1), this.m_reverseHistory.push(e)
                }
            }
            return this.WALKTRACE(_, h, u, y, w, p, g, C, v, b, d, t, o, c, r, s, x, a)
        }
        PrettifyChanges(e) {
            for (let a = 0; a < e.length; a++) {
                const l = e[a];
                for (var t = a < e.length - 1 ? e[a + 1].originalStart : this._originalElementsOrHash.length, i = a < e.length - 1 ? e[a + 1].modifiedStart : this._modifiedElementsOrHash.length, n = 0 < l.originalLength, r = 0 < l.modifiedLength; l.originalStart + l.originalLength < t && l.modifiedStart + l.modifiedLength < i && (!n || this.OriginalElementsAreEqual(l.originalStart, l.originalStart + l.originalLength)) && (!r || this.ModifiedElementsAreEqual(l.modifiedStart, l.modifiedStart + l.modifiedLength));) {
                    var o = this.ElementsAreStrictEqual(l.originalStart, l.modifiedStart);
                    if (this.ElementsAreStrictEqual(l.originalStart + l.originalLength, l.modifiedStart + l.modifiedLength) && !o) break;
                    l.originalStart++, l.modifiedStart++
                }
                var s = [null];
                a < e.length - 1 && this.ChangesOverlap(e[a], e[a + 1], s) && (e[a] = s[0], e.splice(a + 1, 1), a--)
            }
            for (let t = e.length - 1; 0 <= t; t--) {
                const i = e[t];
                let n = 0,
                    r = 0;
                0 < t && (n = (h = e[t - 1]).originalStart + h.originalLength, r = h.modifiedStart + h.modifiedLength);
                var a = 0 < i.originalLength,
                    l = 0 < i.modifiedLength;
                let o = 0,
                    s = this._boundaryScore(i.originalStart, i.originalLength, i.modifiedStart, i.modifiedLength);
                for (let e = 1;; e++) {
                    var d = i.originalStart - e,
                        c = i.modifiedStart - e;
                    if (d < n || c < r) break;
                    if (a && !this.OriginalElementsAreEqual(d, d + i.originalLength)) break;
                    if (l && !this.ModifiedElementsAreEqual(c, c + i.modifiedLength)) break;
                    (c = (d === n && c === r ? 5 : 0) + this._boundaryScore(d, i.originalLength, c, i.modifiedLength)) > s && (s = c, o = e)
                }
                i.originalStart -= o, i.modifiedStart -= o;
                var h = [null];
                0 < t && this.ChangesOverlap(e[t - 1], e[t], h) && (e[t - 1] = h[0], e.splice(t, 1), t++)
            }
            if (this._hasStrings)
                for (let t = 1, i = e.length; t < i; t++) {
                    const i = e[t - 1],
                        n = e[t];
                    var u = n.originalStart - i.originalStart - i.originalLength,
                        p = i.originalStart,
                        g = n.originalStart + n.originalLength,
                        f = g - p,
                        m = i.modifiedStart,
                        v = n.modifiedStart + n.modifiedLength,
                        b = v - m;
                    u < 5 && f < 20 && b < 20 && (m = this._findBetterContiguousSequence(p, f, m, b, u)) && ([b, m] = m, b === i.originalStart + i.originalLength && m === i.modifiedStart + i.modifiedLength || (i.originalLength = b - i.originalStart, i.modifiedLength = m - i.modifiedStart, n.originalStart = b + u, n.modifiedStart = m + u, n.originalLength = g - n.originalStart, n.modifiedLength = v - n.modifiedStart))
                }
            return e
        }
        _findBetterContiguousSequence(e, t, i, n, r) {
            if (t < r || n < r) return null;
            var o = e + t - r + 1,
                s = i + n - r + 1;
            let a = 0,
                l = 0,
                d = 0;
            for (let t = e; t < o; t++)
                for (let e = i; e < s; e++) {
                    var c = this._contiguousSequenceScore(t, e, r);
                    0 < c && c > a && (a = c, l = t, d = e)
                }
            return 0 < a ? [l, d] : null
        }
        _contiguousSequenceScore(e, t, i) {
            let n = 0;
            for (let r = 0; r < i; r++) {
                if (!this.ElementsAreEqual(e + r, t + r)) return 0;
                n += this._originalStringElements[e + r].length
            }
            return n
        }
        _OriginalIsBoundary(e) {
            return e <= 0 || e >= this._originalElementsOrHash.length - 1 || this._hasStrings && /^\s*$/.test(this._originalStringElements[e])
        }
        _OriginalRegionIsBoundary(e, t) {
            return !(!this._OriginalIsBoundary(e) && !this._OriginalIsBoundary(e - 1)) || !!(0 < t && (t = e + t, this._OriginalIsBoundary(t - 1) || this._OriginalIsBoundary(t)))
        }
        _ModifiedIsBoundary(e) {
            return e <= 0 || e >= this._modifiedElementsOrHash.length - 1 || this._hasStrings && /^\s*$/.test(this._modifiedStringElements[e])
        }
        _ModifiedRegionIsBoundary(e, t) {
            return !(!this._ModifiedIsBoundary(e) && !this._ModifiedIsBoundary(e - 1)) || !!(0 < t && (t = e + t, this._ModifiedIsBoundary(t - 1) || this._ModifiedIsBoundary(t)))
        }
        _boundaryScore(e, t, i, n) {
            return (this._OriginalRegionIsBoundary(e, t) ? 1 : 0) + (this._ModifiedRegionIsBoundary(i, n) ? 1 : 0)
        }
        ConcatenateChanges(e, t) {
            var i = [];
            if (0 === e.length || 0 === t.length) return 0 < t.length ? t : e;
            if (this.ChangesOverlap(e[e.length - 1], t[0], i)) {
                const n = new Array(e.length + t.length - 1);
                return l.Copy(e, 0, n, 0, e.length - 1), n[e.length - 1] = i[0], l.Copy(t, 1, n, e.length, t.length - 1), n
            }
            return i = new Array(e.length + t.length), l.Copy(e, 0, i, 0, e.length), l.Copy(t, 0, i, e.length, t.length), i
        }
        ChangesOverlap(e, t, i) {
            if (a.Assert(e.originalStart <= t.originalStart, "Left change is not less than or equal to right change"), a.Assert(e.modifiedStart <= t.modifiedStart, "Left change is not less than or equal to right change"), e.originalStart + e.originalLength >= t.originalStart || e.modifiedStart + e.modifiedLength >= t.modifiedStart) {
                var r = e.originalStart;
                let s = e.originalLength;
                var o = e.modifiedStart;
                let a = e.modifiedLength;
                return e.originalStart + e.originalLength >= t.originalStart && (s = t.originalStart + t.originalLength - e.originalStart), e.modifiedStart + e.modifiedLength >= t.modifiedStart && (a = t.modifiedStart + t.modifiedLength - e.modifiedStart), i[0] = new n(r, s, o, a), !0
            }
            return i[0] = null, !1
        }
        ClipDiagonalBound(e, t, i, n) {
            return 0 <= e && e < n ? e : (t = t % 2 == 0, e < 0 ? t == (i % 2 == 0) ? 0 : 1 : t == ((n - i - 1) % 2 == 0) ? n - 1 : n - 2)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return c
    }));
    var n = i(1),
        r = i(55),
        o = i(135),
        s = i(71),
        a = i(2),
        l = i(4),
        d = i(17);
    t = i(239);
    class c extends l.a {
        constructor(e, t = {}) {
            var i;
            let l, d;
            switch (super(), this.triggerKeyDown = !1, this.focusable = !0, this._onDidBlur = this._register(new a.b), this.onDidBlur = this._onDidBlur.event, this._onDidCancel = this._register(new a.b({
                onFirstListenerAdd: () => this.cancelHasListener = !0
            })), this.onDidCancel = this._onDidCancel.event, this.cancelHasListener = !1, this._onDidRun = this._register(new a.b), this.onDidRun = this._onDidRun.event, this._onBeforeRun = this._register(new a.b), this.onBeforeRun = this._onBeforeRun.event, this.options = t, this._context = null !== (i = t.context) && void 0 !== i ? i : null, this._orientation = null !== (i = this.options.orientation) && void 0 !== i ? i : 0, this._triggerKeys = {
                keyDown: null !== (i = null === (i = this.options.triggerKeys) || void 0 === i ? void 0 : i.keyDown) && void 0 !== i && i,
                keys: null !== (i = null === (i = this.options.triggerKeys) || void 0 === i ? void 0 : i.keys) && void 0 !== i ? i : [3, 10]
            }, this.options.actionRunner ? this._actionRunner = this.options.actionRunner : (this._actionRunner = new s.b, this._register(this._actionRunner)), this._register(this._actionRunner.onDidRun(e => this._onDidRun.fire(e))), this._register(this._actionRunner.onBeforeRun(e => this._onBeforeRun.fire(e))), this._actionIds = [], this.viewItems = [], this.focusedItem = void 0, this.domNode = document.createElement("div"), !(this.domNode.className = "monaco-action-bar") !== t.animated && this.domNode.classList.add("animated"), this._orientation) {
                case 0:
                    l = [15], d = [17];
                    break;
                case 1:
                    l = [16], d = [18], this.domNode.className += " vertical"
            }
            this._register(n.g(this.domNode, n.d.KEY_DOWN, e => {
                const t = new r.a(e);
                let i = !0;
                e = "number" == typeof this.focusedItem ? this.viewItems[this.focusedItem] : void 0, l && (t.equals(l[0]) || t.equals(l[1])) ? i = this.focusPrevious() : d && (t.equals(d[0]) || t.equals(d[1])) ? i = this.focusNext() : t.equals(9) && this.cancelHasListener ? this._onDidCancel.fire() : t.equals(14) ? i = this.focusFirst() : t.equals(13) ? i = this.focusLast() : t.equals(2) && e instanceof o.b && e.trapsArrowNavigation ? i = this.focusNext() : this.isTriggerKeyEvent(t) ? this._triggerKeys.keyDown ? this.doTrigger(t) : this.triggerKeyDown = !0 : i = !1, i && (t.preventDefault(), t.stopPropagation())
            })), this._register(n.g(this.domNode, n.d.KEY_UP, e => {
                const t = new r.a(e);
                this.isTriggerKeyEvent(t) ? (!this._triggerKeys.keyDown && this.triggerKeyDown && (this.triggerKeyDown = !1, this.doTrigger(t)), t.preventDefault(), t.stopPropagation()) : (t.equals(2) || t.equals(1026)) && this.updateFocusedItem()
            })), this.focusTracker = this._register(n.T(this.domNode)), this._register(this.focusTracker.onDidBlur(() => {
                n.v() !== this.domNode && n.I(n.v(), this.domNode) || (this._onDidBlur.fire(), this.focusedItem = void 0, this.triggerKeyDown = !1)
            })), this._register(this.focusTracker.onDidFocus(() => this.updateFocusedItem())), this.actionsList = document.createElement("ul"), this.actionsList.className = "actions-container", this.actionsList.setAttribute("role", "toolbar"), this.options.ariaLabel && this.actionsList.setAttribute("aria-label", this.options.ariaLabel), this.domNode.appendChild(this.actionsList), e.appendChild(this.domNode)
        }
        isTriggerKeyEvent(e) {
            let t = !1;
            return this._triggerKeys.keys.forEach(i => {
                t = t || e.equals(i)
            }), t
        }
        updateFocusedItem() {
            for (let t = 0; t < this.actionsList.children.length; t++) {
                var e = this.actionsList.children[t];
                if (n.I(n.v(), e)) {
                    this.focusedItem = t;
                    break
                }
            }
        }
        get context() {
            return this._context
        }
        set context(e) {
            this._context = e, this.viewItems.forEach(t => t.setActionContext(e))
        }
        get actionRunner() {
            return this._actionRunner
        }
        set actionRunner(e) {
            e && (this._actionRunner = e, this.viewItems.forEach(t => t.actionRunner = e))
        }
        getContainer() {
            return this.domNode
        }
        push(e, t = {}) {
            const i = Array.isArray(e) ? e : [e];
            let r = d.i(t.index) ? t.index : null;
            i.forEach(e => {
                const i = document.createElement("li");
                let s;
                i.className = "action-item", i.setAttribute("role", "presentation"), this.options.allowContextMenu || this._register(n.g(i, n.d.CONTEXT_MENU, e => {
                    n.c.stop(e, !0)
                })), this.options.actionViewItemProvider && (s = this.options.actionViewItemProvider(e)), s = s || new o.a(this.context, e, t), s.actionRunner = this._actionRunner, s.setActionContext(this.context), s.render(i), this.focusable && s instanceof o.b && 0 === this.viewItems.length && s.setFocusable(!0), null === r || r < 0 || r >= this.actionsList.children.length ? (this.actionsList.appendChild(i), this.viewItems.push(s), this._actionIds.push(e.id)) : (this.actionsList.insertBefore(i, this.actionsList.children[r]), this.viewItems.splice(r, 0, s), this._actionIds.splice(r, 0, e.id), r++)
            }), "number" == typeof this.focusedItem && this.focus(this.focusedItem)
        }
        clear() {
            Object(l.f)(this.viewItems), this.viewItems = [], this._actionIds = [], n.q(this.actionsList)
        }
        length() {
            return this.viewItems.length
        }
        focus(e) {
            let t = !1,
                i = void 0;
            void 0 === e ? t = !0 : "number" == typeof e ? i = e : "boolean" == typeof e && (t = e), t && void 0 === this.focusedItem ? (e = this.viewItems.findIndex(e => e.isEnabled()), this.focusedItem = -1 === e ? void 0 : e) : void 0 !== i && (this.focusedItem = i), this.updateFocus()
        }
        focusFirst() {
            return this.focusedItem = 1 < this.length() ? 1 : 0, this.focusPrevious()
        }
        focusLast() {
            return this.focusedItem = this.length() < 2 ? 0 : this.length() - 2, this.focusNext()
        }
        focusNext() {
            if (void 0 === this.focusedItem) this.focusedItem = this.viewItems.length - 1;
            else if (this.viewItems.length <= 1) return !1;
            var e = this.focusedItem;
            let t;
            do {
                if (this.options.preventLoopNavigation && this.focusedItem + 1 >= this.viewItems.length) return this.focusedItem = e, !1
            } while (this.focusedItem = (this.focusedItem + 1) % this.viewItems.length, t = this.viewItems[this.focusedItem], this.focusedItem !== e && this.options.focusOnlyEnabledItems && !t.isEnabled());
            return this.updateFocus(), !0
        }
        focusPrevious() {
            if (void 0 === this.focusedItem) this.focusedItem = 0;
            else if (this.viewItems.length <= 1) return !1;
            var e = this.focusedItem;
            let t;
            do {
                if (this.focusedItem = this.focusedItem - 1, this.focusedItem < 0) {
                    if (this.options.preventLoopNavigation) return this.focusedItem = e, !1;
                    this.focusedItem = this.viewItems.length - 1
                }
            } while (t = this.viewItems[this.focusedItem], this.focusedItem !== e && this.options.focusOnlyEnabledItems && !t.isEnabled());
            return this.updateFocus(!0), !0
        }
        updateFocus(e, t) {
            void 0 === this.focusedItem && this.actionsList.focus({
                preventScroll: t
            });
            for (let i = 0; i < this.viewItems.length; i++) {
                const n = this.viewItems[i],
                    r = n;
                if (i === this.focusedItem) {
                    let i = !0;
                    d.h(r.focus) || (i = !1), this.options.focusOnlyEnabledItems && d.h(n.isEnabled) && !n.isEnabled() && (i = !1), i ? r.focus(e) : this.actionsList.focus({
                        preventScroll: t
                    })
                } else d.h(r.blur) && r.blur()
            }
        }
        doTrigger(e) {
            var t;
            void 0 === this.focusedItem || (t = this.viewItems[this.focusedItem]) instanceof o.b && (e = null === t._context || void 0 === t._context ? e : t._context, this.run(t._action, e))
        }
        run(e, t) {
            return function(e, t, i, n) {
                return new(i = i || Promise)((function(r, o) {
                    function s(e) {
                        try {
                            l(n.next(e))
                        } catch (e) {
                            o(e)
                        }
                    }

                    function a(e) {
                        try {
                            l(n.throw(e))
                        } catch (e) {
                            o(e)
                        }
                    }

                    function l(e) {
                        var t;
                        e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                            e(t)
                        }))).then(s, a)
                    }
                    l((n = n.apply(e, t || [])).next())
                }))
            }(this, void 0, void 0, (function*() {
                yield this._actionRunner.run(e, t)
            }))
        }
        dispose() {
            Object(l.f)(this.viewItems), this.viewItems = [], this._actionIds = [], this.getContainer().remove(), super.dispose()
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i = i(26);
    const n = Object(i.c)("clipboardService")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return l
    })), i.d(t, "a", (function() {
        return d
    }));
    var n = i(1),
        r = i(158),
        o = i(66),
        s = i(4),
        a = i(9);

    function l(e, t) {
        let i = new o.a(t);
        return i.preventDefault(), {
            leftButton: i.leftButton,
            buttons: i.buttons,
            posx: i.posx,
            posy: i.posy
        }
    }
    class d {
        constructor() {
            this._hooks = new s.b, this._mouseMoveEventMerger = null, this._mouseMoveCallback = null, this._onStopCallback = null
        }
        dispose() {
            this.stopMonitoring(!1), this._hooks.dispose()
        }
        stopMonitoring(e, t) {
            if (this.isMonitoring()) {
                this._hooks.clear(), this._mouseMoveEventMerger = null, this._mouseMoveCallback = null;
                const i = this._onStopCallback;
                this._onStopCallback = null, e && i && i(t)
            }
        }
        isMonitoring() {
            return !!this._mouseMoveEventMerger
        }
        startMonitoring(e, t, i, s, l) {
            if (!this.isMonitoring()) {
                this._mouseMoveEventMerger = i, this._mouseMoveCallback = s, this._onStopCallback = l;
                const c = r.a.getSameOriginWindowChain();
                var d = a.c ? "pointermove" : "mousemove";
                const h = c.map(e => e.window.document);
                (e = n.C(e)) && h.unshift(e);
                for (const e of h) this._hooks.add(n.j(e, d, e => {
                    e.buttons === t ? this._mouseMoveCallback(e) : this.stopMonitoring(!0)
                }, (e, t) => this._mouseMoveEventMerger(e, t))), this._hooks.add(n.g(e, "mouseup", e => this.stopMonitoring(!0)));
                r.a.hasDifferentOriginAncestor() && (e = c[c.length - 1], this._hooks.add(n.g(e.window.document, "mouseout", e => {
                    "html" === new o.a(e).target.tagName.toLowerCase() && this.stopMonitoring(!0)
                })), this._hooks.add(n.g(e.window.document, "mouseover", e => {
                    "html" === new o.a(e).target.tagName.toLowerCase() && this.stopMonitoring(!0)
                })), this._hooks.add(n.g(e.window.document.body, "mouseleave", e => {
                    this.stopMonitoring(!0)
                })))
            }
        }
    }
}, function(e, t, i) {
    "use strict";
    var n;
    i.d(t, "a", (function() {
        return n
    })), (t = n = n || {}).DARK = "dark", t.LIGHT = "light", t.HIGH_CONTRAST = "hc"
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return m
    })), i.d(t, "b", (function() {
        return v
    }));
    var n = i(31),
        r = i(6),
        o = i(68),
        s = i(14),
        a = i(5),
        l = i(36),
        d = i(57);
    const c = Object.create(null);

    function h(e, t) {
        if (t <= 0) return "";
        c[e] || (c[e] = ["", e]);
        const i = c[e];
        for (let n = i.length; n <= t; n++) i[n] = i[n - 1] + e;
        return i[t]
    }
    class u {
        constructor(e, t) {
            this._opts = t, this._selection = e, this._selectionId = null, this._useLastEditRangeForCursorEndPosition = !1, this._selectionStartColumnStaysPut = !1
        }
        static unshiftIndent(e, t, i, n, r) {
            return t = s.a.visibleColumnFromColumn(e, t, i), r ? (r = h(" ", n), h(r, s.a.prevIndentTabStop(t, n) / n)) : h("\t", s.a.prevRenderTabStop(t, i) / i)
        }
        static shiftIndent(e, t, i, n, r) {
            return t = s.a.visibleColumnFromColumn(e, t, i), r ? (r = h(" ", n), h(r, s.a.nextIndentTabStop(t, n) / n)) : h("\t", s.a.nextRenderTabStop(t, i) / i)
        }
        _addEditOperation(e, t, i) {
            this._useLastEditRangeForCursorEndPosition ? e.addTrackedEditOperation(t, i) : e.addEditOperation(t, i)
        }
        getEditOperations(e, t) {
            var i = this._selection.startLineNumber;
            let n = this._selection.endLineNumber;
            1 === this._selection.endColumn && i !== n && (n -= 1);
            var {
                tabSize: o,
                indentSize: l,
                insertSpaces: c
            } = this._opts, p = i === n;
            if (this._opts.useTabStops) {
                this._selection.isEmpty() && /^\s*$/.test(e.getLineContent(i)) && (this._useLastEditRangeForCursorEndPosition = !0);
                let h = 0,
                    g = 0;
                for (let f = i; f <= n; f++, h = g) {
                    g = 0;
                    let n = e.getLineContent(f),
                        m = r.u(n);
                    if ((!this._opts.isUnshift || 0 !== n.length && 0 !== m) && (p || this._opts.isUnshift || 0 !== n.length)) {
                        if (-1 === m && (m = n.length), 1 < f)
                            if (s.a.visibleColumnFromColumn(n, m + 1, o) % l != 0 && e.isCheapToTokenize(f - 1)) {
                                let t = d.b.getEnterAction(this._opts.autoIndent, e, new a.a(f - 1, e.getLineMaxColumn(f - 1), f - 1, e.getLineMaxColumn(f - 1)));
                                if (t) {
                                    if (g = h, t.appendText)
                                        for (let e = 0, i = t.appendText.length; e < i && g < l && 32 === t.appendText.charCodeAt(e); e++) g++;
                                    t.removeText && (g = Math.max(0, g - t.removeText));
                                    for (let e = 0; e < g && 0 !== m && 32 === n.charCodeAt(m - 1); e++) m--
                                }
                            } if (!this._opts.isUnshift || 0 !== m) {
                            let e;
                            e = this._opts.isUnshift ? u.unshiftIndent(n, m + 1, o, l, c) : u.shiftIndent(n, m + 1, o, l, c), this._addEditOperation(t, new a.a(f, 1, f, m + 1), e), f !== i || this._selection.isEmpty() || (this._selectionStartColumnStaysPut = this._selection.startColumn <= m + 1)
                        }
                    }
                }
            } else {
                !this._opts.isUnshift && this._selection.isEmpty() && 0 === e.getLineLength(i) && (this._useLastEditRangeForCursorEndPosition = !0);
                var g = c ? h(" ", l) : "\t";
                for (let o = i; o <= n; o++) {
                    const n = e.getLineContent(o);
                    let s = r.u(n);
                    if ((!this._opts.isUnshift || 0 !== n.length && 0 !== s) && (p || this._opts.isUnshift || 0 !== n.length) && (-1 === s && (s = n.length), !this._opts.isUnshift || 0 !== s))
                        if (this._opts.isUnshift) {
                            s = Math.min(s, l);
                            for (let e = 0; e < s; e++)
                                if (9 === n.charCodeAt(e)) {
                                    s = e + 1;
                                    break
                                } this._addEditOperation(t, new a.a(o, 1, o, s + 1), "")
                        } else this._addEditOperation(t, new a.a(o, 1, o, 1), g), o !== i || this._selection.isEmpty() || (this._selectionStartColumnStaysPut = 1 === this._selection.startColumn)
                }
            }
            this._selectionId = t.trackSelection(this._selection)
        }
        computeCursorState(e, t) {
            if (this._useLastEditRangeForCursorEndPosition) {
                var i = t.getInverseEditOperations()[0];
                return new l.a(i.range.endLineNumber, i.range.endColumn, i.range.endLineNumber, i.range.endColumn)
            }
            const n = t.getTrackedSelection(this._selectionId);
            return this._selectionStartColumnStaysPut ? (t = this._selection.startColumn, n.startColumn <= t ? n : 0 === n.getDirection() ? new l.a(n.startLineNumber, t, n.endLineNumber, n.endColumn) : new l.a(n.endLineNumber, n.endColumn, n.startLineNumber, t)) : n
        }
    }
    class p {
        constructor(e, t, i) {
            this._range = e, this._charBeforeSelection = t, this._charAfterSelection = i
        }
        getEditOperations(e, t) {
            t.addTrackedEditOperation(new a.a(this._range.startLineNumber, this._range.startColumn, this._range.startLineNumber, this._range.startColumn), this._charBeforeSelection), t.addTrackedEditOperation(new a.a(this._range.endLineNumber, this._range.endColumn, this._range.endLineNumber, this._range.endColumn), this._charAfterSelection)
        }
        computeCursorState(e, t) {
            t = (i = t.getInverseEditOperations())[0].range;
            var i = i[1].range;
            return new l.a(t.endLineNumber, t.endColumn, i.endLineNumber, i.endColumn - this._charAfterSelection.length)
        }
    }
    var g = i(122),
        f = i(70);
    class m {
        static indent(e, t, i) {
            if (null === t || null === i) return [];
            let n = [];
            for (let t = 0, r = i.length; t < r; t++) n[t] = new u(i[t], {
                isUnshift: !1,
                tabSize: e.tabSize,
                indentSize: e.indentSize,
                insertSpaces: e.insertSpaces,
                useTabStops: e.useTabStops,
                autoIndent: e.autoIndent
            });
            return n
        }
        static outdent(e, t, i) {
            let n = [];
            for (let t = 0, r = i.length; t < r; t++) n[t] = new u(i[t], {
                isUnshift: !0,
                tabSize: e.tabSize,
                indentSize: e.indentSize,
                insertSpaces: e.insertSpaces,
                useTabStops: e.useTabStops,
                autoIndent: e.autoIndent
            });
            return n
        }
        static shiftIndent(e, t, i) {
            return i = i || 1, u.shiftIndent(t, t.length + i, e.tabSize, e.indentSize, e.insertSpaces)
        }
        static unshiftIndent(e, t, i) {
            return i = i || 1, u.unshiftIndent(t, t.length + i, e.tabSize, e.indentSize, e.insertSpaces)
        }
        static _distributedPaste(e, t, i, n) {
            let r = [];
            for (let e = 0, t = i.length; e < t; e++) r[e] = new o.a(i[e], n[e]);
            return new s.e(0, r, {
                shouldPushStackElementBefore: !0,
                shouldPushStackElementAfter: !0
            })
        }
        static _simplePaste(e, t, i, n, r) {
            let l = [];
            for (let e = 0, t = i.length; e < t; e++) {
                const t = i[e];
                var d = t.getPosition();
                (r = (!(r = !(r && !t.isEmpty()) && r) || n.indexOf("\n") === n.length - 1) && r) ? (d = new a.a(d.lineNumber, 1, d.lineNumber, 1), l[e] = new o.b(d, n, t, !0)) : l[e] = new o.a(t, n)
            }
            return new s.e(0, l, {
                shouldPushStackElementBefore: !0,
                shouldPushStackElementAfter: !0
            })
        }
        static _distributePasteToCursors(e, t, i, n, o) {
            return n || 1 === t.length ? null : o && o.length === t.length ? o : "spread" === e.multiCursorPaste && (13 === (i = 10 === i.charCodeAt(i.length - 1) ? i.substr(0, i.length - 1) : i).charCodeAt(i.length - 1) && (i = i.substr(0, i.length - 1)), (i = r.Q(i)).length === t.length) ? i : null
        }
        static paste(e, t, i, n, r, o) {
            return (o = this._distributePasteToCursors(e, i, n, r, o)) ? (i = i.sort(a.a.compareRangesUsingStarts), this._distributedPaste(e, t, i, o)) : this._simplePaste(e, t, i, n, r)
        }
        static _goodIndentForLine(e, t, i) {
            let n = null,
                o = "";
            var s = d.b.getInheritIndentForLine(e.autoIndent, t, i, !1);
            if (s) n = s.action, o = s.indentation;
            else if (1 < i) {
                let n;
                for (n = i - 1; 1 <= n; n--) {
                    var l = t.getLineContent(n);
                    if (0 <= r.I(l)) break
                }
                if (n < 1) return null;
                i = t.getLineMaxColumn(n), (i = d.b.getEnterAction(e.autoIndent, t, new a.a(n, i, n, i))) && (o = i.indentation + i.appendText)
            }
            return n && (n === f.b.Indent && (o = m.shiftIndent(e, o)), n === f.b.Outdent && (o = m.unshiftIndent(e, o)), o = e.normalizeIndentation(o)), o || null
        }
        static _replaceJumpToNextIndent(e, t, i, n) {
            let r = "";
            var a = i.getStartPosition();
            if (e.insertSpaces) {
                a = s.a.visibleColumnFromColumn2(e, t, a);
                var l = (e = e.indentSize) - a % e;
                for (let e = 0; e < l; e++) r += " "
            } else r = "\t";
            return new o.a(i, r, n)
        }
        static tab(e, t, i) {
            let n = [];
            for (let s = 0, l = i.length; s < l; s++) {
                const l = i[s];
                if (l.isEmpty()) {
                    let i = t.getLineContent(l.startLineNumber);
                    if (/^\s*$/.test(i) && t.isCheapToTokenize(l.startLineNumber)) {
                        var r = this._goodIndentForLine(e, t, l.startLineNumber);
                        r = e.normalizeIndentation(r = r || "\t");
                        if (!i.startsWith(r)) {
                            n[s] = new o.a(new a.a(l.startLineNumber, 1, l.startLineNumber, i.length + 1), r, !0);
                            continue
                        }
                    }
                    n[s] = this._replaceJumpToNextIndent(e, t, l, !0)
                } else {
                    if (l.startLineNumber === l.endLineNumber && (r = t.getLineMaxColumn(l.startLineNumber), 1 !== l.startColumn || l.endColumn !== r)) {
                        n[s] = this._replaceJumpToNextIndent(e, t, l, !1);
                        continue
                    }
                    n[s] = new u(l, {
                        isUnshift: !1,
                        tabSize: e.tabSize,
                        indentSize: e.indentSize,
                        insertSpaces: e.insertSpaces,
                        useTabStops: e.useTabStops,
                        autoIndent: e.autoIndent
                    })
                }
            }
            return n
        }
        static compositionType(e, t, i, n, r, o, a, l) {
            return n = n.map(e => this._compositionType(i, e, r, o, a, l)), new s.e(4, n, {
                shouldPushStackElementBefore: _(e, 4),
                shouldPushStackElementAfter: !1
            })
        }
        static _compositionType(e, t, i, n, r, s) {
            return t.isEmpty() ? (t = t.getPosition(), n = Math.max(1, t.column - n), r = Math.min(e.getLineMaxColumn(t.lineNumber), t.column + r), r = new a.a(t.lineNumber, n, t.lineNumber, r), e.getValueInRange(r) === i && 0 === s ? null : new o.c(r, i, 0, s)) : null
        }
        static _typeCommand(e, t, i) {
            return new(i ? o.d : o.a)(e, t, !0)
        }
        static _enter(e, t, i, n) {
            if (0 === e.autoIndent) return m._typeCommand(n, "\n", i);
            if (!t.isCheapToTokenize(n.getStartPosition().lineNumber) || 1 === e.autoIndent) {
                var a = t.getLineContent(n.startLineNumber),
                    l = r.x(a).substring(0, n.startColumn - 1);
                return m._typeCommand(n, "\n" + e.normalizeIndentation(l), i)
            }
            if (a = d.b.getEnterAction(e.autoIndent, t, n)) {
                if (a.indentAction === f.b.None) return m._typeCommand(n, "\n" + e.normalizeIndentation(a.indentation + a.appendText), i);
                if (a.indentAction === f.b.Indent) return m._typeCommand(n, "\n" + e.normalizeIndentation(a.indentation + a.appendText), i);
                if (a.indentAction === f.b.IndentOutdent) {
                    var c = e.normalizeIndentation(a.indentation),
                        h = e.normalizeIndentation(a.indentation + a.appendText);
                    l = "\n" + h + "\n" + c;
                    return i ? new o.d(n, l, !0) : new o.c(n, l, -1, h.length - c.length, !0)
                }
                if (a.indentAction === f.b.Outdent) {
                    var u = m.unshiftIndent(e, a.indentation);
                    return m._typeCommand(n, "\n" + e.normalizeIndentation(u + a.appendText), i)
                }
            }
            if (h = t.getLineContent(n.startLineNumber), c = r.x(h).substring(0, n.startColumn - 1), 4 <= e.autoIndent && (u = d.b.getIndentForEnter(e.autoIndent, t, n, {
                    unshiftIndent: t => m.unshiftIndent(e, t),
                    shiftIndent: t => m.shiftIndent(e, t),
                    normalizeIndentation: t => e.normalizeIndentation(t)
                }))) {
                let l = s.a.visibleColumnFromColumn2(e, t, n.getEndPosition());
                if (a = n.endColumn, h = t.getLineContent(n.endLineNumber), n = 0 <= (h = r.u(h)) ? n.setEndPosition(n.endLineNumber, Math.max(n.endColumn, h + 1)) : n.setEndPosition(n.endLineNumber, t.getLineMaxColumn(n.endLineNumber)), i) return new o.d(n, "\n" + e.normalizeIndentation(u.afterEnter), !0); {
                    let t = 0;
                    return a <= h + 1 && (e.insertSpaces || (l = Math.ceil(l / e.indentSize)), t = Math.min(l + 1 - e.normalizeIndentation(u.afterEnter).length - 1, 0)), new o.c(n, "\n" + e.normalizeIndentation(u.afterEnter), 0, t, !0)
                }
            }
            return m._typeCommand(n, "\n" + e.normalizeIndentation(c), i)
        }
        static _isAutoIndentType(e, t, i) {
            if (e.autoIndent < 4) return !1;
            for (let e = 0, n = i.length; e < n; e++)
                if (!t.isCheapToTokenize(i[e].getEndPosition().lineNumber)) return !1;
            return !0
        }
        static _runAutoIndentType(e, t, i, n) {
            var r = d.b.getIndentationAtPosition(t, i.startLineNumber, i.startColumn),
                o = d.b.getIndentActionForType(e.autoIndent, t, i, n, {
                    shiftIndent: t => m.shiftIndent(e, t),
                    unshiftIndent: t => m.unshiftIndent(e, t)
                });
            return null === o || o === e.normalizeIndentation(r) ? null : 0 === (r = t.getLineFirstNonWhitespaceColumn(i.startLineNumber)) ? m._typeCommand(new a.a(i.startLineNumber, 1, i.endLineNumber, i.endColumn), e.normalizeIndentation(o) + n, !1) : m._typeCommand(new a.a(i.startLineNumber, 1, i.endLineNumber, i.endColumn), e.normalizeIndentation(o) + t.getLineContent(i.startLineNumber).substring(r - 1, i.startColumn - 1) + n, !1)
        }
        static _isAutoClosingOvertype(e, t, i, n, r) {
            if ("never" === e.autoClosingOvertype) return !1;
            if (!e.autoClosingPairs.autoClosingPairsCloseSingleChar.has(r)) return !1;
            for (let d = 0, c = i.length; d < c; d++) {
                const c = i[d];
                if (!c.isEmpty()) return !1;
                var o = c.getPosition();
                const h = t.getLineContent(o.lineNumber);
                if (h.charAt(o.column - 1) !== r) return !1;
                var a = Object(s.g)(r);
                if (92 === (2 < o.column ? h.charCodeAt(o.column - 2) : 0) && a) return !1;
                if ("auto" === e.autoClosingOvertype) {
                    let e = !1;
                    for (let t = 0, i = n.length; t < i; t++) {
                        var l = n[t];
                        if (o.lineNumber === l.startLineNumber && o.column === l.startColumn) {
                            e = !0;
                            break
                        }
                    }
                    if (!e) return !1
                }
            }
            return !0
        }
        static _runAutoClosingOvertype(e, t, i, n, r) {
            let l = [];
            for (let e = 0, t = n.length; e < t; e++) {
                var d = n[e].getPosition();
                d = new a.a(d.lineNumber, d.column, d.lineNumber, d.column + 1);
                l[e] = new o.a(d, r)
            }
            return new s.e(4, l, {
                shouldPushStackElementBefore: _(e, 4),
                shouldPushStackElementAfter: !1
            })
        }
        static _isBeforeClosingBrace(e, t) {
            var i = t.charAt(0);
            const n = e.autoClosingPairs.autoClosingPairsOpenByStart.get(i) || [],
                r = e.autoClosingPairs.autoClosingPairsCloseByStart.get(i) || [];
            return e = n.some(e => t.startsWith(e.open)), i = r.some(e => t.startsWith(e.close)), !e && i
        }
        static _findAutoClosingPairOpen(e, t, i, n) {
            if (!(e = e.autoClosingPairs.autoClosingPairsOpenByEnd.get(n))) return null;
            let r = null;
            for (const o of e)
                if (null === r || o.open.length > r.open.length) {
                    let e = !0;
                    for (const r of i)
                        if (t.getValueInRange(new a.a(r.lineNumber, r.column - o.open.length + 1, r.lineNumber, r.column)) + n !== o.open) {
                            e = !1;
                            break
                        } e && (r = o)
                } return r
        }
        static _findSubAutoClosingPairClose(e, t) {
            if (t.open.length <= 1) return "";
            var i = t.close.charAt(t.close.length - 1);
            let n = null;
            for (const r of e.autoClosingPairs.autoClosingPairsCloseByEnd.get(i) || []) r.open !== t.open && t.open.includes(r.open) && t.close.endsWith(r.close) && (!n || r.open.length > n.open.length) && (n = r);
            return n ? n.close : ""
        }
        static _getAutoClosingPairClose(e, t, i, r, o) {
            var a = Object(s.g)(r),
                l = a ? e.autoClosingQuotes : e.autoClosingBrackets;
            if ("never" === l) return null;
            const c = this._findAutoClosingPairOpen(e, t, i.map(e => e.getPosition()), r);
            if (!c) return null;
            var h = this._findSubAutoClosingPairClose(e, c);
            let u = !0;
            const p = a ? e.shouldAutoCloseBefore.quote : e.shouldAutoCloseBefore.bracket;
            for (let s = 0, b = i.length; s < b; s++) {
                const b = i[s];
                if (!b.isEmpty()) return null;
                var f = b.getPosition();
                const _ = t.getLineContent(f.lineNumber),
                    w = _.substring(f.column - 1);
                if (w.startsWith(h) || (u = !1), _.length > f.column - 1) {
                    var v = _.charAt(f.column - 1);
                    if (!m._isBeforeClosingBrace(e, w) && !p(v)) return null
                }
                if (!t.isCheapToTokenize(f.lineNumber)) return null;
                if (1 === c.open.length && ("'" === r || '"' === r) && "always" !== l) {
                    const t = Object(g.a)(e.wordSeparators);
                    if (o && 1 < f.column && 0 === t.get(_.charCodeAt(f.column - 2))) return null;
                    if (!o && 2 < f.column && 0 === t.get(_.charCodeAt(f.column - 3))) return null
                }
                t.forceTokenization(f.lineNumber), v = t.getLineTokens(f.lineNumber);
                let y = !1;
                try {
                    y = d.b.shouldAutoClosePair(c, v, o ? f.column : f.column - 1)
                } catch (a) {
                    Object(n.f)(a)
                }
                if (!y) return null
            }
            return u ? c.close.substring(0, c.close.length - h.length) : c.close
        }
        static _runAutoClosingOpenCharType(e, t, i, n, r, o, a) {
            let l = [];
            for (let e = 0, t = n.length; e < t; e++) {
                var d = n[e];
                l[e] = new v(d, r, o, a)
            }
            return new s.e(4, l, {
                shouldPushStackElementBefore: !0,
                shouldPushStackElementAfter: !1
            })
        }
        static _shouldSurroundChar(e, t) {
            return Object(s.g)(t) ? "quotes" === e.autoSurround || "languageDefined" === e.autoSurround : "brackets" === e.autoSurround || "languageDefined" === e.autoSurround
        }
        static _isSurroundSelectionType(e, t, i, n) {
            if (!m._shouldSurroundChar(e, n) || !e.surroundingPairs.hasOwnProperty(n)) return !1;
            var r = Object(s.g)(n);
            for (let e = 0, n = i.length; e < n; e++) {
                const n = i[e];
                if (n.isEmpty()) return !1;
                let d = !0;
                for (let e = n.startLineNumber; e <= n.endLineNumber; e++) {
                    const i = t.getLineContent(e);
                    var o = e === n.startLineNumber ? n.startColumn - 1 : 0,
                        a = e === n.endLineNumber ? n.endColumn - 1 : i.length;
                    a = i.substring(o, a);
                    if (/[^ \t]/.test(a)) {
                        d = !1;
                        break
                    }
                }
                if (d) return !1;
                if (r && n.startLineNumber === n.endLineNumber && n.startColumn + 1 === n.endColumn) {
                    var l = t.getValueInRange(n);
                    if (Object(s.g)(l)) return !1
                }
            }
            return !0
        }
        static _runSurroundSelectionType(e, t, i, n, r) {
            let o = [];
            for (let e = 0, i = n.length; e < i; e++) {
                var a = n[e],
                    l = t.surroundingPairs[r];
                o[e] = new p(a, r, l)
            }
            return new s.e(0, o, {
                shouldPushStackElementBefore: !0,
                shouldPushStackElementAfter: !0
            })
        }
        static _isTypeInterceptorElectricChar(e, t, i) {
            return !(1 !== i.length || !t.isCheapToTokenize(i[0].getEndPosition().lineNumber))
        }
        static _typeInterceptorElectricChar(e, t, i, l, c) {
            if (!t.electricChars.hasOwnProperty(c) || !l.isEmpty()) return null;
            var h = l.getPosition();
            i.forceTokenization(h.lineNumber);
            let u, p = i.getLineTokens(h.lineNumber);
            try {
                u = d.b.onElectricCharacter(c, p, h.column)
            } catch (p) {
                return Object(n.f)(p), null
            }
            if (!u) return null;
            if (u.matchOpenBracket && (l = (p.getLineContent() + c).lastIndexOf(u.matchOpenBracket) + 1, l = i.findMatchingBracketUp(u.matchOpenBracket, {
                    lineNumber: h.lineNumber,
                    column: l
                }))) {
                if (l.startLineNumber === h.lineNumber) return null;
                l = i.getLineContent(l.startLineNumber), l = r.x(l), l = t.normalizeIndentation(l);
                let n = i.getLineContent(h.lineNumber);
                return i = i.getLineFirstNonWhitespaceColumn(h.lineNumber) || h.column, c = l + n.substring(i - 1, h.column - 1) + c, h = new a.a(h.lineNumber, 1, h.lineNumber, h.column), h = new o.a(h, c), new s.e(b(c, e), [h], {
                    shouldPushStackElementBefore: !1,
                    shouldPushStackElementAfter: !0
                })
            }
            return null
        }
        static compositionEndWithInterceptors(e, t, i, n, r, d) {
            if (!n || l.a.selectionsArrEqual(n, r)) return null;
            let c = null;
            for (const e of r) {
                if (!e.isEmpty()) return null;
                var h = e.getPosition();
                h = i.getValueInRange(new a.a(h.lineNumber, h.column - 1, h.lineNumber, h.column));
                if (null === c) c = h;
                else if (c !== h) return null
            }
            if (!c) return null;
            if (this._isAutoClosingOvertype(t, i, r, d, c)) {
                var u = r.map(e => new o.a(new a.a(e.positionLineNumber, e.positionColumn, e.positionLineNumber, e.positionColumn + 1), "", !1));
                return new s.e(4, u, {
                    shouldPushStackElementBefore: !0,
                    shouldPushStackElementAfter: !1
                })
            }
            return null !== (u = this._getAutoClosingPairClose(t, i, r, c, !1)) ? this._runAutoClosingOpenCharType(e, t, i, r, c, !1, u) : null
        }
        static typeWithInterceptors(e, t, i, n, r, a, l) {
            if (!e && "\n" === l) {
                let e = [];
                for (let t = 0, o = r.length; t < o; t++) e[t] = m._enter(i, n, !1, r[t]);
                return new s.e(4, e, {
                    shouldPushStackElementBefore: !0,
                    shouldPushStackElementAfter: !1
                })
            }
            if (!e && this._isAutoIndentType(i, n, r)) {
                let e = [],
                    t = !1;
                for (let o = 0, s = r.length; o < s; o++)
                    if (e[o] = this._runAutoIndentType(i, n, r[o], l), !e[o]) {
                        t = !0;
                        break
                    } if (!t) return new s.e(4, e, {
                    shouldPushStackElementBefore: !0,
                    shouldPushStackElementAfter: !1
                })
            }
            if (!e && this._isAutoClosingOvertype(i, n, r, a, l)) return this._runAutoClosingOvertype(t, i, n, r, l);
            if (!e && (a = this._getAutoClosingPairClose(i, n, r, l, !0))) return this._runAutoClosingOpenCharType(t, i, n, r, l, !0, a);
            if (this._isSurroundSelectionType(i, n, r, l)) return this._runSurroundSelectionType(t, i, n, r, l);
            if (!e && this._isTypeInterceptorElectricChar(i, n, r)) {
                var d = this._typeInterceptorElectricChar(t, i, n, r[0], l);
                if (d) return d
            }
            let c = [];
            for (let e = 0, t = r.length; e < t; e++) c[e] = new o.a(r[e], l);
            return d = b(l, t), new s.e(d, c, {
                shouldPushStackElementBefore: _(t, d),
                shouldPushStackElementAfter: !1
            })
        }
        static typeWithoutInterceptors(e, t, i, n, r) {
            let a = [];
            for (let e = 0, t = n.length; e < t; e++) a[e] = new o.a(n[e], r);
            var l = b(r, e);
            return new s.e(l, a, {
                shouldPushStackElementBefore: _(e, l),
                shouldPushStackElementAfter: !1
            })
        }
        static lineInsertBefore(e, t, i) {
            if (null === t || null === i) return [];
            let n = [];
            for (let l = 0, d = i.length; l < d; l++) {
                var r, s = i[l].positionLineNumber;
                1 === s ? n[l] = new o.d(new a.a(1, 1, 1, 1), "\n") : (s--, r = t.getLineMaxColumn(s), n[l] = this._enter(e, t, !1, new a.a(s, r, s, r)))
            }
            return n
        }
        static lineInsertAfter(e, t, i) {
            if (null === t || null === i) return [];
            let n = [];
            for (let s = 0, l = i.length; s < l; s++) {
                var r = i[s].positionLineNumber,
                    o = t.getLineMaxColumn(r);
                n[s] = this._enter(e, t, !1, new a.a(r, o, r, o))
            }
            return n
        }
        static lineBreakInsert(e, t, i) {
            let n = [];
            for (let r = 0, o = i.length; r < o; r++) n[r] = this._enter(e, t, !0, i[r]);
            return n
        }
    }
    class v extends o.c {
        constructor(e, t, i, n) {
            super(e, (i ? t : "") + n, 0, -n.length), this._openCharacter = t, this._closeCharacter = n, this.closeCharacterRange = null, this.enclosingRange = null
        }
        computeCursorState(e, t) {
            var i = t.getInverseEditOperations()[0].range;
            return this.closeCharacterRange = new a.a(i.startLineNumber, i.endColumn - this._closeCharacter.length, i.endLineNumber, i.endColumn), this.enclosingRange = new a.a(i.startLineNumber, i.endColumn - this._openCharacter.length - this._closeCharacter.length, i.endLineNumber, i.endColumn), super.computeCursorState(e, t)
        }
    }

    function b(e, t) {
        return " " === e ? 5 === t || 6 === t ? 6 : 5 : 4
    }

    function _(e, t) {
        return !(!y(e) || y(t)) || 5 !== e && w(e) !== w(t)
    }

    function w(e) {
        return 6 === e || 5 === e ? "space" : e
    }

    function y(e) {
        return 4 === e || 5 === e || 6 === e
    }
}, function(e, t, i) {
    "use strict";
    var n = {
        name: "EscCapture",
        methods: {
            handleKeyDown: function(e) {
                27 === e.keyCode && this.$emit("esc")
            }
        },
        mounted: function() {
            this.$el.focus && this.$el.focus()
        }
    };
    i = i(30), n = Object(i.a)(n, (function() {
        var e = this.$createElement;
        return (this._self._c || e)("div", this._g({
            staticClass: "no-esc",
            attrs: {
                tabindex: "0"
            },
            on: {
                keydown: this.handleKeyDown
            }
        }, this.$listeners), [this._t("default")], 2)
    }), [], !1, null, "17e5c8db", null);
    t.a = n.exports
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    class n extends i(125).a {
        constructor(e) {
            super(0);
            for (let t = 0, i = e.length; t < i; t++) this.set(e.charCodeAt(t), 2);
            this.set(32, 1), this.set(9, 1)
        }
    }
    const r = function(e) {
        let t = {};
        return e => (t.hasOwnProperty(e) || (t[e] = (e => new n(e))(e)), t[e])
    }()
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    }));
    class n {
        constructor(e, t = [], i = !1) {
            this.ctor = e, this.staticArguments = t, this.supportsDelayedInstantiation = i
        }
    }
}, function(e, t) {
    e.exports = require("@vscode/sudo-prompt")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(75);
    class r {
        constructor(e) {
            e = Object(n.b)(e), this._defaultValue = e, this._asciiMap = r._createAsciiMap(e), this._map = new Map
        }
        static _createAsciiMap(e) {
            let t = new Uint8Array(256);
            for (let i = 0; i < 256; i++) t[i] = e;
            return t
        }
        set(e, t) {
            t = Object(n.b)(t), 0 <= e && e < 256 ? this._asciiMap[e] = t : this._map.set(e, t)
        }
        get(e) {
            return 0 <= e && e < 256 ? this._asciiMap[e] : this._map.get(e) || this._defaultValue
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return r
    })), i.d(t, "c", (function() {
        return s
    })), i.d(t, "a", (function() {
        return c
    }));
    var n = i(6);

    function r(e, t) {
        switch (typeof e) {
            case "object":
                return null === e ? o(349, t) : Array.isArray(e) ? (n = o(104579, n = t), e.reduce((e, t) => r(t, e), n)) : (i = e, n = o(181387, n = t), Object.keys(i).sort().reduce((e, t) => (e = s(t, e), r(i[t], e)), n));
            case "string":
                return s(e, t);
            case "boolean":
                return o(e ? 433 : 863, t);
            case "number":
                return o(e, t);
            case "undefined":
                return o(937, t);
            default:
                return o(617, t)
        }
        var i, n
    }

    function o(e, t) {
        return (t << 5) - t + e | 0
    }

    function s(e, t) {
        t = o(149417, t);
        for (let i = 0, n = e.length; i < n; i++) t = o(e.charCodeAt(i), t);
        return t
    }

    function a(e, t, i = 32) {
        return (e << t | (~((1 << (i -= t)) - 1) & e) >>> i) >>> 0
    }

    function l(e, t = 0, i = e.byteLength, n = 0) {
        for (let r = 0; r < i; r++) e[t + r] = n
    }

    function d(e, t = 32) {
        return e instanceof ArrayBuffer ? Array.from(new Uint8Array(e)).map(e => e.toString(16).padStart(2, "0")).join("") : function(e, t, i = "0") {
            for (; e.length < t;) e = i + e;
            return e
        }((e >>> 0).toString(16), t / 4)
    }
    class c {
        constructor() {
            this._h0 = 1732584193, this._h1 = 4023233417, this._h2 = 2562383102, this._h3 = 271733878, this._h4 = 3285377520, this._buff = new Uint8Array(67), this._buffDV = new DataView(this._buff.buffer), this._buffLen = 0, this._totalLen = 0, this._leftoverHighSurrogate = 0, this._finished = !1
        }
        update(e) {
            var t = e.length;
            if (0 !== t) {
                var i = this._buff;
                let o, s, a = this._buffLen,
                    l = this._leftoverHighSurrogate;
                for (0 !== l ? (o = l, s = -1, l = 0) : (o = e.charCodeAt(0), s = 0);;) {
                    let d = o;
                    if (n.E(o)) {
                        if (!(s + 1 < t)) {
                            l = o;
                            break
                        }
                        var r = e.charCodeAt(s + 1);
                        d = n.F(r) ? (s++, n.j(o, r)) : 65533
                    } else n.F(o) && (d = 65533);
                    if (a = this._push(i, a, d), s++, !(s < t)) break;
                    o = e.charCodeAt(s)
                }
                this._buffLen = a, this._leftoverHighSurrogate = l
            }
        }
        _push(e, t, i) {
            return i < 128 ? e[t++] = i : (i < 2048 ? e[t++] = 192 | (1984 & i) >>> 6 : (i < 65536 ? e[t++] = 224 | (61440 & i) >>> 12 : (e[t++] = 240 | (1835008 & i) >>> 18, e[t++] = 128 | (258048 & i) >>> 12), e[t++] = 128 | (4032 & i) >>> 6), e[t++] = 128 | (63 & i) >>> 0), 64 <= t && (this._step(), t -= 64, this._totalLen += 64, e[0] = e[64], e[1] = e[65], e[2] = e[66]), t
        }
        digest() {
            return this._finished || (this._finished = !0, this._leftoverHighSurrogate && (this._leftoverHighSurrogate = 0, this._buffLen = this._push(this._buff, this._buffLen, 65533)), this._totalLen += this._buffLen, this._wrapUp()), d(this._h0) + d(this._h1) + d(this._h2) + d(this._h3) + d(this._h4)
        }
        _wrapUp() {
            this._buff[this._buffLen++] = 128, l(this._buff, this._buffLen), 56 < this._buffLen && (this._step(), l(this._buff));
            var e = 8 * this._totalLen;
            this._buffDV.setUint32(56, Math.floor(e / 4294967296), !1), this._buffDV.setUint32(60, e % 4294967296, !1), this._step()
        }
        _step() {
            const e = c._bigBlock32,
                t = this._buffDV;
            for (let i = 0; i < 64; i += 4) e.setUint32(i, t.getUint32(i, !1), !1);
            for (let t = 64; t < 320; t += 4) e.setUint32(t, a(e.getUint32(t - 12, !1) ^ e.getUint32(t - 32, !1) ^ e.getUint32(t - 56, !1) ^ e.getUint32(t - 64, !1), 1), !1);
            let i, n, r = this._h0,
                o = this._h1,
                s = this._h2,
                l = this._h3,
                d = this._h4;
            var h;
            for (let t = 0; t < 80; t++) n = t < 20 ? (i = o & s | ~o & l, 1518500249) : t < 40 ? (i = o ^ s ^ l, 1859775393) : t < 60 ? (i = o & s | o & l | s & l, 2400959708) : (i = o ^ s ^ l, 3395469782), h = a(r, 5) + i + d + n + e.getUint32(4 * t, !1) & 4294967295, d = l, l = s, s = a(o, 30), o = r, r = h;
            this._h0 = this._h0 + r & 4294967295, this._h1 = this._h1 + o & 4294967295, this._h2 = this._h2 + s & 4294967295, this._h3 = this._h3 + l & 4294967295, this._h4 = this._h4 + d & 4294967295
        }
    }
    c._bigBlock32 = new DataView(new ArrayBuffer(320))
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return h
    }));
    var n = i(165),
        r = i.n(n),
        o = i(77),
        s = i(146),
        a = i(157),
        l = i(19);

    function d(e, t) {
        var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!i) {
            if (Array.isArray(e) || (i = function(e, t) {
                    if (e) {
                        if ("string" == typeof e) return c(e, t);
                        var i = Object.prototype.toString.call(e).slice(8, -1);
                        return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? c(e, t) : void 0
                    }
                }(e)) || t && e && "number" == typeof e.length) {
                i && (e = i);
                var n = 0;
                return {
                    s: t = function() {},
                    n: function() {
                        return n >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[n++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: t
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var r, o = !0,
            s = !1;
        return {
            s: function() {
                i = i.call(e)
            },
            n: function() {
                var e = i.next();
                return o = e.done, e
            },
            e: function(e) {
                s = !0, r = e
            },
            f: function() {
                try {
                    o || null == i.return || i.return()
                } finally {
                    if (s) throw r
                }
            }
        }
    }

    function c(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }
    var h = function() {
        var e = [],
            t = Object(s.networkInterfaces)();
        return Object.keys(t).forEach((function(i) {
            t[i].forEach((function(t) {
                !0 !== t.internal && "IPv6" !== t.family && e.push({
                    name: i,
                    address: t.address
                })
            }))
        })), e
    };
    t.a = function() {
        if (Object(l.i)()) {
            var e = Object(o.execSync)("netstat -nr | grep default ").toString().split("\n").map((function(e) {
                    return e.split(/\s+/).filter((function(e) {
                        return e
                    }))
                })).filter((function(e) {
                    return 4 === e.length && Object(a.isIPv4)(e[1])
                })),
                t = Object(s.networkInterfaces)();
            if (0 < e.length) {
                var i, n = d(e);
                try {
                    for (n.s(); !(i = n.n()).done;) {
                        var c = i.value[3];
                        if (Object.keys(t).includes(c)) return c
                    }
                } catch (e) {
                    n.e(e)
                } finally {
                    n.f()
                }
            }
            if (Object.keys(t).includes("en0")) return "en0"
        } else if (Object(l.j)()) {
            e = Object(o.execSync)("route print 0.0.0.0 mask 0.0.0.0", {
                windowsHide: !0
            }).toString().split("\n").map((function(e) {
                return e.split(/\s+/).filter((function(e) {
                    return e
                }))
            })).filter((function(e) {
                return 5 === e.length && e.slice(0, 4).every((function(e) {
                    return Object(a.isIP)(e)
                })) && NaN !== parseInt(e[4])
            }));
            var h = Object(s.networkInterfaces)();
            if (delete h["cfw-tap"], 0 < e.length) {
                var u, p = d(e.sort((function(e, t) {
                    return parseInt(e[4]) - parseInt(t[4])
                })));
                try {
                    for (p.s(); !(u = p.n()).done;) {
                        var g = function() {
                            for (var e = u.value[3], t = 0, i = Object.keys(h); t < i.length; t++) {
                                var n = i[t];
                                if (h[n].find((function(t) {
                                        return t.address === e
                                    }))) return {
                                    v: n
                                }
                            }
                        }();
                        if ("object" === r()(g)) return g.v
                    }
                } catch (e) {
                    p.e(e)
                } finally {
                    p.f()
                }
            }
            if (Object.keys(h).includes("以太网")) return "以太网";
            if (Object.keys(h).includes("WLAN")) return "WLAN"
        }
        return null
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return a
    }));
    var n = i(106),
        r = i(9),
        o = i(46);
    i = i(58);
    class s {
        constructor() {
            this._coreKeybindings = [], this._extensionKeybindings = [], this._cachedMergedKeybindings = null
        }
        static bindToCurrentPlatform(e) {
            if (1 === r.a) {
                if (e && e.win) return e.win
            } else if (2 === r.a) {
                if (e && e.mac) return e.mac
            } else if (e && e.linux) return e.linux;
            return e
        }
        registerKeybindingRule(e) {
            var t, i = s.bindToCurrentPlatform(e);
            if (i && i.primary && (t = Object(n.e)(i.primary, r.a)) && this._registerDefaultKeybinding(t, e.id, e.args, e.weight, 0, e.when), i && Array.isArray(i.secondary))
                for (let t = 0, s = i.secondary.length; t < s; t++) {
                    var o = i.secondary[t];
                    (o = Object(n.e)(o, r.a)) && this._registerDefaultKeybinding(o, e.id, e.args, e.weight, -t - 1, e.when)
                }
        }
        registerCommandAndKeybindingRule(e) {
            this.registerKeybindingRule(e), o.a.registerCommand(e)
        }
        static _mightProduceChar(e) {
            return 21 <= e && e <= 30 || 31 <= e && e <= 56 || 80 === e || 81 === e || 82 === e || 83 === e || 84 === e || 85 === e || 86 === e || 110 === e || 111 === e || 87 === e || 88 === e || 89 === e || 90 === e || 91 === e || 92 === e
        }
        _assertNoCtrlAlt(e, t) {
            e.ctrlKey && e.altKey && !e.metaKey && s._mightProduceChar(e.keyCode) && console.warn("Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ", e, " for ", t)
        }
        _registerDefaultKeybinding(e, t, i, n, o, s) {
            1 === r.a && this._assertNoCtrlAlt(e.parts[0], t), this._coreKeybindings.push({
                keybinding: e.parts,
                command: t,
                commandArgs: i,
                when: s,
                weight1: n,
                weight2: o,
                extensionId: null,
                isBuiltinExtension: !1
            }), this._cachedMergedKeybindings = null
        }
        getDefaultKeybindings() {
            return this._cachedMergedKeybindings || (this._cachedMergedKeybindings = [].concat(this._coreKeybindings).concat(this._extensionKeybindings), this._cachedMergedKeybindings.sort(l)), this._cachedMergedKeybindings.slice(0)
        }
    }
    const a = new s;

    function l(e, t) {
        return e.weight1 !== t.weight1 ? e.weight1 - t.weight1 : e.command < t.command ? -1 : e.command > t.command ? 1 : e.weight2 - t.weight2
    }
    i.a.add("platform.keybindingsRegistry", a)
}, function(e, t, i) {
    "use strict";
    i.d(t, "c", (function() {
        return c
    })), i.d(t, "a", (function() {
        return v
    })), i.d(t, "b", (function() {
        return y
    }));
    var n = i(31),
        r = i(2),
        o = (t = i(4), i(9)),
        s = i(17),
        a = i(6);
    const l = "$initialize";
    let d = !1;

    function c(e) {
        o.h && (d || (d = !0, console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")), console.warn(e.message))
    }
    class h {
        constructor(e, t, i, n) {
            this.vsWorker = e, this.req = t, this.method = i, this.args = n, this.type = 0
        }
    }
    class u {
        constructor(e, t, i, n) {
            this.vsWorker = e, this.seq = t, this.res = i, this.err = n, this.type = 1
        }
    }
    class p {
        constructor(e, t, i, n) {
            this.vsWorker = e, this.req = t, this.eventName = i, this.arg = n, this.type = 2
        }
    }
    class g {
        constructor(e, t, i) {
            this.vsWorker = e, this.req = t, this.event = i, this.type = 3
        }
    }
    class f {
        constructor(e, t) {
            this.vsWorker = e, this.req = t, this.type = 4
        }
    }
    class m {
        constructor(e) {
            this._workerId = -1, this._handler = e, this._lastSentReq = 0, this._pendingReplies = Object.create(null), this._pendingEmitters = new Map, this._pendingEvents = new Map
        }
        setWorkerId(e) {
            this._workerId = e
        }
        sendMessage(e, t) {
            const i = String(++this._lastSentReq);
            return new Promise((n, r) => {
                this._pendingReplies[i] = {
                    resolve: n,
                    reject: r
                }, this._send(new h(this._workerId, i, e, t))
            })
        }
        listen(e, t) {
            let i = null;
            const n = new r.b({
                onFirstListenerAdd: () => {
                    i = String(++this._lastSentReq), this._pendingEmitters.set(i, n), this._send(new p(this._workerId, i, e, t))
                },
                onLastListenerRemove: () => {
                    this._pendingEmitters.delete(i), this._send(new f(this._workerId, i)), i = null
                }
            });
            return n.event
        }
        handleMessage(e) {
            e && e.vsWorker && (-1 !== this._workerId && e.vsWorker !== this._workerId || this._handleMessage(e))
        }
        _handleMessage(e) {
            switch (e.type) {
                case 1:
                    return this._handleReplyMessage(e);
                case 0:
                    return this._handleRequestMessage(e);
                case 2:
                    return this._handleSubscribeEventMessage(e);
                case 3:
                    return this._handleEventMessage(e);
                case 4:
                    return this._handleUnsubscribeEventMessage(e)
            }
        }
        _handleReplyMessage(e) {
            if (this._pendingReplies[e.seq]) {
                let t = this._pendingReplies[e.seq];
                if (delete this._pendingReplies[e.seq], e.err) {
                    let i = e.err;
                    return e.err.$isError && (i = new Error, i.name = e.err.name, i.message = e.err.message, i.stack = e.err.stack), void t.reject(i)
                }
                t.resolve(e.res)
            } else console.warn("Got reply to unknown seq")
        }
        _handleRequestMessage(e) {
            let t = e.req;
            this._handler.handleMessage(e.method, e.args).then(e => {
                this._send(new u(this._workerId, t, e, void 0))
            }, e => {
                e.detail instanceof Error && (e.detail = Object(n.h)(e.detail)), this._send(new u(this._workerId, t, void 0, Object(n.h)(e)))
            })
        }
        _handleSubscribeEventMessage(e) {
            const t = e.req;
            e = this._handler.handleEvent(e.eventName, e.arg)(e => {
                this._send(new g(this._workerId, t, e))
            }), this._pendingEvents.set(t, e)
        }
        _handleEventMessage(e) {
            this._pendingEmitters.has(e.req) ? this._pendingEmitters.get(e.req).fire(e.event) : console.warn("Got event for unknown req")
        }
        _handleUnsubscribeEventMessage(e) {
            this._pendingEvents.has(e.req) ? (this._pendingEvents.get(e.req).dispose(), this._pendingEvents.delete(e.req)) : console.warn("Got unsubscribe for unknown req")
        }
        _send(e) {
            let t = [];
            if (0 === e.type)
                for (let i = 0; i < e.args.length; i++) e.args[i] instanceof ArrayBuffer && t.push(e.args[i]);
            else 1 === e.type && e.res instanceof ArrayBuffer && t.push(e.res);
            this._handler.sendMessage(e, t)
        }
    }
    class v extends t.a {
        constructor(e, t, i) {
            super();
            let n = null;
            this._worker = this._register(e.create("vs/base/common/worker/simpleWorker", e => {
                this._protocol.handleMessage(e)
            }, e => {
                n && n(e)
            })), this._protocol = new m({
                sendMessage: (e, t) => {
                    this._worker.postMessage(e, t)
                },
                handleMessage: (e, t) => {
                    if ("function" != typeof i[e]) return Promise.reject(new Error("Missing method " + e + " on main thread host."));
                    try {
                        return Promise.resolve(i[e].apply(i, t))
                    } catch (e) {
                        return Promise.reject(e)
                    }
                },
                handleEvent: (e, t) => {
                    if (_(e)) {
                        var n = i[e].call(i, t);
                        if ("function" != typeof n) throw new Error(`Missing dynamic event ${e} on main thread host.`);
                        return n
                    }
                    if (b(e)) {
                        if ("function" != typeof(n = i[e])) throw new Error(`Missing event ${e} on main thread host.`);
                        return n
                    }
                    throw new Error("Malformed event name " + e)
                }
            }), this._protocol.setWorkerId(this._worker.getId());
            let r = null;
            void 0 !== o.b.require && "function" == typeof o.b.require.getConfig ? r = o.b.require.getConfig() : void 0 !== o.b.requirejs && (r = o.b.requirejs.s.contexts._.config), e = s.d(i), this._onModuleLoaded = this._protocol.sendMessage(l, [this._worker.getId(), JSON.parse(JSON.stringify(r)), t, e]);
            const a = (e, t) => this._request(e, t),
                d = (e, t) => this._protocol.listen(e, t);
            this._lazyProxy = new Promise((e, i) => {
                n = i, this._onModuleLoaded.then(t => {
                    e(w(t, a, d))
                }, e => {
                    i(e), this._onError("Worker failed to load " + t, e)
                })
            })
        }
        getProxyObject() {
            return this._lazyProxy
        }
        _request(e, t) {
            return new Promise((i, n) => {
                this._onModuleLoaded.then(() => {
                    this._protocol.sendMessage(e, t).then(i, n)
                }, n)
            })
        }
        _onError(e, t) {
            console.error(e), console.info(t)
        }
    }

    function b(e) {
        return "o" === e[0] && "n" === e[1] && a.H(e.charCodeAt(2))
    }

    function _(e) {
        return /^onDynamic/.test(e) && a.H(e.charCodeAt(9))
    }

    function w(e, t, i) {
        let n = {};
        for (const r of e) _(r) ? n[r] = (e => function(t) {
            return i(e, t)
        })(r) : b(r) ? n[r] = i(r, void 0) : n[r] = (e => function() {
            var i = Array.prototype.slice.call(arguments, 0);
            return t(e, i)
        })(r);
        return n
    }
    class y {
        constructor(e, t) {
            this._requestHandlerFactory = t, this._requestHandler = null, this._protocol = new m({
                sendMessage: (t, i) => {
                    e(t, i)
                },
                handleMessage: (e, t) => this._handleMessage(e, t),
                handleEvent: (e, t) => this._handleEvent(e, t)
            })
        }
        onmessage(e) {
            this._protocol.handleMessage(e)
        }
        _handleMessage(e, t) {
            if (e === l) return this.initialize(t[0], t[1], t[2], t[3]);
            if (!this._requestHandler || "function" != typeof this._requestHandler[e]) return Promise.reject(new Error("Missing requestHandler or method: " + e));
            try {
                return Promise.resolve(this._requestHandler[e].apply(this._requestHandler, t))
            } catch (e) {
                return Promise.reject(e)
            }
        }
        _handleEvent(e, t) {
            if (!this._requestHandler) throw new Error("Missing requestHandler");
            if (_(e)) {
                var i = this._requestHandler[e].call(this._requestHandler, t);
                if ("function" != typeof i) throw new Error(`Missing dynamic event ${e} on request handler.`);
                return i
            }
            if (b(e)) {
                if ("function" != typeof(i = this._requestHandler[e])) throw new Error(`Missing event ${e} on request handler.`);
                return i
            }
            throw new Error("Malformed event name " + e)
        }
        initialize(e, t, i, n) {
            this._protocol.setWorkerId(e);
            const r = w(n, (e, t) => this._protocol.sendMessage(e, t), (e, t) => this._protocol.listen(e, t));
            return this._requestHandlerFactory ? (this._requestHandler = this._requestHandlerFactory(r), Promise.resolve(s.d(this._requestHandler))) : (t && (void 0 !== t.baseUrl && delete t.baseUrl, void 0 !== t.paths && void 0 !== t.paths.vs && delete t.paths.vs, t.trustedTypesPolicy, delete t.trustedTypesPolicy, t.catchError = !0, o.b.require.config(t)), new Promise((e, t) => {
                (0, o.b.require)([i], i => {
                    this._requestHandler = i.create(r), this._requestHandler ? e(s.d(this._requestHandler)) : t(new Error("No RequestHandler!"))
                }, t)
            }))
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return g
    })), i.d(t, "a", (function() {
        return f
    }));
    var n = i(0),
        r = i(31),
        o = i(36),
        s = i(39),
        a = i(159),
        l = i(59),
        d = i(140);

    function c(e) {
        return e.toString()
    }
    class h {
        constructor(e, t, i, n, r, o, s) {
            this.beforeVersionId = e, this.afterVersionId = t, this.beforeEOL = i, this.afterEOL = n, this.beforeCursorState = r, this.afterCursorState = o, this.changes = s
        }
        static create(e, t) {
            var i = e.getAlternativeVersionId();
            e = p(e);
            return new h(i, i, e, e, t, t, [])
        }
        append(e, t, i, n, r) {
            0 < t.length && (this.changes = Object(a.b)(this.changes, t)), this.afterEOL = i, this.afterVersionId = n, this.afterCursorState = r
        }
        static _writeSelectionsSize(e) {
            return 4 + 16 * (e ? e.length : 0)
        }
        static _writeSelections(e, t, i) {
            if (l.f(e, t ? t.length : 0, i), i += 4, t)
                for (const n of t) l.f(e, n.selectionStartLineNumber, i), i += 4, l.f(e, n.selectionStartColumn, i), i += 4, l.f(e, n.positionLineNumber, i), i += 4, l.f(e, n.positionColumn, i), i += 4;
            return i
        }
        static _readSelections(e, t, i) {
            var n = l.c(e, t);
            t += 4;
            for (let c = 0; c < n; c++) {
                var r = l.c(e, t);
                t += 4;
                var s = l.c(e, t);
                t += 4;
                var a = l.c(e, t);
                t += 4;
                var d = l.c(e, t);
                t += 4, i.push(new o.a(r, s, a, d))
            }
            return t
        }
        serialize() {
            let e = 10 + h._writeSelectionsSize(this.beforeCursorState) + h._writeSelectionsSize(this.afterCursorState) + 4;
            for (const t of this.changes) e += t.writeSize();
            var t = new Uint8Array(e);
            let i = 0;
            l.f(t, this.beforeVersionId, i), i += 4, l.f(t, this.afterVersionId, i), i += 4, l.g(t, this.beforeEOL, i), i += 1, l.g(t, this.afterEOL, i), i += 1, i = h._writeSelections(t, this.beforeCursorState, i), i = h._writeSelections(t, this.afterCursorState, i), l.f(t, this.changes.length, i), i += 4;
            for (const e of this.changes) i = e.write(t, i);
            return t.buffer
        }
        static deserialize(e) {
            var t = new Uint8Array(e);
            let i = 0;
            var n = l.c(t, i);
            i += 4;
            var r = l.c(t, i);
            i += 4;
            var o = l.d(t, i);
            i += 1;
            var s = l.d(t, i);
            i += 1;
            var d = [];
            i = h._readSelections(t, i, d), e = [], i = h._readSelections(t, i, e);
            var c = l.c(t, i);
            i += 4;
            var u = [];
            for (let e = 0; e < c; e++) i = a.a.read(t, i, u);
            return new h(n, r, o, s, d, e, u)
        }
    }
    class u {
        constructor(e, t) {
            this.model = e, this._data = h.create(e, t)
        }
        get type() {
            return 0
        }
        get resource() {
            return s.a.isUri(this.model) ? this.model : this.model.uri
        }
        get label() {
            return n.a("编辑", "Typing")
        }
        toString() {
            return (this._data instanceof h ? this._data : h.deserialize(this._data)).changes.map(e => e.toString()).join(", ")
        }
        matchesResource(e) {
            return (s.a.isUri(this.model) ? this.model : this.model.uri).toString() === e.toString()
        }
        setModel(e) {
            this.model = e
        }
        canAppend(e) {
            "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
            return this.model === e && this._data instanceof h
        }
        append(e, t, i, n, r) {
            this._data instanceof h && this._data.append(e, t, i, n, r)
        }
        close() {
            this._data instanceof h && (this._data = this._data.serialize())
        }
        open() {
            this._data instanceof h || (this._data = h.deserialize(this._data))
        }
        undo() {
            if (s.a.isUri(this.model)) throw new Error("Invalid SingleModelEditStackElement");
            this._data instanceof h && (this._data = this._data.serialize());
            var e = h.deserialize(this._data);
            this.model._applyUndo(e.changes, e.beforeEOL, e.beforeVersionId, e.beforeCursorState)
        }
        redo() {
            if (s.a.isUri(this.model)) throw new Error("Invalid SingleModelEditStackElement");
            this._data instanceof h && (this._data = this._data.serialize());
            var e = h.deserialize(this._data);
            this.model._applyRedo(e.changes, e.afterEOL, e.afterVersionId, e.afterCursorState)
        }
        heapSize() {
            return this._data instanceof h && (this._data = this._data.serialize()), this._data.byteLength + 168
        }
    }

    function p(e) {
        return "\n" === e.getEOL() ? 0 : 1
    }

    function g(e) {
        return !!e && (e instanceof u || e instanceof class {
            constructor(e, t) {
                this.type = 1, this.label = e, this._isOpen = !0, this._editStackElementsArr = t.slice(0), this._editStackElementsMap = new Map;
                for (const e of this._editStackElementsArr) {
                    var i = c(e.resource);
                    this._editStackElementsMap.set(i, e)
                }
                this._delegate = null
            }
            get resources() {
                return this._editStackElementsArr.map(e => e.resource)
            }
            prepareUndoRedo() {
                if (this._delegate) return this._delegate.prepareUndoRedo(this)
            }
            matchesResource(e) {
                return e = c(e), this._editStackElementsMap.has(e)
            }
            setModel(e) {
                var t = c(s.a.isUri(e) ? e : e.uri);
                this._editStackElementsMap.has(t) && this._editStackElementsMap.get(t).setModel(e)
            }
            canAppend(e) {
                if (!this._isOpen) return !1;
                var t = c(e.uri);
                if (this._editStackElementsMap.has(t)) {
                    return this._editStackElementsMap.get(t).canAppend(e)
                }
                return !1
            }
            append(e, t, i, n, r) {
                var o = c(e.uri);
                this._editStackElementsMap.get(o).append(e, t, i, n, r)
            }
            close() {
                this._isOpen = !1
            }
            open() {}
            undo() {
                this._isOpen = !1;
                for (const e of this._editStackElementsArr) e.undo()
            }
            redo() {
                for (const e of this._editStackElementsArr) e.redo()
            }
            heapSize(e) {
                if (e = c(e), this._editStackElementsMap.has(e)) {
                    return this._editStackElementsMap.get(e).heapSize()
                }
                return 0
            }
            split() {
                return this._editStackElementsArr
            }
            toString() {
                let e = [];
                for (const t of this._editStackElementsArr) e.push(`${Object(d.b)(t.resource)}: ${t}`);
                return `{${e.join(", ")}}`
            }
        })
    }
    class f {
        constructor(e, t) {
            this._model = e, this._undoRedoService = t
        }
        pushStackElement() {
            const e = this._undoRedoService.getLastElement(this._model.uri);
            g(e) && e.close()
        }
        popStackElement() {
            const e = this._undoRedoService.getLastElement(this._model.uri);
            g(e) && e.open()
        }
        clear() {
            this._undoRedoService.removeElements(this._model.uri)
        }
        _getOrCreateEditStackElement(e) {
            const t = this._undoRedoService.getLastElement(this._model.uri);
            return g(t) && t.canAppend(this._model) ? t : (e = new u(this._model, e), this._undoRedoService.pushElement(e), e)
        }
        pushEOL(e) {
            const t = this._getOrCreateEditStackElement(null);
            this._model.setEOL(e), t.append(this._model, [], p(this._model), this._model.getAlternativeVersionId(), null)
        }
        pushEditOperation(e, t, i) {
            const n = this._getOrCreateEditStackElement(e),
                r = this._model.applyEdits(t, !0);
            i = f._computeCursorState(i, r);
            const o = r.map((e, t) => ({
                index: t,
                textChange: e.textChange
            }));
            return o.sort((e, t) => e.textChange.oldPosition === t.textChange.oldPosition ? e.index - t.index : e.textChange.oldPosition - t.textChange.oldPosition), n.append(this._model, o.map(e => e.textChange), p(this._model), this._model.getAlternativeVersionId(), i), i
        }
        static _computeCursorState(e, t) {
            try {
                return e ? e(t) : null
            } catch (e) {
                return Object(r.f)(e), null
            }
        }
    }
}, function(e, t) {
    e.exports = require("vuedraggable")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return o
    })), i.d(t, "a", (function() {
        return s
    }));
    var n = i(123);
    const r = [];

    function o(e, t, i) {
        t instanceof n.a || (t = new n.a(t, [], i)), r.push([e, t])
    }

    function s() {
        return r
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return o
    }));
    var n = i(2);
    class r {
        constructor(e, t, i, n, r, o) {
            this._scrollStateBrand = void 0, e |= 0, n |= 0, r |= 0, o |= 0, (i = (t |= 0) < (this.rawScrollLeft = i |= 0) + (e = e < 0 ? 0 : e) ? t - e : i) < 0 && (i = 0), (o = r < (this.rawScrollTop = o) + (n = n < 0 ? 0 : n) ? r - n : o) < 0 && (o = 0), this.width = e, this.scrollWidth = t, this.scrollLeft = i, this.height = n, this.scrollHeight = r, this.scrollTop = o
        }
        equals(e) {
            return this.rawScrollLeft === e.rawScrollLeft && this.rawScrollTop === e.rawScrollTop && this.width === e.width && this.scrollWidth === e.scrollWidth && this.scrollLeft === e.scrollLeft && this.height === e.height && this.scrollHeight === e.scrollHeight && this.scrollTop === e.scrollTop
        }
        withScrollDimensions(e, t) {
            return new r((void 0 !== e.width ? e : this).width, (void 0 !== e.scrollWidth ? e : this).scrollWidth, t ? this.rawScrollLeft : this.scrollLeft, (void 0 !== e.height ? e : this).height, (void 0 !== e.scrollHeight ? e : this).scrollHeight, t ? this.rawScrollTop : this.scrollTop)
        }
        withScrollPosition(e) {
            return new r(this.width, this.scrollWidth, void 0 !== e.scrollLeft ? e.scrollLeft : this.rawScrollLeft, this.height, this.scrollHeight, void 0 !== e.scrollTop ? e.scrollTop : this.rawScrollTop)
        }
        createScrollEvent(e, t) {
            var i = this.width !== e.width,
                n = this.scrollWidth !== e.scrollWidth,
                r = this.scrollLeft !== e.scrollLeft,
                o = this.height !== e.height,
                s = this.scrollHeight !== e.scrollHeight,
                a = this.scrollTop !== e.scrollTop;
            return {
                inSmoothScrolling: t,
                oldWidth: e.width,
                oldScrollWidth: e.scrollWidth,
                oldScrollLeft: e.scrollLeft,
                width: this.width,
                scrollWidth: this.scrollWidth,
                scrollLeft: this.scrollLeft,
                oldHeight: e.height,
                oldScrollHeight: e.scrollHeight,
                oldScrollTop: e.scrollTop,
                height: this.height,
                scrollHeight: this.scrollHeight,
                scrollTop: this.scrollTop,
                widthChanged: i,
                scrollWidthChanged: n,
                scrollLeftChanged: r,
                heightChanged: o,
                scrollHeightChanged: s,
                scrollTopChanged: a
            }
        }
    }
    class o extends i(4).a {
        constructor(e, t) {
            super(), this._scrollableBrand = void 0, this._onScroll = this._register(new n.b), this.onScroll = this._onScroll.event, this._smoothScrollDuration = e, this._scheduleAtNextAnimationFrame = t, this._state = new r(0, 0, 0, 0, 0, 0), this._smoothScrolling = null
        }
        dispose() {
            this._smoothScrolling && (this._smoothScrolling.dispose(), this._smoothScrolling = null), super.dispose()
        }
        setSmoothScrollDuration(e) {
            this._smoothScrollDuration = e
        }
        validateScrollPosition(e) {
            return this._state.withScrollPosition(e)
        }
        getScrollDimensions() {
            return this._state
        }
        setScrollDimensions(e, t) {
            t = this._state.withScrollDimensions(e, t), this._setState(t, Boolean(this._smoothScrolling)), this._smoothScrolling && this._smoothScrolling.acceptScrollDimensions(this._state)
        }
        getFutureScrollPosition() {
            return this._smoothScrolling ? this._smoothScrolling.to : this._state
        }
        getCurrentScrollPosition() {
            return this._state
        }
        setScrollPositionNow(e) {
            e = this._state.withScrollPosition(e), this._smoothScrolling && (this._smoothScrolling.dispose(), this._smoothScrolling = null), this._setState(e, !1)
        }
        setScrollPositionSmooth(e, t) {
            if (0 === this._smoothScrollDuration) return this.setScrollPositionNow(e);
            if (this._smoothScrolling) {
                e = {
                    scrollLeft: (void 0 === e.scrollLeft ? this._smoothScrolling.to : e).scrollLeft,
                    scrollTop: (void 0 === e.scrollTop ? this._smoothScrolling.to : e).scrollTop
                };
                var i = this._state.withScrollPosition(e);
                if (this._smoothScrolling.to.scrollLeft === i.scrollLeft && this._smoothScrolling.to.scrollTop === i.scrollTop) return;
                let n;
                n = t ? new l(this._smoothScrolling.from, i, this._smoothScrolling.startTime, this._smoothScrolling.duration) : this._smoothScrolling.combine(this._state, i, this._smoothScrollDuration), this._smoothScrolling.dispose(), this._smoothScrolling = n
            } else e = this._state.withScrollPosition(e), this._smoothScrolling = l.start(this._state, e, this._smoothScrollDuration);
            this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {
                this._smoothScrolling && (this._smoothScrolling.animationFrameDisposable = null, this._performSmoothScrolling())
            })
        }
        _performSmoothScrolling() {
            if (this._smoothScrolling) {
                var e = this._smoothScrolling.tick(),
                    t = this._state.withScrollPosition(e);
                if (this._setState(t, !0), this._smoothScrolling) return e.isDone ? (this._smoothScrolling.dispose(), void(this._smoothScrolling = null)) : void(this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {
                    this._smoothScrolling && (this._smoothScrolling.animationFrameDisposable = null, this._performSmoothScrolling())
                }))
            }
        }
        _setState(e, t) {
            const i = this._state;
            i.equals(e) || (this._state = e, this._onScroll.fire(this._state.createScrollEvent(i, t)))
        }
    }
    class s {
        constructor(e, t, i) {
            this.scrollLeft = e, this.scrollTop = t, this.isDone = i
        }
    }

    function a(e, t) {
        const i = t - e;
        return function(t) {
            return e + i * (1 - function(e) {
                return Math.pow(e, 3)
            }(1 - t))
        }
    }
    class l {
        constructor(e, t, i, n) {
            this.from = e, this.to = t, this.duration = n, this.startTime = i, this.animationFrameDisposable = null, this._initAnimations()
        }
        _initAnimations() {
            this.scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width), this.scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height)
        }
        _initAnimation(e, t, i) {
            var n, r, o;
            if (2.5 * i < Math.abs(e - t)) {
                let s, l;
                return l = e < t ? (s = e + .75 * i, t - .75 * i) : (s = e - .75 * i, t + .75 * i), n = a(e, s), r = a(l, t), o = .33,
                    function(e) {
                        return e < o ? n(e / o) : r((e - o) / (1 - o))
                    }
            }
            return a(e, t)
        }
        dispose() {
            null !== this.animationFrameDisposable && (this.animationFrameDisposable.dispose(), this.animationFrameDisposable = null)
        }
        acceptScrollDimensions(e) {
            this.to = e.withScrollPosition(this.to), this._initAnimations()
        }
        tick() {
            return this._tick(Date.now())
        }
        _tick(e) {
            var t = (e - this.startTime) / this.duration;
            return t < 1 ? (e = this.scrollLeft(t), t = this.scrollTop(t), new s(e, t, !1)) : new s(this.to.scrollLeft, this.to.scrollTop, !0)
        }
        combine(e, t, i) {
            return l.start(e, t, i)
        }
        static start(e, t, i) {
            i += 10;
            var n = Date.now() - 10;
            return new l(e, t, n, i)
        }
    }
}, function(e, t, i) {
    "use strict";
    var n = {
        name: "HintView",
        props: {
            hint: {
                type: String,
                required: !0
            },
            position: {
                type: String,
                default: "top",
                validate: function(e) {
                    return ["top", "bottom", "left", "right"].includes(e)
                }
            }
        },
        data: function() {
            return {
                timeoutID: null,
                isShowHint: !1
            }
        },
        computed: {},
        methods: {
            startCounting: function() {
                var e = this;
                this.timeoutID = setTimeout((function() {
                    e.isShowHint = !0
                }), 1e3)
            },
            stopCounting: function() {
                this.timeoutID && (clearTimeout(this.timeoutID), this.timeoutID = null, this.isShowHint = !1)
            }
        },
        updated: function() {
            var e = this;
            this.$nextTick((function() {
                try {
                    var t = e.$refs.hint.getBoundingClientRect(),
                        i = t.x,
                        n = t.y,
                        r = t.width,
                        o = t.height,
                        s = e.$refs["hint-text"],
                        a = null == s ? void 0 : s.getBoundingClientRect(),
                        l = (a.x, a.y, a.width),
                        d = a.height;
                    "top" === e.position ? (s.style.top = "".concat(n - d - 5, "px"), s.style.left = "".concat(i - l / 2 + r / 2, "px")) : "bottom" === e.position ? (s.style.top = "".concat(n + o + 5, "px"), s.style.left = "".concat(i - l / 2 + r / 2, "px")) : "left" === e.position ? (s.style.top = "".concat(n - d / 2 + o / 2, "px"), s.style.left = "".concat(i - l - 5, "px")) : "right" === e.position && (s.style.top = "".concat(n - d / 2 + o / 2, "px"), s.style.left = "".concat(i + r + 5, "px"))
                } catch (t) {}
            }))
        }
    };
    i(304), i = i(30), n = Object(i.a)(n, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", e._g({
            ref: "hint",
            staticClass: "main-hint-view",
            on: {
                mouseenter: e.startCounting,
                mouseleave: e.stopCounting
            }
        }, e.$listeners), [e.isShowHint ? t("span", {
            ref: "hint-text",
            staticClass: "hint"
        }, [e._v(e._s(e.hint))]) : e._e(), e._v(" "), e._t("default")], 2)
    }), [], !1, null, "0110e93a", null);
    t.a = n.exports
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return u
    })), i.d(t, "a", (function() {
        return p
    }));
    var n = i(37),
        r = i(108),
        o = i(1),
        s = i(50),
        a = i(71),
        l = i(4),
        d = i(9),
        c = i(17),
        h = (t = i(239), i(0));
    class u extends l.a {
        constructor(e, t, i = {}) {
            super(), this.options = i, this._context = e || this, (this._action = t) instanceof a.a && this._register(t.onDidChange(e => {
                this.element && this.handleActionChangeEvent(e)
            }))
        }
        handleActionChangeEvent(e) {
            void 0 !== e.enabled && this.updateEnabled(), void 0 !== e.checked && this.updateChecked(), void 0 !== e.class && this.updateClass(), void 0 !== e.label && (this.updateLabel(), this.updateTooltip()), void 0 !== e.tooltip && this.updateTooltip()
        }
        get actionRunner() {
            return this._actionRunner || (this._actionRunner = this._register(new a.b)), this._actionRunner
        }
        set actionRunner(e) {
            this._actionRunner = e
        }
        getAction() {
            return this._action
        }
        isEnabled() {
            return this._action.enabled
        }
        setActionContext(e) {
            this._context = e
        }
        render(e) {
            const t = this.element = e;
            this._register(s.b.addTarget(e));
            const i = this.options && this.options.draggable;
            i && (e.draggable = !0, n.g && this._register(Object(o.g)(e, o.d.DRAG_START, e => null === (e = e.dataTransfer) || void 0 === e ? void 0 : e.setData(r.a.TEXT, this._action.label)))), this._register(Object(o.g)(t, s.a.Tap, e => this.onClick(e, !0))), this._register(Object(o.g)(t, o.d.MOUSE_DOWN, e => {
                i || o.c.stop(e, !0), this._action.enabled && 0 === e.button && t.classList.add("active")
            })), d.f && this._register(Object(o.g)(t, o.d.CONTEXT_MENU, e => {
                0 === e.button && !0 === e.ctrlKey && this.onClick(e)
            })), this._register(Object(o.g)(t, o.d.CLICK, e => {
                o.c.stop(e, !0), this.options && this.options.isMenu || this.onClick(e)
            })), this._register(Object(o.g)(t, o.d.DBLCLICK, e => {
                o.c.stop(e, !0)
            })), [o.d.MOUSE_UP, o.d.MOUSE_OUT].forEach(e => {
                this._register(Object(o.g)(t, e, e => {
                    o.c.stop(e), t.classList.remove("active")
                }))
            })
        }
        onClick(e, t = !1) {
            var i;
            o.c.stop(e, !0), t = c.m(this._context) ? null !== (i = this.options) && void 0 !== i && i.useEventAsContext ? e : {
                preserveFocus: t
            } : this._context, this.actionRunner.run(this._action, t)
        }
        focus() {
            this.element && (this.element.tabIndex = 0, this.element.focus(), this.element.classList.add("focused"))
        }
        blur() {
            this.element && (this.element.blur(), this.element.tabIndex = -1, this.element.classList.remove("focused"))
        }
        setFocusable(e) {
            this.element && (this.element.tabIndex = e ? 0 : -1)
        }
        get trapsArrowNavigation() {
            return !1
        }
        updateEnabled() {}
        updateLabel() {}
        updateTooltip() {}
        updateClass() {}
        updateChecked() {}
        dispose() {
            this.element && (this.element.remove(), this.element = void 0), super.dispose()
        }
    }
    class p extends u {
        constructor(e, t, i = {}) {
            super(e, t, i), this.options = i, this.options.icon = void 0 !== i.icon && i.icon, this.options.label = void 0 === i.label || i.label, this.cssClass = ""
        }
        render(e) {
            super.render(e), this.element && (this.label = Object(o.n)(this.element, Object(o.a)("a.action-label"))), this.label && (this._action.id === a.d.ID ? this.label.setAttribute("role", "presentation") : this.options.isMenu ? this.label.setAttribute("role", "menuitem") : this.label.setAttribute("role", "button")), this.options.label && this.options.keybinding && this.element && (Object(o.n)(this.element, Object(o.a)("span.keybinding")).textContent = this.options.keybinding), this.updateClass(), this.updateLabel(), this.updateTooltip(), this.updateEnabled(), this.updateChecked()
        }
        focus() {
            this.label && (this.label.tabIndex = 0, this.label.focus())
        }
        blur() {
            this.label && (this.label.tabIndex = -1)
        }
        setFocusable(e) {
            this.label && (this.label.tabIndex = e ? 0 : -1)
        }
        updateLabel() {
            this.options.label && this.label && (this.label.textContent = this.getAction().label)
        }
        updateTooltip() {
            let e = null;
            this.getAction().tooltip ? e = this.getAction().tooltip : !this.options.label && this.getAction().label && this.options.icon && (e = this.getAction().label, this.options.keybinding && (e = h.a({
                key: "titleLabel",
                comment: ["action title", "action keybinding"]
            }, "{0} ({1})", e, this.options.keybinding))), e && this.label && (this.label.title = e)
        }
        updateClass() {
            this.cssClass && this.label && this.label.classList.remove(...this.cssClass.split(" ")), this.options.icon ? (this.cssClass = this.getAction().class, this.label && (this.label.classList.add("codicon"), this.cssClass && this.label.classList.add(...this.cssClass.split(" "))), this.updateEnabled()) : this.label && this.label.classList.remove("codicon")
        }
        updateEnabled() {
            this.getAction().enabled ? (this.label && (this.label.removeAttribute("aria-disabled"), this.label.classList.remove("disabled")), this.element && this.element.classList.remove("disabled")) : (this.label && (this.label.setAttribute("aria-disabled", "true"), this.label.classList.add("disabled")), this.element && this.element.classList.add("disabled"))
        }
        updateChecked() {
            this.label && (this.getAction().checked ? this.label.classList.add("checked") : this.label.classList.remove("checked"))
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return p
    }));
    var n = i(51),
        r = i(2),
        o = i(92),
        s = i(39),
        a = i(8),
        l = i(5),
        d = i(36),
        c = i(86),
        h = i(49);
    class u {
        static chord(e, t) {
            return Object(o.c)(e, t)
        }
    }

    function p() {
        return {
            editor: void 0,
            languages: void 0,
            CancellationTokenSource: n.b,
            Emitter: r.b,
            KeyCode: h.q,
            KeyMod: u,
            Position: a.a,
            Range: l.a,
            Selection: d.a,
            SelectionDirection: h.B,
            MarkerSeverity: h.r,
            MarkerTag: h.s,
            Uri: s.a,
            Token: c.a
        }
    }
    u.CtrlCmd = 2048, u.Shift = 1024, u.Alt = 512, u.WinCtrl = 256
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return r
    })), i.d(t, "a", (function() {
        return o
    }));
    var n = i(75);
    class r {
        constructor(e, t) {
            this._prefixSumIndexOfResultBrand = void 0, this.index = e, this.remainder = t
        }
    }
    class o {
        constructor(e) {
            this.values = e, this.prefixSum = new Uint32Array(e.length), this.prefixSumValidIndex = new Int32Array(1), this.prefixSumValidIndex[0] = -1
        }
        insertValues(e, t) {
            e = Object(n.a)(e);
            const i = this.values,
                r = this.prefixSum;
            var o = t.length;
            return 0 !== o && (this.values = new Uint32Array(i.length + o), this.values.set(i.subarray(0, e), 0), this.values.set(i.subarray(e), e + o), this.values.set(t, e), e - 1 < this.prefixSumValidIndex[0] && (this.prefixSumValidIndex[0] = e - 1), this.prefixSum = new Uint32Array(this.values.length), 0 <= this.prefixSumValidIndex[0] && this.prefixSum.set(r.subarray(0, this.prefixSumValidIndex[0] + 1)), !0)
        }
        changeValue(e, t) {
            return e = Object(n.a)(e), t = Object(n.a)(t), this.values[e] !== t && (this.values[e] = t, e - 1 < this.prefixSumValidIndex[0] && (this.prefixSumValidIndex[0] = e - 1), !0)
        }
        removeValues(e, t) {
            e = Object(n.a)(e), t = Object(n.a)(t);
            const i = this.values,
                r = this.prefixSum;
            if (e >= i.length) return !1;
            var o = i.length - e;
            return 0 !== (t = o <= t ? o : t) && (this.values = new Uint32Array(i.length - t), this.values.set(i.subarray(0, e), 0), this.values.set(i.subarray(e + t), e), this.prefixSum = new Uint32Array(this.values.length), e - 1 < this.prefixSumValidIndex[0] && (this.prefixSumValidIndex[0] = e - 1), 0 <= this.prefixSumValidIndex[0] && this.prefixSum.set(r.subarray(0, this.prefixSumValidIndex[0] + 1)), !0)
        }
        getTotalSum() {
            return 0 === this.values.length ? 0 : this._getPrefixSum(this.values.length - 1)
        }
        getPrefixSum(e) {
            return e < 0 ? 0 : (e = Object(n.a)(e), this._getPrefixSum(e))
        }
        _getPrefixSum(e) {
            if (e <= this.prefixSumValidIndex[0]) return this.prefixSum[e];
            let t = this.prefixSumValidIndex[0] + 1;
            0 === t && (this.prefixSum[0] = this.values[0], t++), e >= this.values.length && (e = this.values.length - 1);
            for (let i = t; i <= e; i++) this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];
            return this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], e), this.prefixSum[e]
        }
        getIndexOf(e) {
            e = Math.floor(e), this.getTotalSum();
            let t = 0,
                i = this.values.length - 1,
                n = 0;
            var o;
            let s = 0;
            for (; t <= i;)
                if (n = t + (i - t) / 2 | 0, s = (o = this.prefixSum[n]) - this.values[n], e < s) i = n - 1;
                else {
                    if (!(o <= e)) break;
                    t = n + 1
                } return new r(n, e - s)
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), t = i(37);
    const n = {
        clipboard: {
            writeText: (i = i(9)).g || document.queryCommandSupported && document.queryCommandSupported("copy") || !!(navigator && navigator.clipboard && navigator.clipboard.writeText),
            readText: i.g || !!(navigator && navigator.clipboard && navigator.clipboard.readText)
        },
        keyboard: i.g || t.i ? 0 : navigator.keyboard || t.h ? 1 : 2,
        touch: "ontouchstart" in window || 0 < navigator.maxTouchPoints,
        pointerEvents: window.PointerEvent && ("ontouchstart" in window || 0 < window.navigator.maxTouchPoints || 0 < navigator.maxTouchPoints)
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return n
    })), i = i(26);
    const n = Object(i.c)("telemetryService")
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return c
    })), i.d(t, "c", (function() {
        return h
    })), i.d(t, "a", (function() {
        return u
    }));
    var n = i(170),
        r = i(54),
        o = i(62),
        s = i(6),
        a = i(39);

    function l(e) {
        return Object(a.b)(e, !0)
    }
    const d = new class {
        constructor(e) {
            this._ignorePathCasing = e
        }
        compare(e, t, i = !1) {
            return e === t ? 0 : Object(s.f)(this.getComparisonKey(e, i), this.getComparisonKey(t, i))
        }
        isEqual(e, t, i = !1) {
            return e === t || !(!e || !t) && this.getComparisonKey(e, i) === this.getComparisonKey(t, i)
        }
        getComparisonKey(e, t = !1) {
            return e.with({
                path: this._ignorePathCasing(e) ? e.path.toLowerCase() : void 0,
                fragment: t ? null : void 0
            }).toString()
        }
        joinPath(e, ...t) {
            return a.a.joinPath(e, ...t)
        }
        basenameOrAuthority(e) {
            return c(e) || e.authority
        }
        basename(e) {
            return o.e.basename(e.path)
        }
        dirname(e) {
            if (0 === e.path.length) return e;
            let t;
            return e.scheme === r.c.file ? t = a.a.file(o.b(l(e))).path : (t = o.e.dirname(e.path), e.authority && t.length && 47 !== t.charCodeAt(0) && (console.error(`dirname("${e.toString})) resulted in a relative path`), t = "/")), e.with({
                path: t
            })
        }
        normalizePath(e) {
            if (!e.path.length) return e;
            let t;
            return t = e.scheme === r.c.file ? a.a.file(o.d(l(e))).path : o.e.normalize(e.path), e.with({
                path: t
            })
        }
        resolvePath(e, t) {
            return e.scheme !== r.c.file ? (t = n.b(t), e.with({
                path: o.e.resolve(e.path, t)
            })) : (t = a.a.file(o.g(l(e), t)), e.with({
                authority: t.authority,
                path: t.path
            }))
        }
    }(() => !1);
    d.isEqual.bind(d), d.basenameOrAuthority.bind(d);
    const c = d.basename.bind(d);
    d.dirname.bind(d), d.joinPath.bind(d);
    const h = d.normalizePath.bind(d);
    var u, p;
    d.resolvePath.bind(d), (p = u = u || {}).META_DATA_LABEL = "label", p.META_DATA_DESCRIPTION = "description", p.META_DATA_SIZE = "size", p.META_DATA_MIME = "mime", p.parseMetaData = function(e) {
        const t = new Map;
        return e.path.substring(e.path.indexOf(";") + 1, e.path.lastIndexOf(";")).split(";").forEach(e => {
            var [i, e] = e.split(":");
            i && e && t.set(i, e)
        }), (e = e.path.substring(0, e.path.indexOf(";"))) && t.set(p.META_DATA_MIME, e), t
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return d
    }));
    var n = i(6),
        r = i(68),
        o = i(14),
        s = i(74),
        a = i(5),
        l = i(8);
    class d {
        static deleteRight(e, t, i, n) {
            let o = [],
                l = 3 !== e;
            for (let e = 0, h = n.length; e < h; e++) {
                const h = n[e];
                let u = h;
                var d, c;
                u.isEmpty() && (d = h.getPosition(), c = s.a.right(t, i, d), u = new a.a(c.lineNumber, c.column, d.lineNumber, d.column)), u.isEmpty() ? o[e] = null : (u.startLineNumber !== u.endLineNumber && (l = !0), o[e] = new r.a(u, ""))
            }
            return [l, o]
        }
        static isAutoClosingPairDelete(e, t, i, n, r, s, a) {
            if ("never" === t && "never" === i) return !1;
            if ("never" === e) return !1;
            for (let p = 0, g = s.length; p < g; p++) {
                const g = s[p];
                var l = g.getPosition();
                if (!g.isEmpty()) return !1;
                const f = r.getLineContent(l.lineNumber);
                if (l.column < 2 || l.column >= f.length + 1) return !1;
                var d = f.charAt(l.column - 2),
                    c = n.get(d);
                if (!c) return !1;
                if (Object(o.g)(d)) {
                    if ("never" === i) return !1
                } else if ("never" === t) return !1;
                var h = f.charAt(l.column - 1);
                let m = !1;
                for (const e of c) e.open === d && e.close === h && (m = !0);
                if (!m) return !1;
                if ("auto" === e) {
                    let e = !1;
                    for (let t = 0, i = a.length; t < i; t++) {
                        var u = a[t];
                        if (l.lineNumber === u.startLineNumber && l.column === u.startColumn) {
                            e = !0;
                            break
                        }
                    }
                    if (!e) return !1
                }
            }
            return !0
        }
        static _runAutoClosingPairDelete(e, t, i) {
            let n = [];
            for (let e = 0, t = i.length; e < t; e++) {
                var o = i[e].getPosition();
                o = new a.a(o.lineNumber, o.column - 1, o.lineNumber, o.column + 1);
                n[e] = new r.a(o, "")
            }
            return [!0, n]
        }
        static deleteLeft(e, t, i, n, o) {
            if (this.isAutoClosingPairDelete(t.autoClosingDelete, t.autoClosingBrackets, t.autoClosingQuotes, t.autoClosingPairs.autoClosingPairsOpenByEnd, i, n, o)) return this._runAutoClosingPairDelete(t, i, n);
            const s = [];
            let a = 2 !== e;
            for (let e = 0, o = n.length; e < o; e++) {
                let o = d.getDeleteRange(n[e], i, t);
                o.isEmpty() ? s[e] = null : (o.startLineNumber !== o.endLineNumber && (a = !0), s[e] = new r.a(o, ""))
            }
            return [a, s]
        }
        static getDeleteRange(e, t, i) {
            if (!e.isEmpty()) return e;
            var r = e.getPosition();
            if (i.useTabStops && 1 < r.column) {
                var s = t.getLineContent(r.lineNumber);
                e = -1 === (e = n.u(s)) ? s.length + 1 : e + 1;
                if (r.column <= e) return e = o.a.visibleColumnFromColumn2(i, t, r), e = o.a.prevIndentTabStop(e, i.indentSize), e = o.a.columnFromVisibleColumn2(i, t, r.lineNumber, e), new a.a(r.lineNumber, e, r.lineNumber, r.column)
            }
            return a.a.fromPositions(d.getPositionAfterDeleteLeft(r, t), r)
        }
        static getPositionAfterDeleteLeft(e, t) {
            if (1 < e.column) {
                var i = n.y(e.column - 1, t.getLineContent(e.lineNumber));
                return e.with(void 0, i + 1)
            }
            return 1 < e.lineNumber ? (i = e.lineNumber - 1, new l.a(i, t.getLineMaxColumn(i))) : e
        }
        static cut(e, t, i) {
            let n = [],
                s = null;
            i.sort((e, t) => l.a.compare(e.getStartPosition(), t.getEndPosition()));
            for (let o = 0, l = i.length; o < l; o++) {
                const l = i[o];
                if (l.isEmpty())
                    if (e.emptySelectionClipboard) {
                        var d = l.getPosition();
                        let e, i, c, h;
                        h = d.lineNumber < t.getLineCount() ? (e = d.lineNumber, i = 1, c = d.lineNumber + 1, 1) : (i = 1 < d.lineNumber && (null == s ? void 0 : s.endLineNumber) !== d.lineNumber ? (e = d.lineNumber - 1, t.getLineMaxColumn(d.lineNumber - 1)) : (e = d.lineNumber, 1), c = d.lineNumber, t.getLineMaxColumn(d.lineNumber));
                        let u = new a.a(e, i, c, h);
                        s = u, u.isEmpty() ? n[o] = null : n[o] = new r.a(u, "")
                    } else n[o] = null;
                else n[o] = new r.a(l, "")
            }
            return new o.e(0, n, {
                shouldPushStackElementBefore: !0,
                shouldPushStackElementAfter: !0
            })
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return m
    }));
    var n = i(1),
        r = i(53),
        o = i(50),
        s = i(32),
        a = i(64),
        l = i(2),
        d = i(4),
        c = i(9);
    t = i(376), i = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    };
    (t = {}).North = "north", t.South = "south", t.East = "east", t.West = "west";
    const h = new l.b,
        u = new l.b;
    class p {
        constructor() {
            this.disposables = new d.b
        }
        get onPointerMove() {
            return this.disposables.add(new r.a(window, "mousemove")).event
        }
        get onPointerUp() {
            return this.disposables.add(new r.a(window, "mouseup")).event
        }
        dispose() {
            this.disposables.dispose()
        }
    }
    i([a.a], p.prototype, "onPointerMove", null), i([a.a], p.prototype, "onPointerUp", null);
    class g {
        constructor(e) {
            this.el = e, this.disposables = new d.b
        }
        get onPointerMove() {
            return this.disposables.add(new r.a(this.el, o.a.Change)).event
        }
        get onPointerUp() {
            return this.disposables.add(new r.a(this.el, o.a.End)).event
        }
        dispose() {
            this.disposables.dispose()
        }
    }
    i([a.a], g.prototype, "onPointerMove", null), i([a.a], g.prototype, "onPointerUp", null);
    class f {
        constructor(e) {
            this.factory = e
        }
        get onPointerMove() {
            return this.factory.onPointerMove
        }
        get onPointerUp() {
            return this.factory.onPointerUp
        }
        dispose() {}
    }
    i([a.a], f.prototype, "onPointerMove", null), i([a.a], f.prototype, "onPointerUp", null);
    class m extends d.a {
        constructor(e, t, i) {
            super(), this.hoverDelay = 300, this.hoverDelayer = this._register(new s.a(this.hoverDelay)), this._state = 3, this._onDidEnablementChange = this._register(new l.b), this.onDidEnablementChange = this._onDidEnablementChange.event, this._onDidStart = this._register(new l.b), this.onDidStart = this._onDidStart.event, this._onDidChange = this._register(new l.b), this.onDidChange = this._onDidChange.event, this._onDidReset = this._register(new l.b), this.onDidReset = this._onDidReset.event, this._onDidEnd = this._register(new l.b), this.onDidEnd = this._onDidEnd.event, this.linkedSash = void 0, this.orthogonalStartSashDisposables = this._register(new d.b), this.orthogonalStartDragHandleDisposables = this._register(new d.b), this.orthogonalEndSashDisposables = this._register(new d.b), this.orthogonalEndDragHandleDisposables = this._register(new d.b), this.el = Object(n.n)(e, Object(n.a)(".monaco-sash")), i.orthogonalEdge && this.el.classList.add("orthogonal-edge-" + i.orthogonalEdge), c.f && this.el.classList.add("mac");
            const a = this._register(new r.a(this.el, "mousedown")).event;
            this._register(a(e => this.onPointerStart(e, new p), this));
            const f = this._register(new r.a(this.el, "dblclick")).event;
            this._register(f(this.onPointerDoublePress, this));
            const v = this._register(new r.a(this.el, "mouseenter")).event;
            this._register(v(() => m.onMouseEnter(this)));
            const b = this._register(new r.a(this.el, "mouseleave")).event;
            this._register(b(() => m.onMouseLeave(this))), this._register(o.b.addTarget(this.el));
            const _ = l.c.map(this._register(new r.a(this.el, o.a.Start)).event, e => Object.assign(Object.assign({}, e), {
                target: null !== (e = e.initialTarget) && void 0 !== e ? e : null
            }));
            this._register(_(e => this.onPointerStart(e, new g(this.el)), this)), e = this._register(new r.a(this.el, o.a.Tap)).event;
            const w = l.c.map(l.c.filter(l.c.debounce(e, (e, t) => ({
                event: t,
                count: (null !== (e = null == e ? void 0 : e.count) && void 0 !== e ? e : 0) + 1
            }), 250), ({
                count: e
            }) => 2 === e), ({
                event: e
            }) => Object.assign(Object.assign({}, e), {
                target: null !== (e = e.initialTarget) && void 0 !== e ? e : null
            }));
            this._register(w(this.onPointerDoublePress, this)), "number" == typeof i.size ? (this.size = i.size, 0 === i.orientation ? this.el.style.width = this.size + "px" : this.el.style.height = this.size + "px") : (this.size = 4, this._register(h.event(e => {
                this.size = e, this.layout()
            }))), this._register(u.event(e => this.hoverDelay = e)), this.hidden = !1, this.layoutProvider = t, this.orthogonalStartSash = i.orthogonalStartSash, this.orthogonalEndSash = i.orthogonalEndSash, this.orientation = i.orientation || 0, 1 === this.orientation ? (this.el.classList.add("horizontal"), this.el.classList.remove("vertical")) : (this.el.classList.remove("horizontal"), this.el.classList.add("vertical")), this.el.classList.toggle("debug", !1), this.layout()
        }
        get state() {
            return this._state
        }
        set state(e) {
            this._state !== e && (this.el.classList.toggle("disabled", 0 === e), this.el.classList.toggle("minimum", 1 === e), this.el.classList.toggle("maximum", 2 === e), this._state = e, this._onDidEnablementChange.fire(e))
        }
        get orthogonalStartSash() {
            return this._orthogonalStartSash
        }
        set orthogonalStartSash(e) {
            var t;
            this.orthogonalStartDragHandleDisposables.clear(), this.orthogonalStartSashDisposables.clear(), e && (t = t => {
                this.orthogonalStartDragHandleDisposables.clear(), 0 !== t && (this._orthogonalStartDragHandle = Object(n.n)(this.el, Object(n.a)(".orthogonal-drag-handle.start")), this.orthogonalStartDragHandleDisposables.add(Object(d.i)(() => this._orthogonalStartDragHandle.remove())), this.orthogonalStartDragHandleDisposables.add(new r.a(this._orthogonalStartDragHandle, "mouseenter")).event(() => m.onMouseEnter(e), void 0, this.orthogonalStartDragHandleDisposables), this.orthogonalStartDragHandleDisposables.add(new r.a(this._orthogonalStartDragHandle, "mouseleave")).event(() => m.onMouseLeave(e), void 0, this.orthogonalStartDragHandleDisposables))
            }, this.orthogonalStartSashDisposables.add(e.onDidEnablementChange(t, this)), t(e.state)), this._orthogonalStartSash = e
        }
        get orthogonalEndSash() {
            return this._orthogonalEndSash
        }
        set orthogonalEndSash(e) {
            var t;
            this.orthogonalEndDragHandleDisposables.clear(), this.orthogonalEndSashDisposables.clear(), e && (t = t => {
                this.orthogonalEndDragHandleDisposables.clear(), 0 !== t && (this._orthogonalEndDragHandle = Object(n.n)(this.el, Object(n.a)(".orthogonal-drag-handle.end")), this.orthogonalEndDragHandleDisposables.add(Object(d.i)(() => this._orthogonalEndDragHandle.remove())), this.orthogonalEndDragHandleDisposables.add(new r.a(this._orthogonalEndDragHandle, "mouseenter")).event(() => m.onMouseEnter(e), void 0, this.orthogonalEndDragHandleDisposables), this.orthogonalEndDragHandleDisposables.add(new r.a(this._orthogonalEndDragHandle, "mouseleave")).event(() => m.onMouseLeave(e), void 0, this.orthogonalEndDragHandleDisposables))
            }, this.orthogonalEndSashDisposables.add(e.onDidEnablementChange(t, this)), t(e.state)), this._orthogonalEndSash = e
        }
        onPointerStart(e, t) {
            n.c.stop(e);
            let i = !1;
            if (!e.__orthogonalSashEvent) {
                const n = this.getOrthogonalSash(e);
                n && (i = !0, e.__orthogonalSashEvent = !0, n.onPointerStart(e, new f(t)))
            }
            if (this.linkedSash && !e.__linkedSashEvent && (e.__linkedSashEvent = !0, this.linkedSash.onPointerStart(e, new f(t))), this.state) {
                const r = Object(n.B)("iframe");
                for (const e of r) e.style.pointerEvents = "none";
                const o = e.pageX,
                    s = e.pageY,
                    a = e.altKey;
                e = {
                    startX: o,
                    currentX: o,
                    startY: s,
                    currentY: s,
                    altKey: a
                }, this.el.classList.add("active"), this._onDidStart.fire(e);
                const l = Object(n.t)(this.el);
                e = () => {
                    let e = "";
                    e = i ? "all-scroll" : 1 === this.orientation ? 1 === this.state ? "s-resize" : 2 === this.state ? "n-resize" : c.f ? "row-resize" : "ns-resize" : 1 === this.state ? "e-resize" : 2 === this.state ? "w-resize" : c.f ? "col-resize" : "ew-resize", l.textContent = `* { cursor: ${e} !important; }`
                };
                const h = new d.b;
                e(), i || this.onDidEnablementChange(e, null, h), t.onPointerMove(e => {
                    n.c.stop(e, !1), e = {
                        startX: o,
                        currentX: e.pageX,
                        startY: s,
                        currentY: e.pageY,
                        altKey: a
                    }, this._onDidChange.fire(e)
                }, null, h), t.onPointerUp(e => {
                    n.c.stop(e, !1), this.el.removeChild(l), this.el.classList.remove("active"), this._onDidEnd.fire(), h.dispose();
                    for (const e of r) e.style.pointerEvents = "auto"
                }, null, h), h.add(t)
            }
        }
        onPointerDoublePress(e) {
            const t = this.getOrthogonalSash(e);
            t && t._onDidReset.fire(), this.linkedSash && this.linkedSash._onDidReset.fire(), this._onDidReset.fire()
        }
        static onMouseEnter(e, t = !1) {
            e.el.classList.contains("active") ? (e.hoverDelayer.cancel(), e.el.classList.add("hover")) : e.hoverDelayer.trigger(() => e.el.classList.add("hover"), e.hoverDelay).then(void 0, () => {}), !t && e.linkedSash && m.onMouseEnter(e.linkedSash, !0)
        }
        static onMouseLeave(e, t = !1) {
            e.hoverDelayer.cancel(), e.el.classList.remove("hover"), !t && e.linkedSash && m.onMouseLeave(e.linkedSash, !0)
        }
        clearSashHoverState() {
            m.onMouseLeave(this)
        }
        layout() {
            if (0 === this.orientation) {
                const e = this.layoutProvider;
                this.el.style.left = e.getVerticalSashLeft(this) - this.size / 2 + "px", e.getVerticalSashTop && (this.el.style.top = e.getVerticalSashTop(this) + "px"), e.getVerticalSashHeight && (this.el.style.height = e.getVerticalSashHeight(this) + "px")
            } else {
                const e = this.layoutProvider;
                this.el.style.top = e.getHorizontalSashTop(this) - this.size / 2 + "px", e.getHorizontalSashLeft && (this.el.style.left = e.getHorizontalSashLeft(this) + "px"), e.getHorizontalSashWidth && (this.el.style.width = e.getHorizontalSashWidth(this) + "px")
            }
        }
        hide() {
            this.hidden = !0, this.el.style.display = "none", this.el.setAttribute("aria-hidden", "true")
        }
        getOrthogonalSash(e) {
            if (e.target && e.target instanceof HTMLElement) return e.target.classList.contains("orthogonal-drag-handle") ? e.target.classList.contains("start") ? this.orthogonalStartSash : this.orthogonalEndSash : void 0
        }
        dispose() {
            super.dispose(), this.el.remove()
        }
    }
}, function(e, t) {
    e.exports = require("require-from-string")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(6);
    class r {
        static visibleColumnFromColumn(e, t, i) {
            var o = e.length,
                s = t - 1 < o ? t - 1 : o;
            let a = 0,
                l = 0;
            for (; l < s;) {
                var d = n.z(e, s, l);
                if (l += 65536 <= d ? 2 : 1, 9 === d) a = r.nextRenderTabStop(a, i);
                else {
                    let t = n.w(d);
                    for (; l < s;) {
                        var c = n.z(e, s, l),
                            h = n.w(c);
                        if (n.c(t, h)) break;
                        l += 65536 <= c ? 2 : 1, t = h
                    }
                    n.D(d) || n.B(d) ? a += 2 : a += 1
                }
            }
            return a
        }
        static visibleColumnsByColumns(e, t) {
            var i = e.length;
            let o = new Array;
            o.push(-1);
            let s = 0,
                a = 0;
            for (; a < i;) {
                var l = n.z(e, i, a);
                if (a += 65536 <= l ? 2 : 1, o.push(s), 65536 <= l && o.push(s), 9 === l) s = r.nextRenderTabStop(s, t);
                else {
                    let t = n.w(l);
                    for (; a < i;) {
                        var d = n.z(e, i, a),
                            c = n.w(d);
                        if (n.c(t, c)) break;
                        a += 65536 <= d ? 2 : 1, o.push(s), 65536 <= l && o.push(s), t = c
                    }
                    n.D(l) || n.B(l) ? s += 2 : s += 1
                }
            }
            return o.push(s), o
        }
        static visibleColumnFromColumn2(e, t, i) {
            return this.visibleColumnFromColumn(t.getLineContent(i.lineNumber), i.column, e.tabSize)
        }
        static columnFromVisibleColumn(e, t, i) {
            if (t <= 0) return 1;
            var o = e.length;
            let s = 0,
                a = 1,
                l = 0;
            for (; l < o;) {
                var d = n.z(e, o, l);
                let p;
                if (l += 65536 <= d ? 2 : 1, 9 === d) p = r.nextRenderTabStop(s, i);
                else {
                    let t = n.w(d);
                    for (; l < o;) {
                        var c = n.z(e, o, l),
                            h = n.w(c);
                        if (n.c(t, h)) break;
                        l += 65536 <= c ? 2 : 1, t = h
                    }
                    p = n.D(d) || n.B(d) ? s + 2 : s + 1
                }
                var u = l + 1;
                if (p >= t) return p - t < (d = t - s) ? u : a;
                s = p, a = u
            }
            return o + 1
        }
        static columnFromVisibleColumn2(e, t, i, n) {
            return (n = this.columnFromVisibleColumn(t.getLineContent(i), n, e.tabSize)) < (e = t.getLineMinColumn(i)) ? e : (i = t.getLineMaxColumn(i)) < n ? i : n
        }
        static nextRenderTabStop(e, t) {
            return e + t - e % t
        }
        static nextIndentTabStop(e, t) {
            return e + t - e % t
        }
        static prevRenderTabStop(e, t) {
            return Math.max(0, e - 1 - (e - 1) % t)
        }
        static prevIndentTabStop(e, t) {
            return Math.max(0, e - 1 - (e - 1) % t)
        }
    }
}, function(e, t, i) {
    "use strict";
    var n = i(111);
    i.d(t, "a", (function() {
        return n.a
    })), i.d(t, "b", (function() {
        return n.d
    })), i.d(t, "c", (function() {
        return n.e
    })), i.d(t, "d", (function() {
        return n.f
    })), i.d(t, "e", (function() {
        return n.h
    })), i.d(t, "f", (function() {
        return n.i
    })), i.d(t, "g", (function() {
        return n.j
    }))
}, function(e, t) {
    e.exports = require("os")
}, function(e, t) {
    e.exports = require("got")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(2);
    t = i(58);
    const r = {
        JSONContribution: "base.contributions.json"
    };
    i = new class {
        constructor() {
            this._onDidChangeSchema = new n.b, this.schemasById = {}
        }
        registerSchema(e, t) {
            var i;
            this.schemasById[0 < (i = e).length && "#" === i.charAt(i.length - 1) ? i.substring(0, i.length - 1) : i] = t, this._onDidChangeSchema.fire(e)
        }
        notifySchemaChanged(e) {
            this._onDidChangeSchema.fire(e)
        }
    }, t.a.add(r.JSONContribution, i)
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return I
    }));
    var n = i(115),
        r = i(9),
        o = i(39),
        s = i(8),
        a = i(5),
        l = i(6);

    function d(e, t, i, r) {
        return new n.a(e, t, i).ComputeDiff(r)
    }
    class c {
        constructor(e) {
            const t = [],
                i = [];
            for (let n = 0, r = e.length; n < r; n++) t[n] = f(e[n], 1), i[n] = m(e[n], 1);
            this.lines = e, this._startColumns = t, this._endColumns = i
        }
        getElements() {
            const e = [];
            for (let t = 0, i = this.lines.length; t < i; t++) e[t] = this.lines[t].substring(this._startColumns[t] - 1, this._endColumns[t] - 1);
            return e
        }
        getStrictElement(e) {
            return this.lines[e]
        }
        getStartLineNumber(e) {
            return e + 1
        }
        getEndLineNumber(e) {
            return e + 1
        }
        createCharSequence(e, t, i) {
            const n = [],
                r = [],
                o = [];
            let s = 0;
            for (let d = t; d <= i; d++) {
                const t = this.lines[d];
                var a = e ? this._startColumns[d] : 1,
                    l = e ? this._endColumns[d] : t.length + 1;
                for (let e = a; e < l; e++) n[s] = t.charCodeAt(e - 1), r[s] = d + 1, o[s] = e, s++
            }
            return new h(n, r, o)
        }
    }
    class h {
        constructor(e, t, i) {
            this._charCodes = e, this._lineNumbers = t, this._columns = i
        }
        getElements() {
            return this._charCodes
        }
        getStartLineNumber(e) {
            return this._lineNumbers[e]
        }
        getStartColumn(e) {
            return this._columns[e]
        }
        getEndLineNumber(e) {
            return this._lineNumbers[e]
        }
        getEndColumn(e) {
            return this._columns[e] + 1
        }
    }
    class u {
        constructor(e, t, i, n, r, o, s, a) {
            this.originalStartLineNumber = e, this.originalStartColumn = t, this.originalEndLineNumber = i, this.originalEndColumn = n, this.modifiedStartLineNumber = r, this.modifiedStartColumn = o, this.modifiedEndLineNumber = s, this.modifiedEndColumn = a
        }
        static createFromDiffChange(e, t, i) {
            let n, r, o, s, a, l, d, c;
            return s = 0 === e.originalLength ? (n = 0, r = 0, o = 0) : (n = t.getStartLineNumber(e.originalStart), r = t.getStartColumn(e.originalStart), o = t.getEndLineNumber(e.originalStart + e.originalLength - 1), t.getEndColumn(e.originalStart + e.originalLength - 1)), c = 0 === e.modifiedLength ? (a = 0, l = 0, d = 0) : (a = i.getStartLineNumber(e.modifiedStart), l = i.getStartColumn(e.modifiedStart), d = i.getEndLineNumber(e.modifiedStart + e.modifiedLength - 1), i.getEndColumn(e.modifiedStart + e.modifiedLength - 1)), new u(n, r, o, s, a, l, d, c)
        }
    }
    class p {
        constructor(e, t, i, n, r) {
            this.originalStartLineNumber = e, this.originalEndLineNumber = t, this.modifiedStartLineNumber = i, this.modifiedEndLineNumber = n, this.charChanges = r
        }
        static createFromDiffResult(e, t, i, n, r, o, s) {
            let a, l, c, h, g = void 0;
            if (l = 0 === t.originalLength ? (a = i.getStartLineNumber(t.originalStart) - 1, 0) : (a = i.getStartLineNumber(t.originalStart), i.getEndLineNumber(t.originalStart + t.originalLength - 1)), h = 0 === t.modifiedLength ? (c = n.getStartLineNumber(t.modifiedStart) - 1, 0) : (c = n.getStartLineNumber(t.modifiedStart), n.getEndLineNumber(t.modifiedStart + t.modifiedLength - 1)), o && 0 < t.originalLength && t.originalLength < 20 && 0 < t.modifiedLength && t.modifiedLength < 20 && r()) {
                var f = i.createCharSequence(e, t.originalStart, t.originalStart + t.originalLength - 1),
                    m = n.createCharSequence(e, t.modifiedStart, t.modifiedStart + t.modifiedLength - 1);
                let o = d(f, m, r, !0).changes;
                s && (o = function(e) {
                    if (e.length <= 1) return e;
                    const t = [e[0]];
                    let i = t[0];
                    for (let s = 1, a = e.length; s < a; s++) {
                        var n = e[s],
                            r = n.originalStart - (i.originalStart + i.originalLength),
                            o = n.modifiedStart - (i.modifiedStart + i.modifiedLength);
                        Math.min(r, o) < 3 ? (i.originalLength = n.originalStart + n.originalLength - i.originalStart, i.modifiedLength = n.modifiedStart + n.modifiedLength - i.modifiedStart) : (t.push(n), i = n)
                    }
                    return t
                }(o)), g = [];
                for (let e = 0, t = o.length; e < t; e++) g.push(u.createFromDiffChange(o[e], f, m))
            }
            return new p(a, l, c, h, g)
        }
    }
    class g {
        constructor(e, t, i) {
            this.shouldComputeCharChanges = i.shouldComputeCharChanges, this.shouldPostProcessCharChanges = i.shouldPostProcessCharChanges, this.shouldIgnoreTrimWhitespace = i.shouldIgnoreTrimWhitespace, this.shouldMakePrettyDiff = i.shouldMakePrettyDiff, this.originalLines = e, this.modifiedLines = t, this.original = new c(e), this.modified = new c(t), this.continueLineDiff = v(i.maxComputationTime), this.continueCharDiff = v(0 === i.maxComputationTime ? 0 : Math.min(i.maxComputationTime, 5e3))
        }
        computeDiff() {
            if (1 === this.original.lines.length && 0 === this.original.lines[0].length) return 1 === this.modified.lines.length && 0 === this.modified.lines[0].length ? {
                quitEarly: !1,
                changes: []
            } : {
                quitEarly: !1,
                changes: [{
                    originalStartLineNumber: 1,
                    originalEndLineNumber: 1,
                    modifiedStartLineNumber: 1,
                    modifiedEndLineNumber: this.modified.lines.length,
                    charChanges: [{
                        modifiedEndColumn: 0,
                        modifiedEndLineNumber: 0,
                        modifiedStartColumn: 0,
                        modifiedStartLineNumber: 0,
                        originalEndColumn: 0,
                        originalEndLineNumber: 0,
                        originalStartColumn: 0,
                        originalStartLineNumber: 0
                    }]
                }]
            };
            if (1 === this.modified.lines.length && 0 === this.modified.lines[0].length) return {
                quitEarly: !1,
                changes: [{
                    originalStartLineNumber: 1,
                    originalEndLineNumber: this.original.lines.length,
                    modifiedStartLineNumber: 1,
                    modifiedEndLineNumber: 1,
                    charChanges: [{
                        modifiedEndColumn: 0,
                        modifiedEndLineNumber: 0,
                        modifiedStartColumn: 0,
                        modifiedStartLineNumber: 0,
                        originalEndColumn: 0,
                        originalEndLineNumber: 0,
                        originalStartColumn: 0,
                        originalStartLineNumber: 0
                    }]
                }]
            };
            var e = (t = d(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff)).changes,
                t = t.quitEarly;
            if (this.shouldIgnoreTrimWhitespace) {
                const i = [];
                for (let t = 0, n = e.length; t < n; t++) i.push(p.createFromDiffResult(this.shouldIgnoreTrimWhitespace, e[t], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));
                return {
                    quitEarly: t,
                    changes: i
                }
            }
            const i = [];
            let n = 0,
                r = 0;
            for (let t = -1, d = e.length; t < d; t++) {
                for (var o = t + 1 < d ? e[t + 1] : null, s = o ? o.originalStart : this.originalLines.length, a = o ? o.modifiedStart : this.modifiedLines.length; n < s && r < a;) {
                    const e = this.originalLines[n],
                        t = this.modifiedLines[r];
                    if (e !== t) {
                        {
                            let o = f(e, 1),
                                s = f(t, 1);
                            for (; 1 < o && 1 < s && e.charCodeAt(o - 2) === t.charCodeAt(s - 2);) o--, s--;
                            (1 < o || 1 < s) && this._pushTrimWhitespaceCharChange(i, n + 1, 1, o, r + 1, 1, s)
                        } {
                            let o = m(e, 1),
                                s = m(t, 1);
                            for (var l = e.length + 1, c = t.length + 1; o < l && s < c && e.charCodeAt(o - 1) === e.charCodeAt(s - 1);) o++, s++;
                            (o < l || s < c) && this._pushTrimWhitespaceCharChange(i, n + 1, o, l, r + 1, s, c)
                        }
                    }
                    n++, r++
                }
                o && (i.push(p.createFromDiffResult(this.shouldIgnoreTrimWhitespace, o, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges)), n += o.originalLength, r += o.modifiedLength)
            }
            return {
                quitEarly: t,
                changes: i
            }
        }
        _pushTrimWhitespaceCharChange(e, t, i, n, r, o, s) {
            if (!this._mergeTrimWhitespaceCharChange(e, t, i, n, r, o, s)) {
                let a = void 0;
                this.shouldComputeCharChanges && (a = [new u(t, i, t, n, r, o, r, s)]), e.push(new p(t, t, r, r, a))
            }
        }
        _mergeTrimWhitespaceCharChange(e, t, i, n, r, o, s) {
            var a = e.length;
            if (0 === a) return !1;
            const l = e[a - 1];
            return 0 !== l.originalEndLineNumber && 0 !== l.modifiedEndLineNumber && l.originalEndLineNumber + 1 === t && l.modifiedEndLineNumber + 1 === r && (l.originalEndLineNumber = t, l.modifiedEndLineNumber = r, this.shouldComputeCharChanges && l.charChanges && l.charChanges.push(new u(t, i, t, n, r, o, r, s)), !0)
        }
    }

    function f(e, t) {
        return -1 === (e = l.u(e)) ? t : e + 1
    }

    function m(e, t) {
        return -1 === (e = l.I(e)) ? t : e + 2
    }

    function v(e) {
        if (0 === e) return () => !0;
        const t = Date.now();
        return () => Date.now() - t < e
    }
    var b = i(137),
        _ = i(93),
        w = i(125);
    class y {
        constructor(e, t, i) {
            const n = new Uint8Array(e * t);
            for (let r = 0, o = e * t; r < o; r++) n[r] = i;
            this._data = n, this.rows = e, this.cols = t
        }
        get(e, t) {
            return this._data[e * this.cols + t]
        }
        set(e, t, i) {
            this._data[e * this.cols + t] = i
        }
    }
    class C {
        constructor(e) {
            let t = 0,
                i = 0;
            for (let s = 0, a = e.length; s < a; s++) {
                var [n, r, o] = e[s];
                r > t && (t = r), n > i && (i = n), o > i && (i = o)
            }
            t++, i++;
            let s = new y(i, t, 0);
            for (let t = 0, i = e.length; t < i; t++) {
                var [a, l, d] = e[t];
                s.set(a, l, d)
            }
            this._states = s, this._maxCharCode = t
        }
        nextState(e, t) {
            return t < 0 || t >= this._maxCharCode ? 0 : this._states.get(e, t)
        }
    }
    let x = null,
        S = null;
    class k {
        static _createLink(e, t, i, n, r) {
            let o = r - 1;
            do {
                var s = t.charCodeAt(o);
                if (2 !== e.get(s)) break
            } while (o--, o > n);
            var a;
            return 0 < n && (a = t.charCodeAt(n - 1), r = t.charCodeAt(o), (40 === a && 41 === r || 91 === a && 93 === r || 123 === a && 125 === r) && o--), {
                range: {
                    startLineNumber: i,
                    startColumn: n + 1,
                    endLineNumber: i,
                    endColumn: o + 2
                },
                url: t.substring(n, o + 1)
            }
        }
        static computeLinks(e, t = (null === x && (x = new C([
            [1, 104, 2],
            [1, 72, 2],
            [1, 102, 6],
            [1, 70, 6],
            [2, 116, 3],
            [2, 84, 3],
            [3, 116, 4],
            [3, 84, 4],
            [4, 112, 5],
            [4, 80, 5],
            [5, 115, 9],
            [5, 83, 9],
            [5, 58, 10],
            [6, 105, 7],
            [6, 73, 7],
            [7, 108, 8],
            [7, 76, 8],
            [8, 101, 9],
            [8, 69, 9],
            [9, 58, 10],
            [10, 47, 11],
            [11, 47, 12]
        ])), x)) {
            const i = function() {
                if (null === S) {
                    S = new w.a(0);
                    var e = " \t<>'\"、。｡､，．：；‘〈「『〔（［｛｢｣｝］）〕』」〉’｀～…";
                    for (let t = 0; t < e.length; t++) S.set(e.charCodeAt(t), 1);
                    for (let e = 0; e < ".,;".length; e++) S.set(".,;".charCodeAt(e), 2)
                }
                return S
            }();
            let n = [];
            for (let s = 1, a = e.getLineCount(); s <= a; s++) {
                const a = e.getLineContent(s);
                var r = a.length;
                let l = 0,
                    d = 0,
                    c = 0,
                    h = 1,
                    u = !1,
                    p = !1,
                    g = !1,
                    f = !1;
                for (; l < r;) {
                    let e = !1;
                    var o = a.charCodeAt(l);
                    if (13 === h) {
                        let t;
                        switch (o) {
                            case 40:
                                u = !0, t = 0;
                                break;
                            case 41:
                                t = u ? 0 : 1;
                                break;
                            case 91:
                                g = !0, p = !0, t = 0;
                                break;
                            case 93:
                                g = !1, t = p ? 0 : 1;
                                break;
                            case 123:
                                f = !0, t = 0;
                                break;
                            case 125:
                                t = f ? 0 : 1;
                                break;
                            case 39:
                                t = 34 === c || 96 === c ? 0 : 1;
                                break;
                            case 34:
                                t = 39 === c || 96 === c ? 0 : 1;
                                break;
                            case 96:
                                t = 39 === c || 34 === c ? 0 : 1;
                                break;
                            case 42:
                                t = 42 === c ? 1 : 0;
                                break;
                            case 124:
                                t = 124 === c ? 1 : 0;
                                break;
                            case 32:
                                t = g ? 0 : 1;
                                break;
                            default:
                                t = i.get(o)
                        }
                        1 === t && (n.push(k._createLink(i, a, s, d, l)), e = !0)
                    } else if (12 === h) {
                        let t;
                        t = 91 === o ? (p = !0, 0) : i.get(o), 1 === t ? e = !0 : h = 13
                    } else h = t.nextState(h, o), 0 === h && (e = !0);
                    e && (h = 1, u = !1, p = !1, f = !1, d = l + 1, c = o), l++
                }
                13 === h && n.push(k._createLink(i, a, s, d, r))
            }
            return n
        }
    }
    class L {
        constructor() {
            this._defaultValueSet = [
                ["true", "false"],
                ["True", "False"],
                ["Private", "Public", "Friend", "ReadOnly", "Partial", "Protected", "WriteOnly"],
                ["public", "protected", "private"]
            ]
        }
        navigateValueSet(e, t, i, n, r) {
            return e && t && (t = this.doNavigateValueSet(t, r)) ? {
                range: e,
                value: t
            } : i && n && (r = this.doNavigateValueSet(n, r)) ? {
                range: i,
                value: r
            } : null
        }
        doNavigateValueSet(e, t) {
            var i = this.numberReplace(e, t);
            return null !== i ? i : this.textReplace(e, t)
        }
        numberReplace(e, t) {
            var i = Math.pow(10, e.length - (e.lastIndexOf(".") + 1));
            let n = Number(e);
            return e = parseFloat(e), isNaN(n) || isNaN(e) || n !== e || 0 === n && !t ? null : (n = Math.floor(n * i), n += t ? i : -i, String(n / i))
        }
        textReplace(e, t) {
            return this.valueSetsReplace(this._defaultValueSet, e, t)
        }
        valueSetsReplace(e, t, i) {
            let n = null;
            for (let r = 0, o = e.length; null === n && r < o; r++) n = this.valueSetReplace(e[r], t, i);
            return n
        }
        valueSetReplace(e, t, i) {
            let n = e.indexOf(t);
            return 0 <= n ? (n += i ? 1 : -1, n < 0 ? n = e.length - 1 : n %= e.length, e[n]) : null
        }
    }
    L.INSTANCE = new L;
    t = i(136);
    var O = i(17),
        E = i(90),
        N = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    class D extends class {
        constructor(e, t, i, n) {
            this._uri = e, this._lines = t, this._eol = i, this._versionId = n, this._lineStarts = null, this._cachedTextValue = null
        }
        dispose() {
            this._lines.length = 0
        }
        get version() {
            return this._versionId
        }
        getText() {
            return null === this._cachedTextValue && (this._cachedTextValue = this._lines.join(this._eol)), this._cachedTextValue
        }
        onEvents(e) {
            e.eol && e.eol !== this._eol && (this._eol = e.eol, this._lineStarts = null);
            for (const t of e.changes) this._acceptDeleteRange(t.range), this._acceptInsertText(new s.a(t.range.startLineNumber, t.range.startColumn), t.text);
            this._versionId = e.versionId, this._cachedTextValue = null
        }
        _ensureLineStarts() {
            if (!this._lineStarts) {
                var e = this._eol.length,
                    t = this._lines.length;
                const i = new Uint32Array(t);
                for (let n = 0; n < t; n++) i[n] = this._lines[n].length + e;
                this._lineStarts = new b.a(i)
            }
        }
        _setLineText(e, t) {
            this._lines[e] = t, this._lineStarts && this._lineStarts.changeValue(e, this._lines[e].length + this._eol.length)
        }
        _acceptDeleteRange(e) {
            if (e.startLineNumber === e.endLineNumber) return e.startColumn === e.endColumn ? void 0 : void this._setLineText(e.startLineNumber - 1, this._lines[e.startLineNumber - 1].substring(0, e.startColumn - 1) + this._lines[e.startLineNumber - 1].substring(e.endColumn - 1));
            this._setLineText(e.startLineNumber - 1, this._lines[e.startLineNumber - 1].substring(0, e.startColumn - 1) + this._lines[e.endLineNumber - 1].substring(e.endColumn - 1)), this._lines.splice(e.startLineNumber, e.endLineNumber - e.startLineNumber), this._lineStarts && this._lineStarts.removeValues(e.startLineNumber, e.endLineNumber - e.startLineNumber)
        }
        _acceptInsertText(e, t) {
            if (0 !== t.length) {
                let i = Object(l.Q)(t);
                if (1 !== i.length) {
                    i[i.length - 1] += this._lines[e.lineNumber - 1].substring(e.column - 1), this._setLineText(e.lineNumber - 1, this._lines[e.lineNumber - 1].substring(0, e.column - 1) + i[0]);
                    let t = new Uint32Array(i.length - 1);
                    for (let n = 1; n < i.length; n++) this._lines.splice(e.lineNumber + n - 1, 0, i[n]), t[n - 1] = i[n].length + this._eol.length;
                    this._lineStarts && this._lineStarts.insertValues(e.lineNumber, t)
                } else this._setLineText(e.lineNumber - 1, this._lines[e.lineNumber - 1].substring(0, e.column - 1) + i[0] + this._lines[e.lineNumber - 1].substring(e.column - 1))
            }
        }
    } {
        get uri() {
            return this._uri
        }
        get eol() {
            return this._eol
        }
        getValue() {
            return this.getText()
        }
        getLinesContent() {
            return this._lines.slice(0)
        }
        getLineCount() {
            return this._lines.length
        }
        getLineContent(e) {
            return this._lines[e - 1]
        }
        getWordAtPosition(e, t) {
            return (t = Object(_.d)(e.column, Object(_.c)(t), this._lines[e.lineNumber - 1], 0)) ? new a.a(e.lineNumber, t.startColumn, e.lineNumber, t.endColumn) : null
        }
        words(e) {
            const t = this._lines,
                i = this._wordenize.bind(this);
            let n = 0,
                r = "",
                o = 0,
                s = [];
            return {
                *[Symbol.iterator]() {
                    for (;;)
                        if (o < s.length) {
                            var a = r.substring(s[o].start, s[o].end);
                            o += 1, yield a
                        } else {
                            if (!(n < t.length)) break;
                            r = t[n], s = i(r, e), o = 0, n += 1
                        }
                }
            }
        }
        getLineWords(e, t) {
            let i = this._lines[e - 1],
                n = [];
            for (const e of this._wordenize(i, t)) n.push({
                word: i.substring(e.start, e.end),
                startColumn: e.start + 1,
                endColumn: e.end + 1
            });
            return n
        }
        _wordenize(e, t) {
            const i = [];
            var n;
            for (t.lastIndex = 0;
                (n = t.exec(e)) && 0 !== n[0].length;) i.push({
                start: n.index,
                end: n.index + n[0].length
            });
            return i
        }
        getValueInRange(e) {
            if ((e = this._validateRange(e)).startLineNumber === e.endLineNumber) return this._lines[e.startLineNumber - 1].substring(e.startColumn - 1, e.endColumn - 1);
            var t = this._eol,
                i = e.startLineNumber - 1,
                n = e.endLineNumber - 1;
            let r = [];
            r.push(this._lines[i].substring(e.startColumn - 1));
            for (let e = 1 + i; e < n; e++) r.push(this._lines[e]);
            return r.push(this._lines[n].substring(0, e.endColumn - 1)), r.join(t)
        }
        offsetAt(e) {
            return e = this._validatePosition(e), this._ensureLineStarts(), this._lineStarts.getPrefixSum(e.lineNumber - 2) + (e.column - 1)
        }
        positionAt(e) {
            e = Math.floor(e), e = Math.max(0, e), this._ensureLineStarts();
            var t = this._lineStarts.getIndexOf(e);
            e = this._lines[t.index].length;
            return {
                lineNumber: 1 + t.index,
                column: 1 + Math.min(t.remainder, e)
            }
        }
        _validateRange(e) {
            var t = this._validatePosition({
                    lineNumber: e.startLineNumber,
                    column: e.startColumn
                }),
                i = this._validatePosition({
                    lineNumber: e.endLineNumber,
                    column: e.endColumn
                });
            return t.lineNumber !== e.startLineNumber || t.column !== e.startColumn || i.lineNumber !== e.endLineNumber || i.column !== e.endColumn ? {
                startLineNumber: t.lineNumber,
                startColumn: t.column,
                endLineNumber: i.lineNumber,
                endColumn: i.column
            } : e
        }
        _validatePosition(e) {
            if (!s.a.isIPosition(e)) throw new Error("bad position");
            let {
                lineNumber: t,
                column: i
            } = e, n = !1;
            var r;
            return t < 1 ? (t = 1, i = 1, n = !0) : t > this._lines.length ? (t = this._lines.length, i = this._lines[t - 1].length + 1, n = !0) : (r = this._lines[t - 1].length + 1, i < 1 ? (i = 1, n = !0) : i > r && (i = r, n = !0)), n ? {
                lineNumber: t,
                column: i
            } : e
        }
    }
    class I {
        constructor(e, t) {
            this._host = e, this._models = Object.create(null), this._foreignModuleFactory = t, this._foreignModule = null
        }
        dispose() {
            this._models = Object.create(null)
        }
        _getModel(e) {
            return this._models[e]
        }
        _getModels() {
            let e = [];
            return Object.keys(this._models).forEach(t => e.push(this._models[t])), e
        }
        acceptNewModel(e) {
            this._models[e.url] = new D(o.a.parse(e.url), e.lines, e.EOL, e.versionId)
        }
        acceptModelChanged(e, t) {
            if (this._models[e]) {
                this._models[e].onEvents(t)
            }
        }
        acceptRemovedModel(e) {
            this._models[e] && delete this._models[e]
        }
        computeDiff(e, t, i, n) {
            return N(this, void 0, void 0, (function*() {
                const r = this._getModel(e),
                    o = this._getModel(t);
                if (!r || !o) return null;
                var s = r.getLinesContent(),
                    a = o.getLinesContent();
                return a = !(0 < (s = new g(s, a, {
                    shouldComputeCharChanges: !0,
                    shouldPostProcessCharChanges: !0,
                    shouldIgnoreTrimWhitespace: i,
                    shouldMakePrettyDiff: !0,
                    maxComputationTime: n
                }).computeDiff()).changes.length) && this._modelsAreIdentical(r, o), {
                    quitEarly: s.quitEarly,
                    identical: a,
                    changes: s.changes
                }
            }))
        }
        _modelsAreIdentical(e, t) {
            var i = e.getLineCount();
            if (i !== t.getLineCount()) return !1;
            for (let n = 1; n <= i; n++)
                if (e.getLineContent(n) !== t.getLineContent(n)) return !1;
            return !0
        }
        computeMoreMinimalEdits(e, t) {
            return N(this, void 0, void 0, (function*() {
                const i = this._getModel(e);
                if (!i) return t;
                const r = [];
                let o = void 0;
                for (var {
                        range: s,
                        text: l,
                        eol: d
                    } of t = t.slice(0).sort((e, t) => e.range && t.range ? a.a.compareRangesUsingStarts(e.range, t.range) : (e.range ? 0 : 1) - (t.range ? 0 : 1)))
                    if ("number" == typeof d && (o = d), (!a.a.isEmpty(s) || l) && (d = i.getValueInRange(s)) !== (l = l.replace(/\r\n|\n|\r/g, i.eol)))
                        if (Math.max(l.length, d.length) > I._diffLimit) r.push({
                            range: s,
                            text: l
                        });
                        else {
                            var d = Object(n.b)(d, l, !1),
                                c = i.offsetAt(a.a.lift(s).getStartPosition());
                            for (const e of d) {
                                var h = i.positionAt(c + e.originalStart),
                                    u = i.positionAt(c + e.originalStart + e.originalLength);
                                u = {
                                    text: l.substr(e.modifiedStart, e.modifiedLength),
                                    range: {
                                        startLineNumber: h.lineNumber,
                                        startColumn: h.column,
                                        endLineNumber: u.lineNumber,
                                        endColumn: u.column
                                    }
                                };
                                i.getValueInRange(u.range) !== u.text && r.push(u)
                            }
                        } return "number" == typeof o && r.push({
                    eol: o,
                    text: "",
                    range: {
                        startLineNumber: 0,
                        startColumn: 0,
                        endLineNumber: 0,
                        endColumn: 0
                    }
                }), r
            }))
        }
        computeLinks(e) {
            return N(this, void 0, void 0, (function*() {
                var t = this._getModel(e);
                return t ? (t = t) && "function" == typeof t.getLineCount && "function" == typeof t.getLineContent ? k.computeLinks(t) : [] : null
            }))
        }
        textualSuggest(e, t, i, n) {
            return N(this, void 0, void 0, (function*() {
                const r = new E.a(!0);
                var o = new RegExp(i, n);
                const s = new Set;
                e: for (var a of e) {
                    const e = this._getModel(a);
                    if (e)
                        for (var l of e.words(o))
                            if (l !== t && isNaN(Number(l)) && (s.add(l), s.size > I._suggestionsLimit)) break e
                }
                return {
                    words: Array.from(s),
                    duration: r.elapsed()
                }
            }))
        }
        computeWordRanges(e, t, i, n) {
            return N(this, void 0, void 0, (function*() {
                let r = this._getModel(e);
                if (!r) return Object.create(null);
                var o = new RegExp(i, n);
                const s = Object.create(null);
                for (let e = t.startLineNumber; e < t.endLineNumber; e++)
                    for (const t of r.getLineWords(e, o))
                        if (isNaN(Number(t.word))) {
                            let i = s[t.word];
                            i || (i = [], s[t.word] = i), i.push({
                                startLineNumber: e,
                                startColumn: t.startColumn,
                                endLineNumber: e,
                                endColumn: t.endColumn
                            })
                        } return s
            }))
        }
        navigateValueSet(e, t, i, n, r) {
            return N(this, void 0, void 0, (function*() {
                let o = this._getModel(e);
                if (!o) return null;
                var s = new RegExp(n, r);
                t.startColumn === t.endColumn && (t = {
                    startLineNumber: t.startLineNumber,
                    startColumn: t.startColumn,
                    endLineNumber: t.endLineNumber,
                    endColumn: t.endColumn + 1
                });
                var a = o.getValueInRange(t),
                    l = o.getWordAtPosition({
                        lineNumber: t.startLineNumber,
                        column: t.startColumn
                    }, s);
                return l ? (s = o.getValueInRange(l), L.INSTANCE.navigateValueSet(t, a, l, s, i)) : null
            }))
        }
        loadForeignModule(e, t, i) {
            return i = {
                host: O.c(i, (e, t) => this._host.fhr(e, t)),
                getMirrorModels: () => this._getModels()
            }, this._foreignModuleFactory ? (this._foreignModule = this._foreignModuleFactory(i, t), Promise.resolve(O.d(this._foreignModule))) : Promise.reject(new Error("Unexpected usage"))
        }
        fmr(e, t) {
            if (!this._foreignModule || "function" != typeof this._foreignModule[e]) return Promise.reject(new Error("Missing requestHandler or method: " + e));
            try {
                return Promise.resolve(this._foreignModule[e].apply(this._foreignModule, t))
            } catch (e) {
                return Promise.reject(e)
            }
        }
    }
    I._diffLimit = 1e5, I._suggestionsLimit = 1e4, "function" == typeof importScripts && (r.b.monaco = Object(t.a)())
}, function(e, t, i) {
    "use strict";
    var n = i(18),
        r = i.n(n);
    n = i(27);

    function o(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    n = {
        name: "SelectView",
        props: {
            items: Array,
            index: {
                type: Number,
                default: function() {
                    return 0
                }
            }
        },
        model: {
            prop: "index",
            event: "select"
        },
        data: function() {
            return {}
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? o(Object(i), !0).forEach((function(t) {
                    r()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : o(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(n.mapState)({})),
        methods: {
            handleItemClick: function(e) {
                this.$emit("select", e)
            },
            itemClass: function(e) {
                var t = ["item-".concat(this.theme), "item-".concat(e % 2 == 0 ? "double" : "single", "-").concat(this.theme)];
                return e === this.index && t.push("item-selected-".concat(this.theme)), 0 === e ? t.push("item-first") : e === this.items.length - 1 && t.push("item-last"), t
            }
        }
    }, i(292), i = i(30), n = Object(i.a)(n, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-select-view"]
        }, e._l(e.items, (function(t, n) {
            return i("div", {
                key: n,
                class: e.itemClass(n),
                domProps: {
                    innerHTML: e._s(t)
                },
                on: {
                    click: function(t) {
                        return e.handleItemClick(n)
                    }
                }
            })
        })), 0)
    }), [], !1, null, "38b9c85e", null), t.a = n.exports
}, function(e, t, i) {
    "use strict";
    var n = i(18),
        r = i.n(n);
    n = i(27);

    function o(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    n = {
        props: ["on"],
        model: {
            prop: "on",
            event: "change"
        },
        data: function() {
            return {}
        },
        watch: {},
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? o(Object(i), !0).forEach((function(t) {
                    r()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : o(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(n.mapState)({})),
        methods: {
            handleClick: function(e) {
                this.$emit("change", !this.on)
            }
        },
        mounted: function() {}
    }, i(294), i = i(30), n = Object(i.a)(n, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            class: ["main-" + e.theme],
            on: {
                click: e.handleClick
            }
        }, [t("transition", {
            attrs: {
                name: "move-right"
            }
        }, [e.on ? e._e() : t("div", {
            staticClass: "text"
        }, [t("div", {
            staticClass: "base tint-right"
        }), e._v(" "), t("div", {
            staticClass: "base text-font text-off"
        })])]), e._v(" "), t("transition", {
            attrs: {
                name: "move-left"
            }
        }, [e.on ? t("div", {
            staticClass: "text"
        }, [t("div", {
            staticClass: "base text-font text-on"
        }), e._v(" "), t("div", {
            staticClass: "base tint-left"
        })]) : e._e()])], 1)
    }), [], !1, null, "e6ab4ba2", null), t.a = n.exports
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return w
    })), i.d(t, "a", (function() {
        return y
    }));
    var n = i(1),
        r = i(53);

    function o(e, t = {}) {
        var i = s(t);
        return function e(t, i, r, o) {
            let s;
            if (2 === i.type) s = document.createTextNode(i.content || "");
            else if (3 === i.type) s = document.createElement("b");
            else if (4 === i.type) s = document.createElement("i");
            else if (7 === i.type && o) s = document.createElement("code");
            else if (5 === i.type && r) {
                const e = document.createElement("a");
                e.href = "#", r.disposables.add(n.l(e, "click", e => {
                    r.callback(String(i.index), e)
                })), s = e
            } else 8 === i.type ? s = document.createElement("br") : 1 === i.type && (s = t);
            s && t !== s && t.appendChild(s), s && Array.isArray(i.children) && i.children.forEach(t => {
                e(s, t, r, o)
            })
        }(i, function(e, t) {
            var i = {
                type: 1,
                children: []
            };
            let n = 0,
                r = i;
            const o = [],
                s = new a(e);
            for (; !s.eos();) {
                let e = s.next();
                var d = "\\" === e && 0 !== l(s.peek(), t);
                if (d && (e = s.next()), !d && function(e, t) {
                        return 0 !== l(e, t)
                    }(e, t) && e === s.peek()) {
                    s.advance(), 2 === r.type && (r = o.pop());
                    var c = l(e, t);
                    if (r.type === c || 5 === r.type && 6 === c) r = o.pop();
                    else {
                        const e = {
                            type: c,
                            children: []
                        };
                        5 === c && (e.index = n, n++), r.children.push(e), o.push(r), r = e
                    }
                } else "\n" === e ? (2 === r.type && (r = o.pop()), r.children.push({
                    type: 8
                })) : 2 !== r.type ? (c = {
                    type: 2,
                    content: e
                }, r.children.push(c), o.push(r), r = c) : r.content += e
            }
            return 2 === r.type && (r = o.pop()), o.length, i
        }(e, !!t.renderCodeSegments), t.actionHandler, t.renderCodeSegments), i
    }

    function s(e) {
        var t = e.inline ? "span" : "div";
        const i = document.createElement(t);
        return e.className && (i.className = e.className), i
    }
    class a {
        constructor(e) {
            this.source = e, this.index = 0
        }
        eos() {
            return this.index >= this.source.length
        }
        next() {
            var e = this.peek();
            return this.advance(), e
        }
        peek() {
            return this.source[this.index]
        }
        advance() {
            this.index++
        }
    }

    function l(e, t) {
        switch (e) {
            case "*":
                return 3;
            case "_":
                return 4;
            case "[":
                return 5;
            case "]":
                return 6;
            case "`":
                return t ? 7 : 0;
            default:
                return 0
        }
    }
    var d = i(116),
        c = i(91),
        h = i(112),
        u = i(84),
        p = (t = i(11), i(2));
    class g {
        constructor(e, t = 0, i = e.length, n = t - 1) {
            this.items = e, this.start = t, this.end = i, this.index = n
        }
        current() {
            return this.index === this.start - 1 || this.index === this.end ? null : this.items[this.index]
        }
        next() {
            return this.index = Math.min(this.index + 1, this.end), this.current()
        }
        previous() {
            return this.index = Math.max(this.index - 1, this.start - 1), this.current()
        }
        first() {
            return this.index = this.start, this.current()
        }
        last() {
            return this.index = this.end - 1, this.current()
        }
    }
    class f {
        constructor(e = [], t = 10) {
            this._initialize(e), this._limit = t, this._onChange()
        }
        getHistory() {
            return this._elements
        }
        add(e) {
            this._history.delete(e), this._history.add(e), this._onChange()
        }
        next() {
            return this._currentPosition() !== this._elements.length - 1 ? this._navigator.next() : null
        }
        previous() {
            return 0 !== this._currentPosition() ? this._navigator.previous() : null
        }
        current() {
            return this._navigator.current()
        }
        first() {
            return this._navigator.first()
        }
        last() {
            return this._navigator.last()
        }
        has(e) {
            return this._history.has(e)
        }
        _onChange() {
            this._reduceToLimit();
            var e = this._elements;
            this._navigator = new g(e, 0, e.length, e.length)
        }
        _reduceToLimit() {
            const e = this._elements;
            e.length > this._limit && this._initialize(e.slice(e.length - this._limit))
        }
        _currentPosition() {
            var e = this._navigator.current();
            return e ? this._elements.indexOf(e) : -1
        }
        _initialize(e) {
            this._history = new Set;
            for (const t of e) this._history.add(t)
        }
        get _elements() {
            const e = [];
            return this._history.forEach(t => e.push(t)), e
        }
    }
    var m = i(47),
        v = (i(383), i(0));
    const b = n.a,
        _ = {
            inputBackground: t.a.fromHex("#3C3C3C"),
            inputForeground: t.a.fromHex("#CCCCCC"),
            inputValidationInfoBorder: t.a.fromHex("#55AAFF"),
            inputValidationInfoBackground: t.a.fromHex("#063B49"),
            inputValidationWarningBorder: t.a.fromHex("#B89500"),
            inputValidationWarningBackground: t.a.fromHex("#352A05"),
            inputValidationErrorBorder: t.a.fromHex("#BE1100"),
            inputValidationErrorBackground: t.a.fromHex("#5A1D1D")
        };
    class w extends u.a {
        constructor(e, t, i) {
            super(), this.state = "idle", this.maxHeight = Number.POSITIVE_INFINITY, this._onDidChange = this._register(new p.b), this.onDidChange = this._onDidChange.event, this._onDidHeightChange = this._register(new p.b), this.onDidHeightChange = this._onDidHeightChange.event, this.contextViewProvider = t, this.options = i || Object.create(null), Object(m.e)(this.options, _, !1), this.message = null, this.placeholder = this.options.placeholder || "", this.tooltip = null !== (i = this.options.tooltip) && void 0 !== i ? i : this.placeholder || "", this.ariaLabel = this.options.ariaLabel || "", this.inputBackground = this.options.inputBackground, this.inputForeground = this.options.inputForeground, this.inputBorder = this.options.inputBorder, this.inputValidationInfoBorder = this.options.inputValidationInfoBorder, this.inputValidationInfoBackground = this.options.inputValidationInfoBackground, this.inputValidationInfoForeground = this.options.inputValidationInfoForeground, this.inputValidationWarningBorder = this.options.inputValidationWarningBorder, this.inputValidationWarningBackground = this.options.inputValidationWarningBackground, this.inputValidationWarningForeground = this.options.inputValidationWarningForeground, this.inputValidationErrorBorder = this.options.inputValidationErrorBorder, this.inputValidationErrorBackground = this.options.inputValidationErrorBackground, this.inputValidationErrorForeground = this.options.inputValidationErrorForeground, this.options.validationOptions && (this.validation = this.options.validationOptions.validation), this.element = n.n(e, b(".monaco-inputbox.idle")), i = this.options.flexibleHeight ? "textarea" : "input";
            let o = n.n(this.element, b(".ibwrapper"));
            if (this.input = n.n(o, b(i + ".input.empty")), this.input.setAttribute("autocorrect", "off"), this.input.setAttribute("autocapitalize", "off"), this.input.setAttribute("spellcheck", "false"), this.onfocus(this.input, () => this.element.classList.add("synthetic-focus")), this.onblur(this.input, () => this.element.classList.remove("synthetic-focus")), this.options.flexibleHeight) {
                this.maxHeight = "number" == typeof this.options.flexibleMaxHeight ? this.options.flexibleMaxHeight : Number.POSITIVE_INFINITY, this.mirror = n.n(o, b("div.mirror")), this.mirror.innerText = " ", this.scrollableElement = new h.b(this.element, {
                    vertical: 1
                }), this.options.flexibleWidth && (this.input.setAttribute("wrap", "off"), this.mirror.style.whiteSpace = "pre", this.mirror.style.wordWrap = "initial"), n.n(e, this.scrollableElement.getDomNode()), this._register(this.scrollableElement), this._register(this.scrollableElement.onScroll(e => this.input.scrollTop = e.scrollTop)), e = this._register(new r.a(document, "selectionchange"));
                const t = p.c.filter(e.event, () => {
                    var e = document.getSelection();
                    return (null == e ? void 0 : e.anchorNode) === o
                });
                this._register(t(this.updateScrollDimensions, this)), this._register(this.onDidHeightChange(this.updateScrollDimensions, this))
            } else this.input.type = this.options.type || "text", this.input.setAttribute("wrap", "off");
            this.ariaLabel && this.input.setAttribute("aria-label", this.ariaLabel), this.placeholder && !this.options.showPlaceholderOnFocus && this.setPlaceHolder(this.placeholder), this.tooltip && this.setTooltip(this.tooltip), this.oninput(this.input, () => this.onValueChange()), this.onblur(this.input, () => this.onBlur()), this.onfocus(this.input, () => this.onFocus()), this.ignoreGesture(this.input), setTimeout(() => this.updateMirror(), 0), this.options.actions && (this.actionbar = this._register(new d.a(this.element)), this.actionbar.push(this.options.actions, {
                icon: !0,
                label: !1
            })), this.applyStyles()
        }
        onBlur() {
            this._hideMessage(), this.options.showPlaceholderOnFocus && this.input.setAttribute("placeholder", "")
        }
        onFocus() {
            this._showMessage(), this.options.showPlaceholderOnFocus && this.input.setAttribute("placeholder", this.placeholder || "")
        }
        setPlaceHolder(e) {
            this.placeholder = e, this.input.setAttribute("placeholder", e)
        }
        setTooltip(e) {
            this.tooltip = e, this.input.title = e
        }
        setAriaLabel(e) {
            (this.ariaLabel = e) ? this.input.setAttribute("aria-label", this.ariaLabel): this.input.removeAttribute("aria-label")
        }
        getAriaLabel() {
            return this.ariaLabel
        }
        get inputElement() {
            return this.input
        }
        get value() {
            return this.input.value
        }
        set value(e) {
            this.input.value !== e && (this.input.value = e, this.onValueChange())
        }
        get height() {
            return "number" == typeof this.cachedHeight ? this.cachedHeight : n.E(this.element)
        }
        focus() {
            this.input.focus()
        }
        blur() {
            this.input.blur()
        }
        hasFocus() {
            return document.activeElement === this.input
        }
        select(e = null) {
            this.input.select(), e && (this.input.setSelectionRange(e.start, e.end), e.end === this.input.value.length && (this.input.scrollLeft = this.input.scrollWidth))
        }
        isSelectionAtEnd() {
            return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd
        }
        enable() {
            this.input.removeAttribute("disabled")
        }
        disable() {
            this.blur(), this.input.disabled = !0, this._hideMessage()
        }
        get width() {
            return n.F(this.input)
        }
        set width(e) {
            if (this.options.flexibleHeight && this.options.flexibleWidth) {
                let t = 0;
                this.mirror && (t = (parseFloat(this.mirror.style.paddingLeft || "") || 0) + (parseFloat(this.mirror.style.paddingRight || "") || 0)), this.input.style.width = e - t + "px"
            } else this.input.style.width = e + "px";
            this.mirror && (this.mirror.style.width = e + "px")
        }
        set paddingRight(e) {
            this.options.flexibleHeight && this.options.flexibleWidth ? this.input.style.width = `calc(100% - ${e}px)` : this.input.style.paddingRight = e + "px", this.mirror && (this.mirror.style.paddingRight = e + "px")
        }
        updateScrollDimensions() {
            var e, t, i;
            "number" == typeof this.cachedContentHeight && "number" == typeof this.cachedHeight && this.scrollableElement && (e = this.cachedContentHeight, t = this.cachedHeight, i = this.input.scrollTop, this.scrollableElement.setScrollDimensions({
                scrollHeight: e,
                height: t
            }), this.scrollableElement.setScrollPosition({
                scrollTop: i
            }))
        }
        showMessage(e, t) {
            this.message = e, this.element.classList.remove("idle"), this.element.classList.remove("info"), this.element.classList.remove("warning"), this.element.classList.remove("error"), this.element.classList.add(this.classForType(e.type)), e = this.stylesForType(this.message.type), this.element.style.border = e.border ? "1px solid " + e.border : "", (this.hasFocus() || t) && this._showMessage()
        }
        hideMessage() {
            this.message = null, this.element.classList.remove("info"), this.element.classList.remove("warning"), this.element.classList.remove("error"), this.element.classList.add("idle"), this._hideMessage(), this.applyStyles()
        }
        validate() {
            let e = null;
            return this.validation && (e = this.validation(this.value), e ? (this.inputElement.setAttribute("aria-invalid", "true"), this.showMessage(e)) : this.inputElement.hasAttribute("aria-invalid") && (this.inputElement.removeAttribute("aria-invalid"), this.hideMessage())), null == e ? void 0 : e.type
        }
        stylesForType(e) {
            switch (e) {
                case 1:
                    return {
                        border: this.inputValidationInfoBorder, background: this.inputValidationInfoBackground, foreground: this.inputValidationInfoForeground
                    };
                case 2:
                    return {
                        border: this.inputValidationWarningBorder, background: this.inputValidationWarningBackground, foreground: this.inputValidationWarningForeground
                    };
                default:
                    return {
                        border: this.inputValidationErrorBorder, background: this.inputValidationErrorBackground, foreground: this.inputValidationErrorForeground
                    }
            }
        }
        classForType(e) {
            switch (e) {
                case 1:
                    return "info";
                case 2:
                    return "warning";
                default:
                    return "error"
            }
        }
        _showMessage() {
            if (this.contextViewProvider && this.message) {
                let e, t, i = () => e.style.width = n.F(this.element) + "px";
                this.contextViewProvider.showContextView({
                    getAnchor: () => this.element,
                    anchorAlignment: 1,
                    render: t => {
                        if (!this.message) return null;
                        e = n.n(t, b(".monaco-inputbox-container")), i(), t = {
                            inline: !0,
                            className: "monaco-inputbox-message"
                        };
                        const r = (this.message.formatContent ? o : function(e, t) {
                            const i = s(t);
                            return i.textContent = e, i
                        })(this.message.content, t);
                        r.classList.add(this.classForType(this.message.type));
                        const a = this.stylesForType(this.message.type);
                        return r.style.backgroundColor = a.background ? a.background.toString() : "", r.style.color = a.foreground ? a.foreground.toString() : "", r.style.border = a.border ? "1px solid " + a.border : "", n.n(e, r), null
                    },
                    onHide: () => {
                        this.state = "closed"
                    },
                    layout: i
                }), t = 3 === this.message.type ? v.a("alertErrorMessage", "Error: {0}", this.message.content) : 2 === this.message.type ? v.a("alertWarningMessage", "Warning: {0}", this.message.content) : v.a("alertInfoMessage", "Info: {0}", this.message.content), c.a(t), this.state = "open"
            }
        }
        _hideMessage() {
            this.contextViewProvider && ("open" === this.state && this.contextViewProvider.hideContextView(), this.state = "idle")
        }
        onValueChange() {
            this._onDidChange.fire(this.value), this.validate(), this.updateMirror(), this.input.classList.toggle("empty", !this.value), "open" === this.state && this.contextViewProvider && this.contextViewProvider.layout()
        }
        updateMirror() {
            if (this.mirror) {
                const t = this.value;
                var e = 10 === t.charCodeAt(t.length - 1) ? " " : "";
                (t + e).replace(/\u000c/g, "") ? this.mirror.textContent = t + e : this.mirror.innerText = " ", this.layout()
            }
        }
        style(e) {
            this.inputBackground = e.inputBackground, this.inputForeground = e.inputForeground, this.inputBorder = e.inputBorder, this.inputValidationInfoBackground = e.inputValidationInfoBackground, this.inputValidationInfoForeground = e.inputValidationInfoForeground, this.inputValidationInfoBorder = e.inputValidationInfoBorder, this.inputValidationWarningBackground = e.inputValidationWarningBackground, this.inputValidationWarningForeground = e.inputValidationWarningForeground, this.inputValidationWarningBorder = e.inputValidationWarningBorder, this.inputValidationErrorBackground = e.inputValidationErrorBackground, this.inputValidationErrorForeground = e.inputValidationErrorForeground, this.inputValidationErrorBorder = e.inputValidationErrorBorder, this.applyStyles()
        }
        applyStyles() {
            var e = this.inputBackground ? this.inputBackground.toString() : "",
                t = this.inputForeground ? this.inputForeground.toString() : "",
                i = this.inputBorder ? this.inputBorder.toString() : "";
            this.element.style.backgroundColor = e, this.element.style.color = t, this.input.style.backgroundColor = "inherit", this.input.style.color = t, this.element.style.borderWidth = i ? "1px" : "", this.element.style.borderStyle = i ? "solid" : "", this.element.style.borderColor = i
        }
        layout() {
            var e;
            this.mirror && (e = this.cachedContentHeight, this.cachedContentHeight = n.E(this.mirror), e !== this.cachedContentHeight && (this.cachedHeight = Math.min(this.cachedContentHeight, this.maxHeight), this.input.style.height = this.cachedHeight + "px", this._onDidHeightChange.fire(this.cachedContentHeight)))
        }
        insertAtCursor(e) {
            const t = this.inputElement;
            var i = t.selectionStart,
                n = t.selectionEnd;
            const r = t.value;
            null !== i && null !== n && (this.value = r.substr(0, i) + e + r.substr(n), t.setSelectionRange(i + 1, i + 1), this.layout())
        }
        dispose() {
            this._hideMessage(), this.message = null, this.actionbar && this.actionbar.dispose(), super.dispose()
        }
    }
    class y extends w {
        constructor(e, t, i) {
            var n = v.a({
                key: "history.inputbox.hint",
                comment: ["Text will be prefixed with ⇅ plus a single space, then used as a hint where input field keeps history"]
            }, "for history");
            const r = " or ⇅ " + n,
                o = ` (⇅ ${n})`;
            super(e, t, i), this.history = new f(i.history, 100);
            const s = () => {
                var e;
                i.showHistoryHint && i.showHistoryHint() && !this.placeholder.endsWith(r) && !this.placeholder.endsWith(o) && this.history.getHistory().length && (e = this.placeholder.endsWith(")") ? r : o, e = this.placeholder + e, i.showPlaceholderOnFocus && document.activeElement !== this.input ? this.placeholder = e : this.setPlaceHolder(e))
            };
            this.observer = new MutationObserver((e, t) => {
                e.forEach(e => {
                    e.target.textContent || s()
                })
            }), this.observer.observe(this.input, {
                attributeFilter: ["class"]
            }), this.onfocus(this.input, () => s()), this.onblur(this.input, () => {
                var e = e => !!this.placeholder.endsWith(e) && (e = this.placeholder.slice(0, this.placeholder.length - e.length), i.showPlaceholderOnFocus ? this.placeholder = e : this.setPlaceHolder(e), !0);
                e(o) || e(r)
            })
        }
        dispose() {
            super.dispose(), this.observer && (this.observer.disconnect(), this.observer = void 0)
        }
        addToHistory() {
            this.value && this.value !== this.getCurrentValue() && this.history.add(this.value)
        }
        showNextValue() {
            this.history.has(this.value) || this.addToHistory();
            let e = this.getNextValue();
            e = e && (e === this.value ? this.getNextValue() : e), e && (this.value = e, c.c(this.value))
        }
        showPreviousValue() {
            this.history.has(this.value) || this.addToHistory();
            let e = this.getPreviousValue();
            e = e && (e === this.value ? this.getPreviousValue() : e), e && (this.value = e, c.c(this.value))
        }
        getCurrentValue() {
            let e = this.history.current();
            return e || (e = this.history.last(), this.history.next()), e
        }
        getPreviousValue() {
            return this.history.previous() || this.history.first()
        }
        getNextValue() {
            return this.history.next() || this.history.last()
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return h
    }));
    var n, r = i(18),
        o = i.n(r),
        s = (t = i(10), r = i.n(t), t = i(3), i.n(t)),
        a = i(42),
        l = i(19),
        d = (t = i(69), i.n(t)),
        c = i(12),
        h = (n = r()(s.a.mark((function e() {
            var t, i, n, r = arguments;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (t = 0 < r.length && void 0 !== r[0] ? r[0] : [], Object(l.i)()) {
                            e.next = 3;
                            break
                        }
                        return e.abrupt("return", !1);
                    case 3:
                        return i = a.a.state.app.isDevMode ? Object(c.join)(Object(c.resolve)("./"), "/static/files") : a.a.getters.filesPath, n = {}, o()(n, l.b, "arm64"), o()(n, l.c, "x64"), n = n[Object(l.g)()], i = Object(c.join)(i, "darwin", n), e.prev = 6, e.next = 9, d.a.post("http://127.0.0.1:53000/command", {
                            path: Object(c.join)(i, "sysproxy"),
                            args: t
                        });
                    case 9:
                        return n = e.sent, i = n.status, n = n.data, e.abrupt("return", {
                            success: 200 === i,
                            output: n
                        });
                    case 15:
                        e.prev = 15, e.t0 = e.catch(6);
                    case 17:
                        return e.abrupt("return", {
                            success: !1,
                            data: ""
                        });
                    case 18:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [6, 15]
            ])
        }))), function() {
            return n.apply(this, arguments)
        })
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return u
    })), i.d(t, "a", (function() {
        return p
    })), i.d(t, "c", (function() {
        return g
    }));
    var n, r = i(10),
        o = (t = i.n(r), r = i(3), i.n(r)),
        s = i(40),
        a = i(42),
        l = i(178),
        d = i(45),
        c = (r = i(143), i.n(r)),
        h = i(167),
        u = Symbol(),
        p = Symbol(),
        g = (n = t()(o.a.mark((function e(t, n) {
            var r, g, f, m, v, b;
            return o.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.t0 = i(69), e.t1 = i(45), e.t2 = a.a.state.app.clashPath, e.t3 = h.Console, e.t4 = l.createWriteStream, e.next = 7, a.a.dispatch("getScriptLogPath");
                    case 7:
                        if (e.t5 = e.sent, e.t6 = (0, e.t4)(e.t5), e.t7 = new e.t3(e.t6), e.t8 = s.h, e.t9 = s.g, r = {
                                axios: e.t0,
                                yaml: e.t1,
                                homeDir: e.t2,
                                console: e.t7,
                                notify: e.t8,
                                dialog: e.t9
                            }, v = a.a.state.app.settings.scriptsText, g = {}, v) try {
                            f = Object(d.parse)(v), m = f.scripts, g = m || {}
                        } catch (e) {}
                        v = function() {
                            var e = (null == (t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}) ? void 0 : t.code) || "",
                                t = (null == t ? void 0 : t.file) || "";
                            return e ? c()("'use strict';\n".concat(e)).run : t ? (e = Object(l.readFileSync)(t, "utf8"), c()("'use strict';\n".concat(e), t).run) : function() {
                                return ""
                            }
                        }, e.t10 = n, e.next = e.t10 === u ? 20 : e.t10 === p ? 23 : 26;
                        break;
                    case 20:
                        return b = g.proxy, v(b)(t, r), e.abrupt("break", 26);
                    case 23:
                        return b = g.profile, v(b)(t, r), e.abrupt("break", 26);
                    case 26:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e, t) {
            return n.apply(this, arguments)
        })
}, function(e, t, i) {
    "use strict";

    function n(e, t) {
        if (!e) throw new Error(t ? `Assertion failed (${t})` : "Assertion Failed")
    }
    i.d(t, "a", (function() {
        return n
    }))
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return u
    })), i.d(t, "b", (function() {
        return g
    }));
    var n, r = i(2),
        o = i(4),
        s = i(17),
        a = i(32),
        l = function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        };
    (t = n = n || {})[t.None = 0] = "None", t[t.Initialized = 1] = "Initialized", t[t.Closed = 2] = "Closed";
    class d extends o.a {
        constructor(e, t = Object.create(null)) {
            super(), this.database = e, this.options = t, this._onDidChangeStorage = this._register(new r.b), this.onDidChangeStorage = this._onDidChangeStorage.event, this.state = n.None, this.cache = new Map, this.flushDelayer = new a.f(d.DEFAULT_FLUSH_DELAY), this.pendingDeletes = new Set, this.pendingInserts = new Map, this.whenFlushedCallbacks = [], this.registerListeners()
        }
        registerListeners() {
            this._register(this.database.onDidChangeItemsExternal(e => this.onDidChangeItemsExternal(e)))
        }
        onDidChangeItemsExternal(e) {
            var t;
            null !== (t = e.changed) && void 0 !== t && t.forEach((e, t) => this.accept(t, e)), null !== (e = e.deleted) && void 0 !== e && e.forEach(e => this.accept(e, void 0))
        }
        accept(e, t) {
            if (this.state !== n.Closed) {
                let i = !1;
                Object(s.m)(t) ? i = this.cache.delete(e) : this.cache.get(e) !== t && (this.cache.set(e, t), i = !0), i && this._onDidChangeStorage.fire(e)
            }
        }
        get(e, t) {
            return e = this.cache.get(e), Object(s.m)(e) ? t : e
        }
        getBoolean(e, t) {
            return e = this.get(e), Object(s.m)(e) ? t : "true" === e
        }
        getNumber(e, t) {
            return e = this.get(e), Object(s.m)(e) ? t : parseInt(e, 10)
        }
        set(e, t) {
            return l(this, void 0, void 0, (function*() {
                if (this.state !== n.Closed) {
                    if (Object(s.m)(t)) return this.delete(e);
                    var i = String(t);
                    return this.cache.get(e) !== i ? (this.cache.set(e, i), this.pendingInserts.set(e, i), this.pendingDeletes.delete(e), this._onDidChangeStorage.fire(e), this.flushDelayer.trigger(() => this.flushPending())) : void 0
                }
            }))
        }
        delete(e) {
            return l(this, void 0, void 0, (function*() {
                if (this.state !== n.Closed && this.cache.delete(e)) return this.pendingDeletes.has(e) || this.pendingDeletes.add(e), this.pendingInserts.delete(e), this._onDidChangeStorage.fire(e), this.flushDelayer.trigger(() => this.flushPending())
            }))
        }
        get hasPending() {
            return 0 < this.pendingInserts.size || 0 < this.pendingDeletes.size
        }
        flushPending() {
            return l(this, void 0, void 0, (function*() {
                if (this.hasPending) {
                    var e = {
                        insert: this.pendingInserts,
                        delete: this.pendingDeletes
                    };
                    return this.pendingDeletes = new Set, this.pendingInserts = new Map, this.database.updateItems(e).finally(() => {
                        var e;
                        if (!this.hasPending)
                            for (; this.whenFlushedCallbacks.length;) null !== (e = this.whenFlushedCallbacks.pop()) && void 0 !== e && e()
                    })
                }
            }))
        }
        dispose() {
            this.flushDelayer.dispose(), super.dispose()
        }
    }
    d.DEFAULT_FLUSH_DELAY = 100;
    class c {
        constructor() {
            this.onDidChangeItemsExternal = r.c.None, this.items = new Map
        }
        updateItems(e) {
            return l(this, void 0, void 0, (function*() {
                e.insert && e.insert.forEach((e, t) => this.items.set(t, e)), e.delete && e.delete.forEach(e => this.items.delete(e))
            }))
        }
    }
    i = i(26);
    const h = "__$__targetStorageMarker",
        u = Object(i.c)("storageService");
    (i = {})[i.NONE = 0] = "NONE", i[i.SHUTDOWN = 1] = "SHUTDOWN";
    class p extends o.a {
        constructor(e = {
            flushInterval: p.DEFAULT_FLUSH_INTERVAL
        }) {
            super(), this.options = e, this._onDidChangeValue = this._register(new r.e), this._onDidChangeTarget = this._register(new r.e), this._onWillSaveState = this._register(new r.b), this.onWillSaveState = this._onWillSaveState.event, this._workspaceKeyTargets = void 0, this._globalKeyTargets = void 0
        }
        emitDidChangeValue(e, t) {
            t === h ? (0 === e ? this._globalKeyTargets = void 0 : 1 === e && (this._workspaceKeyTargets = void 0), this._onDidChangeTarget.fire({
                scope: e
            })) : this._onDidChangeValue.fire({
                scope: e,
                key: t,
                target: this.getKeyTargets(e)[t]
            })
        }
        get(e, t, i) {
            return null === (t = this.getStorage(t)) || void 0 === t ? void 0 : t.get(e, i)
        }
        getBoolean(e, t, i) {
            return null === (t = this.getStorage(t)) || void 0 === t ? void 0 : t.getBoolean(e, i)
        }
        getNumber(e, t, i) {
            return null === (t = this.getStorage(t)) || void 0 === t ? void 0 : t.getNumber(e, i)
        }
        store(e, t, i, n) {
            Object(s.m)(t) ? this.remove(e, i) : this.withPausedEmitters(() => {
                var r;
                this.updateKeyTarget(e, i, n), null !== (r = this.getStorage(i)) && void 0 !== r && r.set(e, t)
            })
        }
        remove(e, t) {
            this.withPausedEmitters(() => {
                var i;
                this.updateKeyTarget(e, t, void 0), null !== (i = this.getStorage(t)) && void 0 !== i && i.delete(e)
            })
        }
        withPausedEmitters(e) {
            this._onDidChangeValue.pause(), this._onDidChangeTarget.pause();
            try {
                e()
            } finally {
                this._onDidChangeValue.resume(), this._onDidChangeTarget.resume()
            }
        }
        updateKeyTarget(e, t, i) {
            const n = this.getKeyTargets(t);
            "number" == typeof i ? n[e] !== i && (n[e] = i, null !== (i = this.getStorage(t)) && void 0 !== i && i.set(h, JSON.stringify(n))) : "number" == typeof n[e] && (delete n[e], null !== (t = this.getStorage(t)) && void 0 !== t && t.set(h, JSON.stringify(n)))
        }
        get workspaceKeyTargets() {
            return this._workspaceKeyTargets || (this._workspaceKeyTargets = this.loadKeyTargets(1)), this._workspaceKeyTargets
        }
        get globalKeyTargets() {
            return this._globalKeyTargets || (this._globalKeyTargets = this.loadKeyTargets(0)), this._globalKeyTargets
        }
        getKeyTargets(e) {
            return 0 === e ? this.globalKeyTargets : this.workspaceKeyTargets
        }
        loadKeyTargets(e) {
            if (e = this.get(h, e)) try {
                return JSON.parse(e)
            } catch (e) {}
            return Object.create(null)
        }
    }
    p.DEFAULT_FLUSH_INTERVAL = 6e4;
    class g extends p {
        constructor() {
            super(), this.globalStorage = this._register(new d(new c)), this.workspaceStorage = this._register(new d(new c)), this._register(this.workspaceStorage.onDidChangeStorage(e => this.emitDidChangeValue(1, e))), this._register(this.globalStorage.onDidChangeStorage(e => this.emitDidChangeValue(0, e)))
        }
        getStorage(e) {
            return 0 === e ? this.globalStorage : this.workspaceStorage
        }
    }
}, function(e, t) {
    e.exports = require("net")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return o
    }));
    let n = !1,
        r = null;
    class o {
        static getSameOriginWindowChain() {
            if (!r) {
                r = [];
                let t = window;
                for (var e;
                    (e = function(e) {
                        if (!e.parent || e.parent === e) return null;
                        try {
                            var t = e.location,
                                i = e.parent.location;
                            if ("null" !== t.origin && "null" !== i.origin && t.origin !== i.origin) return n = !0, null
                        } catch (e) {
                            return n = !0, null
                        }
                        return e.parent
                    }(t)) ? r.push({
                        window: t,
                        iframeElement: t.frameElement || null
                    }) : r.push({
                        window: t,
                        iframeElement: null
                    }), t = e, t;);
            }
            return r.slice(0)
        }
        static hasDifferentOriginAncestor() {
            return r || this.getSameOriginWindowChain(), n
        }
        static getPositionOfChildWindowRelativeToAncestorWindow(e, t) {
            if (!t || e === t) return {
                top: 0,
                left: 0
            };
            let i = 0,
                n = 0;
            for (const e of this.getSameOriginWindowChain()) {
                if (i += e.window.scrollY, n += e.window.scrollX, e.window === t) break;
                if (!e.iframeElement) break;
                var r = e.iframeElement.getBoundingClientRect();
                i += r.top, n += r.left
            }
            return {
                top: i,
                left: n
            }
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return s
    })), i.d(t, "b", (function() {
        return a
    }));
    var n = i(59),
        r = i(110);

    function o(e) {
        return e.replace(/\n/g, "\\n").replace(/\r/g, "\\r")
    }
    class s {
        constructor(e, t, i, n) {
            this.oldPosition = e, this.oldText = t, this.newPosition = i, this.newText = n
        }
        get oldLength() {
            return this.oldText.length
        }
        get oldEnd() {
            return this.oldPosition + this.oldText.length
        }
        get newLength() {
            return this.newText.length
        }
        get newEnd() {
            return this.newPosition + this.newText.length
        }
        toString() {
            return 0 === this.oldText.length ? `(insert@${this.oldPosition} "${o(this.newText)}")` : 0 === this.newText.length ? `(delete@${this.oldPosition} "${o(this.oldText)}")` : `(replace@${this.oldPosition} "${o(this.oldText)}" with "${o(this.newText)}")`
        }
        static _writeStringSize(e) {
            return 4 + 2 * e.length
        }
        static _writeString(e, t, i) {
            var r = t.length;
            n.f(e, r, i), i += 4;
            for (let o = 0; o < r; o++) n.e(e, t.charCodeAt(o), i), i += 2;
            return i
        }
        static _readString(e, t) {
            var i = n.c(e, t);
            return t += 4, Object(r.b)(e, t, i)
        }
        writeSize() {
            return 8 + s._writeStringSize(this.oldText) + s._writeStringSize(this.newText)
        }
        write(e, t) {
            return n.f(e, this.oldPosition, t), n.f(e, this.newPosition, t += 4), t += 4, t = s._writeString(e, this.oldText, t), s._writeString(e, this.newText, t)
        }
        static read(e, t, i) {
            var r = n.c(e, t),
                o = n.c(e, t += 4);
            t += 4;
            var a = s._readString(e, t);
            return t += s._writeStringSize(a), e = s._readString(e, t), t += s._writeStringSize(e), i.push(new s(r, a, o, e)), t
        }
    }

    function a(e, t) {
        if (null === e || 0 === e.length) return t;
        return new l(e, t).compress()
    }
    class l {
        constructor(e, t) {
            this._prevEdits = e, this._currEdits = t, this._result = [], this._resultLen = 0, this._prevLen = this._prevEdits.length, this._prevDeltaOffset = 0, this._currLen = this._currEdits.length, this._currDeltaOffset = 0
        }
        compress() {
            let e = 0,
                t = 0,
                i = this._getPrev(e),
                n = this._getCurr(t);
            for (; e < this._prevLen || t < this._currLen;)
                if (null !== i)
                    if (null !== n)
                        if (n.oldEnd <= i.newPosition) this._acceptCurr(n), n = this._getCurr(++t);
                        else if (i.newEnd <= n.oldPosition) this._acceptPrev(i), i = this._getPrev(++e);
            else if (n.oldPosition < i.newPosition) {
                var [r, o] = l._splitCurr(n, i.newPosition - n.oldPosition);
                this._acceptCurr(r), n = o
            } else if (i.newPosition < n.oldPosition) {
                var [r, o] = l._splitPrev(i, n.oldPosition - i.newPosition);
                this._acceptPrev(r), i = o
            } else {
                let r, o;
                var a, d;
                n = n.oldEnd === i.newEnd ? (r = i, o = n, i = this._getPrev(++e), this._getCurr(++t)) : n.oldEnd < i.newEnd ? ([a, d] = l._splitPrev(i, n.oldLength), r = a, o = n, i = d, this._getCurr(++t)) : ([a, d] = l._splitCurr(n, i.newLength), r = i, o = a, i = this._getPrev(++e), d), this._result[this._resultLen++] = new s(r.oldPosition, r.oldText, o.newPosition, o.newText), this._prevDeltaOffset += r.newLength - r.oldLength, this._currDeltaOffset += o.newLength - o.oldLength
            } else this._acceptPrev(i), i = this._getPrev(++e);
            else this._acceptCurr(n), n = this._getCurr(++t);
            var c = l._merge(this._result);
            return l._removeNoOps(c)
        }
        _acceptCurr(e) {
            this._result[this._resultLen++] = l._rebaseCurr(this._prevDeltaOffset, e), this._currDeltaOffset += e.newLength - e.oldLength
        }
        _getCurr(e) {
            return e < this._currLen ? this._currEdits[e] : null
        }
        _acceptPrev(e) {
            this._result[this._resultLen++] = l._rebasePrev(this._currDeltaOffset, e), this._prevDeltaOffset += e.newLength - e.oldLength
        }
        _getPrev(e) {
            return e < this._prevLen ? this._prevEdits[e] : null
        }
        static _rebaseCurr(e, t) {
            return new s(t.oldPosition - e, t.oldText, t.newPosition, t.newText)
        }
        static _rebasePrev(e, t) {
            return new s(t.oldPosition, t.oldText, t.newPosition + e, t.newText)
        }
        static _splitPrev(e, t) {
            var i = e.newText.substr(0, t),
                n = e.newText.substr(t);
            return [new s(e.oldPosition, e.oldText, e.newPosition, i), new s(e.oldEnd, "", e.newPosition + t, n)]
        }
        static _splitCurr(e, t) {
            var i = e.oldText.substr(0, t),
                n = e.oldText.substr(t);
            return [new s(e.oldPosition, i, e.newPosition, e.newText), new s(e.oldPosition + t, n, e.newEnd, "")]
        }
        static _merge(e) {
            if (0 === e.length) return e;
            let t = [],
                i = 0,
                n = e[0];
            for (let o = 1; o < e.length; o++) {
                var r = e[o];
                n = n.oldEnd === r.oldPosition ? new s(n.oldPosition, n.oldText + r.oldText, n.newPosition, n.newText + r.newText) : (t[i++] = n, r)
            }
            return t[i++] = n, t
        }
        static _removeNoOps(e) {
            if (0 === e.length) return e;
            let t = [],
                i = 0;
            for (let r = 0; r < e.length; r++) {
                var n = e[r];
                n.oldText !== n.newText && (t[i++] = n)
            }
            return t
        }
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return r
    }));
    var n = i(14);
    class r {
        static whitespaceVisibleColumn(e, t, i) {
            var r = e.length;
            let o = 0,
                s = -1,
                a = -1;
            for (let l = 0; l < r; l++) {
                if (l === t) return [s, a, o];
                switch (o % i == 0 && (s = l, a = o), e.charCodeAt(l)) {
                    case 32:
                        o += 1;
                        break;
                    case 9:
                        o = n.a.nextRenderTabStop(o, i);
                        break;
                    default:
                        return [-1, -1, -1]
                }
            }
            return t === r ? [s, a, o] : [-1, -1, -1]
        }
        static atomicPosition(e, t, i, o) {
            var s = e.length,
                [a, l, d] = r.whitespaceVisibleColumn(e, t, i);
            if (-1 === d) return -1;
            let c;
            switch (o) {
                case 0:
                    c = !0;
                    break;
                case 1:
                    c = !1;
                    break;
                case 2:
                    if (d % i == 0) return t;
                    c = d % i <= i / 2
            }
            if (c) {
                if (-1 === a) return -1;
                let t = l;
                for (let r = a; r < s; ++r) {
                    if (t === l + i) return a;
                    switch (e.charCodeAt(r)) {
                        case 32:
                            t += 1;
                            break;
                        case 9:
                            t = n.a.nextRenderTabStop(t, i);
                            break;
                        default:
                            return -1
                    }
                }
                return t === l + i ? a : -1
            }
            var h = n.a.nextRenderTabStop(d, i);
            let u = d;
            for (let r = t; r < s; r++) {
                if (u === h) return r;
                switch (e.charCodeAt(r)) {
                    case 32:
                        u += 1;
                        break;
                    case 9:
                        u = n.a.nextRenderTabStop(u, i);
                        break;
                    default:
                        return -1
                }
            }
            return u === h ? s : -1
        }
    }
}, function(e, t, i) {
    "use strict";
    var n = i(111);
    i.d(t, "a", (function() {
        return n.j
    }))
}, function(e, t, i) {
    "use strict";
    var n = i(18),
        r = i.n(n);
    i(82), n = i(27);

    function o(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function s(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? o(Object(i), !0).forEach((function(t) {
                r()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : o(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    n = {
        name: "Navigator",
        props: {
            list: {
                type: Array,
                required: !0
            },
            index: {
                type: Number,
                default: -1
            },
            width: {
                type: String,
                default: "100"
            }
        },
        data: function() {
            return {
                currentHoverIndex: -1
            }
        },
        watch: {},
        computed: s(s({}, Object(n.mapState)({})), {}, {
            listStyle: function() {
                return -1 === this.currentHoverIndex ? {
                    opacity: .5,
                    alignItems: "center"
                } : {
                    opacity: 1,
                    width: "".concat(this.width || "100", "px"),
                    borderLeftWidth: "1px"
                }
            }
        }),
        methods: {
            handleHover: function(e) {
                this.currentHoverIndex = e
            },
            itemClass: function(e) {
                return this.currentHoverIndex === e ? ["item-hover"] : e === this.index ? ["item-selected"] : void 0
            }
        },
        updated: function() {
            var e, t, i = this.index; - 1 === this.currentHoverIndex && -1 < i && (e = this.$refs.list, t = this.$refs.items, e && t && t.length > i && (e.scrollTop = t[i].offsetTop))
        }
    }, i(312), i = i(30), n = Object(i.a)(n, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            ref: "list",
            class: ["main-proxy-navigator-" + e.theme],
            style: e.listStyle,
            on: {
                mouseleave: function(t) {
                    e.currentHoverIndex = -1
                }
            }
        }, e._l(e.list, (function(t, n) {
            return i("div", {
                key: t,
                ref: "items",
                refInFor: !0,
                staticClass: "clickable item",
                class: e.itemClass(n),
                on: {
                    mouseover: function(t) {
                        return e.handleHover(n)
                    },
                    click: function(t) {
                        return e.$emit("select", n)
                    }
                }
            }, [-1 === e.currentHoverIndex ? i("div", [e._v("\n      " + e._s(e.$removeEmoji(t).trim()[0]) + "\n    ")]) : i("div", {
                staticClass: "item-emoji",
                domProps: {
                    innerHTML: e._s(e.$parseEmoji(t))
                }
            })])
        })), 0)
    }), [], !1, null, "cd189d30", null), t.a = n.exports
}, function(e, t, i) {
    "use strict";

    function n(e, t) {
        t = function(e) {
                var t = [],
                    i = v,
                    n = "",
                    r = !1,
                    o = "";
                e: for (var s = 0; s < e.length; s++) {
                    var a = e[s];
                    if ("-" === a && s === e.length - 1) {
                        i = _, t.push(o);
                        break e
                    }
                    if ("(" !== a)
                        if (")" !== a)
                            if (r) o += a;
                            else switch (a) {
                                case ".":
                                    t.push(o), o = "";
                                    break;
                                case "+":
                                    i = b;
                                case "=":
                                    t.push(o), n = e.slice(s + 1);
                                    break e;
                                default:
                                    o += a
                            } else r = !1;
                    else r = !0
                }
                return {
                    path: t,
                    opertation: i,
                    value: n
                }
            }(t),
            function(e, t, i) {
                var n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : v,
                    r = void 0 === (s = e.proxies) ? [] : s,
                    o = void 0 === (s = e["proxy-groups"]) ? [] : s,
                    s = t.slice(0, -1),
                    a = t[t.length - 1],
                    l = i;
                try {
                    l = JSON.parse(i)
                } catch (e) {}
                var d = m.reduce(s, (function(e, i, n) {
                    var r = e[i];
                    return void 0 !== r || Array.isArray(e) && (r = e.find((function(e) {
                        return e.name === i
                    }))) ? r : (t.length > n + 1 ? (n = t[n + 1], 0 <= parseInt(n) ? e[i] = [] : e[i] = {}) : e[i] = {}, e[i])
                }), e);
                /(.*)/.test("") && RegExp.$1;
                var c, h = Array.isArray(d),
                    u = function(e) {
                        if (/^\[\](shuffledProxyNames|proxyNames|groupNames)\|?(.+)?$/.test(e)) {
                            var t = RegExp.$1,
                                i = RegExp.$2 || "";
                            e = "groupNames" === t ? o : "proxyNames" === t ? r : [];
                            return (e = "shuffledProxyNames" === t ? m.shuffle(r) : e).map((function(e) {
                                return e.name
                            })).filter((function(e) {
                                return new RegExp(i).test(e)
                            }))
                        }
                        return null
                    }(l);
                switch (n) {
                    case v:
                        u ? d[a] = u : (c = f()(d[a]), d[a] = "number" === c ? +l : "boolean" === c ? "true" === l : l);
                        break;
                    case b:
                        h ? d.splice.apply(d, [a, 0].concat(g()(u || [l]))) : d[a] = u || l;
                        break;
                    case _:
                        h ? d.splice(a, 1) : delete d[a]
                }
            }(e, t.path, t.value, t.opertation)
    }
    i.d(t, "a", (function() {
        return D
    }));
    var r = i(10),
        o = (t = i.n(r), r = i(18), i.n(r)),
        s = (r = i(3), i.n(r)),
        a = i(42),
        l = i(69),
        d = (r = i(16), i.n(r)),
        c = (r = i(12), i.n(r)),
        h = i(167),
        u = (r = i(45), i.n(r)),
        p = (r = i(82), i.n(r)),
        g = (r = i(52), i.n(r)),
        f = (r = i(165), i.n(r)),
        m = i(82),
        v = Symbol(),
        b = Symbol(),
        _ = Symbol(),
        w = i(40),
        y = i(250);

    function C(e, t) {
        var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!i) {
            if (Array.isArray(e) || (i = function(e, t) {
                    if (e) {
                        if ("string" == typeof e) return x(e, t);
                        var i = Object.prototype.toString.call(e).slice(8, -1);
                        return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? x(e, t) : void 0
                    }
                }(e)) || t && e && "number" == typeof e.length) {
                i && (e = i);
                var n = 0;
                return {
                    s: t = function() {},
                    n: function() {
                        return n >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[n++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: t
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var r, o = !0,
            s = !1;
        return {
            s: function() {
                i = i.call(e)
            },
            n: function() {
                var e = i.next();
                return o = e.done, e
            },
            e: function(e) {
                s = !0, r = e
            },
            f: function() {
                try {
                    o || null == i.return || i.return()
                } finally {
                    if (s) throw r
                }
            }
        }
    }

    function x(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }

    function S(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function k(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? S(Object(i), !0).forEach((function(t) {
                o()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : S(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function L(e) {
        var t = {};
        return /upload=(.+?)(;|$)/.test(e) && (t.upload = parseInt(RegExp.$1.trim())), /download=(.+?)(;|$)/.test(e) && (t.download = parseInt(RegExp.$1.trim())), /total=(.+?)(;|$)/.test(e) && (t.total = parseInt(RegExp.$1.trim())), /expire=(.+?)(;|$)/.test(e) && (t.expire = parseInt(RegExp.$1.trim())), t
    }
    var O, E, N = i(143),
        D = (O = t()(s.a.mark((function e(t) {
            var i, n, r, o, h, p, g, f, m, v, b, _, w, C, x, S, O, E, N, D;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return i = t.url, n = void 0 === (n = t.cancelToken) ? null : n, e.prev = 1, e.next = 4,
                            function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
                                    i = a.a.state.app.settings.headersText,
                                    n = {};
                                if (i) try {
                                    var r = u.a.parse(i).headers;
                                    n = void 0 === r ? {} : r
                                } catch (e) {}
                                return Object(l.get)(e, k(k({
                                    validateStatus: function() {
                                        return !0
                                    }
                                }, t), {}, {
                                    headers: k({
                                        pragma: "no-cache"
                                    }, n),
                                    responseType: "text",
                                    transformResponse: [function(e) {
                                        return e
                                    }]
                                }))
                            }(i, {
                                cancelToken: n
                            });
                    case 4:
                        p = e.sent, r = p.status, m = p.headers, f = void 0 === m ? {} : m, _ = p.data, o = "config.yaml", h = (new Date).getTime() + ".yml";
                        try {
                            o = c.a.basename(i)
                        } catch (e) {
                            console.error(e.stack)
                        }
                        if (/([^\/]*?)(?:$|\?)/.test(i) && (o = decodeURIComponent(RegExp.$1.trim())), g = f["profile-update-interval"], w = void 0 === g ? 0 : g, v = f["content-disposition"], m = f["subscription-userinfo"], p = void 0 === m ? "" : m, v && /filename="*(.*?)(?:$|;|")/.test(v) && (o = decodeURIComponent(RegExp.$1.trim())), g = parseInt(w) || 0, f = a.a.state.app.profilesPath, m = c.a.join(f, h), v = -1, 200 === r) return e.next = 22, I(i, _, !0);
                        e.next = 45;
                        break;
                    case 22:
                        if (b = e.sent, w = a.a.state.app.profiles.files, x = (N = void 0 === w ? [] : w).findIndex((function(e) {
                                return e.url === i
                            })), v = -1 < x ? (_ = N[x], w = (w = k({}, _)).time, m = c.a.join(f, w), a.a.commit("CHANGE_PROFILE", {
                                index: x,
                                profile: k(k({}, _), {}, {
                                    subInfo: L(p || b)
                                })
                            }), x) : (S = {
                                time: h,
                                name: o,
                                url: i,
                                selected: [],
                                interval: g,
                                subInfo: L(p || b)
                            }, a.a.commit("APPEND_PROFILE", {
                                profile: S
                            }), N.length), x = m.slice(0, -4) + ".base.yml", S = m.slice(0, -4) + ".change.yml", !d.a.existsSync(x) || !d.a.existsSync(S)) {
                            e.next = 41;
                            break
                        }
                        if (O = d.a.readFileSync(x).toString(), E = d.a.readFileSync(S).toString(), /<{7}[\S\s]+?={7}[\S\s]+?>{7}/.test(E)) return e.abrupt("return", {
                            success: !1,
                            message: 'Changes contains conflict, "Make changes" to solve issues.'
                        });
                        e.next = 33;
                        break;
                    case 33:
                        if (D = Object(y.merge)(E, O, b, {
                                stringSeparator: /\n|\r\n/
                            }), N = D.conflict, D = D.result, d.a.writeFileSync(x, b), d.a.writeFileSync(S, D.join("\n")), N) return e.abrupt("return", {
                            success: !1,
                            message: 'Fail to merge profiles, "Make changes" to solve issues.'
                        });
                        e.next = 40;
                        break;
                    case 40:
                        C = D.join("\n");
                    case 41:
                        return d.a.writeFileSync(m, C || b), e.abrupt("return", {
                            success: !0,
                            targetIndex: v
                        });
                    case 45:
                        return e.abrupt("return", {
                            success: !1,
                            message: "下载资料(".concat(i, ") 失败，错误：HTTP 响应状态代码(").concat(r, ")")
                        });
                    case 46:
                        e.next = 54;
                        break;
                    case 48:
                        if (e.prev = 48, e.t0 = e.catch(1), console.error(e.t0), e.t0.message) return e.abrupt("return", {
                            success: !1,
                            message: "下载资料(".concat(i, ") failed with error: ").concat(e.t0.message)
                        });
                        e.next = 54;
                        break;
                    case 54:
                        return e.abrupt("return", {
                            success: !1,
                            message: "未知错误"
                        });
                    case 55:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [1, 48]
            ])
        }))), function(e) {
            return O.apply(this, arguments)
        }),
        I = (E = t()(s.a.mark((function e(t, n) {
            var r, o, l, c, p, g, f, m, v, b, _, y, x = arguments;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return r = 2 < x.length && void 0 !== x[2] && x[2], e.prev = 1, o = null !== (o = (void 0 === (o = a.a.state.app.profiles.files) ? [] : o).find((function(e) {
                            return e.url === t
                        }))) && void 0 !== o ? o : {
                            url: t
                        }, e.t0 = h.Console, e.t1 = d.a, e.next = 8, a.a.dispatch("getParserLogPath");
                    case 8:
                        if (e.t2 = e.sent, e.t3 = e.t1.createWriteStream.call(e.t1, e.t2), b = new e.t0(e.t3), l = {
                                axios: i(69),
                                yaml: i(45),
                                homeDir: a.a.state.app.clashPath,
                                console: r ? b : console,
                                notify: function(e) {
                                    var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "",
                                        i = !(2 < arguments.length && void 0 !== arguments[2]) || arguments[2];
                                    Object(w.h)(e, t, i)
                                }
                            }, g = a.a.state.app.settings.profileParsersText, f = [], g) try {
                            c = u.a.parse(g), p = c.parsers, f = (void 0 === p ? [] : p) || []
                        } catch (e) {}
                        b = f.filter((function(e) {
                            var i = e.url;
                            e = e.reg;
                            return i ? i === t : e ? new RegExp(e).test(t) : void 0
                        })), g = n, f = C(b), e.prev = 18, f.s();
                    case 20:
                        if ((b = f.n()).done) {
                            e.next = 43;
                            break
                        }
                        if (v = b.value, b = v.code, m = v.file, v = v.yaml, b) return b = N("'use strict';\n".concat(b)), e.next = 27, b.parse(g, l, o);
                        e.next = 28;
                        break;
                    case 27:
                        g = e.sent;
                    case 28:
                        if (!m) {
                            e.next = 40;
                            break
                        }
                        if (_ = d.a.readFileSync(m, "utf-8"), !/\.ya?ml$/.test(m)) {
                            e.next = 35;
                            break
                        }
                        y = u.a.parse(_), g = T(g, y), e.next = 40;
                        break;
                    case 35:
                        if (/\.js$/.test(m)) return y = N("'use strict';\n".concat(_), m), e.next = 39, y.parse(g, l, o);
                        e.next = 40;
                        break;
                    case 39:
                        g = e.sent;
                    case 40:
                        v && (g = T(g, v));
                    case 41:
                        e.next = 20;
                        break;
                    case 43:
                        e.next = 48;
                        break;
                    case 45:
                        e.prev = 45, e.t4 = e.catch(18), f.e(e.t4);
                    case 48:
                        return e.prev = 48, f.f(), e.finish(48);
                    case 51:
                        return e.abrupt("return", g);
                    case 54:
                        throw e.prev = 54, e.t5 = e.catch(1), k(k({}, e.t5), {}, {
                            message: "[Parser Error] " + e.t5.message
                        });
                    case 57:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [1, 54],
                [18, 45, 48, 51]
            ])
        }))), function(e, t) {
            return E.apply(this, arguments)
        }),
        T = function(e, t) {
            var i = {},
                r = void 0 === (c = t["append-rules"]) ? [] : c,
                o = void 0 === (_ = t["prepend-rules"]) ? [] : _,
                s = void 0 === (h = t["append-proxies"]) ? [] : h,
                a = void 0 === (v = t["prepend-proxies"]) ? [] : v,
                l = void 0 === (g = t["append-proxy-groups"]) ? [] : g,
                d = void 0 === (w = t["prepend-proxy-groups"]) ? [] : w,
                c = void 0 === (f = t["mix-proxy-providers"]) ? {} : f,
                h = void 0 === (_ = t["mix-rule-providers"]) ? {} : _,
                g = void 0 === (v = t["mix-object"]) ? {} : v,
                f = void 0 === (w = t.commands) ? [] : w,
                m = void 0 === (_ = t["key-orders"]) ? [] : _,
                v = u.a.parse(e),
                b = p.a.cloneDeep(v),
                _ = (t = void 0 === (w = v.rules) ? [] : w, e = void 0 === (_ = v.proxies) ? [] : _, void 0 === (w = v["proxy-groups"]) ? [] : w),
                w = void 0 === (w = v["proxy-providers"]) ? {} : w;
            v = void 0 === (v = v["rule-providers"]) ? {} : v;
            (o || r) && (b.rules = o.concat(null != t ? t : []).concat(r)), (a || s) && (b.proxies = a.concat(null != e ? e : []).concat(s)), (d || l) && (b["proxy-groups"] = d.concat(null != _ ? _ : []).concat(l)), c && (b["proxy-providers"] = k(k({}, w), c)), h && (b["rule-providers"] = k(k({}, v), h));
            var y, x = C(f);
            try {
                for (x.s(); !(y = x.n()).done;) {
                    n(b, y.value)
                }
            } catch (e) {
                x.e(e)
            } finally {
                x.f()
            }
            return 0 < m.length && (i.sortMapEntries = function(e, t) {
                var i = e.key,
                    n = t.key;
                return (-1 === (e = m.findIndex((function(e) {
                    return e === i.value
                }))) ? 1 / 0 : e) - (-1 === (t = m.findIndex((function(e) {
                    return e === n.value
                }))) ? 1 / 0 : t)
            }), u.a.stringify(k(k({}, b), g), i)
        }
}, function(e, t, i) {
    var n = i(451);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2b206c42", n, !0, {})
}, function(e, t) {
    function i(t) {
        return "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? e.exports = i = function(e) {
            return typeof e
        } : e.exports = i = function(e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        }, e.exports.default = e.exports, e.exports.__esModule = !0, i(t)
    }
    e.exports = i, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    "use strict";
    t.a = 'function FindProxyForURL(url, host) {\n  return "PROXY 127.0.0.1:%mixed-port%; SOCKS5 127.0.0.1:%mixed-port%; DIRECT;"\n}'
}, function(e, t) {
    e.exports = require("console")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return g
    }));
    var n, r, o = i(10),
        s = (t = i.n(o), o = i(3), i.n(o)),
        a = i(19),
        l = i(77),
        d = i(12),
        c = i(42),
        h = i(22),
        u = "cfw-update".concat(Object(a.i)() ? ".dmg" : ".exe"),
        p = (n = t()(s.a.mark((function e(t) {
            var i, n;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.next = 2, h.ipcRenderer.invoke("app", "getPath", "temp");
                    case 2:
                        return i = e.sent, n = Object(d.join)(i, u), e.next = 6, h.ipcRenderer.invoke("start-download", t, n);
                    case 6:
                        return e.next = 8, new Promise((function(e, t) {
                            h.ipcRenderer.on("download", (function(i, r, o) {
                                "downloading" === r && c.a.commit("SET_UPDATE_DOWNLOAD_PROGRESS", {
                                    progress: o
                                }), "completed" === r && (c.a.commit("SET_UPDATE_DOWNLOAD_PROGRESS", {
                                    progress: null
                                }), e(n)), "failed" === r && (c.a.commit("SET_UPDATE_DOWNLOAD_PROGRESS", {
                                    progress: null
                                }), t(o))
                            }))
                        }));
                    case 8:
                        return e.abrupt("return", e.sent);
                    case 9:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e) {
            return n.apply(this, arguments)
        }),
        g = (r = t()(s.a.mark((function e(t, i) {
            var n, r;
            return s.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.next = 2, p(t);
                    case 2:
                        if (n = e.sent) {
                            e.next = 5;
                            break
                        }
                        return e.abrupt("return");
                    case 5:
                        return e.next = 7, h.ipcRenderer.invoke("app", "getName");
                    case 7:
                        return r = e.sent, Object(a.i)() && (Object(l.execSync)("hdiutil attach '".concat(n, "' -nobrowse"), {
                            stdio: ["ignore", "ignore", "ignore"]
                        }), Object(l.execSync)("rm -rf '/Applications/".concat(r, ".app' && cp -R '/Volumes/").concat(r, " ").concat(i, "/").concat(r, ".app' '/Applications/").concat(r, ".app'")), Object(l.execSync)("hdiutil eject '/Volumes/".concat(r, " ").concat(i, "'"), {
                            stdio: ["ignore", "ignore", "ignore"]
                        })), e.abrupt("return", n);
                    case 10:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e, t) {
            return r.apply(this, arguments)
        })
}, function(e, t, i) {
    "use strict";
    i = i(19), i = Object(i.i)() ? ["127.0.0.1", "192.168.0.0/16", "10.0.0.0/8", "172.16.0.0/12", "100.64.0.0/10", "17.0.0.0/8", "localhost", "*.local", "169.254.0.0/16", "224.0.0.0/4", "240.0.0.0/4"] : ["localhost", "127.*", "10.*", "172.16.*", "172.17.*", "172.18.*", "172.19.*", "172.20.*", "172.21.*", "172.22.*", "172.23.*", "172.24.*", "172.25.*", "172.26.*", "172.27.*", "172.28.*", "172.29.*", "172.30.*", "172.31.*", "192.168.*", "<local>"], t.a = i
}, function(e, t, i) {
    "use strict";
    i.d(t, "b", (function() {
        return o
    })), i.d(t, "a", (function() {
        return s
    }));
    var n = i(62),
        r = (i(9), i(6));

    function o(e) {
        return -1 === e.indexOf("/") && (e = e.replace(/[\\/]/g, n.e.sep)), /^[a-zA-Z]:(\/|$)/.test(e) ? "/" + e : e
    }

    function s(e, t, i, o = n.h) {
        if (e === t) return !0;
        if (!e || !t) return !1;
        if (t.length > e.length) return !1;
        if (i) {
            if (!Object(r.R)(e, t)) return !1;
            if (t.length === e.length) return !0;
            let i = t.length;
            return t.charAt(t.length - 1) === o && i--, e.charAt(i) === o
        }
        return t.charAt(t.length - 1) !== o && (t += o), 0 === e.indexOf(t)
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return L
    })), i.d(t, "b", (function() {
        return O
    }));
    var n = i(32),
        r = i(170),
        o = (t = i(73), i(62)),
        s = i(6);
    const a = "**",
        l = "[/\\\\]",
        d = "[^/\\\\]",
        c = /\//g;

    function h(e) {
        switch (e) {
            case 0:
                return "";
            case 1:
                return d + "*?";
            default:
                return `(?:[/\\\\]|${d}+[/\\\\]|[/\\\\]${d}+)*?`
        }
    }

    function u(e, t) {
        if (!e) return [];
        const i = [];
        let n = !1,
            r = !1,
            o = "";
        for (const s of e) {
            switch (s) {
                case t:
                    if (n || r) break;
                    i.push(o), o = "";
                    continue;
                case "{":
                    n = !0;
                    break;
                case "}":
                    n = !1;
                    break;
                case "[":
                    r = !0;
                    break;
                case "]":
                    r = !1
            }
            o += s
        }
        return o && i.push(o), i
    }
    const p = /^\*\*\/\*\.[\w\.-]+$/,
        g = /^\*\*\/([\w\.-]+)\/?$/,
        f = /^{\*\*\/[\*\.]?[\w\.-]+\/?(,\*\*\/[\*\.]?[\w\.-]+\/?)*}$/,
        m = /^{\*\*\/[\*\.]?[\w\.-]+(\/(\*\*)?)?(,\*\*\/[\*\.]?[\w\.-]+(\/(\*\*)?)?)*}$/,
        v = /^\*\*((\/[\w\.-]+)+)\/?$/,
        b = /^([\w\.-]+(\/[\w\.-]+)*)\/?$/,
        _ = new t.a(1e4),
        w = function() {
            return !1
        },
        y = function() {
            return null
        };

    function C(e, t) {
        if (!e) return y;
        let i;
        i = "string" != typeof e ? e.pattern : e, i = i.trim();
        var n = `${i}_${!!t.trimForExclusions}`;
        let r, o = _.get(n);
        if (o) return x(o, e);
        if (p.test(i)) {
            const e = i.substr(4);
            o = function(t, n) {
                return "string" == typeof t && t.endsWith(e) ? i : null
            }
        } else o = (r = g.exec(S(i, t))) ? function(e, t) {
            const i = "/" + e,
                n = "\\" + e,
                r = function(r, o) {
                    return "string" != typeof r ? null : o ? o === e ? t : null : r === e || r.endsWith(i) || r.endsWith(n) ? t : null
                },
                o = [e];
            return r.basenames = o, r.patterns = [t], r.allBasenames = o, r
        }(r[1], i) : (t.trimForExclusions ? m : f).test(i) ? function(e, t) {
            const i = E(e.slice(1, -1).split(",").map(e => C(e, t)).filter(e => e !== y), e),
                n = i.length;
            if (!n) return y;
            if (1 === n) return i[0];

            function r(t, n) {
                for (let r = 0, o = i.length; r < o; r++)
                    if (i[r](t, n)) return e;
                return null
            }
            var o = i.find(e => !!e.allBasenames);
            return o && (r.allBasenames = o.allBasenames), (o = i.reduce((e, t) => t.allPaths ? e.concat(t.allPaths) : e, [])).length && (r.allPaths = o), r
        }(i, t) : (r = v.exec(S(i, t))) ? k(r[1].substr(1), i, !0) : (r = b.exec(S(i, t))) ? k(r[1], i, !1) : function(e) {
            try {
                const t = new RegExp(`^${function e(t){if(!t)return"";let i="";const n=u(t,"/");if(n.every(e=>e===a))i=".*";else{let t=!1;n.forEach((r,o)=>{if(r!==a){let p=!1,g="",f=!1,m="";for(const t of r)if("}"!==t&&p)g+=t;else if(!f||"]"===t&&m)switch(t){case"{":p=!0;continue;case"[":f=!0;continue;case"}":var c=`( ? : $ {
                        u(g, ",").map(t => e(t)).join("|")
                    })
                    `;i+=c,p=!1,g="";break;case"]":i+="["+m+"]",f=!1,m="";break;case"?":i+=d;continue;case"*":i+=h(1);continue;default:i+=s.t(t)}else{let e;e="-"===t?t:"^"!==t&&"!"!==t||m?"/"===t?"":s.t(t):"^",m+=e}o<n.length-1&&(n[o+1]!==a||o+2<n.length)&&(i+=l),t=!1}else t||(i+=h(2),t=!0)})}return i}(e)}$`);
                return function(i) {
                    return t.lastIndex = 0, "string" == typeof i && t.test(i) ? e : null
                }
            } catch (e) {
                return y
            }
        }(i);
        return _.set(n, o), x(o, e)
    }

    function x(e, t) {
        return "string" == typeof t ? e : function(i, n) {
            return r.a(i, t.base) ? e(o.f(t.base, i), n) : null
        }
    }

    function S(e, t) {
        return t.trimForExclusions && e.endsWith("/**") ? e.substr(0, e.length - 2) : e
    }

    function k(e, t, i) {
        const n = o.h === o.e.sep,
            r = n ? e : e.replace(c, o.h),
            s = o.h + r,
            a = o.e.sep + e,
            l = i ? function(i, o) {
                return "string" != typeof i || i !== r && !i.endsWith(s) && (n || i !== e && !i.endsWith(a)) ? null : t
            } : function(i, o) {
                return "string" != typeof i || i !== r && (n || i !== e) ? null : t
            };
        return l.allPaths = [(i ? "*/" : "./") + e], l
    }

    function L(e, t, i) {
        return !(!e || "string" != typeof t) && O(e)(t, void 0, i)
    }

    function O(e, t = {}) {
        if (!e) return w;
        if ("string" == typeof e || (i = e) && "string" == typeof i.base && "string" == typeof i.pattern) {
            const n = C(e, t);
            return n === y ? w : (i = function(e, t) {
                return !!n(e, t)
            }, n.allBasenames && (i.allBasenames = n.allBasenames), n.allPaths && (i.allPaths = n.allPaths), i)
        }
        var i;
        return function(e, t) {
            const i = E(Object.getOwnPropertyNames(e).map(i => function(e, t, i) {
                    if (!1 === t) return y;
                    const r = C(e, i);
                    if (r === y) return y;
                    if ("boolean" == typeof t) return r;
                    if (t) {
                        const i = t.when;
                        if ("string" == typeof i) return (t = (t, o, s, a) => {
                            if (!a || !r(t, o)) return null;
                            const l = a(i.replace("$(basename)", s));
                            return Object(n.j)(l) ? l.then(t => t ? e : null) : l ? e : null
                        }).requiresSiblings = !0, t
                    }
                    return r
                }(i, e[i], t)).filter(e => e !== y)),
                r = i.length;
            if (!r) return y;
            if (!i.some(e => !!e.requiresSiblings)) {
                if (1 === r) return i[0];
                const e = function(e, t) {
                        for (let r = 0, o = i.length; r < o; r++) {
                            var n = i[r](e, t);
                            if (n) return n
                        }
                        return null
                    },
                    t = i.find(e => !!e.allBasenames);
                t && (e.allBasenames = t.allBasenames);
                const n = i.reduce((e, t) => t.allPaths ? e.concat(t.allPaths) : e, []);
                return n.length && (e.allPaths = n), e
            }
            const s = function(e, t, n) {
                    let r = void 0;
                    for (let a = 0, l = i.length; a < l; a++) {
                        const l = i[a];
                        l.requiresSiblings && n && (t = t || o.a(e), r = r || t.substr(0, t.length - o.c(e).length));
                        var s = l(e, t, r, n);
                        if (s) return s
                    }
                    return null
                },
                a = i.find(e => !!e.allBasenames);
            a && (s.allBasenames = a.allBasenames);
            const l = i.reduce((e, t) => t.allPaths ? e.concat(t.allPaths) : e, []);
            return l.length && (s.allPaths = l), s
        }(e, t)
    }

    function E(e, t) {
        const i = e.filter(e => !!e.basenames);
        if (i.length < 2) return e;
        const n = i.reduce((e, t) => (t = t.basenames) ? e.concat(t) : e, []);
        let r;
        if (t) {
            r = [];
            for (let e = 0, i = n.length; e < i; e++) r.push(t)
        } else r = i.reduce((e, t) => (t = t.patterns) ? e.concat(t) : e, []);

        function o(e, t) {
            if ("string" != typeof e) return null;
            if (!t) {
                let n;
                for (n = e.length; 0 < n; n--) {
                    var i = e.charCodeAt(n - 1);
                    if (47 === i || 92 === i) break
                }
                t = e.substr(n)
            }
            return -1 !== (t = n.indexOf(t)) ? r[t] : null
        }
        o.basenames = n, o.patterns = r, o.allBasenames = n;
        const s = e.filter(e => !e.basenames);
        return s.push(o), s
    }
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return d
    }));
    var n = i(6),
        r = i(14),
        o = i(141),
        s = i(122),
        a = i(8),
        l = i(5);
    class d {
        static _createWord(e, t, i, n, r) {
            return {
                start: n,
                end: r,
                wordType: t,
                nextCharClass: i
            }
        }
        static _findPreviousWordOnLine(e, t, i) {
            return t = t.getLineContent(i.lineNumber), this._doFindPreviousWordOnLine(t, e, i)
        }
        static _doFindPreviousWordOnLine(e, t, i) {
            let n = 0;
            for (let o = i.column - 2; 0 <= o; o--) {
                var r = e.charCodeAt(o);
                if (0 === (r = t.get(r))) {
                    if (2 === n) return this._createWord(e, n, r, o + 1, this._findEndOfWord(e, t, n, o + 1));
                    n = 1
                } else if (2 === r) {
                    if (1 === n) return this._createWord(e, n, r, o + 1, this._findEndOfWord(e, t, n, o + 1));
                    n = 2
                } else if (1 === r && 0 !== n) return this._createWord(e, n, r, o + 1, this._findEndOfWord(e, t, n, o + 1))
            }
            return 0 !== n ? this._createWord(e, n, 1, 0, this._findEndOfWord(e, t, n, 0)) : null
        }
        static _findEndOfWord(e, t, i, n) {
            var r = e.length;
            for (let s = n; s < r; s++) {
                var o = e.charCodeAt(s);
                if (1 === (o = t.get(o))) return s;
                if (1 === i && 2 === o) return s;
                if (2 === i && 0 === o) return s
            }
            return r
        }
        static _findNextWordOnLine(e, t, i) {
            return t = t.getLineContent(i.lineNumber), this._doFindNextWordOnLine(t, e, i)
        }
        static _doFindNextWordOnLine(e, t, i) {
            let n = 0;
            var r = e.length;
            for (let s = i.column - 1; s < r; s++) {
                var o = e.charCodeAt(s);
                if (0 === (o = t.get(o))) {
                    if (2 === n) return this._createWord(e, n, o, this._findStartOfWord(e, t, n, s - 1), s);
                    n = 1
                } else if (2 === o) {
                    if (1 === n) return this._createWord(e, n, o, this._findStartOfWord(e, t, n, s - 1), s);
                    n = 2
                } else if (1 === o && 0 !== n) return this._createWord(e, n, o, this._findStartOfWord(e, t, n, s - 1), s)
            }
            return 0 !== n ? this._createWord(e, n, 1, this._findStartOfWord(e, t, n, r - 1), r) : null
        }
        static _findStartOfWord(e, t, i, n) {
            for (let o = n; 0 <= o; o--) {
                var r = e.charCodeAt(o);
                if (1 === (r = t.get(r))) return o + 1;
                if (1 === i && 2 === r) return o + 1;
                if (2 === i && 0 === r) return o + 1
            }
            return 0
        }
        static moveWordLeft(e, t, i, n) {
            let r = i.lineNumber,
                o = i.column;
            1 === o && 1 < r && (r -= 1, o = t.getLineMaxColumn(r));
            let s = d._findPreviousWordOnLine(e, t, new a.a(r, o));
            if (0 === n) return new a.a(r, s ? s.start + 1 : 1);
            if (1 === n) return s && 2 === s.wordType && s.end - s.start == 1 && 0 === s.nextCharClass && (s = d._findPreviousWordOnLine(e, t, new a.a(r, s.start + 1))), new a.a(r, s ? s.start + 1 : 1);
            if (3 !== n) return s && o <= s.end + 1 && (s = d._findPreviousWordOnLine(e, t, new a.a(r, s.start + 1))), new a.a(r, s ? s.end + 1 : 1);
            for (; s && 2 === s.wordType;) s = d._findPreviousWordOnLine(e, t, new a.a(r, s.start + 1));
            return new a.a(r, s ? s.start + 1 : 1)
        }
        static _moveWordPartLeft(e, t) {
            var i = t.lineNumber,
                r = e.getLineMaxColumn(i);
            if (1 === t.column) return 1 < i ? new a.a(i - 1, e.getLineMaxColumn(i - 1)) : t;
            const o = e.getLineContent(i);
            for (let e = t.column - 1; 1 < e; e--) {
                var s = o.charCodeAt(e - 2),
                    l = o.charCodeAt(e - 1);
                if (95 === s && 95 !== l) return new a.a(i, e);
                if (n.G(s) && n.H(l)) return new a.a(i, e);
                if (n.H(s) && n.H(l) && e + 1 < r && (l = o.charCodeAt(e), n.G(l))) return new a.a(i, e)
            }
            return new a.a(i, 1)
        }
        static moveWordRight(e, t, i, n) {
            let r = i.lineNumber,
                o = i.column,
                s = !1;
            o === t.getLineMaxColumn(r) && r < t.getLineCount() && (s = !0, r += 1, o = 1);
            let l = d._findNextWordOnLine(e, t, new a.a(r, o));
            if (2 === n) l && 2 === l.wordType && l.end - l.start == 1 && 0 === l.nextCharClass && (l = d._findNextWordOnLine(e, t, new a.a(r, l.end + 1))), o = l ? l.end + 1 : t.getLineMaxColumn(r);
            else if (3 === n) {
                for (s && (o = 0); l && (2 === l.wordType || l.start + 1 <= o);) l = d._findNextWordOnLine(e, t, new a.a(r, l.end + 1));
                o = l ? l.start + 1 : t.getLineMaxColumn(r)
            } else l && !s && o >= l.start + 1 && (l = d._findNextWordOnLine(e, t, new a.a(r, l.end + 1))), o = l ? l.start + 1 : t.getLineMaxColumn(r);
            return new a.a(r, o)
        }
        static _moveWordPartRight(e, t) {
            var i = t.lineNumber,
                r = e.getLineMaxColumn(i);
            if (t.column === r) return i < e.getLineCount() ? new a.a(i + 1, 1) : t;
            const o = e.getLineContent(i);
            for (let e = t.column + 1; e < r; e++) {
                var s = o.charCodeAt(e - 2),
                    l = o.charCodeAt(e - 1);
                if (95 !== s && 95 === l) return new a.a(i, e);
                if (n.G(s) && n.H(l)) return new a.a(i, e);
                if (n.H(s) && n.H(l) && e + 1 < r && (l = o.charCodeAt(e), n.G(l))) return new a.a(i, e)
            }
            return new a.a(i, r)
        }
        static _deleteWordLeftWhitespace(e, t) {
            var i = e.getLineContent(t.lineNumber);
            e = t.column - 2;
            return (i = n.I(i, e)) + 1 < e ? new l.a(t.lineNumber, i + 2, t.lineNumber, t.column) : null
        }
        static deleteWordLeft(e, t) {
            var i = e.wordSeparators;
            const n = e.model,
                r = e.selection;
            var s = e.whitespaceHeuristics;
            if (!r.isEmpty()) return r;
            if (o.a.isAutoClosingPairDelete(e.autoClosingDelete, e.autoClosingBrackets, e.autoClosingQuotes, e.autoClosingPairs.autoClosingPairsOpenByEnd, e.model, [e.selection], e.autoClosedCharacters)) {
                const t = e.selection.getPosition();
                return new l.a(t.lineNumber, t.column - 1, t.lineNumber, t.column + 1)
            }
            const c = new a.a(r.positionLineNumber, r.positionColumn);
            let h = c.lineNumber,
                u = c.column;
            if (1 === h && 1 === u) return null;
            if (s && (s = this._deleteWordLeftWhitespace(n, c))) return s;
            let p = d._findPreviousWordOnLine(i, n, c);
            return u = 0 === t ? p ? p.start + 1 : 1 < u ? 1 : (h--, n.getLineMaxColumn(h)) : (p && u <= p.end + 1 && (p = d._findPreviousWordOnLine(i, n, new a.a(h, p.start + 1))), p ? p.end + 1 : 1 < u ? 1 : (h--, n.getLineMaxColumn(h))), new l.a(h, u, c.lineNumber, c.column)
        }
        static deleteInsideWord(e, t, i) {
            if (!i.isEmpty()) return i;
            var n = new a.a(i.positionLineNumber, i.positionColumn);
            return (i = this._deleteInsideWordWhitespace(t, n)) || this._deleteInsideWordDetermineDeleteRange(e, t, n)
        }
        static _charAtIsWhitespace(e, t) {
            return 32 === (t = e.charCodeAt(t)) || 9 === t
        }
        static _deleteInsideWordWhitespace(e, t) {
            var i = e.getLineContent(t.lineNumber),
                n = i.length;
            if (0 === n) return null;
            let r = Math.max(t.column - 2, 0);
            if (!this._charAtIsWhitespace(i, r)) return null;
            let o = Math.min(t.column - 1, n - 1);
            if (!this._charAtIsWhitespace(i, o)) return null;
            for (; 0 < r && this._charAtIsWhitespace(i, r - 1);) r--;
            for (; o + 1 < n && this._charAtIsWhitespace(i, o + 1);) o++;
            return new l.a(t.lineNumber, r + 1, t.lineNumber, o + 2)
        }
        static _deleteInsideWordDetermineDeleteRange(e, t, i) {
            const n = t.getLineContent(i.lineNumber),
                r = n.length;
            if (0 === r) return 1 < i.lineNumber ? new l.a(i.lineNumber - 1, t.getLineMaxColumn(i.lineNumber - 1), i.lineNumber, 1) : i.lineNumber < t.getLineCount() ? new l.a(i.lineNumber, 1, i.lineNumber + 1, 1) : new l.a(i.lineNumber, 1, i.lineNumber, 1);
            var o = e => e.start + 1 <= i.column && i.column <= e.end + 1;
            const s = (e, t) => (e = Math.min(e, i.column), t = Math.max(t, i.column), new l.a(i.lineNumber, e, i.lineNumber, t));
            var a = e => {
                    let t = e.start + 1,
                        i = e.end + 1,
                        o = !1;
                    for (; i - 1 < r && this._charAtIsWhitespace(n, i - 1);) o = !0, i++;
                    if (!o)
                        for (; 1 < t && this._charAtIsWhitespace(n, t - 2);) t--;
                    return s(t, i)
                },
                c = d._findPreviousWordOnLine(e, t, i);
            return c && o(c) ? a(c) : (t = d._findNextWordOnLine(e, t, i)) && o(t) ? a(t) : c && t ? s(c.end + 1, t.start + 1) : c ? s(c.start + 1, c.end + 1) : t ? s(t.start + 1, t.end + 1) : s(1, r + 1)
        }
        static _deleteWordPartLeft(e, t) {
            return t.isEmpty() ? (t = t.getPosition(), e = d._moveWordPartLeft(e, t), new l.a(t.lineNumber, t.column, e.lineNumber, e.column)) : t
        }
        static _findFirstNonWhitespaceChar(e, t) {
            var i = e.length;
            for (let r = t; r < i; r++) {
                var n = e.charAt(r);
                if (" " !== n && "\t" !== n) return r
            }
            return i
        }
        static _deleteWordRightWhitespace(e, t) {
            var i = e.getLineContent(t.lineNumber);
            return 1 + (e = t.column - 1) < (i = this._findFirstNonWhitespaceChar(i, e)) ? new l.a(t.lineNumber, t.column, t.lineNumber, i + 1) : null
        }
        static deleteWordRight(e, t) {
            var i = e.wordSeparators;
            const n = e.model,
                r = e.selection;
            var o = e.whitespaceHeuristics;
            if (!r.isEmpty()) return r;
            var s = new a.a(r.positionLineNumber, r.positionColumn);
            let c = s.lineNumber,
                h = s.column;
            var u = n.getLineCount();
            e = n.getLineMaxColumn(c);
            if (c === u && h === e) return null;
            if (o && (o = this._deleteWordRightWhitespace(n, s))) return o;
            let p = d._findNextWordOnLine(i, n, s);
            return h = 2 === t ? p ? p.end + 1 : h < e || c === u ? e : (c++, p = d._findNextWordOnLine(i, n, new a.a(c, 1)), p ? p.start + 1 : n.getLineMaxColumn(c)) : (p && h >= p.start + 1 && (p = d._findNextWordOnLine(i, n, new a.a(c, p.end + 1))), p ? p.start + 1 : h < e || c === u ? e : (c++, p = d._findNextWordOnLine(i, n, new a.a(c, 1)), p ? p.start + 1 : n.getLineMaxColumn(c))), new l.a(c, h, s.lineNumber, s.column)
        }
        static _deleteWordPartRight(e, t) {
            return t.isEmpty() ? (t = t.getPosition(), e = d._moveWordPartRight(e, t), new l.a(t.lineNumber, t.column, e.lineNumber, e.column)) : t
        }
        static _createWordAtPosition(e, t, i) {
            return i = new l.a(t, i.start + 1, t, i.end + 1), {
                word: e.getValueInRange(i),
                startColumn: i.startColumn,
                endColumn: i.endColumn
            }
        }
        static getWordAtPosition(e, t, i) {
            var n = Object(s.a)(t);
            return (t = d._findPreviousWordOnLine(n, e, i)) && 1 === t.wordType && t.start <= i.column - 1 && i.column - 1 <= t.end ? d._createWordAtPosition(e, i.lineNumber, t) : (n = d._findNextWordOnLine(n, e, i)) && 1 === n.wordType && n.start <= i.column - 1 && i.column - 1 <= n.end ? d._createWordAtPosition(e, i.lineNumber, n) : null
        }
        static word(e, t, i, n, o) {
            var c = Object(s.a)(e.wordSeparators);
            e = d._findPreviousWordOnLine(c, t, o), c = d._findNextWordOnLine(c, t, o);
            if (!n) {
                let i, n;
                return n = e && 1 === e.wordType && e.start <= o.column - 1 && o.column - 1 <= e.end ? (i = e.start + 1, e.end + 1) : c && 1 === c.wordType && c.start <= o.column - 1 && o.column - 1 <= c.end ? (i = c.start + 1, c.end + 1) : (i = e ? e.end + 1 : 1, c ? c.start + 1 : t.getLineMaxColumn(o.lineNumber)), new r.f(new l.a(o.lineNumber, i, o.lineNumber, n), 0, new a.a(o.lineNumber, n), 0)
            }
            let h, u;
            u = e && 1 === e.wordType && e.start < o.column - 1 && o.column - 1 < e.end ? (h = e.start + 1, e.end + 1) : c && 1 === c.wordType && c.start < o.column - 1 && o.column - 1 < c.end ? (h = c.start + 1, c.end + 1) : (h = o.column, o.column);
            var p;
            c = o.lineNumber;
            let g;
            return i.selectionStart.containsPosition(o) ? g = i.selectionStart.endColumn : o.isBeforeOrEqual(i.selectionStart.getStartPosition()) ? (g = h, p = new a.a(c, g), i.selectionStart.containsPosition(p) && (g = i.selectionStart.endColumn)) : (g = u, p = new a.a(c, g), i.selectionStart.containsPosition(p) && (g = i.selectionStart.startColumn)), i.move(!0, c, g, 0)
        }
    }
}, function(e, t, i) {
    "use strict";
    var n = i(18),
        r = i.n(n),
        o = i(82);
    n = i(27);

    function s(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    n = {
        name: "simple-input",
        props: {
            value: [String, Number],
            placeholder: String,
            suffix: String,
            type: {
                type: String,
                default: function() {
                    return "text"
                }
            }
        },
        model: {
            prop: "value",
            event: "change"
        },
        data: function() {
            return {
                suffixWidth: 0,
                ref: ""
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? s(Object(i), !0).forEach((function(t) {
                    r()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : s(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(n.mapState)({})),
        methods: {
            handleTextChange: o.debounce((function(e) {
                void 0 !== (e = (e = void 0 === (e = e.target) ? {} : e).value) && ("number" === this.type ? this.$emit("change", parseInt(e)) : this.$emit("change", e))
            }), 500)
        },
        mounted: function() {
            var e = this;
            this.ref = Object(o.uniqueId)("simple-input"), this.$nextTick((function() {
                e.suffixWidth = e.$refs[e.ref].clientWidth
            }))
        }
    }, i(296), i = i(30), n = Object(i.a)(n, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            class: ["main-simple-input-" + e.theme]
        }, [t("input", {
            style: {
                paddingLeft: "10px",
                paddingRight: e.suffixWidth + 10 + "px"
            },
            attrs: {
                spellcheck: "false",
                type: e.type,
                placeholder: e.placeholder
            },
            domProps: {
                value: e.value
            },
            on: {
                input: e.handleTextChange
            }
        }), e._v(" "), t("div", {
            ref: e.ref,
            staticClass: "suffix"
        }, [e._v(e._s(e.suffix))])])
    }), [], !1, null, "7f6c1bea", null), t.a = n.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(275),
        r = {};
    n.keys().forEach((function(e) {
        "./index.js" !== e && (r[e.replace(/(\.\/|\.js)/g, "")] = n(e).default)
    })), t.default = r
}, function(e, t) {
    e.exports = require("ws")
}, function(e, t) {
    e.exports = require("vue-router")
}, function(e, t) {
    e.exports = require("fs-extra")
}, function(e, t) {
    e.exports = require("original-fs")
}, function(e, t) {
    e.exports = require("velocity-animate")
}, function(e, t, i) {
    var n = i(258);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3c58ddc3", n, !0, {})
}, function(e, t) {
    e.exports = function(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    var n = i(181);
    e.exports = function(e, t) {
        if (e) {
            if ("string" == typeof e) return n(e, t);
            var i = Object.prototype.toString.call(e).slice(8, -1);
            return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? n(e, t) : void 0
        }
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    var n = i(263);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2ad45b95", n, !0, {})
}, function(e, t, i) {
    var n = i(265);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2bee9276", n, !0, {})
}, function(e, t, i) {
    var n = i(267);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("0f487f19", n, !0, {})
}, function(e, t, i) {
    var n = i(269);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("c344c9f0", n, !0, {})
}, function(e, t, i) {
    var n = i(271);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("51db32d2", n, !0, {})
}, function(e, t, i) {
    var n = i(273);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3a7342b3", n, !0, {})
}, function(e, t) {
    e.exports = require("get-port")
}, function(e, t, i) {
    var n = {
        "./service_darwin": 191,
        "./service_darwin.js": 191,
        "./service_linux": 192,
        "./service_linux.js": 192,
        "./service_win32": 193,
        "./service_win32.js": 193
    };

    function r(e) {
        return e = o(e), i(e)
    }

    function o(e) {
        if (i.o(n, e)) return n[e];
        throw (e = new Error("Cannot find module '" + e + "'")).code = "MODULE_NOT_FOUND", e
    }
    r.keys = function() {
        return Object.keys(n)
    }, r.resolve = o, (e.exports = r).id = 190
}, function(e, t, i) {
    "use strict";

    function n(e) {
        return new Promise((function(t, i) {
            Object(g.exec)(e, {
                name: "Clash for Windows"
            }, (function(e, n, r) {
                e && i(e), r && i(r), n && t(n.toString()), t("")
            }))
        }))
    }

    function r() {
        var e = p.a.getters.filesPath,
            t = (t = {}, c()(t, u.c, "darwin/x64/service"), c()(t, u.b, "darwin/arm64/service"), t[Object(u.f)()]);
        return Object(f.join)(e, t)
    }
    i.r(t), i.d(t, "status", (function() {
        return w
    })), i.d(t, "statusService", (function() {
        return y
    })), i.d(t, "installService", (function() {
        return C
    })), i.d(t, "uninstallService", (function() {
        return x
    })), i.d(t, "needUpdate", (function() {
        return S
    })), i.d(t, "updateService", (function() {
        return k
    }));
    var o, s, a, l, d = i(10),
        c = (t = i.n(d), d = i(18), i.n(d)),
        h = (d = i(3), i.n(d)),
        u = i(19),
        p = i(42),
        g = i(124),
        f = i(12),
        m = i(16),
        v = i(40),
        b = (i(45), i(69)),
        _ = '<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n    <dict>\n        <key>Label</key>\n        <string>com.lbyczf.cfw.helper</string>\n        <key>Program</key>\n        <string>helperPath</string>\n        <key>RunAtLoad</key>\n        <true/>\n        <key>KeepAlive</key>\n        <true/>\n        <key>HardResourceLimits</key>\n        <dict>\n            <key>NumberOfFiles</key>\n            <integer>10240</integer>\n        </dict>\n        <key>SoftResourceLimits</key>\n        <dict>\n            <key>NumberOfFiles</key>\n            <integer>10240</integer>\n        </dict>\n    </dict>\n</plist>',
        w = {
            Active: Symbol(),
            Inactive: Symbol(),
            NonExistent: Symbol(),
            Unknown: Symbol()
        },
        y = (o = t()(h.a.mark((function e() {
            var t;
            return h.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (e.prev = 0, "" === (t = void 0 === (t = p.a.state.app.clashPath) ? "" : t) || Object(m.existsSync)(Object(f.join)(t, "service"))) {
                            e.next = 4;
                            break
                        }
                        return e.abrupt("return", w.Inactive);
                    case 4:
                        return e.next = 6, b.get("http://127.0.0.1:53000/ping", {
                            timeout: 5e3
                        });
                    case 6:
                        return t = (t = e.sent).status, e.abrupt("return", 200 === t ? w.Active : w.Inactive);
                    case 11:
                        e.prev = 11, e.t0 = e.catch(0);
                    case 13:
                        return e.abrupt("return", w.Unknown);
                    case 14:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 11]
            ])
        }))), function() {
            return o.apply(this, arguments)
        }),
        C = (s = t()(h.a.mark((function e() {
            var t, i;
            return h.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, i = p.a.state.app.clashPath, t = Object(f.join)(i, "service"), Object(m.existsSync)(t) || Object(m.mkdirSync)(t), t = Object(f.join)(i, "service", "clash-core-service"), Object(m.copyFileSync)(Object(f.join)(r(), "clash-core-service"), Object(f.join)(t)), i = "/Library/LaunchDaemons/com.lbyczf.cfw.helper.plist", e.next = 9, n('echo "'.concat(_.replace("helperPath", t), '" > ').concat(i, " ; launchctl load -w ").concat(i));
                    case 9:
                        return e.abrupt("return", !0);
                    case 12:
                        return e.prev = 12, e.t0 = e.catch(0), e.abrupt("return", !1);
                    case 15:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 12]
            ])
        }))), function() {
            return s.apply(this, arguments)
        }),
        x = (a = t()(h.a.mark((function e() {
            var t;
            return h.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, t = "/Library/LaunchDaemons/com.lbyczf.cfw.helper.plist", e.next = 4, n("launchctl unload ".concat(t, " ; rm ").concat(t));
                    case 4:
                        return t = p.a.state.app.clashPath, t = Object(f.join)(t, "service"), Object(m.existsSync)(t) && Object(v.a)(t), e.abrupt("return", !0);
                    case 10:
                        return e.prev = 10, e.t0 = e.catch(0), e.abrupt("return", !1);
                    case 13:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 10]
            ])
        }))), function() {
            return a.apply(this, arguments)
        }),
        S = function() {
            var e = p.a.state.app.clashPath,
                t = Object(f.join)(e, "service");
            if (!Object(m.existsSync)(t)) return !1;
            var i = Object(f.join)(e, "service", "clash-core-service");
            return !!Object(m.existsSync)(i) && (t = Object(f.join)(r(), "clash-core-service"), (e = function(e) {
                return Object(v.c)(Object(m.readFileSync)(e))
            })(i) !== e(t))
        },
        k = (l = t()(h.a.mark((function e() {
            var t, i;
            return h.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, i = p.a.state.app.clashPath, t = Object(f.join)(i, "service"), Object(m.existsSync)(t) || Object(m.mkdirSync)(t), t = Object(f.join)(i, "service", "clash-core-service"), Object(m.copyFileSync)(Object(f.join)(r(), "clash-core-service"), Object(f.join)(t)), i = "/Library/LaunchDaemons/com.lbyczf.cfw.helper.plist", e.next = 9, n("launchctl unload ".concat(i, ' ; echo "').concat(_.replace("helperPath", t), '" > ').concat(i, " ; launchctl load -w ").concat(i));
                    case 9:
                        return e.abrupt("return", !0);
                    case 12:
                        return e.prev = 12, e.t0 = e.catch(0), e.abrupt("return", !1);
                    case 15:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 12]
            ])
        }))), function() {
            return l.apply(this, arguments)
        })
}, function(e, t, i) {
    "use strict";

    function n(e) {
        return new Promise((function(t, i) {
            Object(m.exec)(e, {
                name: "Clash for Windows"
            }, (function(e, n, r) {
                e && i(e), r && i(r), n && t(n.toString()), t("")
            }))
        }))
    }

    function r() {
        var e = f.a.getters.filesPath,
            t = u()({}, g.a, "linux/x64/service")[Object(g.f)()];
        return Object(v.join)(e, t)
    }

    function o() {
        var e = f.a.getters.filesPath;
        return Object(v.join)(e, "linux", "common", "service-installer")
    }
    i.r(t), i.d(t, "status", (function() {
        return x
    })), i.d(t, "statusService", (function() {
        return k
    })), i.d(t, "installService", (function() {
        return L
    })), i.d(t, "uninstallService", (function() {
        return O
    })), i.d(t, "needUpdate", (function() {
        return E
    })), i.d(t, "updateService", (function() {
        return N
    }));
    var s, a, l, d, c, h = i(10),
        u = (t = i.n(h), h = i(18), i.n(h)),
        p = (h = i(3), i.n(h)),
        g = i(19),
        f = i(42),
        m = i(124),
        v = i(12),
        b = i(16),
        _ = i(40),
        w = (i(45), i(69)),
        y = i(22),
        C = i(177),
        x = {
            Active: Symbol(),
            Inactive: Symbol(),
            NonExistent: Symbol(),
            Unknown: Symbol()
        },
        S = (s = t()(p.a.mark((function e() {
            return p.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.next = 2, y.ipcRenderer.invoke("app", "getPath", "temp");
                    case 2:
                        return e.abrupt("return", e.sent);
                    case 3:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function() {
            return s.apply(this, arguments)
        }),
        k = (a = t()(p.a.mark((function e() {
            var t;
            return p.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (e.prev = 0, "" === (t = void 0 === (t = f.a.state.app.clashPath) ? "" : t) || Object(b.existsSync)(Object(v.join)(t, "service"))) {
                            e.next = 4;
                            break
                        }
                        return e.abrupt("return", x.Inactive);
                    case 4:
                        return e.next = 6, w.get("http://127.0.0.1:53000/ping", {
                            timeout: 5e3
                        });
                    case 6:
                        return t = (t = e.sent).status, e.abrupt("return", 200 === t ? x.Active : x.Inactive);
                    case 11:
                        e.prev = 11, e.t0 = e.catch(0);
                    case 13:
                        return e.abrupt("return", x.Unknown);
                    case 14:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 11]
            ])
        }))), function() {
            return a.apply(this, arguments)
        }),
        L = (l = t()(p.a.mark((function e() {
            var t, i, s, a, l;
            return p.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, t = f.a.state.app.clashPath, i = o(), e.t0 = v.join, e.next = 6, S();
                    case 6:
                        return e.t1 = e.sent, s = (0, e.t0)(e.t1, "cfw-clash-service-installer"), l = Object(v.join)(t, "service"), Object(b.existsSync)(l) || Object(b.mkdirSync)(l), a = Object(v.join)(t, "service", "clash-core-service"), Object(b.copyFileSync)(Object(v.join)(r(), "clash-core-service"), Object(v.join)(a)), Object(C.copySync)(i, s, {
                            overwrite: !0
                        }), l = Object(v.join)(s, "scripts", "clash-core-service.service"), e.next = 16, n('echo "'.concat("[Unit]\nDescription=Clash core service created by Clash for Windows\nAfter=network-online.target nftables.service iptabels.service\n\n[Service]\nType=simple\nExecStartPre=+/usr/lib/clash/setup-cgroup.sh\nExecStart=/usr/bin/bypass-proxy helperPath\nRestart=always\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target".replace("helperPath", a), '" > ').concat(l, " ; ").concat(s, "/installer.sh install; systemctl enable clash-core-service; systemctl start clash-core-service"));
                    case 16:
                        return e.abrupt("return", !0);
                    case 19:
                        return e.prev = 19, e.t2 = e.catch(0), e.abrupt("return", !1);
                    case 22:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 19]
            ])
        }))), function() {
            return l.apply(this, arguments)
        }),
        O = (d = t()(p.a.mark((function e() {
            var t, i, r;
            return p.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, t = o(), e.t0 = v.join, e.next = 5, S();
                    case 5:
                        return e.t1 = e.sent, i = (0, e.t0)(e.t1, "cfw-clash-service-installer"), Object(C.copySync)(t, i, {
                            overwrite: !0
                        }), e.next = 10, n("".concat(i, "/installer.sh uninstall"));
                    case 10:
                        return r = f.a.state.app.clashPath, r = Object(v.join)(r, "service"), Object(b.existsSync)(r) && Object(_.a)(r), Object(b.existsSync)(i) && Object(_.a)(i), e.abrupt("return", !0);
                    case 17:
                        return e.prev = 17, e.t2 = e.catch(0), e.abrupt("return", !1);
                    case 20:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 17]
            ])
        }))), function() {
            return d.apply(this, arguments)
        }),
        E = function() {
            var e = f.a.state.app.clashPath,
                t = Object(v.join)(e, "service");
            if (!Object(b.existsSync)(t)) return !1;
            var i = Object(v.join)(e, "service", "clash-core-service");
            return !!Object(b.existsSync)(i) && (t = Object(v.join)(r(), "clash-core-service"), (e = function(e) {
                return Object(_.c)(Object(b.readFileSync)(e))
            })(i) !== e(t))
        },
        N = (c = t()(p.a.mark((function e() {
            return p.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, e.next = 3, O();
                    case 3:
                        if (e.sent) return e.next = 6, L();
                        e.next = 7;
                        break;
                    case 6:
                        return e.abrupt("return", e.sent);
                    case 7:
                        e.next = 12;
                        break;
                    case 9:
                        return e.prev = 9, e.t0 = e.catch(0), e.abrupt("return", !1);
                    case 12:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 9]
            ])
        }))), function() {
            return c.apply(this, arguments)
        })
}, function(e, t, i) {
    "use strict";
    i.r(t), i.d(t, "status", (function() {
        return _
    })), i.d(t, "statusService", (function() {
        return C
    })), i.d(t, "installService", (function() {
        return x
    })), i.d(t, "uninstallService", (function() {
        return S
    })), i.d(t, "needUpdate", (function() {
        return k
    })), i.d(t, "updateService", (function() {
        return L
    }));
    var n, r, o, s, a, l = i(10),
        d = (t = i.n(l), l = i(18), i.n(l)),
        c = (l = i(3), i.n(l)),
        h = i(19),
        u = i(42),
        p = (l = i(69), i.n(l)),
        g = i(124),
        f = i(12),
        m = i(16),
        v = i(40),
        b = i(45),
        _ = {
            Active: Symbol(),
            Inactive: Symbol(),
            NonExistent: Symbol(),
            Unknown: Symbol()
        },
        w = function() {
            var e = u.a.getters.filesPath,
                t = (t = {}, d()(t, h.d, "win/ia32/service"), d()(t, h.e, "win/x64/service"), t[Object(h.f)()]);
            return Object(f.join)(e, t)
        },
        y = (n = t()(c.a.mark((function e() {
            var t, i, n, r = arguments;
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (t = 0 < r.length && void 0 !== r[0] ? r[0] : [], Object(h.j)()) return n = u.a.state.app.clashPath, i = Object(f.join)(n, "service"), n = t.map((function(e) {
                                var t = e.cmd;
                                e = void 0 === (e = e.options) ? [] : e;
                                return '"'.concat(Object(f.join)(i, "service.exe"), '" ').concat(t, " ").concat(e.join(" "))
                            })).join(" & "), e.next = 7,
                            function(e) {
                                return new Promise((function(t, i) {
                                    Object(g.exec)(e, (function(e, n, r) {
                                        e && i(e), r && i(r), n && t(n.toString()), t("")
                                    }))
                                }))
                            }(n);
                        e.next = 9;
                        break;
                    case 7:
                        return n = e.sent, e.abrupt("return", n);
                    case 9:
                        return e.abrupt("return", "");
                    case 10:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function() {
            return n.apply(this, arguments)
        }),
        C = (r = t()(c.a.mark((function e() {
            var t;
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (e.prev = 0, "" === (t = void 0 === (t = u.a.state.app.clashPath) ? "" : t) || Object(m.existsSync)(Object(f.join)(t, "service"))) {
                            e.next = 4;
                            break
                        }
                        return e.abrupt("return", _.Inactive);
                    case 4:
                        return e.next = 6, p.a.get("http://127.0.0.1:53000/ping", {
                            timeout: 5e3
                        });
                    case 6:
                        return t = (t = e.sent).status, e.abrupt("return", 200 === t ? _.Active : _.Inactive);
                    case 11:
                        e.prev = 11, e.t0 = e.catch(0);
                    case 13:
                        return e.abrupt("return", _.Unknown);
                    case 14:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 11]
            ])
        }))), function() {
            return r.apply(this, arguments)
        }),
        x = (o = t()(c.a.mark((function e() {
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0,
                            function() {
                                var e = u.a.state.app.clashPath,
                                    t = Object(f.join)(e, "service");
                                Object(m.existsSync)(t) || Object(m.mkdirSync)(t), t = Object(f.join)(e, "service", "clash-core-service.exe"), Object(m.copyFileSync)(Object(f.join)(w(), "clash-core-service.exe"), Object(f.join)(t)), t = Object(f.join)(e, "service", "service.exe"), Object(m.copyFileSync)(Object(f.join)(w(), "service.exe"), Object(f.join)(t)), e = Object(f.join)(e, "service", "service.yml"), Object(m.writeFileSync)(e, Object(b.stringify)({
                                    id: "Clash Core Service",
                                    name: "Clash Core Service",
                                    description: "Clash Core Service started by Clash for Windows",
                                    executable: "clash-core-service",
                                    log: {
                                        mode: "none"
                                    }
                                }))
                            }(), e.next = 4, y([{
                                cmd: "install"
                            }, {
                                cmd: "start"
                            }]);
                    case 4:
                        return e.abrupt("return", !0);
                    case 7:
                        return e.prev = 7, e.t0 = e.catch(0), console.error(e.t0), e.abrupt("return", !1);
                    case 11:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 7]
            ])
        }))), function() {
            return o.apply(this, arguments)
        }),
        S = (s = t()(c.a.mark((function e() {
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, e.next = 3, y([{
                            cmd: "stop"
                        }, {
                            cmd: "uninstall"
                        }]);
                    case 3:
                        return t = void 0, t = u.a.state.app.clashPath, t = Object(f.join)(t, "service"), Object(m.existsSync)(t) && Object(v.a)(t), e.abrupt("return", !0);
                    case 7:
                        return e.prev = 7, e.t0 = e.catch(0), console.error(e.t0), e.abrupt("return", !1);
                    case 11:
                    case "end":
                        return e.stop()
                }
                var t
            }), e, null, [
                [0, 7]
            ])
        }))), function() {
            return s.apply(this, arguments)
        }),
        k = function() {
            var e = u.a.state.app.clashPath,
                t = Object(f.join)(e, "service");
            if (!Object(m.existsSync)(t)) return !1;
            var i = Object(f.join)(e, "service", "clash-core-service.exe");
            return !!Object(m.existsSync)(i) && (t = Object(f.join)(w(), "clash-core-service.exe"), (e = function(e) {
                return Object(v.c)(Object(m.readFileSync)(e))
            })(i) !== e(t))
        },
        L = (a = t()(c.a.mark((function e() {
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.prev = 0, e.next = 3, S();
                    case 3:
                        if (e.sent) return e.next = 6, x();
                        e.next = 7;
                        break;
                    case 6:
                        return e.abrupt("return", e.sent);
                    case 7:
                        e.next = 12;
                        break;
                    case 9:
                        return e.prev = 9, e.t0 = e.catch(0), e.abrupt("return", !1);
                    case 12:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [0, 9]
            ])
        }))), function() {
            return a.apply(this, arguments)
        })
}, function(e, t, i) {
    var n = i(283);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("f09274f8", n, !0, {})
}, function(e, t, i) {
    var n = i(285);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("11fc696c", n, !0, {})
}, function(e, t, i) {
    var n = i(287);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("6f355441", n, !0, {})
}, function(e, t, i) {
    var n = i(289);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("59f06bf0", n, !0, {})
}, function(e, t, i) {
    var n = i(291);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("77f7742c", n, !0, {})
}, function(e, t, i) {
    var n = i(293);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("23e93272", n, !0, {})
}, function(e, t, i) {
    var n = i(295);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("1e3adce2", n, !0, {})
}, function(e, t, i) {
    var n = i(297);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2cb3f141", n, !0, {})
}, function(e, t, i) {
    var n = i(299);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("d8fd8a9e", n, !0, {})
}, function(e, t, i) {
    var n = i(301);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("84e3e6b6", n, !0, {})
}, function(e, t, i) {
    var n = i(303);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("4953e4bc", n, !0, {})
}, function(e, t, i) {
    var n = i(305);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("4502065a", n, !0, {})
}, function(e, t, i) {
    var n = i(307);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("33cf478a", n, !0, {})
}, function(e, t, i) {
    var n = i(309);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2b2912c7", n, !0, {})
}, function(e, t, i) {
    var n = i(311);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("7f3e50f8", n, !0, {})
}, function(e, t, i) {
    var n = i(313);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3a662a6a", n, !0, {})
}, function(e, t, i) {
    var n = i(315);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("09b5c4e0", n, !0, {})
}, function(e, t, i) {
    var n = i(317);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("0b68a622", n, !0, {})
}, function(e, t, i) {
    var n = i(319);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("b48457be", n, !0, {})
}, function(e, t, i) {
    var n = i(321);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("c9f5ec0a", n, !0, {})
}, function(e, t, i) {
    var n = i(323);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("0386a09c", n, !0, {})
}, function(e, t, i) {
    var n = i(325);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("5785b4ad", n, !0, {})
}, function(e, t, i) {
    var n = i(327);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("7e025e06", n, !0, {})
}, function(e, t, i) {
    var n = i(329);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("07aa29ca", n, !0, {})
}, function(e, t, i) {
    var n = i(331);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("72a4bf42", n, !0, {})
}, function(e, t, i) {
    var n = i(333);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("361cba3f", n, !0, {})
}, function(e, t, i) {
    var n = i(335);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("22278d59", n, !0, {})
}, function(e, t, i) {
    var n = i(337);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("a016a8a4", n, !0, {})
}, function(e, t, i) {
    var n = i(339);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("beea7aa4", n, !0, {})
}, function(e, t, i) {
    var n = i(341);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("18c55c44", n, !0, {})
}, function(e, t, i) {
    var n = i(343);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("518083e1", n, !0, {})
}, function(e, t, i) {
    var n = i(345);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("c78868ee", n, !0, {})
}, function(e, t, i) {
    var n = i(347);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("019f5316", n, !0, {})
}, function(e, t, i) {
    var n = i(349);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("553c3563", n, !0, {})
}, function(e, t, i) {
    var n = i(351);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("b618bc42", n, !0, {})
}, function(e, t, i) {
    var n = i(353);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("187380e9", n, !0, {})
}, function(e, t, i) {
    var n = i(355);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("58738c88", n, !0, {})
}, function(e, t, i) {
    var n = i(357);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("d582f078", n, !0, {})
}, function(e, t, i) {
    var n = i(359);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("ba57312c", n, !0, {})
}, function(e, t, i) {
    var n = i(361);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("6c9a68ba", n, !0, {})
}, function(e, t, i) {
    var n = i(363);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("64909978", n, !0, {})
}, function(e, t, i) {
    var n = i(365);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("76e11aef", n, !0, {})
}, function(e, t, i) {
    var n = i(367);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("31149d92", n, !0, {})
}, function(e, t, i) {
    var n = i(369);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("140c0bc6", n, !0, {})
}, function(e, t, i) {
    var n = i(371);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3fff0175", n, !0, {})
}, function(e, t, i) {
    var n = i(380);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("9b893622", n, !0, {})
}, function(e, t, i) {
    var n = i(385);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("08ac286b", n, !0, {})
}, function(e, t, i) {
    var n = i(436);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("76279a60", n, !0, {})
}, function(e, t, i) {
    var n = i(458);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("e288e9dc", n, !0, {})
}, function(e, t, i) {
    var n = i(460);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2c1ac222", n, !0, {})
}, function(e, t, i) {
    var n = i(462);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("c65ed4c2", n, !0, {})
}, function(e, t, i) {
    var n = i(464);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("56abd789", n, !0, {})
}, function(e, t, i) {
    var n = i(466);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("6d0ac2fe", n, !0, {})
}, function(e, t, i) {
    var n = i(468);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("0954d946", n, !0, {})
}, function(e, t) {
    e.exports = require("crypto")
}, function(e, t) {
    e.exports = require("http")
}, function(e, t) {
    e.exports = require("node-diff3")
}, function(e, t) {
    e.exports = require("zlib")
}, function(e, t) {
    e.exports = require("tar-stream")
}, function(e, t) {
    e.exports = require("qrcode")
}, function(e, t) {
    e.exports = require("dhcp")
}, function(e, t, i) {
    "use strict";
    i.d(t, "a", (function() {
        return c
    })), i(111);
    var n, r, o, s, a, l = i(145);

    function d(e, t, i, n) {
        this._onDidChange = new l.a, this._onDidExtraLibsChange = new l.a, this._extraLibs = Object.create(null), this._removedExtraLibs = Object.create(null), this._eagerModelSync = !1, this.setCompilerOptions(e), this.setDiagnosticsOptions(t), this.setWorkerOptions(i), this.setInlayHintsOptions(n), this._onDidExtraLibsChangeTimeout = -1
    }(t = n = n || {})[t.None = 0] = "None", t[t.CommonJS = 1] = "CommonJS", t[t.AMD = 2] = "AMD", t[t.UMD = 3] = "UMD", t[t.System = 4] = "System", t[t.ES2015 = 5] = "ES2015", t[t.ESNext = 99] = "ESNext", (t = r = r || {})[t.None = 0] = "None", t[t.Preserve = 1] = "Preserve", t[t.React = 2] = "React", t[t.ReactNative = 3] = "ReactNative", t[t.ReactJSX = 4] = "ReactJSX", t[t.ReactJSXDev = 5] = "ReactJSXDev", (t = o = o || {})[t.CarriageReturnLineFeed = 0] = "CarriageReturnLineFeed", t[t.LineFeed = 1] = "LineFeed", (t = s = s || {})[t.ES3 = 0] = "ES3", t[t.ES5 = 1] = "ES5", t[t.ES2015 = 2] = "ES2015", t[t.ES2016 = 3] = "ES2016", t[t.ES2017 = 4] = "ES2017", t[t.ES2018 = 5] = "ES2018", t[t.ES2019 = 6] = "ES2019", t[t.ES2020 = 7] = "ES2020", t[t.ESNext = 99] = "ESNext", t[t.JSON = 100] = "JSON", t[t.Latest = 99] = "Latest", (t = a = a || {})[t.Classic = 1] = "Classic", t[t.NodeJs = 2] = "NodeJs", Object.defineProperty(d.prototype, "onDidChange", {
        get: function() {
            return this._onDidChange.event
        },
        enumerable: !1,
        configurable: !0
    }), Object.defineProperty(d.prototype, "onDidExtraLibsChange", {
        get: function() {
            return this._onDidExtraLibsChange.event
        },
        enumerable: !1,
        configurable: !0
    }), Object.defineProperty(d.prototype, "workerOptions", {
        get: function() {
            return this._workerOptions
        },
        enumerable: !1,
        configurable: !0
    }), Object.defineProperty(d.prototype, "inlayHintsOptions", {
        get: function() {
            return this._inlayHintsOptions
        },
        enumerable: !1,
        configurable: !0
    }), d.prototype.getExtraLibs = function() {
        return this._extraLibs
    }, d.prototype.addExtraLib = function(e, t) {
        var i = this,
            n = void 0 === t ? "ts:extralib-" + Math.random().toString(36).substring(2, 15) : t;
        if (this._extraLibs[n] && this._extraLibs[n].content === e) return {
            dispose: function() {}
        };
        var r = 1;
        return this._removedExtraLibs[n] && (r = this._removedExtraLibs[n] + 1), this._extraLibs[n] && (r = this._extraLibs[n].version + 1), this._extraLibs[n] = {
            content: e,
            version: r
        }, this._fireOnDidExtraLibsChangeSoon(), {
            dispose: function() {
                var e = i._extraLibs[n];
                e && e.version === r && (delete i._extraLibs[n], i._removedExtraLibs[n] = r, i._fireOnDidExtraLibsChangeSoon())
            }
        }
    }, d.prototype.setExtraLibs = function(e) {
        for (var t in this._extraLibs) this._removedExtraLibs[t] = this._extraLibs[t].version;
        if (this._extraLibs = Object.create(null), e && 0 < e.length)
            for (var i = 0, n = e; i < n.length; i++) {
                t = (o = n[i]).filePath || "ts:extralib-" + Math.random().toString(36).substring(2, 15);
                var r = o.content,
                    o = 1;
                this._removedExtraLibs[t] && (o = this._removedExtraLibs[t] + 1), this._extraLibs[t] = {
                    content: r,
                    version: o
                }
            }
        this._fireOnDidExtraLibsChangeSoon()
    }, d.prototype._fireOnDidExtraLibsChangeSoon = function() {
        var e = this; - 1 === this._onDidExtraLibsChangeTimeout && (this._onDidExtraLibsChangeTimeout = window.setTimeout((function() {
            e._onDidExtraLibsChangeTimeout = -1, e._onDidExtraLibsChange.fire(void 0)
        }), 0))
    }, d.prototype.getCompilerOptions = function() {
        return this._compilerOptions
    }, d.prototype.setCompilerOptions = function(e) {
        this._compilerOptions = e || Object.create(null), this._onDidChange.fire(void 0)
    }, d.prototype.getDiagnosticsOptions = function() {
        return this._diagnosticsOptions
    }, d.prototype.setDiagnosticsOptions = function(e) {
        this._diagnosticsOptions = e || Object.create(null), this._onDidChange.fire(void 0)
    }, d.prototype.setWorkerOptions = function(e) {
        this._workerOptions = e || Object.create(null), this._onDidChange.fire(void 0)
    }, d.prototype.setInlayHintsOptions = function(e) {
        this._inlayHintsOptions = e || Object.create(null), this._onDidChange.fire(void 0)
    }, d.prototype.setMaximumWorkerIdleTime = function(e) {}, d.prototype.setEagerModelSync = function(e) {
        this._eagerModelSync = e
    }, d.prototype.getEagerModelSync = function() {
        return this._eagerModelSync
    };
    var c = new(t = d)({
            allowNonTsExtensions: !0,
            target: s.Latest
        }, {
            noSemanticValidation: !1,
            noSyntaxValidation: !1,
            onlyVisible: !1
        }, {}, {}),
        h = new t({
            allowNonTsExtensions: !0,
            allowJs: !0,
            target: s.Latest
        }, {
            noSemanticValidation: !0,
            noSyntaxValidation: !1,
            onlyVisible: !1
        }, {}, {});

    function u() {
        return i.e(4).then(i.bind(null, 484))
    }
    l.g.typescript = {
        ModuleKind: n,
        JsxEmit: r,
        NewLineKind: o,
        ScriptTarget: s,
        ModuleResolutionKind: a,
        typescriptVersion: "4.4.4",
        typescriptDefaults: c,
        javascriptDefaults: h,
        getTypeScriptWorker: function() {
            return u().then((function(e) {
                return e.getTypeScriptWorker()
            }))
        },
        getJavaScriptWorker: function() {
            return u().then((function(e) {
                return e.getJavaScriptWorker()
            }))
        }
    }, l.g.onLanguage("typescript", (function() {
        return u().then((function(e) {
            return e.setupTypeScript(c)
        }))
    })), l.g.onLanguage("javascript", (function() {
        return u().then((function(e) {
            return e.setupJavaScript(h)
        }))
    }))
}, function(e, t, i) {
    e = function(e) {
        "use strict";
        var t, i = Object.prototype,
            n = i.hasOwnProperty,
            r = "function" == typeof Symbol ? Symbol : {},
            o = r.iterator || "@@iterator",
            s = r.asyncIterator || "@@asyncIterator",
            a = r.toStringTag || "@@toStringTag";

        function l(e, t, i) {
            return Object.defineProperty(e, t, {
                value: i,
                enumerable: !0,
                configurable: !0,
                writable: !0
            }), e[t]
        }
        try {
            l({}, "")
        } catch (i) {
            l = function(e, t, i) {
                return e[t] = i
            }
        }

        function d(e, i, n, r) {
            var o, s, a, l;
            i = i && i.prototype instanceof m ? i : m, i = Object.create(i.prototype), r = new k(r || []);
            return i._invoke = (o = e, s = n, a = r, l = h, function(e, i) {
                if (l === p) throw new Error("Generator is already running");
                if (l === g) {
                    if ("throw" === e) throw i;
                    return O()
                }
                for (a.method = e, a.arg = i;;) {
                    var n = a.delegate;
                    if (n) {
                        var r = function e(i, n) {
                            var r;
                            if ((r = i.iterator[n.method]) === t) {
                                if (n.delegate = null, "throw" === n.method) {
                                    if (i.iterator.return && (n.method = "return", n.arg = t, e(i, n), "throw" === n.method)) return f;
                                    n.method = "throw", n.arg = new TypeError("The iterator does not provide a 'throw' method")
                                }
                                return f
                            }
                            return "throw" === (r = c(r, i.iterator, n.arg)).type ? (n.method = "throw", n.arg = r.arg, n.delegate = null, f) : (r = r.arg) ? r.done ? (n[i.resultName] = r.value, n.next = i.nextLoc, "return" !== n.method && (n.method = "next", n.arg = t), n.delegate = null, f) : r : (n.method = "throw", n.arg = new TypeError("iterator result is not an object"), n.delegate = null, f)
                        }(n, a);
                        if (r) {
                            if (r === f) continue;
                            return r
                        }
                    }
                    if ("next" === a.method) a.sent = a._sent = a.arg;
                    else if ("throw" === a.method) {
                        if (l === h) throw l = g, a.arg;
                        a.dispatchException(a.arg)
                    } else "return" === a.method && a.abrupt("return", a.arg);
                    if (l = p, "normal" === (r = c(o, s, a)).type) {
                        if (l = a.done ? g : u, r.arg !== f) return {
                            value: r.arg,
                            done: a.done
                        }
                    } else "throw" === r.type && (l = g, a.method = "throw", a.arg = r.arg)
                }
            }), i
        }

        function c(e, t, i) {
            try {
                return {
                    type: "normal",
                    arg: e.call(t, i)
                }
            } catch (e) {
                return {
                    type: "throw",
                    arg: e
                }
            }
        }
        e.wrap = d;
        var h = "suspendedStart",
            u = "suspendedYield",
            p = "executing",
            g = "completed",
            f = {};

        function m() {}

        function v() {}

        function b() {}
        var _ = {};
        _[o] = function() {
            return this
        }, (r = (r = Object.getPrototypeOf) && r(r(L([])))) && r !== i && n.call(r, o) && (_ = r);
        var w = b.prototype = m.prototype = Object.create(_);

        function y(e) {
            ["next", "throw", "return"].forEach((function(t) {
                l(e, t, (function(e) {
                    return this._invoke(t, e)
                }))
            }))
        }

        function C(e, t) {
            var i;
            this._invoke = function(r, o) {
                function s() {
                    return new t((function(i, s) {
                        ! function i(r, o, s, a) {
                            if ("throw" !== (r = c(e[r], e, o)).type) {
                                var l = r.arg;
                                return (o = l.value) && "object" == typeof o && n.call(o, "__await") ? t.resolve(o.__await).then((function(e) {
                                    i("next", e, s, a)
                                }), (function(e) {
                                    i("throw", e, s, a)
                                })) : t.resolve(o).then((function(e) {
                                    l.value = e, s(l)
                                }), (function(e) {
                                    return i("throw", e, s, a)
                                }))
                            }
                            a(r.arg)
                        }(r, o, i, s)
                    }))
                }
                return i = i ? i.then(s, s) : s()
            }
        }

        function x(e) {
            var t = {
                tryLoc: e[0]
            };
            1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t)
        }

        function S(e) {
            var t = e.completion || {};
            t.type = "normal", delete t.arg, e.completion = t
        }

        function k(e) {
            this.tryEntries = [{
                tryLoc: "root"
            }], e.forEach(x, this), this.reset(!0)
        }

        function L(e) {
            if (e) {
                if (i = e[o]) return i.call(e);
                if ("function" == typeof e.next) return e;
                if (!isNaN(e.length)) {
                    var i, r = -1;
                    return (i = function i() {
                        for (; ++r < e.length;)
                            if (n.call(e, r)) return i.value = e[r], i.done = !1, i;
                        return i.value = t, i.done = !0, i
                    }).next = i
                }
            }
            return {
                next: O
            }
        }

        function O() {
            return {
                value: t,
                done: !0
            }
        }
        return ((v.prototype = w.constructor = b).constructor = v).displayName = l(b, a, "GeneratorFunction"), e.isGeneratorFunction = function(e) {
            return !!(e = "function" == typeof e && e.constructor) && (e === v || "GeneratorFunction" === (e.displayName || e.name))
        }, e.mark = function(e) {
            return Object.setPrototypeOf ? Object.setPrototypeOf(e, b) : (e.__proto__ = b, l(e, a, "GeneratorFunction")), e.prototype = Object.create(w), e
        }, e.awrap = function(e) {
            return {
                __await: e
            }
        }, y(C.prototype), C.prototype[s] = function() {
            return this
        }, e.AsyncIterator = C, e.async = function(t, i, n, r, o) {
            void 0 === o && (o = Promise);
            var s = new C(d(t, i, n, r), o);
            return e.isGeneratorFunction(i) ? s : s.next().then((function(e) {
                return e.done ? e.value : s.next()
            }))
        }, y(w), l(w, a, "Generator"), w[o] = function() {
            return this
        }, w.toString = function() {
            return "[object Generator]"
        }, e.keys = function(e) {
            var t, i = [];
            for (t in e) i.push(t);
            return i.reverse(),
                function t() {
                    for (; i.length;) {
                        var n = i.pop();
                        if (n in e) return t.value = n, t.done = !1, t
                    }
                    return t.done = !0, t
                }
        }, e.values = L, k.prototype = {
            constructor: k,
            reset: function(e) {
                if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(S), !e)
                    for (var i in this) "t" === i.charAt(0) && n.call(this, i) && !isNaN(+i.slice(1)) && (this[i] = t)
            },
            stop: function() {
                this.done = !0;
                var e = this.tryEntries[0].completion;
                if ("throw" === e.type) throw e.arg;
                return this.rval
            },
            dispatchException: function(e) {
                if (this.done) throw e;
                var i = this;

                function r(n, r) {
                    return a.type = "throw", a.arg = e, i.next = n, r && (i.method = "next", i.arg = t), !!r
                }
                for (var o = this.tryEntries.length - 1; 0 <= o; --o) {
                    var s = this.tryEntries[o],
                        a = s.completion;
                    if ("root" === s.tryLoc) return r("end");
                    if (s.tryLoc <= this.prev) {
                        var l = n.call(s, "catchLoc"),
                            d = n.call(s, "finallyLoc");
                        if (l && d) {
                            if (this.prev < s.catchLoc) return r(s.catchLoc, !0);
                            if (this.prev < s.finallyLoc) return r(s.finallyLoc)
                        } else if (l) {
                            if (this.prev < s.catchLoc) return r(s.catchLoc, !0)
                        } else {
                            if (!d) throw new Error("try statement without catch or finally");
                            if (this.prev < s.finallyLoc) return r(s.finallyLoc)
                        }
                    }
                }
            },
            abrupt: function(e, t) {
                for (var i = this.tryEntries.length - 1; 0 <= i; --i) {
                    var r = this.tryEntries[i];
                    if (r.tryLoc <= this.prev && n.call(r, "finallyLoc") && this.prev < r.finallyLoc) {
                        var o = r;
                        break
                    }
                }
                var s = (o = o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o.finallyLoc ? null : o) ? o.completion : {};
                return s.type = e, s.arg = t, o ? (this.method = "next", this.next = o.finallyLoc, f) : this.complete(s)
            },
            complete: function(e, t) {
                if ("throw" === e.type) throw e.arg;
                return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && t && (this.next = t), f
            },
            finish: function(e) {
                for (var t = this.tryEntries.length - 1; 0 <= t; --t) {
                    var i = this.tryEntries[t];
                    if (i.finallyLoc === e) return this.complete(i.completion, i.afterLoc), S(i), f
                }
            },
            catch: function(e) {
                for (var t = this.tryEntries.length - 1; 0 <= t; --t) {
                    var i = this.tryEntries[t];
                    if (i.tryLoc === e) {
                        var n, r = i.completion;
                        return "throw" === r.type && (n = r.arg, S(i)), n
                    }
                }
                throw new Error("illegal catch attempt")
            },
            delegateYield: function(e, i, n) {
                return this.delegate = {
                    iterator: L(e),
                    resultName: i,
                    nextLoc: n
                }, "next" === this.method && (this.arg = t), f
            }
        }, e
    }(e.exports);
    try {
        regeneratorRuntime = e
    } catch (t) {
        Function("r", "regeneratorRuntime = r")(e)
    }
}, function(e, t, i) {
    "use strict";
    i(180)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".clickable,.clickable *{cursor:pointer}.no-esc{outline:none}", ""])
}, function(e, t, i) {
    var n = i(181);
    e.exports = function(e) {
        if (Array.isArray(e)) return n(e)
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t) {
    e.exports = function(e) {
        if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e)
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t) {
    e.exports = function() {
        throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t, i) {
    "use strict";
    i(183)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".grid-light[data-v-019ad1fb]{background-color:#f5f5f5}.grid-dark[data-v-019ad1fb],.grid-light[data-v-019ad1fb]{padding:10.5px 40px;text-align:center;flex:1;display:flex;align-items:baseline;justify-content:space-between;font-size:.8em;letter-spacing:.5px;height:40px}.grid-dark[data-v-019ad1fb]{background-color:#42424e}.grid-red[data-v-019ad1fb]{background-color:#ffc76d}.grid-2077[data-v-019ad1fb],.grid-red[data-v-019ad1fb]{padding:10.5px 40px;text-align:center;flex:1;display:flex;align-items:baseline;justify-content:space-between;font-size:.8em;letter-spacing:.5px;height:40px}.grid-2077[data-v-019ad1fb]{background-color:#084a5a}.main-clash-traffic-view-light[data-v-019ad1fb]{height:80px;display:flex;flex-direction:column;border-bottom:1px solid #dcdcdc}.main-clash-traffic-view-dark[data-v-019ad1fb]{height:80px;display:flex;flex-direction:column;border-bottom:1px solid #554f4f}.main-clash-traffic-view-red[data-v-019ad1fb]{height:80px;display:flex;flex-direction:column;border-bottom:1px solid rgba(218,20,30,.247059)}.main-clash-traffic-view-2077[data-v-019ad1fb]{height:80px;display:flex;flex-direction:column;border-bottom:1px solid rgba(6,145,180,.521569)}", ""])
}, function(e, t, i) {
    "use strict";
    i(184)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".hint[data-v-019ad1fb]{font-size:.8em;color:#000;letter-spacing:1px;text-align:left}.bold-icon[data-v-019ad1fb]{font-size:.75em;letter-spacing:1px;padding:0 1px}", ""])
}, function(e, t, i) {
    "use strict";
    i(185)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "#main-run-time-view[data-v-d7fc9bf6]{display:flex;align-items:flex-end;padding-bottom:40px}.timer-text[data-v-d7fc9bf6]{text-align:center;width:100%}", ""])
}, function(e, t, i) {
    "use strict";
    i(186)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".menu-light[data-v-2e582972]{background-color:#fff;color:#000;list-style-type:none;border-bottom:1px solid #dcdcdc;position:relative;display:flex;flex-direction:column;height:400px;justify-content:space-between}.menu-light .item[data-v-2e582972]{flex-grow:1}.menu-dark[data-v-2e582972]{background-color:#2c2a38;color:#fff;list-style-type:none;border-bottom:1px solid #554f4f;position:relative;display:flex;flex-direction:column;height:400px;justify-content:space-between}.menu-dark .item[data-v-2e582972]{flex-grow:1}.menu-red[data-v-2e582972]{background-color:#f8b74f;color:#d33928;list-style-type:none;border-bottom:1px solid rgba(218,20,30,.247059);position:relative;display:flex;flex-direction:column;height:400px;justify-content:space-between}.menu-red .item[data-v-2e582972]{flex-grow:1}.menu-2077[data-v-2e582972]{background-color:#136377;color:#fcec0c;list-style-type:none;border-bottom:1px solid rgba(6,145,180,.521569);position:relative;display:flex;flex-direction:column;height:400px;justify-content:space-between}.menu-2077 .item[data-v-2e582972]{flex-grow:1}.item-draggable .item[data-v-2e582972]{-webkit-user-drag:element}.item-none-light[data-v-2e582972]{background-color:#f5f5f5;color:#747d88}.item-none-dark[data-v-2e582972]{background-color:#42424e;color:#d4d4d4}.item-none-red[data-v-2e582972]{background-color:#ffc76d;color:rgba(218,20,30,.796078)}.item-none-2077[data-v-2e582972]{background-color:#084a5a;color:#c79707}.running-time-light[data-v-2e582972]{flex-grow:1;color:#000}.running-time-dark[data-v-2e582972]{flex-grow:1;color:#fff}.running-time-red[data-v-2e582972]{flex-grow:1;color:#d33928}.running-time-2077[data-v-2e582972]{flex-grow:1;color:#fcec0c}.traffic-light[data-v-2e582972]{margin-top:0;color:#000}.traffic-dark[data-v-2e582972]{margin-top:0;color:#fff}.traffic-red[data-v-2e582972]{margin-top:0;color:#d33928}.traffic-2077[data-v-2e582972]{margin-top:0;color:#fcec0c}.main-main-menu[data-v-2e582972]{z-index:2;height:100%;display:flex;flex-direction:column}.main-main-menu .stop-btn[data-v-2e582972]{cursor:pointer;position:absolute;top:515px;left:20px;border-radius:20px;color:#fff;height:30px;width:130px;line-height:30px;text-align:center;font-size:14px;font-weight:400;background-color:#d14444;box-shadow:0 0 15px 1px rgba(49,49,49,.3);transform:all .3s}.drag-item[data-v-2e582972]{background-color:#41b883;color:#fff}.ghost-item[data-v-2e582972]{opacity:0}.shaking1[data-v-2e582972],.shaking2[data-v-2e582972]{margin:2px 0;transform-origin:center;animation:shake-rotate-data-v-2e582972 .4s infinite}.shaking2[data-v-2e582972]{animation-delay:.1s}.shaking3[data-v-2e582972]{margin:2px 0;transform-origin:center;animation:shake-rotate-data-v-2e582972 .4s infinite;animation-delay:.2s}@keyframes shake-rotate-data-v-2e582972{0%{transform:rotate(0deg)}12.5%{transform:rotate(.5deg)}25%{-webkit-transform:rotate(1.2deg)}37.5%{transform:rotate(.5deg)}50%{transform:rotate(0deg)}62.5%{transform:rotate(-.5deg)}75%{transform:rotate(-1.2deg)}87.5%{transform:rotate(-.5deg)}to{transform:rotate(0deg)}}", ""])
}, function(e, t, i) {
    "use strict";
    i(187)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".icon[data-v-2e582972]{width:25px;height:25px}.item[data-v-2e582972]{font-size:1em;cursor:pointer;display:flex;align-items:center}.selected-top[data-v-2e582972]{border-bottom-right-radius:10px}.selected-bottom[data-v-2e582972]{border-top-right-radius:10px}.clickable[data-v-2e582972]{cursor:pointer;text-align:center;width:100%}", ""])
}, function(e, t, i) {
    "use strict";
    i(188)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-light[data-v-cb3c6880]{height:25px;width:100vw;background-color:#ebebeb;color:#000;display:flex;justify-content:space-between;align-items:center}.main-light .empty[data-v-cb3c6880]{flex-grow:1;height:100%;display:flex;flex-direction:column}.main-light .empty .top[data-v-cb3c6880]{height:5px}.main-light .empty .top .left[data-v-cb3c6880]{height:100%;background-color:#41b883}.main-light .empty .bottom[data-v-cb3c6880]{flex-grow:1;-webkit-app-region:drag}.main-dark[data-v-cb3c6880]{height:25px;width:100vw;background-color:#343442;color:#fff;display:flex;justify-content:space-between;align-items:center}.main-dark .empty[data-v-cb3c6880]{flex-grow:1;height:100%;display:flex;flex-direction:column}.main-dark .empty .top[data-v-cb3c6880]{height:5px}.main-dark .empty .top .left[data-v-cb3c6880]{height:100%;background-color:#14a014}.main-dark .empty .bottom[data-v-cb3c6880]{flex-grow:1;-webkit-app-region:drag}.main-red[data-v-cb3c6880]{height:25px;width:100vw;background-color:#e8a84a;color:#d33928;display:flex;justify-content:space-between;align-items:center}.main-red .empty[data-v-cb3c6880]{flex-grow:1;height:100%;display:flex;flex-direction:column}.main-red .empty .top[data-v-cb3c6880]{height:5px}.main-red .empty .top .left[data-v-cb3c6880]{height:100%;background-color:#16a716}.main-red .empty .bottom[data-v-cb3c6880]{flex-grow:1;-webkit-app-region:drag}.main-2077[data-v-cb3c6880]{height:25px;width:100vw;background-color:#fcec0c;color:#fcec0c;display:flex;justify-content:space-between;align-items:center}.main-2077 .empty[data-v-cb3c6880]{flex-grow:1;height:100%;display:flex;flex-direction:column}.main-2077 .empty .top[data-v-cb3c6880]{height:5px}.main-2077 .empty .top .left[data-v-cb3c6880]{height:100%;background-color:#44c444}.main-2077 .empty .bottom[data-v-cb3c6880]{flex-grow:1;-webkit-app-region:drag}.title[data-v-cb3c6880]{font-size:.75em;font-weight:100;letter-spacing:1px}.close-light[data-v-cb3c6880]{-webkit-app-region:no-drag;cursor:pointer;padding:0 7px;height:100%;display:flex;align-items:center}.close-light>img[data-v-cb3c6880]{cursor:pointer;height:20px;width:20px}.close-light[data-v-cb3c6880]:hover{background-color:rgba(50,50,50,.2)}.close-dark[data-v-cb3c6880]{-webkit-app-region:no-drag;cursor:pointer;padding:0 7px;height:100%;display:flex;align-items:center}.close-dark>img[data-v-cb3c6880]{cursor:pointer;height:20px;width:20px}.close-dark[data-v-cb3c6880]:hover{background-color:hsla(0,0%,98%,.2)}.close-red[data-v-cb3c6880]{-webkit-app-region:no-drag;cursor:pointer;padding:0 7px;height:100%;display:flex;align-items:center}.close-red>img[data-v-cb3c6880]{cursor:pointer;height:20px;width:20px}.close-red[data-v-cb3c6880]:hover{background-color:hsla(0,0%,98%,.2)}.close-2077[data-v-cb3c6880]{-webkit-app-region:no-drag;cursor:pointer;padding:0 7px;height:100%;display:flex;align-items:center}.close-2077>img[data-v-cb3c6880]{cursor:pointer;height:20px;width:20px}.close-2077[data-v-cb3c6880]:hover{background-color:hsla(0,0%,98%,.2)}.icon[data-v-cb3c6880]{padding:0;margin-left:10px;background-color:#f3f3f3;width:20px;height:20px;border-radius:1px}.icon>img[data-v-cb3c6880]{width:20px;height:20px}", ""])
}, function(e, t) {
    e.exports = require("util")
}, function(e, t, i) {
    var n = {
        "./app.js": 482,
        "./index.js": 174
    };

    function r(e) {
        return e = o(e), i(e)
    }

    function o(e) {
        if (i.o(n, e)) return n[e];
        throw (e = new Error("Cannot find module '" + e + "'")).code = "MODULE_NOT_FOUND", e
    }
    r.keys = function() {
        return Object.keys(n)
    }, r.resolve = o, (e.exports = r).id = 275
}, function(e, t) {
    e.exports = function(e) {
        if (Array.isArray(e)) return e
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t) {
    e.exports = function(e, t) {
        var i = e && ("undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"]);
        if (null != i) {
            var n, r, o = [],
                s = !0,
                a = !1;
            try {
                for (i = i.call(e); !(s = (n = i.next()).done) && (o.push(n.value), !t || o.length !== t); s = !0);
            } catch (e) {
                a = !0, r = e
            } finally {
                try {
                    s || null == i.return || i.return()
                } finally {
                    if (a) throw r
                }
            }
            return o
        }
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t) {
    e.exports = function() {
        throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
    }, e.exports.default = e.exports, e.exports.__esModule = !0
}, function(e, t) {
    e.exports = require("koa")
}, function(e, t) {
    e.exports = require("mousetrap")
}, function(e, t) {
    e.exports = require("unix-cron")
}, function(e, t, i) {
    "use strict";
    i(194)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".theme-light[data-v-5f14473a]{background-color:#fff;color:#000}.theme-dark[data-v-5f14473a]{background-color:#2c2a38;color:#fff}.theme-red[data-v-5f14473a]{background-color:#f8b74f;color:#d33928}.theme-2077[data-v-5f14473a]{background-color:#136377;color:#fcec0c}.wrapper[data-v-5f14473a]{height:100vh;width:100vw;overflow:hidden}", ""])
}, function(e, t, i) {
    "use strict";
    i(195)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "*,:after,:before{-webkit-user-drag:none}*,:after,:before{user-select:none;cursor:default}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Noto Sans CJK,sans-serif;font-weight:500;overflow:hidden}input{font-family:inherit}", ""])
}, function(e, t, i) {
    "use strict";
    i(196)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "main[data-v-5f14473a]{display:flex;justify-content:space-between}.left-side[data-v-5f14473a]{display:flex;flex-direction:column;width:170px;height:calc(100vh - 25px)}.right-side[data-v-5f14473a]{z-index:1;flex-grow:1;width:calc(100vw - 170px);height:calc(100vh - 25px)}.welcome[data-v-5f14473a]{color:#555;font-size:23px;margin-bottom:10px}.title[data-v-5f14473a]{color:#2c3e50;font-size:20px;font-weight:700;margin-bottom:6px}.title.alt[data-v-5f14473a]{font-size:18px;margin-bottom:10px}.doc p[data-v-5f14473a]{color:#000;margin-bottom:10px}.doc button[data-v-5f14473a]{font-size:.8em;cursor:pointer;outline:none;padding:.75em 2em;border-radius:2em;display:inline-block;color:#fff;background-color:#4fc08d;transition:all .15s ease;box-sizing:border-box;border:1px solid #4fc08d}.doc button.alt[data-v-5f14473a]{color:#42b983;background-color:transparent}.clash-status-main[data-v-5f14473a]{display:flex;align-items:center;position:absolute;height:40px;bottom:0;width:170px;left:0;justify-content:center;z-index:2}.clash-status-hint[data-v-5f14473a]{margin-left:6px;font-size:.75em;letter-spacing:0;cursor:pointer}.clash-status-icon[data-v-5f14473a]{width:12px;height:12px;border-radius:10px}.clash-running[data-v-5f14473a]{background-color:#41b883}.clash-set-dns[data-v-5f14473a]{background-color:#e7d91a}.clash-stopped[data-v-5f14473a]{background-color:red}.cloud[data-v-5f14473a]{position:fixed;bottom:110px;left:calc(50% + 80px);transform:translateX(-50%);width:40%;pointer-events:none}.opacicy[data-v-5f14473a]{opacity:.2}.latern[data-v-5f14473a]{position:fixed;opacity:.7;top:30px;left:125px;width:50px;pointer-events:none}", ""])
}, function(e, t, i) {
    "use strict";
    i(197)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".error-hint-light[data-v-09aa3bae]{font-size:14px;cursor:pointer;background-color:#fff;color:#000;border:1px solid #dcdcdc;border-radius:3px;box-shadow:0 0 2px 1px rgba(50,50,50,.1);padding:6px 15px}.error-hint-dark[data-v-09aa3bae]{background-color:#2c2a38;color:#fff;border:1px solid #554f4f;border-radius:3px}.error-hint-dark[data-v-09aa3bae],.error-hint-red[data-v-09aa3bae]{font-size:14px;cursor:pointer;box-shadow:0 0 2px 1px hsla(0,0%,84%,.1);padding:6px 15px}.error-hint-red[data-v-09aa3bae]{background-color:#f8b74f;color:#d33928;border:1px solid rgba(218,20,30,.247059);border-radius:3px}.error-hint-2077[data-v-09aa3bae]{font-size:14px;cursor:pointer;background-color:#136377;color:#fcec0c;border:1px solid rgba(6,145,180,.521569);border-radius:3px;box-shadow:0 0 2px 1px hsla(0,0%,84%,.1);padding:6px 15px}#error-view-main[data-v-09aa3bae]{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1;padding-bottom:60px}#error-view-main .error-content-light[data-v-09aa3bae]{font-size:15px;border:1px solid hsla(0,0%,69%,.178);padding:10px;max-height:100px;overflow-y:scroll;margin-top:10px;margin-left:40px;margin-right:40px;color:#e74949}#error-view-main .error-content-light[data-v-09aa3bae]::-webkit-scrollbar{width:16px}#error-view-main .error-content-light[data-v-09aa3bae]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}#error-view-main .error-content-dark[data-v-09aa3bae]{font-size:15px;border:1px solid hsla(0,0%,69%,.178);padding:10px;max-height:100px;overflow-y:scroll;margin-top:10px;margin-left:40px;margin-right:40px;color:#e74949}#error-view-main .error-content-dark[data-v-09aa3bae]::-webkit-scrollbar{width:16px}#error-view-main .error-content-dark[data-v-09aa3bae]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}#error-view-main .error-content-red[data-v-09aa3bae]{font-size:15px;border:1px solid hsla(0,0%,69%,.178);padding:10px;max-height:100px;overflow-y:scroll;margin-top:10px;margin-left:40px;margin-right:40px;color:#e74949}#error-view-main .error-content-red[data-v-09aa3bae]::-webkit-scrollbar{width:16px}#error-view-main .error-content-red[data-v-09aa3bae]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}#error-view-main .error-content-2077[data-v-09aa3bae]{font-size:15px;border:1px solid hsla(0,0%,69%,.178);padding:10px;max-height:100px;overflow-y:scroll;margin-top:10px;margin-left:40px;margin-right:40px;color:#e74949}#error-view-main .error-content-2077[data-v-09aa3bae]::-webkit-scrollbar{width:16px}#error-view-main .error-content-2077[data-v-09aa3bae]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.error-hints[data-v-09aa3bae]{display:flex;flex-direction:column;align-items:center}.loading-hint[data-v-09aa3bae]{font-size:22px;margin-bottom:40px}.error-btns[data-v-09aa3bae]{display:flex;margin-top:30px}.error-btns div[data-v-09aa3bae]{width:fit-content;margin:0 20px}", ""])
}, function(e, t, i) {
    "use strict";
    i(198)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "#error-title[data-v-09aa3bae]{font-size:1.1em}", ""])
}, function(e, t, i) {
    "use strict";
    i(199)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-select-view[data-v-38b9c85e]{display:flex;align-items:center}.item-2077[data-v-38b9c85e],.item-dark[data-v-38b9c85e],.item-light[data-v-38b9c85e],.item-red[data-v-38b9c85e]{color:#fff;height:26px;font-size:.8em;line-height:25px;padding:0 6px;text-align:center;cursor:pointer;min-width:50px}.item-single-light[data-v-38b9c85e]{background-color:#c7bfbf}.item-single-dark[data-v-38b9c85e]{background-color:#413c3c}.item-single-red[data-v-38b9c85e]{background-color:#d39126}.item-single-2077[data-v-38b9c85e]{background-color:#837a00}.item-double-light[data-v-38b9c85e]{background-color:#bdb3b3}.item-double-dark[data-v-38b9c85e]{background-color:#332f2f}.item-double-red[data-v-38b9c85e]{background-color:#be8222}.item-double-2077[data-v-38b9c85e]{background-color:#968c03}.item-first[data-v-38b9c85e]{border-top-left-radius:6px;border-bottom-left-radius:6px}.item-last[data-v-38b9c85e]{border-top-right-radius:6px;border-bottom-right-radius:6px}.item-selected-2077[data-v-38b9c85e],.item-selected-dark[data-v-38b9c85e],.item-selected-light[data-v-38b9c85e],.item-selected-red[data-v-38b9c85e]{background-color:#179bbb}", ""])
}, function(e, t, i) {
    "use strict";
    i(200)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-light[data-v-e6ab4ba2]{border:2px solid #c7bfbf;background-color:#c7bfbf;border-radius:40px;width:34px;height:20px;box-shadow:0 0 5px 1px rgba(50,50,50,0);display:flex;padding:0 2px;align-items:center}.main-light [data-v-e6ab4ba2]{cursor:pointer}.main-dark[data-v-e6ab4ba2]{border:2px solid #413c3c;background-color:#413c3c;border-radius:40px;width:34px;height:20px;box-shadow:0 0 5px 1px rgba(50,50,50,0);display:flex;padding:0 2px;align-items:center}.main-dark [data-v-e6ab4ba2]{cursor:pointer}.main-red[data-v-e6ab4ba2]{border:2px solid #d39126;background-color:#d39126;border-radius:40px;width:34px;height:20px;box-shadow:0 0 5px 1px rgba(50,50,50,0);display:flex;padding:0 2px;align-items:center}.main-red [data-v-e6ab4ba2]{cursor:pointer}.main-2077[data-v-e6ab4ba2]{border:2px solid #837a00;background-color:#837a00;border-radius:40px;width:34px;height:20px;box-shadow:0 0 5px 1px rgba(50,50,50,0);display:flex;padding:0 2px;align-items:center}.main-2077 [data-v-e6ab4ba2]{cursor:pointer}.text[data-v-e6ab4ba2]{display:flex;justify-content:space-between;align-items:center;width:calc(100% - 0px);height:calc(100% - 4px)}.base[data-v-e6ab4ba2]{width:calc(100% - 17px);height:100%}.text-font[data-v-e6ab4ba2]{letter-spacing:0;text-align:center;font-size:12px;margin-bottom:8px;color:#fff}.tint-right[data-v-e6ab4ba2]{background-color:#d44545;border-radius:20px;width:12px}.tint-left[data-v-e6ab4ba2]{background-color:#13af42;border-radius:20px;width:12px}.move-left-enter-active[data-v-e6ab4ba2]{transition:all .2s ease}.move-left-leave-active[data-v-e6ab4ba2]{transition:all .1s ease-out}.move-left-enter[data-v-e6ab4ba2],.move-left-leave-to[data-v-e6ab4ba2]{transform:translateX(-10px);opacity:0}.move-right-enter-active[data-v-e6ab4ba2]{transition:all .2s ease}.move-right-leave-active[data-v-e6ab4ba2]{transition:all .1s ease-out}.move-right-enter[data-v-e6ab4ba2],.move-right-leave-to[data-v-e6ab4ba2]{transform:translateX(10px);opacity:0}", ""])
}, function(e, t, i) {
    "use strict";
    i(201)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "input[data-v-7f6c1bea]::-webkit-inner-spin-button,input[data-v-7f6c1bea]::-webkit-outer-spin-button{-webkit-appearance:none}.main-simple-input-light[data-v-7f6c1bea]{position:relative;width:250px}.main-simple-input-light input[data-v-7f6c1bea]{width:100%;text-align:center;border:none;outline-style:none;background-color:#fff;color:#000;height:25px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-simple-input-light .suffix[data-v-7f6c1bea]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:#747d88;font-size:13px}.main-simple-input-dark[data-v-7f6c1bea]{position:relative;width:250px}.main-simple-input-dark input[data-v-7f6c1bea]{width:100%;text-align:center;border:none;outline-style:none;background-color:rgba(46,46,46,.822);color:#fff;height:25px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-simple-input-dark .suffix[data-v-7f6c1bea]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:#d4d4d4;font-size:13px}.main-simple-input-red[data-v-7f6c1bea]{position:relative;width:250px}.main-simple-input-red input[data-v-7f6c1bea]{width:100%;text-align:center;border:none;outline-style:none;background-color:#d39126;color:#d33928;height:25px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-simple-input-red .suffix[data-v-7f6c1bea]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:rgba(218,20,30,.796078);font-size:13px}.main-simple-input-2077[data-v-7f6c1bea]{position:relative;width:250px}.main-simple-input-2077 input[data-v-7f6c1bea]{width:100%;text-align:center;border:none;outline-style:none;background-color:rgba(2,45,53,.822);color:#fcec0c;height:25px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-simple-input-2077 .suffix[data-v-7f6c1bea]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:#c79707;font-size:13px}", ""])
}, function(e, t, i) {
    "use strict";
    i(202)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-edit-list-view .item[data-v-13e718af]{display:flex;margin-bottom:5px;height:25px}.main-edit-list-view .item input[data-v-13e718af]{flex-grow:1;outline:none;background-color:hsla(0,0%,50%,.2);border-top-left-radius:3px;border-bottom-left-radius:3px;padding:0 10px;border:none}.main-edit-list-view .btn-add[data-v-13e718af]{width:100%;height:25px;border-radius:3px;border:1px solid #41b883;display:flex;justify-content:center;align-items:center}.main-edit-list-view .btn-add svg[data-v-13e718af]{fill:#41b883;height:20px}.main-edit-list-view .btn-remove[data-v-13e718af]{height:100%;width:30px;border-top-right-radius:3px;border-bottom-right-radius:3px;display:flex;justify-content:center;align-items:center;background-color:#d44545;border-left-color:transparent}.main-edit-list-view .btn-remove svg[data-v-13e718af]{height:20px;fill:#fff}", ""])
}, function(e, t, i) {
    "use strict";
    i(203)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-tun-settings-view[data-v-6f9eeaba]{background-color:rgba(50,50,50,.6);width:calc(100% - 170px);height:calc(100% - 25px);position:absolute;top:25px;left:170px;color:#000}.main-tun-settings-view .content[data-v-6f9eeaba]{border-radius:3px;background-color:#fff;width:600px;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);padding:10px 20px;font-size:14px;font-weight:700;max-height:90%;overflow:auto}.main-tun-settings-view .content .title[data-v-6f9eeaba]{font-size:16px;margin-bottom:5px}.main-tun-settings-view .content .pannel[data-v-6f9eeaba]{display:flex;height:100%}.main-tun-settings-view .content .pannel .left[data-v-6f9eeaba]{width:300px;border:1px solid #ccc;border-radius:5px;padding:5px 10px}.main-tun-settings-view .content .pannel .left .flex[data-v-6f9eeaba]{height:30px;align-items:center;justify-content:space-between;display:flex}.main-tun-settings-view .content .pannel .left .flex input[data-v-6f9eeaba]{width:120px;text-align:center;outline:none;background-color:hsla(0,0%,50%,.281);border-radius:3px;border:none;height:25px}.main-tun-settings-view .content .pannel .right[data-v-6f9eeaba]{width:300px;margin-left:10px;border:1px solid #ccc;border-radius:4px;overflow:auto}.main-tun-settings-view .content .pannel .right pre[data-v-6f9eeaba]{width:100%;height:100%;padding:5px;font-weight:400;color:#333;font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace}.main-tun-settings-view .content .btn[data-v-6f9eeaba]{background-color:#41b883;color:#fff;height:30px;margin-top:10px;line-height:30px;text-align:center;border-radius:3px}", ""])
}, function(e, t, i) {
    "use strict";
    i(204)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".content-light[data-v-6b34dc98]{min-width:200px;position:absolute;top:14px;transform:translateY(-100%);left:17px;background-color:#fff;color:#17224f;padding:10px 15px;border-radius:3px;z-index:1000;font-size:14px;box-shadow:0 0 5px 2px rgba(0,0,0,.1)}.content-light a[data-v-6b34dc98]{color:#8abdf8;text-decoration:none;cursor:pointer}.content-dark[data-v-6b34dc98]{min-width:200px;position:absolute;top:14px;transform:translateY(-100%);left:17px;background-color:#686675;color:#fff;padding:10px 15px;border-radius:3px;z-index:1000;font-size:14px;box-shadow:0 0 5px 2px rgba(0,0,0,.1)}.content-dark a[data-v-6b34dc98]{color:#8abdf8;text-decoration:none;cursor:pointer}.content-red[data-v-6b34dc98]{min-width:200px;position:absolute;top:14px;transform:translateY(-100%);left:17px;background-color:#ca2b33;color:#fff;padding:10px 15px;border-radius:3px;z-index:1000;font-size:14px;box-shadow:0 0 5px 2px rgba(0,0,0,.1)}.content-red a[data-v-6b34dc98]{color:#8abdf8;text-decoration:none;cursor:pointer}.content-2077[data-v-6b34dc98]{min-width:200px;position:absolute;top:14px;transform:translateY(-100%);left:17px;background-color:#064453;color:#fff;padding:10px 15px;border-radius:3px;z-index:1000;font-size:14px;box-shadow:0 0 5px 2px rgba(0,0,0,.1)}.content-2077 a[data-v-6b34dc98]{color:#8abdf8;text-decoration:none;cursor:pointer}.svg-light[data-v-6b34dc98]{opacity:.7;fill:#2c3e50}.svg-dark[data-v-6b34dc98]{opacity:.7;fill:#c2c8ce}.svg-red[data-v-6b34dc98]{opacity:.7;fill:#c54b36}.svg-2077[data-v-6b34dc98]{opacity:.7;fill:rgba(192,231,50,.937255)}.info-icon-main[data-v-6b34dc98]{position:relative;display:flex;align-items:center;margin-left:4px}", ""])
}, function(e, t, i) {
    "use strict";
    i(205)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-hint-view[data-v-0110e93a]{position:relative}.main-hint-view .hint[data-v-0110e93a]{font-size:12px;background-color:#242424;padding:3px 5px;border-radius:3px;color:#fff;position:fixed;z-index:1000;white-space:nowrap;line-height:13px;font-weight:400}", ""])
}, function(e, t, i) {
    "use strict";
    i(206)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-general-view-light[data-v-6e447f5a]{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 25px)}.main-general-view-light .setting-icon[data-v-6e447f5a]{fill:#2c3e50}.main-general-view-dark[data-v-6e447f5a]{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 25px)}.main-general-view-dark .setting-icon[data-v-6e447f5a]{fill:#c2c8ce}.main-general-view-red[data-v-6e447f5a]{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 25px)}.main-general-view-red .setting-icon[data-v-6e447f5a]{fill:#c54b36}.main-general-view-2077[data-v-6e447f5a]{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 25px)}.main-general-view-2077 .setting-icon[data-v-6e447f5a]{fill:rgba(192,231,50,.937255)}.content[data-v-6e447f5a]{padding:5px;flex-grow:1;overflow:hidden;display:flex;justify-content:space-between;flex-direction:column;margin:0 auto;width:70vw;height:80vh;max-height:600px;max-width:650px}.item-light[data-v-6e447f5a]{position:relative;padding:4px 20px;font-size:1.1em;display:flex;align-items:center;justify-content:space-between;border-radius:3px;height:100%;transition:background-color .3s}.item-light[data-v-6e447f5a]:hover{background-color:#f1f1f1}.item-dark[data-v-6e447f5a]{position:relative;padding:4px 20px;font-size:1.1em;display:flex;align-items:center;justify-content:space-between;border-radius:3px;height:100%;transition:background-color .3s}.item-dark[data-v-6e447f5a]:hover{background-color:#606068}.item-red[data-v-6e447f5a]{position:relative;padding:4px 20px;font-size:1.1em;display:flex;align-items:center;justify-content:space-between;border-radius:3px;height:100%;transition:background-color .3s}.item-red[data-v-6e447f5a]:hover{background-color:#eda94c}.item-2077[data-v-6e447f5a]{position:relative;padding:4px 20px;font-size:1.1em;display:flex;align-items:center;justify-content:space-between;border-radius:3px;height:100%;transition:background-color .3s}.item-2077[data-v-6e447f5a]:hover{background-color:#084a5a}.title-light[data-v-6e447f5a]{color:#2c3e50}.title-dark[data-v-6e447f5a],.title-light[data-v-6e447f5a]{font-size:2em;font-weight:500;cursor:pointer;display:flex;align-items:center}.title-dark[data-v-6e447f5a]{color:#e9e9e9}.title-red[data-v-6e447f5a]{color:#b72d29}.title-2077[data-v-6e447f5a],.title-red[data-v-6e447f5a]{font-size:2em;font-weight:500;cursor:pointer;display:flex;align-items:center}.title-2077[data-v-6e447f5a]{color:#f8ed53}.clickable-light[data-v-6e447f5a]{cursor:pointer;border-bottom-style:dashed;border-bottom-width:1px;border-bottom-color:rgba(50,50,50,.2)}.clickable-dark[data-v-6e447f5a]{border-bottom-color:#959595}.clickable-dark[data-v-6e447f5a],.clickable-red[data-v-6e447f5a]{cursor:pointer;border-bottom-style:dashed;border-bottom-width:1px}.clickable-red[data-v-6e447f5a]{border-bottom-color:rgba(218,20,30,.247059)}.clickable-2077[data-v-6e447f5a]{cursor:pointer;border-bottom-style:dashed;border-bottom-width:1px;border-bottom-color:rgba(221,233,55,.247059)}.interfaces-card-light[data-v-6e447f5a]{position:fixed;left:calc(170px + (100vw - 170px) / 2);transform:translate(-50%);bottom:20px;background-color:#fff;padding:10px 30px;border-radius:5px;max-height:50vh;overflow-y:scroll;box-shadow:1px 1px 10px 2px rgba(50,50,50,.3);z-index:2000}.interfaces-card-light[data-v-6e447f5a]::-webkit-scrollbar{width:16px}.interfaces-card-light[data-v-6e447f5a]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.interfaces-card-dark[data-v-6e447f5a]{position:fixed;left:calc(170px + (100vw - 170px) / 2);transform:translate(-50%);bottom:20px;background-color:#686675;padding:10px 30px;border-radius:5px;max-height:50vh;overflow-y:scroll;box-shadow:1px 1px 10px 2px rgba(50,50,50,.3);z-index:2000}.interfaces-card-dark[data-v-6e447f5a]::-webkit-scrollbar{width:16px}.interfaces-card-dark[data-v-6e447f5a]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.interfaces-card-red[data-v-6e447f5a]{position:fixed;left:calc(170px + (100vw - 170px) / 2);transform:translate(-50%);bottom:20px;background-color:#ca2b33;padding:10px 30px;border-radius:5px;max-height:50vh;overflow-y:scroll;box-shadow:1px 1px 10px 2px rgba(50,50,50,.3);z-index:2000}.interfaces-card-red[data-v-6e447f5a]::-webkit-scrollbar{width:16px}.interfaces-card-red[data-v-6e447f5a]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.interfaces-card-2077[data-v-6e447f5a]{position:fixed;left:calc(170px + (100vw - 170px) / 2);transform:translate(-50%);bottom:20px;background-color:#064453;padding:10px 30px;border-radius:5px;max-height:50vh;overflow-y:scroll;box-shadow:1px 1px 10px 2px rgba(50,50,50,.3);z-index:2000}.interfaces-card-2077[data-v-6e447f5a]::-webkit-scrollbar{width:16px}.interfaces-card-2077[data-v-6e447f5a]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.interfaces-content-light[data-v-6e447f5a]{color:#17224f;display:flex;align-items:flex-end;margin:10px 0;align-items:center}.interfaces-content-2077[data-v-6e447f5a],.interfaces-content-dark[data-v-6e447f5a],.interfaces-content-red[data-v-6e447f5a]{color:#fff;display:flex;align-items:flex-end;margin:10px 0;align-items:center}.copy-icon[data-v-6e447f5a]{margin-right:10px;margin-top:2px;cursor:pointer}.copy-icon [data-v-6e447f5a]{cursor:pointer}.tun-settings-icon[data-v-6e447f5a]{width:24px;height:24px;padding:2px;margin-left:10px;border-radius:5px}.tun-settings-icon[data-v-6e447f5a]:hover{background-color:rgba(54,54,54,.26)}", ""])
}, function(e, t, i) {
    "use strict";
    i(207)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.header[data-v-6e447f5a]{margin-top:10px;display:flex;height:100px;width:calc(100vw - 170px);justify-content:center;align-items:center}.icon[data-v-6e447f5a]{width:90px;height:90px;margin-right:20px}.title-name[data-v-6e447f5a]{display:inline-block;cursor:pointer}.new-version-tag[data-v-6e447f5a]{display:inline-block;color:#fff;padding:2px 4px;background-color:rgba(170,38,38,.8);border-radius:3px;font-size:.65em;position:relative;top:-8px;left:2px}.item-left[data-v-6e447f5a]{display:flex;font-weight:500;font-size:1em;align-items:center}.item-right[data-v-6e447f5a]{font-size:15px;font-weight:400;display:flex;align-items:center}.control-icon[data-v-6e447f5a]{width:20px;height:20px;margin-right:10px;margin-top:2px;cursor:pointer}.systemCheckbox[data-v-6e447f5a]{width:20px;height:20px}.systemCheckbox[data-v-6e447f5a]:checked{background-color:#233376;border:none}.hiddenInput[data-v-6e447f5a]{width:1px;height:1px;opacity:0}.version[data-v-6e447f5a]{font-size:.5em;margin-left:10px;font-weight:400;cursor:pointer;margin-top:15px}.checkmark-container[data-v-6e447f5a]{display:block;position:relative;padding-left:22px;margin-bottom:22px;cursor:pointer;font-size:22px}.checkmark-container input[data-v-6e447f5a]{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.system-checkmark[data-v-6e447f5a]{cursor:pointer;position:absolute;top:0;border-radius:20px;left:0;height:25px;width:25px;background-color:#fff;box-shadow:0 0 5px 1px rgba(50,50,50,.5)}.checkmark-container:hover input~.system-checkmark[data-v-6e447f5a]{background-color:#fff}.checkmark-container input:checked~.system-checkmark[data-v-6e447f5a]{background-color:#464646}.system-checkmark-unknown[data-v-6e447f5a]{background-color:#beb9b9}.system-checkmark[data-v-6e447f5a]:after{content:"";position:absolute;display:none}.checkmark-container input:checked~.system-checkmark[data-v-6e447f5a]:after{display:block}.checkmark-container .system-checkmark[data-v-6e447f5a]:after{left:8px;top:5px;width:6px;height:9px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.interface-address[data-v-6e447f5a]{font-size:1em}.interface-name[data-v-6e447f5a]{font-size:.8em;margin-left:15px}.edit-btn[data-v-6e447f5a]{width:25px;height:25px;border-radius:4px;cursor:pointer;background-color:#464646;box-shadow:0 0 5px 1px rgba(50,50,50,.3)}.edit-btn>img[data-v-6e447f5a]{width:17px;height:17px;margin:5px;cursor:pointer}.empty-div[data-v-6e447f5a]{height:50px}', ""])
}, function(e, t, i) {
    "use strict";
    i(208)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".selected-light[data-v-38001dee]{color:#fff;background-color:#4c4b4b}.selected-dark[data-v-38001dee]{color:#fff;background-color:#3aa1cc}.selected-red[data-v-38001dee]{color:#fff;background-color:rgba(183,46,41,.788235)}.selected-2077[data-v-38001dee]{color:#000;background-color:#dfd43f}.normal-light[data-v-38001dee]{color:#000;background-color:#fff}.normal-dark[data-v-38001dee]{color:#fff;background-color:#42424e}.normal-red[data-v-38001dee]{color:#fff;background-color:#c28f3d}.normal-2077[data-v-38001dee]{color:#fff;background-color:#58482c}.main-light[data-v-38001dee]{border-bottom:1px solid #dcdcdc}.main-dark[data-v-38001dee]{border-bottom:1px solid #554f4f}.main-red[data-v-38001dee]{border-bottom:1px solid rgba(218,20,30,.247059)}.main-2077[data-v-38001dee]{border-bottom:1px solid rgba(6,145,180,.521569)}#main-mode-switcher[data-v-38001dee]{padding:auto 20px;width:calc(100vw - 170px);height:80px;position:fixed}#main-mode-switcher .btns[data-v-38001dee]{height:100%;align-items:center;margin:0 auto;display:flex;max-width:600px;justify-content:space-between}#main-mode-switcher .btns .btn[data-v-38001dee]{margin:0;font-weight:500;font-size:1.2em;width:120px;height:40px;text-align:center;line-height:40px;border-radius:6px;box-shadow:1px 1px 5px 2px rgba(70,70,70,.1);cursor:pointer}", ""])
}, function(e, t, i) {
    "use strict";
    i(209)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.main-proxy-navigator-light[data-v-cd189d30]{position:absolute;height:calc(100% - 105px);display:flex;flex-direction:column;top:105px;right:15px;overflow-y:scroll;transition:all .2s;width:20px;background-color:#fff;border:0 solid #dcdcdc}.main-proxy-navigator-light[data-v-cd189d30]:after,.main-proxy-navigator-light[data-v-cd189d30]:before{content:"";margin:auto}.main-proxy-navigator-light[data-v-cd189d30]::-webkit-scrollbar{display:none}.main-proxy-navigator-light .item[data-v-cd189d30]{font-size:12px;font-weight:400;transition:all .1s;white-space:nowrap;padding-left:5px;z-index:2;color:#000}.main-proxy-navigator-light .item-selected[data-v-cd189d30]{color:#41b883}.main-proxy-navigator-light .item-hover[data-v-cd189d30]{font-weight:700}.main-proxy-navigator-dark[data-v-cd189d30]{position:absolute;height:calc(100% - 105px);display:flex;flex-direction:column;top:105px;right:15px;overflow-y:scroll;transition:all .2s;width:20px;background-color:#2c2a38;border:0 solid #554f4f}.main-proxy-navigator-dark[data-v-cd189d30]:after,.main-proxy-navigator-dark[data-v-cd189d30]:before{content:"";margin:auto}.main-proxy-navigator-dark[data-v-cd189d30]::-webkit-scrollbar{display:none}.main-proxy-navigator-dark .item[data-v-cd189d30]{font-size:12px;font-weight:400;transition:all .1s;white-space:nowrap;padding-left:5px;z-index:2;color:#fff}.main-proxy-navigator-dark .item-selected[data-v-cd189d30]{color:#0a0}.main-proxy-navigator-dark .item-hover[data-v-cd189d30]{font-weight:700}.main-proxy-navigator-red[data-v-cd189d30]{position:absolute;height:calc(100% - 105px);display:flex;flex-direction:column;top:105px;right:15px;overflow-y:scroll;transition:all .2s;width:20px;background-color:#f8b74f;border:0 solid rgba(218,20,30,.247059)}.main-proxy-navigator-red[data-v-cd189d30]:after,.main-proxy-navigator-red[data-v-cd189d30]:before{content:"";margin:auto}.main-proxy-navigator-red[data-v-cd189d30]::-webkit-scrollbar{display:none}.main-proxy-navigator-red .item[data-v-cd189d30]{font-size:12px;font-weight:400;transition:all .1s;white-space:nowrap;padding-left:5px;z-index:2;color:#d33928}.main-proxy-navigator-red .item-selected[data-v-cd189d30]{color:rgba(27,180,6,.788235)}.main-proxy-navigator-red .item-hover[data-v-cd189d30]{font-weight:700}.main-proxy-navigator-2077[data-v-cd189d30]{position:absolute;height:calc(100% - 105px);display:flex;flex-direction:column;top:105px;right:15px;overflow-y:scroll;transition:all .2s;width:20px;background-color:#136377;border:0 solid rgba(6,145,180,.521569)}.main-proxy-navigator-2077[data-v-cd189d30]:after,.main-proxy-navigator-2077[data-v-cd189d30]:before{content:"";margin:auto}.main-proxy-navigator-2077[data-v-cd189d30]::-webkit-scrollbar{display:none}.main-proxy-navigator-2077 .item[data-v-cd189d30]{font-size:12px;font-weight:400;transition:all .1s;white-space:nowrap;padding-left:5px;z-index:2;color:#fcec0c}.main-proxy-navigator-2077 .item-selected[data-v-cd189d30]{color:#f8ed53}.main-proxy-navigator-2077 .item-hover[data-v-cd189d30]{font-weight:700}', ""])
}, function(e, t, i) {
    "use strict";
    i(210)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".fake-item-light[data-v-4fa0a583]{height:45px;background-color:#e3e3e3;box-shadow:none}.fake-item-dark[data-v-4fa0a583]{height:45px;background-color:#32323f;box-shadow:none}.fake-item-red[data-v-4fa0a583]{height:45px;background-color:#c28f3d;box-shadow:none}.fake-item-2077[data-v-4fa0a583]{height:45px;background-color:#043441;box-shadow:none}.fake-section-light[data-v-4fa0a583]{background-color:#e3e3e3;height:50px;width:300px;margin-top:20px;margin-left:40px}.fake-section-dark[data-v-4fa0a583]{background-color:#32323f;height:50px;width:300px;margin-top:20px;margin-left:40px}.fake-section-red[data-v-4fa0a583]{background-color:#c28f3d;height:50px;width:300px;margin-top:20px;margin-left:40px}.fake-section-2077[data-v-4fa0a583]{background-color:#043441;height:50px;width:300px;margin-top:20px;margin-left:40px}#main-proxy-view[data-v-4fa0a583]{height:100%;display:flex;flex-direction:column;overflow:hidden}.scroll-view-light[data-v-4fa0a583]{margin-top:88px;padding-bottom:70px;flex-grow:1;height:calc(100% - 80px);overflow-y:scroll}.scroll-view-light[data-v-4fa0a583]::-webkit-scrollbar{width:16px}.scroll-view-light[data-v-4fa0a583]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.scroll-view-light .proxy-item[data-v-4fa0a583]{margin:4px 6px;display:flex;align-items:center;flex-grow:1;transition:all .3s}.scroll-view-light .proxy-item .indicator[data-v-4fa0a583]{width:4px;min-width:4px;background-color:rgba(75,75,75,.185);height:calc(100% - 2px);border-radius:10px;margin-right:4px}.scroll-view-light .proxy-item .info[data-v-4fa0a583]{height:100%;padding:7px 0;background:rgba(41,41,41,.05);flex-grow:1;display:flex;border-radius:3px;justify-content:space-between;align-items:center}.scroll-view-light .proxy-item .info .left[data-v-4fa0a583]{flex-grow:1;margin-left:10px}.scroll-view-light .proxy-item .info .left .item-bottom[data-v-4fa0a583]{display:flex;font-size:12px;align-items:center;margin-top:2px;color:gray}.scroll-view-light .proxy-item .info .left .item-bottom .item-hint[data-v-4fa0a583]{margin-right:5px}.scroll-view-light .proxy-item .info .left .item-bottom .item-udp[data-v-4fa0a583]{font-size:9px;padding:0 3px;border:1px solid rgba(75,75,75,.185);border-radius:3px}.scroll-view-light .proxy-item .info .time[data-v-4fa0a583]{min-width:70px;text-align:right;font-size:12px;padding:12px 14px 12px 12px;cursor:pointer}.scroll-view-light .proxy-item .info .offline[data-v-4fa0a583]{color:#ec0505;font-weight:400}.scroll-view-light .proxy-item .info .online[data-v-4fa0a583]{color:#41b883}.scroll-view-light .selected .indicator[data-v-4fa0a583]{background-color:#41b883}.scroll-view-dark[data-v-4fa0a583]{margin-top:88px;padding-bottom:70px;flex-grow:1;height:calc(100% - 80px);overflow-y:scroll}.scroll-view-dark[data-v-4fa0a583]::-webkit-scrollbar{width:16px}.scroll-view-dark[data-v-4fa0a583]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.scroll-view-dark .proxy-item[data-v-4fa0a583]{margin:4px 6px;display:flex;align-items:center;flex-grow:1;transition:all .3s}.scroll-view-dark .proxy-item .indicator[data-v-4fa0a583]{width:4px;min-width:4px;background-color:hsla(0,0%,78%,.185);height:calc(100% - 2px);border-radius:10px;margin-right:4px}.scroll-view-dark .proxy-item .info[data-v-4fa0a583]{height:100%;padding:7px 0;background:hsla(0,0%,100%,.05);flex-grow:1;display:flex;border-radius:3px;justify-content:space-between;align-items:center}.scroll-view-dark .proxy-item .info .left[data-v-4fa0a583]{flex-grow:1;margin-left:10px}.scroll-view-dark .proxy-item .info .left .item-bottom[data-v-4fa0a583]{display:flex;font-size:12px;align-items:center;margin-top:2px;color:#a7a7a7}.scroll-view-dark .proxy-item .info .left .item-bottom .item-hint[data-v-4fa0a583]{margin-right:5px}.scroll-view-dark .proxy-item .info .left .item-bottom .item-udp[data-v-4fa0a583]{font-size:9px;padding:0 3px;border:1px solid hsla(0,0%,78%,.185);border-radius:3px}.scroll-view-dark .proxy-item .info .time[data-v-4fa0a583]{min-width:70px;text-align:right;font-size:12px;padding:12px 14px 12px 12px;cursor:pointer}.scroll-view-dark .proxy-item .info .offline[data-v-4fa0a583]{color:#db4b4b;font-weight:400}.scroll-view-dark .proxy-item .info .online[data-v-4fa0a583]{color:#14a014}.scroll-view-dark .selected .indicator[data-v-4fa0a583]{background-color:#0a0}.scroll-view-red[data-v-4fa0a583]{margin-top:88px;padding-bottom:70px;flex-grow:1;height:calc(100% - 80px);overflow-y:scroll}.scroll-view-red[data-v-4fa0a583]::-webkit-scrollbar{width:16px}.scroll-view-red[data-v-4fa0a583]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.scroll-view-red .proxy-item[data-v-4fa0a583]{margin:4px 6px;display:flex;align-items:center;flex-grow:1;transition:all .3s}.scroll-view-red .proxy-item .indicator[data-v-4fa0a583]{width:4px;min-width:4px;background-color:#f39908;height:calc(100% - 2px);border-radius:10px;margin-right:4px}.scroll-view-red .proxy-item .info[data-v-4fa0a583]{height:100%;padding:7px 0;background:#fdc975;flex-grow:1;display:flex;border-radius:3px;justify-content:space-between;align-items:center}.scroll-view-red .proxy-item .info .left[data-v-4fa0a583]{flex-grow:1;margin-left:10px}.scroll-view-red .proxy-item .info .left .item-bottom[data-v-4fa0a583]{display:flex;font-size:12px;align-items:center;margin-top:2px;color:#995e00}.scroll-view-red .proxy-item .info .left .item-bottom .item-hint[data-v-4fa0a583]{margin-right:5px}.scroll-view-red .proxy-item .info .left .item-bottom .item-udp[data-v-4fa0a583]{font-size:9px;padding:0 3px;border:1px solid #f39908;border-radius:3px}.scroll-view-red .proxy-item .info .time[data-v-4fa0a583]{min-width:70px;text-align:right;font-size:12px;padding:12px 14px 12px 12px;cursor:pointer}.scroll-view-red .proxy-item .info .offline[data-v-4fa0a583]{color:#df0909;font-weight:400}.scroll-view-red .proxy-item .info .online[data-v-4fa0a583]{color:#16a716}.scroll-view-red .selected .indicator[data-v-4fa0a583]{background-color:rgba(27,180,6,.788235)}.scroll-view-2077[data-v-4fa0a583]{margin-top:88px;padding-bottom:70px;flex-grow:1;height:calc(100% - 80px);overflow-y:scroll}.scroll-view-2077[data-v-4fa0a583]::-webkit-scrollbar{width:16px}.scroll-view-2077[data-v-4fa0a583]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.scroll-view-2077 .proxy-item[data-v-4fa0a583]{margin:4px 6px;display:flex;align-items:center;flex-grow:1;transition:all .3s}.scroll-view-2077 .proxy-item .indicator[data-v-4fa0a583]{width:4px;min-width:4px;background-color:rgba(6,49,70,.411);height:calc(100% - 2px);border-radius:10px;margin-right:4px}.scroll-view-2077 .proxy-item .info[data-v-4fa0a583]{height:100%;padding:7px 0;background:rgba(9,115,141,.917647);flex-grow:1;display:flex;border-radius:3px;justify-content:space-between;align-items:center}.scroll-view-2077 .proxy-item .info .left[data-v-4fa0a583]{flex-grow:1;margin-left:10px}.scroll-view-2077 .proxy-item .info .left .item-bottom[data-v-4fa0a583]{display:flex;font-size:12px;align-items:center;margin-top:2px;color:#bbb33f}.scroll-view-2077 .proxy-item .info .left .item-bottom .item-hint[data-v-4fa0a583]{margin-right:5px}.scroll-view-2077 .proxy-item .info .left .item-bottom .item-udp[data-v-4fa0a583]{font-size:9px;padding:0 3px;border:1px solid rgba(6,49,70,.411);border-radius:3px}.scroll-view-2077 .proxy-item .info .time[data-v-4fa0a583]{min-width:70px;text-align:right;font-size:12px;padding:12px 14px 12px 12px;cursor:pointer}.scroll-view-2077 .proxy-item .info .offline[data-v-4fa0a583]{color:#ff6565;font-weight:400}.scroll-view-2077 .proxy-item .info .online[data-v-4fa0a583]{color:#44c444}.scroll-view-2077 .selected .indicator[data-v-4fa0a583]{background-color:#f8ed53}.proxy-section-light[data-v-4fa0a583]{font-size:1.2em;font-weight:400;padding:7px 10px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;position:sticky;top:-1px;background-color:#fff;transition:all .3s}.proxy-section-light[data-v-4fa0a583]:hover{border-radius:5px;background-color:#f1f1f1;cursor:pointer}.proxy-section-light .proxy-section-right[data-v-4fa0a583]{display:flex;align-items:flex-end;height:100%;fill:#000}.proxy-section-light .proxy-hint[data-v-4fa0a583]{font-size:13px;display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proxy-section-light .proxy-hint-type[data-v-4fa0a583]{font-size:10px;margin-left:10px;color:#fff;background:#929292;padding:0 4px;border-radius:3px}.proxy-section-light .proxy-hint-type-selector[data-v-4fa0a583]{background:#41b883}.proxy-section-light .proxy-hint-line[data-v-4fa0a583]{width:10px;height:1px}.proxy-section-dark[data-v-4fa0a583]{font-size:1.2em;font-weight:400;padding:7px 10px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;position:sticky;top:-1px;background-color:#2c2a38;transition:all .3s}.proxy-section-dark[data-v-4fa0a583]:hover{border-radius:5px;background-color:#606068;cursor:pointer}.proxy-section-dark .proxy-section-right[data-v-4fa0a583]{display:flex;align-items:flex-end;height:100%;fill:#fff}.proxy-section-dark .proxy-hint[data-v-4fa0a583]{font-size:13px;display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proxy-section-dark .proxy-hint-type[data-v-4fa0a583]{font-size:10px;margin-left:10px;color:#cecece;background:#5c5c5c;padding:0 4px;border-radius:3px}.proxy-section-dark .proxy-hint-type-selector[data-v-4fa0a583]{background:#41b883}.proxy-section-dark .proxy-hint-line[data-v-4fa0a583]{width:10px;height:1px}.proxy-section-red[data-v-4fa0a583]{font-size:1.2em;font-weight:400;padding:7px 10px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;position:sticky;top:-1px;background-color:#f8b74f;transition:all .3s}.proxy-section-red[data-v-4fa0a583]:hover{border-radius:5px;background-color:#eda94c;cursor:pointer}.proxy-section-red .proxy-section-right[data-v-4fa0a583]{display:flex;align-items:flex-end;height:100%;fill:#d33928}.proxy-section-red .proxy-hint[data-v-4fa0a583]{font-size:13px;display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proxy-section-red .proxy-hint-type[data-v-4fa0a583]{font-size:10px;margin-left:10px;color:#e2e2e2;background:#b87004;padding:0 4px;border-radius:3px}.proxy-section-red .proxy-hint-type-selector[data-v-4fa0a583]{background:#41b883}.proxy-section-red .proxy-hint-line[data-v-4fa0a583]{width:10px;height:1px}.proxy-section-2077[data-v-4fa0a583]{font-size:1.2em;font-weight:400;padding:7px 10px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;position:sticky;top:-1px;background-color:#136377;transition:all .3s}.proxy-section-2077[data-v-4fa0a583]:hover{border-radius:5px;background-color:#084a5a;cursor:pointer}.proxy-section-2077 .proxy-section-right[data-v-4fa0a583]{display:flex;align-items:flex-end;height:100%;fill:#fcec0c}.proxy-section-2077 .proxy-hint[data-v-4fa0a583]{font-size:13px;display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proxy-section-2077 .proxy-hint-type[data-v-4fa0a583]{font-size:10px;margin-left:10px;color:#cff592;background:#064453;padding:0 4px;border-radius:3px}.proxy-section-2077 .proxy-hint-type-selector[data-v-4fa0a583]{background:#41b883}.proxy-section-2077 .proxy-hint-line[data-v-4fa0a583]{width:10px;height:1px}.empty-hint[data-v-4fa0a583]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;color:hsla(0,0%,56%,.795)}.empty-hint div[data-v-4fa0a583]:first-child{font-size:22px}.empty-hint div[data-v-4fa0a583]:last-child{font-size:14px;margin-top:10px}.empty-hint div:last-child span[data-v-4fa0a583]{color:#008cff}", ""])
}, function(e, t, i) {
    "use strict";
    i(211)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".outline[data-v-4fa0a583]{opacity:.1}.proxy-list[data-v-4fa0a583]{margin:0 20px 0 30px}.proxy-items[data-v-4fa0a583]{display:flex;flex-wrap:wrap;justify-content:space-around}.proxy-items>i[data-v-4fa0a583]{margin:0 6px;flex-grow:1;height:0}.item-name[data-v-4fa0a583]{font-size:14px;display:flex;align-items:center;overflow:hidden}.proxy-hint-loadbalance[data-v-4fa0a583]{font-size:.7em;margin-left:5px;overflow:hidden;padding-bottom:2px}.proxy-item[data-v-4fa0a583] div,span[data-v-4fa0a583]{cursor:pointer}.proxy-section-name[data-v-4fa0a583]{font-size:1.05em;display:flex;align-items:center;max-width:500px}.proxy-section-name-left[data-v-4fa0a583]{display:flex;align-items:flex-end;flex-shrink:0;font-size:17px}.proxy-section-test-btn[data-v-4fa0a583]{cursor:pointer;height:40px;width:30px}.icon[data-v-4fa0a583]{height:30px;width:30px;padding:5px}.icon[data-v-4fa0a583]:hover{border-radius:5px;background-color:hsla(0,0%,73%,.5);cursor:pointer}.filter-keyword[data-v-4fa0a583]{position:fixed;bottom:10px;right:45px;width:150px;height:30px}.filter-keyword input[data-v-4fa0a583]{width:150px;padding:0 10px;border:none;background-color:#494949;border-radius:5px;height:30px;color:#fff;top:0;right:5px;position:absolute}.filter-keyword input[data-v-4fa0a583]:focus{outline:none}.filter-keyword div[data-v-4fa0a583]{width:30px;height:30px;position:absolute;right:0;top:0;display:flex;align-items:center;justify-content:center;background-color:#494949;border-radius:5px}.filter-keyword div img[data-v-4fa0a583]{height:20px;width:20px}.fall-fade-enter-active[data-v-4fa0a583]{transition:all .2s ease-in-out}.fall-fade-enter[data-v-4fa0a583],.fall-fade-leave-to[data-v-4fa0a583]{transform:translateY(-10px);opacity:0}.move-right-enter-active[data-v-4fa0a583]{transition:all .2s ease}.move-right-enter[data-v-4fa0a583],.move-right-leave-to[data-v-4fa0a583]{transform:scaleX(.1);transform-origin:right}", ""])
}, function(e, t, i) {
    "use strict";
    i(212)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-button-view[data-v-f3b3ccf8]{height:26px;width:90px;text-align:center;line-height:26px;background-color:#6777ef;border-radius:1500px;color:#fff;font-size:.78em;display:flex;align-items:center;justify-content:center;cursor:pointer}.main-button-view [data-v-f3b3ccf8]{cursor:pointer}.main-button-view .line[data-v-f3b3ccf8]{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.main-button-view .line .box[data-v-f3b3ccf8]{border-radius:20px;transform:scale(.5);background-color:#b3b3b3}.main-button-view .line .large[data-v-f3b3ccf8]{height:8px;width:8px;margin-left:2px;margin-right:2px}.main-button-view .line .small[data-v-f3b3ccf8]{height:5px;width:5px;margin-left:1px;margin-right:1px}.animation-delay1[data-v-f3b3ccf8]{animation:wave-data-v-f3b3ccf8 1s linear 0s infinite}.animation-delay2[data-v-f3b3ccf8]{animation:wave-data-v-f3b3ccf8 1s linear .2s infinite}.animation-delay3[data-v-f3b3ccf8]{animation:wave-data-v-f3b3ccf8 1s linear .4s infinite}.animation-delay4[data-v-f3b3ccf8]{animation:wave-data-v-f3b3ccf8 1s linear .6s infinite}.animation-delay5[data-v-f3b3ccf8]{animation:wave-data-v-f3b3ccf8 1s linear .8s infinite}@keyframes wave-data-v-f3b3ccf8{0%{background-color:#f8f8f8;transform:scale(1.1)}to{background-color:#adadad;transform:scale(.5)}}", ""])
}, function(e, t, i) {
    "use strict";
    i(213)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-provider-view-light[data-v-5a14fd42]{width:calc(100% - 170px);height:calc(100% - 25px);position:absolute;top:25px;right:0;display:flex;justify-content:center;align-items:center;z-index:10;font-size:16px}.main-provider-view-light .card[data-v-5a14fd42]{display:flex;flex-direction:column;height:100%;width:100%}.main-provider-view-light .card .header[data-v-5a14fd42]{min-height:80px;height:80px;border-bottom:1px solid #dcdcdc;background-color:#fff;width:100%}.main-provider-view-light .card .header .buttons[data-v-5a14fd42]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}.main-provider-view-light .card .header .buttons .btn[data-v-5a14fd42]{font-size:16px;color:#fff;background-color:#4c4b4b;border-radius:3px;height:35px;padding:0 20px;width:fit-content}.main-provider-view-light .card .header .buttons .btn[data-v-5a14fd42]:first-child{margin-right:30px}.main-provider-view-light .content[data-v-5a14fd42]{padding:5px 0;flex-grow:1;display:flex;flex-direction:column;height:100%;width:100%;overflow-y:scroll}.main-provider-view-light .content[data-v-5a14fd42]::-webkit-scrollbar{width:16px}.main-provider-view-light .content[data-v-5a14fd42]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.main-provider-view-light .content .title[data-v-5a14fd42]{margin-top:10px;font-size:16px;text-align:center;padding-bottom:10px;border-bottom:1px solid #dcdcdc}.main-provider-view-light .content .items .provider-item[data-v-5a14fd42]{padding:7px 35px 7px 45px;border-bottom:1px solid #dcdcdc}.main-provider-view-light .content .items .provider-item .provider-item-main .name-type[data-v-5a14fd42],.main-provider-view-light .content .items .provider-item .provider-item-main[data-v-5a14fd42]{display:flex;align-items:center}.main-provider-view-light .content .items .provider-item .provider-item-main .name-type .name[data-v-5a14fd42]{font-size:16px;max-width:180px;overflow:clip;white-space:nowrap;text-overflow:ellipsis}.main-provider-view-light .content .items .provider-item .provider-item-main .update-hint[data-v-5a14fd42]{font-size:14px;color:gray}.main-provider-view-light .content .items .provider-item .provider-item-main .error-hint[data-v-5a14fd42]{color:#ec0505;font-size:12px;max-width:500px;text-overflow:ellipsis;white-space:normal;overflow:hidden}.main-provider-view-light .content .items .provider-item .provider-item-main .empty[data-v-5a14fd42]{flex-grow:1}.main-provider-view-light .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:3px}.main-provider-view-light .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]:hover{background-color:rgba(0,0,0,.123)}.main-provider-view-light .content .items .provider-item .provider-item-main .icon-btn:hover [data-v-5a14fd42]{cursor:pointer}.main-provider-view-light .content .items .provider-item .provider-item-main .icon-btn .rotating[data-v-5a14fd42]{animation:downloading-data-v-5a14fd42 1s infinite;animation-timing-function:linear}.main-provider-view-light .content .items .provider-item .provider-item-main .icon-btn svg[data-v-5a14fd42]{width:20px;height:20px;fill:#000}.main-provider-view-light .content .items .provider-item .time[data-v-5a14fd42]{font-size:14px}.main-provider-view-light .content .items .provider-item .proxies[data-v-5a14fd42]{display:grid;grid-template-columns:repeat(auto-fill,130px);font-size:14px}.main-provider-view-light .content .items .provider-item .proxies .proxy-item[data-v-5a14fd42]{height:80px}.main-provider-view-dark[data-v-5a14fd42]{width:calc(100% - 170px);height:calc(100% - 25px);position:absolute;top:25px;right:0;display:flex;justify-content:center;align-items:center;z-index:10;font-size:16px}.main-provider-view-dark .card[data-v-5a14fd42]{display:flex;flex-direction:column;height:100%;width:100%}.main-provider-view-dark .card .header[data-v-5a14fd42]{min-height:80px;height:80px;border-bottom:1px solid #554f4f;background-color:#2c2a38;width:100%}.main-provider-view-dark .card .header .buttons[data-v-5a14fd42]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}.main-provider-view-dark .card .header .buttons .btn[data-v-5a14fd42]{font-size:16px;color:#fff;background-color:#3aa1cc;border-radius:3px;height:35px;padding:0 20px;width:fit-content}.main-provider-view-dark .card .header .buttons .btn[data-v-5a14fd42]:first-child{margin-right:30px}.main-provider-view-dark .content[data-v-5a14fd42]{padding:5px 0;flex-grow:1;display:flex;flex-direction:column;height:100%;width:100%;overflow-y:scroll}.main-provider-view-dark .content[data-v-5a14fd42]::-webkit-scrollbar{width:16px}.main-provider-view-dark .content[data-v-5a14fd42]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.main-provider-view-dark .content .title[data-v-5a14fd42]{margin-top:10px;font-size:16px;text-align:center;padding-bottom:10px;border-bottom:1px solid #554f4f}.main-provider-view-dark .content .items .provider-item[data-v-5a14fd42]{padding:7px 35px 7px 45px;border-bottom:1px solid #554f4f}.main-provider-view-dark .content .items .provider-item .provider-item-main .name-type[data-v-5a14fd42],.main-provider-view-dark .content .items .provider-item .provider-item-main[data-v-5a14fd42]{display:flex;align-items:center}.main-provider-view-dark .content .items .provider-item .provider-item-main .name-type .name[data-v-5a14fd42]{font-size:16px;max-width:180px;overflow:clip;white-space:nowrap;text-overflow:ellipsis}.main-provider-view-dark .content .items .provider-item .provider-item-main .update-hint[data-v-5a14fd42]{font-size:14px;color:#a7a7a7}.main-provider-view-dark .content .items .provider-item .provider-item-main .error-hint[data-v-5a14fd42]{color:#db4b4b;font-size:12px;max-width:500px;text-overflow:ellipsis;white-space:normal;overflow:hidden}.main-provider-view-dark .content .items .provider-item .provider-item-main .empty[data-v-5a14fd42]{flex-grow:1}.main-provider-view-dark .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:3px}.main-provider-view-dark .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]:hover{background-color:rgba(0,0,0,.123)}.main-provider-view-dark .content .items .provider-item .provider-item-main .icon-btn:hover [data-v-5a14fd42]{cursor:pointer}.main-provider-view-dark .content .items .provider-item .provider-item-main .icon-btn .rotating[data-v-5a14fd42]{animation:downloading-data-v-5a14fd42 1s infinite;animation-timing-function:linear}.main-provider-view-dark .content .items .provider-item .provider-item-main .icon-btn svg[data-v-5a14fd42]{width:20px;height:20px;fill:#fff}.main-provider-view-dark .content .items .provider-item .time[data-v-5a14fd42]{font-size:14px}.main-provider-view-dark .content .items .provider-item .proxies[data-v-5a14fd42]{display:grid;grid-template-columns:repeat(auto-fill,130px);font-size:14px}.main-provider-view-dark .content .items .provider-item .proxies .proxy-item[data-v-5a14fd42]{height:80px}.main-provider-view-red[data-v-5a14fd42]{width:calc(100% - 170px);height:calc(100% - 25px);position:absolute;top:25px;right:0;display:flex;justify-content:center;align-items:center;z-index:10;font-size:16px}.main-provider-view-red .card[data-v-5a14fd42]{display:flex;flex-direction:column;height:100%;width:100%}.main-provider-view-red .card .header[data-v-5a14fd42]{min-height:80px;height:80px;border-bottom:1px solid rgba(218,20,30,.247059);background-color:#f8b74f;width:100%}.main-provider-view-red .card .header .buttons[data-v-5a14fd42]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}.main-provider-view-red .card .header .buttons .btn[data-v-5a14fd42]{font-size:16px;color:#fff;background-color:rgba(183,46,41,.788235);border-radius:3px;height:35px;padding:0 20px;width:fit-content}.main-provider-view-red .card .header .buttons .btn[data-v-5a14fd42]:first-child{margin-right:30px}.main-provider-view-red .content[data-v-5a14fd42]{padding:5px 0;flex-grow:1;display:flex;flex-direction:column;height:100%;width:100%;overflow-y:scroll}.main-provider-view-red .content[data-v-5a14fd42]::-webkit-scrollbar{width:16px}.main-provider-view-red .content[data-v-5a14fd42]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.main-provider-view-red .content .title[data-v-5a14fd42]{margin-top:10px;font-size:16px;text-align:center;padding-bottom:10px;border-bottom:1px solid rgba(218,20,30,.247059)}.main-provider-view-red .content .items .provider-item[data-v-5a14fd42]{padding:7px 35px 7px 45px;border-bottom:1px solid rgba(218,20,30,.247059)}.main-provider-view-red .content .items .provider-item .provider-item-main .name-type[data-v-5a14fd42],.main-provider-view-red .content .items .provider-item .provider-item-main[data-v-5a14fd42]{display:flex;align-items:center}.main-provider-view-red .content .items .provider-item .provider-item-main .name-type .name[data-v-5a14fd42]{font-size:16px;max-width:180px;overflow:clip;white-space:nowrap;text-overflow:ellipsis}.main-provider-view-red .content .items .provider-item .provider-item-main .update-hint[data-v-5a14fd42]{font-size:14px;color:#995e00}.main-provider-view-red .content .items .provider-item .provider-item-main .error-hint[data-v-5a14fd42]{color:#df0909;font-size:12px;max-width:500px;text-overflow:ellipsis;white-space:normal;overflow:hidden}.main-provider-view-red .content .items .provider-item .provider-item-main .empty[data-v-5a14fd42]{flex-grow:1}.main-provider-view-red .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:3px}.main-provider-view-red .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]:hover{background-color:rgba(0,0,0,.123)}.main-provider-view-red .content .items .provider-item .provider-item-main .icon-btn:hover [data-v-5a14fd42]{cursor:pointer}.main-provider-view-red .content .items .provider-item .provider-item-main .icon-btn .rotating[data-v-5a14fd42]{animation:downloading-data-v-5a14fd42 1s infinite;animation-timing-function:linear}.main-provider-view-red .content .items .provider-item .provider-item-main .icon-btn svg[data-v-5a14fd42]{width:20px;height:20px;fill:#d33928}.main-provider-view-red .content .items .provider-item .time[data-v-5a14fd42]{font-size:14px}.main-provider-view-red .content .items .provider-item .proxies[data-v-5a14fd42]{display:grid;grid-template-columns:repeat(auto-fill,130px);font-size:14px}.main-provider-view-red .content .items .provider-item .proxies .proxy-item[data-v-5a14fd42]{height:80px}.main-provider-view-2077[data-v-5a14fd42]{width:calc(100% - 170px);height:calc(100% - 25px);position:absolute;top:25px;right:0;display:flex;justify-content:center;align-items:center;z-index:10;font-size:16px}.main-provider-view-2077 .card[data-v-5a14fd42]{display:flex;flex-direction:column;height:100%;width:100%}.main-provider-view-2077 .card .header[data-v-5a14fd42]{min-height:80px;height:80px;border-bottom:1px solid rgba(6,145,180,.521569);background-color:#136377;width:100%}.main-provider-view-2077 .card .header .buttons[data-v-5a14fd42]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}.main-provider-view-2077 .card .header .buttons .btn[data-v-5a14fd42]{font-size:16px;color:#000;background-color:#dfd43f;border-radius:3px;height:35px;padding:0 20px;width:fit-content}.main-provider-view-2077 .card .header .buttons .btn[data-v-5a14fd42]:first-child{margin-right:30px}.main-provider-view-2077 .content[data-v-5a14fd42]{padding:5px 0;flex-grow:1;display:flex;flex-direction:column;height:100%;width:100%;overflow-y:scroll}.main-provider-view-2077 .content[data-v-5a14fd42]::-webkit-scrollbar{width:16px}.main-provider-view-2077 .content[data-v-5a14fd42]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.main-provider-view-2077 .content .title[data-v-5a14fd42]{margin-top:10px;font-size:16px;text-align:center;padding-bottom:10px;border-bottom:1px solid rgba(6,145,180,.521569)}.main-provider-view-2077 .content .items .provider-item[data-v-5a14fd42]{padding:7px 35px 7px 45px;border-bottom:1px solid rgba(6,145,180,.521569)}.main-provider-view-2077 .content .items .provider-item .provider-item-main .name-type[data-v-5a14fd42],.main-provider-view-2077 .content .items .provider-item .provider-item-main[data-v-5a14fd42]{display:flex;align-items:center}.main-provider-view-2077 .content .items .provider-item .provider-item-main .name-type .name[data-v-5a14fd42]{font-size:16px;max-width:180px;overflow:clip;white-space:nowrap;text-overflow:ellipsis}.main-provider-view-2077 .content .items .provider-item .provider-item-main .update-hint[data-v-5a14fd42]{font-size:14px;color:#bbb33f}.main-provider-view-2077 .content .items .provider-item .provider-item-main .error-hint[data-v-5a14fd42]{color:#ff6565;font-size:12px;max-width:500px;text-overflow:ellipsis;white-space:normal;overflow:hidden}.main-provider-view-2077 .content .items .provider-item .provider-item-main .empty[data-v-5a14fd42]{flex-grow:1}.main-provider-view-2077 .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:3px}.main-provider-view-2077 .content .items .provider-item .provider-item-main .icon-btn[data-v-5a14fd42]:hover{background-color:rgba(0,0,0,.123)}.main-provider-view-2077 .content .items .provider-item .provider-item-main .icon-btn:hover [data-v-5a14fd42]{cursor:pointer}.main-provider-view-2077 .content .items .provider-item .provider-item-main .icon-btn .rotating[data-v-5a14fd42]{animation:downloading-data-v-5a14fd42 1s infinite;animation-timing-function:linear}@keyframes downloading-data-v-5a14fd42{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.main-provider-view-2077 .content .items .provider-item .provider-item-main .icon-btn svg[data-v-5a14fd42]{width:20px;height:20px;fill:#fcec0c}.main-provider-view-2077 .content .items .provider-item .time[data-v-5a14fd42]{font-size:14px}.main-provider-view-2077 .content .items .provider-item .proxies[data-v-5a14fd42]{display:grid;grid-template-columns:repeat(auto-fill,130px);font-size:14px}.main-provider-view-2077 .content .items .provider-item .proxies .proxy-item[data-v-5a14fd42]{height:80px}", ""])
}, function(e, t, i) {
    "use strict";
    i(214)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-log-view-light[data-v-2b002dd2]{height:100%;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.main-log-view-light .title[data-v-2b002dd2]{padding:0 20px;font-size:20px;height:80px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dcdcdc}.main-log-view-light .title .text .hint[data-v-2b002dd2]{font-size:16px;font-weight:400}.main-log-view-dark[data-v-2b002dd2]{height:100%;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.main-log-view-dark .title[data-v-2b002dd2]{padding:0 20px;font-size:20px;height:80px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #554f4f}.main-log-view-dark .title .text .hint[data-v-2b002dd2]{font-size:16px;font-weight:400}.main-log-view-red[data-v-2b002dd2]{height:100%;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.main-log-view-red .title[data-v-2b002dd2]{padding:0 20px;font-size:20px;height:80px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(218,20,30,.247059)}.main-log-view-red .title .text .hint[data-v-2b002dd2]{font-size:16px;font-weight:400}.main-log-view-2077[data-v-2b002dd2]{height:100%;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.main-log-view-2077 .title[data-v-2b002dd2]{padding:0 20px;font-size:20px;height:80px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(6,145,180,.521569)}.main-log-view-2077 .title .text .hint[data-v-2b002dd2]{font-size:16px;font-weight:400}.log-item-light[data-v-2b002dd2]{border-bottom:1px solid rgba(50,50,50,.1)}.log-item-dark[data-v-2b002dd2],.log-item-light[data-v-2b002dd2]{display:flex;justify-content:space-between;flex-direction:column;padding:5px 20px}.log-item-dark[data-v-2b002dd2]{border-bottom:1px solid #494242}.log-item-red[data-v-2b002dd2]{border-bottom:1px solid rgba(218,20,30,.247059)}.log-item-2077[data-v-2b002dd2],.log-item-red[data-v-2b002dd2]{display:flex;justify-content:space-between;flex-direction:column;padding:5px 20px}.log-item-2077[data-v-2b002dd2]{border-bottom:1px solid #494242}.rule-light[data-v-2b002dd2]{font-size:14px;color:rgba(50,50,50,.7);display:flex;align-items:center;flex-wrap:wrap}.rule-light div[data-v-2b002dd2]{margin-right:5px}.rule-light .payload[data-v-2b002dd2]{color:#045c85}.rule-dark[data-v-2b002dd2]{font-size:14px;color:hsla(0,0%,88%,.712);display:flex;align-items:center;flex-wrap:wrap}.rule-dark div[data-v-2b002dd2]{margin-right:5px}.rule-dark .payload[data-v-2b002dd2]{color:#5fbeca}.rule-red[data-v-2b002dd2]{font-size:14px;color:#3f3f3f;display:flex;align-items:center;flex-wrap:wrap}.rule-red div[data-v-2b002dd2]{margin-right:5px}.rule-red .payload[data-v-2b002dd2]{color:#0d508f}.rule-2077[data-v-2b002dd2]{font-size:14px;color:hsla(0,0%,88%,.712);display:flex;align-items:center;flex-wrap:wrap}.rule-2077 div[data-v-2b002dd2]{margin-right:5px}.rule-2077 .payload[data-v-2b002dd2]{color:#5fbeca}.log-list-light[data-v-2b002dd2]{width:calc(100% - 0px);height:calc(100% - 80px);overflow-y:scroll}.log-list-light[data-v-2b002dd2]::-webkit-scrollbar{width:16px}.log-list-light[data-v-2b002dd2]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.log-list-light .empty-list[data-v-2b002dd2]{font-size:18px;color:gray;width:100%;height:100%;display:flex;align-items:center;flex-direction:column;justify-content:center}.log-list-light .empty-list div[data-v-2b002dd2]:last-child{font-size:14px}.log-list-dark[data-v-2b002dd2]{width:calc(100% - 0px);height:calc(100% - 80px);overflow-y:scroll}.log-list-dark[data-v-2b002dd2]::-webkit-scrollbar{width:16px}.log-list-dark[data-v-2b002dd2]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.log-list-dark .empty-list[data-v-2b002dd2]{font-size:18px;color:gray;width:100%;height:100%;display:flex;align-items:center;flex-direction:column;justify-content:center}.log-list-dark .empty-list div[data-v-2b002dd2]:last-child{font-size:14px}.log-list-red[data-v-2b002dd2]{width:calc(100% - 0px);height:calc(100% - 80px);overflow-y:scroll}.log-list-red[data-v-2b002dd2]::-webkit-scrollbar{width:16px}.log-list-red[data-v-2b002dd2]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.log-list-red .empty-list[data-v-2b002dd2]{font-size:18px;color:gray;width:100%;height:100%;display:flex;align-items:center;flex-direction:column;justify-content:center}.log-list-red .empty-list div[data-v-2b002dd2]:last-child{font-size:14px}.log-list-2077[data-v-2b002dd2]{width:calc(100% - 0px);height:calc(100% - 80px);overflow-y:scroll}.log-list-2077[data-v-2b002dd2]::-webkit-scrollbar{width:16px}.log-list-2077[data-v-2b002dd2]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.log-list-2077 .empty-list[data-v-2b002dd2]{font-size:18px;color:gray;width:100%;height:100%;display:flex;align-items:center;flex-direction:column;justify-content:center}.log-list-2077 .empty-list div[data-v-2b002dd2]:last-child{font-size:14px}.url[data-v-2b002dd2]{word-break:break-all;white-space:normal;display:flex;flex-direction:column;flex-grow:1}.url .name[data-v-2b002dd2]{font-size:16px}.url div[data-v-2b002dd2]{margin-right:5px}.proxy-name[data-v-2b002dd2]{font-size:16px;margin:auto 0 auto 20px;min-width:50%;display:flex;justify-content:flex-end}.left[data-v-2b002dd2]{display:flex}", ""])
}, function(e, t, i) {
    "use strict";
    i(215)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".warning[data-v-2b002dd2]{color:red}.btns[data-v-2b002dd2]{display:flex;width:150px;justify-content:space-between}.button[data-v-2b002dd2]{font-size:.8em;height:30px;line-height:30px;color:#fff;width:70px;text-align:center;border-radius:3px;cursor:pointer}.button-on[data-v-2b002dd2]{background-color:rgba(14,151,185,.959)}.button-off[data-v-2b002dd2]{background-color:rgba(243,61,61,.801)}.button-clear[data-v-2b002dd2]{background-color:rgba(23,156,6,.904)}", ""])
}, function(e, t, i) {
    "use strict";
    i(216)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-light[data-v-8a057c1e]{position:fixed;left:170px;top:30px;width:calc(100vw - 170px);height:100%;background-color:#fff;padding:10px 30px;overflow-y:scroll}.main-light[data-v-8a057c1e]::-webkit-scrollbar{width:16px}.main-light[data-v-8a057c1e]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.main-light input[data-v-8a057c1e]{color:#000;background-color:#fff}.main-dark[data-v-8a057c1e]{position:fixed;left:170px;top:30px;width:calc(100vw - 170px);height:100%;background-color:#2c2a38;padding:10px 30px;overflow-y:scroll}.main-dark[data-v-8a057c1e]::-webkit-scrollbar{width:16px}.main-dark[data-v-8a057c1e]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.main-dark input[data-v-8a057c1e]{color:#fff;background-color:#2c2a38}.main-red[data-v-8a057c1e]{position:fixed;left:170px;top:30px;width:calc(100vw - 170px);height:100%;background-color:#f8b74f;padding:10px 30px;overflow-y:scroll}.main-red[data-v-8a057c1e]::-webkit-scrollbar{width:16px}.main-red[data-v-8a057c1e]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.main-red input[data-v-8a057c1e]{color:#d33928;background-color:#f8b74f}.main-2077[data-v-8a057c1e]{position:fixed;left:170px;top:30px;width:calc(100vw - 170px);height:100%;background-color:#136377;padding:10px 30px;overflow-y:scroll}.main-2077[data-v-8a057c1e]::-webkit-scrollbar{width:16px}.main-2077[data-v-8a057c1e]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.main-2077 input[data-v-8a057c1e]{color:#fcec0c;background-color:#136377}", ""])
}, function(e, t, i) {
    "use strict";
    i(217)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "input[data-v-8a057c1e]{margin:5px 0;border:none;font-size:1.1em;border-bottom:2px solid rgba(61,182,164,.3)}input[type=checkbox][data-v-8a057c1e],input[type=radio][data-v-8a057c1e]{height:20px;width:20px;vertical-align:middle;margin-right:5px}label[data-v-8a057c1e]{font-size:1.1em;vertical-align:middle}input[data-v-8a057c1e]:focus{outline:none}.input-view[data-v-8a057c1e]{display:flex;flex-direction:column;justify-content:space-between}.cipher-list[data-v-8a057c1e]{display:grid;grid-template-columns:repeat(2,1fr)}.ss-list[data-v-8a057c1e],.vmess-list[data-v-8a057c1e]{display:flex;flex-direction:column}.group-type-list[data-v-8a057c1e],.proxy-type-list[data-v-8a057c1e]{display:flex;justify-content:flex-start}.group-type-list>div[data-v-8a057c1e],.proxy-type-list>div[data-v-8a057c1e]{margin-right:30px}.btns[data-v-8a057c1e]{margin-top:20px;display:flex;justify-content:space-around}.btn[data-v-8a057c1e]{padding:5px 10px;font-size:1.1em;text-align:center;width:100px;border-radius:4px}.cancel[data-v-8a057c1e]{background-color:#c0c0c0c0}.confirm[data-v-8a057c1e]{background-color:#375df3;color:#fff}", ""])
}, function(e, t, i) {
    "use strict";
    i(218)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-config-view-light[data-v-16c92520]{height:100%;position:fixed}.main-config-view-light .proxy-group[data-v-16c92520]{flex:1;overflow-y:scroll;padding:0 20px 20px 15px}.main-config-view-light .proxy-group[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-light .proxy-group[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(101,81,122,.7);border-radius:100px;border:3px solid #fff}.main-config-view-light .proxy[data-v-16c92520]{flex:1;overflow-y:scroll;direction:rtl;padding:0 15px 20px 20px}.main-config-view-light .proxy[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-light .proxy[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(55,57,72,.7);border-radius:100px;border:3px solid #fff}.main-config-view-dark[data-v-16c92520]{height:100%;position:fixed}.main-config-view-dark .proxy-group[data-v-16c92520]{flex:1;overflow-y:scroll;padding:0 20px 20px 15px}.main-config-view-dark .proxy-group[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-dark .proxy-group[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(101,81,122,.7);border-radius:100px;border:3px solid #2c2a38}.main-config-view-dark .proxy[data-v-16c92520]{flex:1;overflow-y:scroll;direction:rtl;padding:0 15px 20px 20px}.main-config-view-dark .proxy[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-dark .proxy[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(55,57,72,.7);border-radius:100px;border:3px solid #2c2a38}.main-config-view-red[data-v-16c92520]{height:100%;position:fixed}.main-config-view-red .proxy-group[data-v-16c92520]{flex:1;overflow-y:scroll;padding:0 20px 20px 15px}.main-config-view-red .proxy-group[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-red .proxy-group[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(101,81,122,.7);border-radius:100px;border:3px solid #f8b74f}.main-config-view-red .proxy[data-v-16c92520]{flex:1;overflow-y:scroll;direction:rtl;padding:0 15px 20px 20px}.main-config-view-red .proxy[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-red .proxy[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(55,57,72,.7);border-radius:100px;border:3px solid #f8b74f}.main-config-view-2077[data-v-16c92520]{height:100%;position:fixed}.main-config-view-2077 .proxy-group[data-v-16c92520]{flex:1;overflow-y:scroll;padding:0 20px 20px 15px}.main-config-view-2077 .proxy-group[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-2077 .proxy-group[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(101,81,122,.7);border-radius:100px;border:3px solid #136377}.main-config-view-2077 .proxy[data-v-16c92520]{flex:1;overflow-y:scroll;direction:rtl;padding:0 15px 20px 20px}.main-config-view-2077 .proxy[data-v-16c92520]::-webkit-scrollbar{width:16px}.main-config-view-2077 .proxy[data-v-16c92520]::-webkit-scrollbar-thumb{background-color:rgba(55,57,72,.7);border-radius:100px;border:3px solid #136377}.dragArea[data-v-16c92520]{min-height:1px}.dragArea>[data-v-16c92520]{-webkit-user-drag:element}", ""])
}, function(e, t, i) {
    "use strict";
    i(219)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".floating[data-v-16c92520]{position:fixed;left:170px;height:60px;width:calc(100vw - 170px);display:flex;justify-content:space-between;padding:0 50px 0 40px;align-items:center;box-shadow:2px 2px 4px 1px rgba(50,50,50,.2)}.floating-right[data-v-16c92520]{display:flex;justify-content:flex-end}.hint[data-v-16c92520]{font-size:1.1em}.main-btn[data-v-16c92520]{cursor:pointer;margin-left:20px;box-shadow:0 0 4px 1px rgba(50,50,50,.2);text-align:center;padding:5px 0;width:80px;border-radius:5px;color:#fff}.reload[data-v-16c92520]{background-color:#c7ca10}.save[data-v-16c92520]{background-color:#31a7e3}.drag[data-v-16c92520]{display:flex;padding:0 0 20px;margin-top:60px;left:20vw;height:calc(100% - 70px);width:calc(100vw - 170px);max-width:900px}.proxy>div[data-v-16c92520],.proxy>draggable[data-v-16c92520]{direction:ltr}.section-title[data-v-16c92520]{display:flex;justify-content:space-between;align-items:center;margin:20px 0 0;font-size:.8em}img[data-v-16c92520]{width:20px;height:20px;margin-left:10px;cursor:pointer}.add-icon[data-v-16c92520]{background-color:#677a94;border-radius:5px;color:#fff;font-size:.9em;letter-spacing:1px;padding:3px 10px;cursor:pointer;box-shadow:0 0 4px 1px rgba(50,50,50,.2)}.left-item[data-v-16c92520]{background-color:#373948}.right-item[data-v-16c92520]{background-color:#65517a}.group-type[data-v-16c92520]{font-size:.7em}.proxy-item[data-v-16c92520]{opacity:.8;cursor:pointer;font-size:1em;padding:5px 10px;margin:10px 0;display:flex;color:#fff;border-radius:5px;justify-content:space-between;align-items:center;box-shadow:0 0 4px 1px rgba(50,50,50,.2)}", ""])
}, function(e, t, i) {
    "use strict";
    i(220)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".model-title-2077[data-v-281445b0],.model-title-dark[data-v-281445b0],.model-title-light[data-v-281445b0],.model-title-red[data-v-281445b0]{display:flex;font-size:1.2em;justify-content:space-between}.modal-container-light[data-v-281445b0]{width:500px;margin:0 auto;padding:20px 30px;background-color:#fff;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease}.modal-container-light input[data-v-281445b0]{color:#000;background-color:#fff}.modal-container-dark[data-v-281445b0]{width:500px;margin:0 auto;padding:20px 30px;background-color:#2c2a38;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease}.modal-container-dark input[data-v-281445b0]{color:#fff;background-color:#2c2a38}.modal-container-red[data-v-281445b0]{width:500px;margin:0 auto;padding:20px 30px;background-color:#f8b74f;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease}.modal-container-red input[data-v-281445b0]{color:#d33928;background-color:#f8b74f}.modal-container-2077[data-v-281445b0]{width:500px;margin:0 auto;padding:20px 30px;background-color:#136377;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease}.modal-container-2077 input[data-v-281445b0]{color:#fcec0c;background-color:#136377}.scroll-view-light[data-v-281445b0]{margin-top:20px;max-height:400px;padding:0 10px;overflow-y:scroll}.scroll-view-light[data-v-281445b0]::-webkit-scrollbar{width:16px}.scroll-view-light[data-v-281445b0]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.scroll-view-dark[data-v-281445b0]{margin-top:20px;max-height:400px;padding:0 10px;overflow-y:scroll}.scroll-view-dark[data-v-281445b0]::-webkit-scrollbar{width:16px}.scroll-view-dark[data-v-281445b0]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.scroll-view-red[data-v-281445b0]{margin-top:20px;max-height:400px;padding:0 10px;overflow-y:scroll}.scroll-view-red[data-v-281445b0]::-webkit-scrollbar{width:16px}.scroll-view-red[data-v-281445b0]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.scroll-view-2077[data-v-281445b0]{margin-top:20px;max-height:400px;padding:0 10px;overflow-y:scroll}.scroll-view-2077[data-v-281445b0]::-webkit-scrollbar{width:16px}.scroll-view-2077[data-v-281445b0]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}", ""])
}, function(e, t, i) {
    "use strict";
    i(221)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".modal-mask[data-v-281445b0]{position:fixed;z-index:9998;top:0;left:170px;width:calc(100vw - 170px);height:100vh;background-color:rgba(0,0,0,.5);display:table;transition:opacity .3s ease}.modal-wrapper[data-v-281445b0]{display:table-cell;vertical-align:middle}.modal-header h3[data-v-281445b0]{margin-top:0;color:#42b983}.modal-body[data-v-281445b0]{margin:20px 0}.modal-default-button[data-v-281445b0]{float:right}.modal-enter[data-v-281445b0],.modal-leave-active[data-v-281445b0]{opacity:0}.modal-enter .modal-container[data-v-281445b0],.modal-leave-active .modal-container[data-v-281445b0]{-webkit-transform:scale(1.1);transform:scale(1.1)}input[data-v-281445b0]:focus{outline:none}input[data-v-281445b0]{height:30px;border:none;width:100%;font-size:1.3em;border-bottom:2px solid rgba(61,182,164,.3)}.rule-type-group[data-v-281445b0]{display:grid;grid-template-columns:repeat(2,1fr);grid-row-gap:10px;grid-column-gap:10px;grid-auto-rows:minmax(30px,auto)}.rule-type-item[data-v-281445b0]{text-align:center;line-height:30px;border-radius:5px;color:#fff;padding:5px 10px;background-color:rgba(101,81,122,.6)}.rule-type-selected[data-v-281445b0]{background-color:#65517a}.rule-proxy-group[data-v-281445b0]{margin-bottom:60px;display:grid;grid-template-columns:repeat(1,1fr);grid-row-gap:10px;grid-column-gap:10px;grid-auto-rows:minmax(30px,auto)}.rule-proxy-item[data-v-281445b0]{text-align:center;line-height:30px;border-radius:5px;color:#fff;padding:5px 10px;background-color:rgba(55,57,72,.6)}.rule-proxy-selected[data-v-281445b0]{background-color:#373948}.rule-section-title[data-v-281445b0]{font-size:1em;color:#a6a5a4;margin-top:10px;margin-bottom:5px}.rule-floating-btns[data-v-281445b0]{right:calc(80vw - 585px);bottom:calc(100vh - 450px);display:flex}.rule-floating-btns>div[data-v-281445b0]{font-size:.8em;width:80px;height:35px;margin-left:10px;line-height:50px;text-align:center;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:3px;color:#fff}.rule-floating-cancel[data-v-281445b0]{background-color:#41b883}.rule-floating-ok[data-v-281445b0]{background-color:#3a56c5}", ""])
}, function(e, t, i) {
    "use strict";
    i(222)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".rule-light[data-v-d9c5f67a]{font-size:13px;color:rgba(50,50,50,.7)}.rule-dark[data-v-d9c5f67a]{font-size:13px;color:hsla(0,0%,88%,.712)}.rule-red[data-v-d9c5f67a]{font-size:13px;color:#3f3f3f}.rule-2077[data-v-d9c5f67a]{font-size:13px;color:hsla(0,0%,88%,.712)}.log-item-light[data-v-d9c5f67a]{border-bottom:1px solid rgba(50,50,50,.1)}.log-item-dark[data-v-d9c5f67a],.log-item-light[data-v-d9c5f67a]{display:flex;justify-content:space-between;align-items:center;padding:5px 20px}.log-item-dark[data-v-d9c5f67a]{border-bottom:1px solid #494242}.log-item-red[data-v-d9c5f67a]{border-bottom:1px solid rgba(218,20,30,.247059)}.log-item-2077[data-v-d9c5f67a],.log-item-red[data-v-d9c5f67a]{display:flex;justify-content:space-between;align-items:center;padding:5px 20px}.log-item-2077[data-v-d9c5f67a]{border-bottom:1px solid #494242}.log-list-light[data-v-d9c5f67a]{width:calc(100% - 0px);border:0 solid rgba(50,50,50,.2);height:calc(100% - 100px);border-style:dashed;padding:10px 20px;overflow-y:scroll}.log-list-light[data-v-d9c5f67a]::-webkit-scrollbar{width:16px}.log-list-light[data-v-d9c5f67a]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.log-list-dark[data-v-d9c5f67a]{width:calc(100% - 0px);border:0 solid rgba(50,50,50,.2);height:calc(100% - 100px);border-style:dashed;padding:10px 20px;overflow-y:scroll}.log-list-dark[data-v-d9c5f67a]::-webkit-scrollbar{width:16px}.log-list-dark[data-v-d9c5f67a]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.log-list-red[data-v-d9c5f67a]{width:calc(100% - 0px);border:0 solid rgba(50,50,50,.2);height:calc(100% - 100px);border-style:dashed;padding:10px 20px;overflow-y:scroll}.log-list-red[data-v-d9c5f67a]::-webkit-scrollbar{width:16px}.log-list-red[data-v-d9c5f67a]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.log-list-2077[data-v-d9c5f67a]{width:calc(100% - 0px);border:0 solid rgba(50,50,50,.2);height:calc(100% - 100px);border-style:dashed;padding:10px 20px;overflow-y:scroll}.log-list-2077[data-v-d9c5f67a]::-webkit-scrollbar{width:16px}.log-list-2077[data-v-d9c5f67a]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}", ""])
}, function(e, t, i) {
    "use strict";
    i(223)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "#main-log-view[data-v-d9c5f67a]{height:100%;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.icon[data-v-d9c5f67a]{width:22px;height:22px;cursor:pointer;margin-left:10px}.emoji-name[data-v-d9c5f67a],.header[data-v-d9c5f67a]{display:flex;align-items:center}.header[data-v-d9c5f67a]{justify-content:space-between;padding:0 50px 0 40px;height:60px}.header-btns[data-v-d9c5f67a]{display:flex;justify-content:flex-end}.filter-view[data-v-d9c5f67a]{width:calc(100vw - 170px);height:50px}.filter-view input[data-v-d9c5f67a]{margin:0 40px 10px;cursor:text;width:calc(100vw - 250px);height:40px;padding:0 20px;border:none;background-color:#eee;border-radius:5px;font-size:1.1em}.filter-view input[data-v-d9c5f67a]:focus{outline:none}.btn[data-v-d9c5f67a]{cursor:pointer;box-shadow:0 0 4px 1px rgba(50,50,50,.2);margin-left:20px;width:80px;text-align:center;padding:5px 10px;border-radius:5px;color:#fff}.btn-add[data-v-d9c5f67a]{background-color:#31a7e3}.btn-save[data-v-d9c5f67a]{background-color:#41b883}.btn-back[data-v-d9c5f67a]{background-color:#e0dd22}.title[data-v-d9c5f67a]{font-size:1.1em;margin-bottom:0}.log-item[data-v-d9c5f67a]{display:flex;justify-content:space-between;align-items:center;padding:5px 20px;width:100%;border-bottom:1px solid rgba(50,50,50,.1)}.left[data-v-d9c5f67a]{flex-grow:1;padding-right:40px;overflow:hidden}.right-main[data-v-d9c5f67a]{display:flex;align-items:center}img[data-v-d9c5f67a]{margin-left:10px;width:25px;height:25px}.url[data-v-d9c5f67a]{font-size:18px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.rule-set[data-v-d9c5f67a]{color:#ff5e00}.right[data-v-d9c5f67a]{font-size:1em;padding:5px 10px;border-radius:4px;color:#fff;opacity:.8;box-shadow:0 0 4px 1px rgba(50,50,50,.2)}", ""])
}, function(e, t, i) {
    "use strict";
    i(224)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".qrcode-view-main[data-v-64e66e1e]{position:fixed;left:170px;top:25px;height:100%;width:calc(100vw - 170px);display:flex;justify-content:center;align-items:center;background-color:rgba(50,50,50,.6);z-index:100}.qrcode-view-main .content[data-v-64e66e1e]{width:250px;background-color:#fff;box-shadow:0 0 10px 3px hsla(0,0%,5%,.164);border-radius:2px;padding:10px 10px 20px;display:flex;flex-direction:column;justify-content:space-between;align-items:center}.qrcode-view-main .content img[data-v-64e66e1e]{width:230px;height:230px}.qrcode-view-main .content .url[data-v-64e66e1e]{font-size:12px;width:200px;overflow-wrap:anywhere;text-decoration:underline;cursor:pointer;color:#0f7bd3}.qrcode-view-main .content .btn[data-v-64e66e1e]{margin-top:10px;height:45px;color:#fff;cursor:pointer;line-height:45px;text-align:center;background-color:#7e7b7b;border-radius:3px;padding-left:10px;padding-right:10px;font-size:.85em;box-shadow:0 2px 20px 2px rgba(50,50,50,.1);width:200px}", ""])
}, function(e, t, i) {
    "use strict";
    i(225)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".card-light[data-v-4d08ae52]{background-color:#fff;border-bottom:1px solid #dcdcdc}.card-dark[data-v-4d08ae52],.card-light[data-v-4d08ae52]{position:fixed;padding:0 35px;height:80px;width:calc(100vw - 170px);display:flex;justify-content:space-between}.card-dark[data-v-4d08ae52]{background-color:#2c2a38;border-bottom:1px solid #554f4f}.card-red[data-v-4d08ae52]{background-color:#f8b74f;border-bottom:1px solid rgba(218,20,30,.247059)}.card-2077[data-v-4d08ae52],.card-red[data-v-4d08ae52]{position:fixed;padding:0 35px;height:80px;width:calc(100vw - 170px);display:flex;justify-content:space-between}.card-2077[data-v-4d08ae52]{background-color:#136377;border-bottom:1px solid rgba(6,145,180,.521569)}.list-item-light[data-v-4d08ae52]{background-color:#fff;margin:4px 6px;display:flex;justify-content:space-between;position:relative;width:295px;flex-grow:1}.list-item-light .item-subinfo[data-v-4d08ae52]{width:fit-content}.list-item-light .item-subinfo .item-subinfo-texts[data-v-4d08ae52]{display:flex;font-size:11px;color:gray}.list-item-light .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]{margin-right:10px}.list-item-light .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]:last-child{margin-right:0}.list-item-light .item-subinfo .progress[data-v-4d08ae52]{background-color:#e2e2e2;text-align:center;height:3px;width:100%;color:#fff;position:relative;border-radius:3px;margin-bottom:2px}.list-item-light .item-subinfo .progress .percent[data-v-4d08ae52]{border-radius:3px;width:100%;top:0;left:0;position:absolute;height:100%;background-color:#f57983}.list-item-light .indicator[data-v-4d08ae52]{margin-right:4px;margin-top:2px;width:4px;height:calc(100% - 4px);border-radius:10px;background-color:rgba(75,75,75,.185)}.list-item-light .item-info[data-v-4d08ae52]{padding:4px 5px;background-color:rgba(41,41,41,.05);display:flex;align-items:center;justify-content:flex-start;flex-grow:1;max-width:calc(100% - 8px);border-radius:3px;height:100%;position:relative}.list-item-light .item-info .refresh-icon[data-v-4d08ae52]{width:18px;height:18px;position:absolute;right:3px;top:3px}.list-item-light .item-info .item-name[data-v-4d08ae52]{cursor:pointer;margin-left:5px;flex-grow:1;width:calc(100% - 50px);font-size:15px}.list-item-light .item-info .item-name .item-name-bottom[data-v-4d08ae52]{font-size:13px;cursor:pointer;max-width:calc(100% - 10px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-weight:400;color:gray}.list-item-light .item-info .item-edit-zone[data-v-4d08ae52]{background-color:#fff;box-shadow:0 0 4px 0 rgba(0,0,0,.3);border-radius:5px;position:absolute;width:175px;display:flex;flex-wrap:wrap;justify-content:space-between;right:30px;z-index:1}.list-item-light .item-icon[data-v-4d08ae52]{width:30px;height:30px;border-radius:5px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;cursor:pointer}.list-item-light .item-icon [data-v-4d08ae52]{cursor:pointer}.list-item-light .item-icon[data-v-4d08ae52]:hover{background-color:hsla(0,0%,74%,.534)}.list-item-light .item-icon>svg[data-v-4d08ae52]{width:18px;height:18px;fill:#000}.list-item-light .item-disabled[data-v-4d08ae52]{cursor:not-allowed}.list-item-light .item-disabled>svg[data-v-4d08ae52]{fill:gray}.list-item-light .more[data-v-4d08ae52]{position:absolute;right:0;width:30px;height:100%;display:flex;align-items:center;justify-content:center;border-top-right-radius:3px;border-bottom-right-radius:3px}.list-item-light .more[data-v-4d08ae52]:hover{background-color:hsla(0,0%,50%,.1)}.list-item-light .more>svg[data-v-4d08ae52]{height:18px;fill:#000}.list-item-dark[data-v-4d08ae52]{background-color:#2c2a38;margin:4px 6px;display:flex;justify-content:space-between;position:relative;width:295px;flex-grow:1}.list-item-dark .item-subinfo[data-v-4d08ae52]{width:fit-content}.list-item-dark .item-subinfo .item-subinfo-texts[data-v-4d08ae52]{display:flex;font-size:11px;color:#a7a7a7}.list-item-dark .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]{margin-right:10px}.list-item-dark .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]:last-child{margin-right:0}.list-item-dark .item-subinfo .progress[data-v-4d08ae52]{background-color:#5a5a5a;text-align:center;height:3px;width:100%;color:#b4b4b4;position:relative;border-radius:3px;margin-bottom:2px}.list-item-dark .item-subinfo .progress .percent[data-v-4d08ae52]{border-radius:3px;width:100%;top:0;left:0;position:absolute;height:100%;background-color:#92484e}.list-item-dark .indicator[data-v-4d08ae52]{margin-right:4px;margin-top:2px;width:4px;height:calc(100% - 4px);border-radius:10px;background-color:hsla(0,0%,78%,.185)}.list-item-dark .item-info[data-v-4d08ae52]{padding:4px 5px;background-color:hsla(0,0%,100%,.05);display:flex;align-items:center;justify-content:flex-start;flex-grow:1;max-width:calc(100% - 8px);border-radius:3px;height:100%;position:relative}.list-item-dark .item-info .refresh-icon[data-v-4d08ae52]{width:18px;height:18px;position:absolute;right:3px;top:3px}.list-item-dark .item-info .item-name[data-v-4d08ae52]{cursor:pointer;margin-left:5px;flex-grow:1;width:calc(100% - 50px);font-size:15px}.list-item-dark .item-info .item-name .item-name-bottom[data-v-4d08ae52]{font-size:13px;cursor:pointer;max-width:calc(100% - 10px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-weight:400;color:#a7a7a7}.list-item-dark .item-info .item-edit-zone[data-v-4d08ae52]{background-color:#2c2a38;box-shadow:0 0 4px 0 rgba(0,0,0,.3);border-radius:5px;position:absolute;width:175px;display:flex;flex-wrap:wrap;justify-content:space-between;right:30px;z-index:1}.list-item-dark .item-icon[data-v-4d08ae52]{width:30px;height:30px;border-radius:5px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;cursor:pointer}.list-item-dark .item-icon [data-v-4d08ae52]{cursor:pointer}.list-item-dark .item-icon[data-v-4d08ae52]:hover{background-color:hsla(0,0%,74%,.534)}.list-item-dark .item-icon>svg[data-v-4d08ae52]{width:18px;height:18px;fill:#fff}.list-item-dark .item-disabled[data-v-4d08ae52]{cursor:not-allowed}.list-item-dark .item-disabled>svg[data-v-4d08ae52]{fill:gray}.list-item-dark .more[data-v-4d08ae52]{position:absolute;right:0;width:30px;height:100%;display:flex;align-items:center;justify-content:center;border-top-right-radius:3px;border-bottom-right-radius:3px}.list-item-dark .more[data-v-4d08ae52]:hover{background-color:hsla(0,0%,50%,.1)}.list-item-dark .more>svg[data-v-4d08ae52]{height:18px;fill:#fff}.list-item-red[data-v-4d08ae52]{background-color:#f8b74f;margin:4px 6px;display:flex;justify-content:space-between;position:relative;width:295px;flex-grow:1}.list-item-red .item-subinfo[data-v-4d08ae52]{width:fit-content}.list-item-red .item-subinfo .item-subinfo-texts[data-v-4d08ae52]{display:flex;font-size:11px;color:#995e00}.list-item-red .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]{margin-right:10px}.list-item-red .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]:last-child{margin-right:0}.list-item-red .item-subinfo .progress[data-v-4d08ae52]{background-color:hsla(0,0%,59%,.295);text-align:center;height:3px;width:100%;color:#d1d1d1;position:relative;border-radius:3px;margin-bottom:2px}.list-item-red .item-subinfo .progress .percent[data-v-4d08ae52]{border-radius:3px;width:100%;top:0;left:0;position:absolute;height:100%;background-color:#b3585f}.list-item-red .indicator[data-v-4d08ae52]{margin-right:4px;margin-top:2px;width:4px;height:calc(100% - 4px);border-radius:10px;background-color:#f39908}.list-item-red .item-info[data-v-4d08ae52]{padding:4px 5px;background-color:#fdc975;display:flex;align-items:center;justify-content:flex-start;flex-grow:1;max-width:calc(100% - 8px);border-radius:3px;height:100%;position:relative}.list-item-red .item-info .refresh-icon[data-v-4d08ae52]{width:18px;height:18px;position:absolute;right:3px;top:3px}.list-item-red .item-info .item-name[data-v-4d08ae52]{cursor:pointer;margin-left:5px;flex-grow:1;width:calc(100% - 50px);font-size:15px}.list-item-red .item-info .item-name .item-name-bottom[data-v-4d08ae52]{font-size:13px;cursor:pointer;max-width:calc(100% - 10px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-weight:400;color:#995e00}.list-item-red .item-info .item-edit-zone[data-v-4d08ae52]{background-color:#f8b74f;box-shadow:0 0 4px 0 rgba(0,0,0,.3);border-radius:5px;position:absolute;width:175px;display:flex;flex-wrap:wrap;justify-content:space-between;right:30px;z-index:1}.list-item-red .item-icon[data-v-4d08ae52]{width:30px;height:30px;border-radius:5px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;cursor:pointer}.list-item-red .item-icon [data-v-4d08ae52]{cursor:pointer}.list-item-red .item-icon[data-v-4d08ae52]:hover{background-color:hsla(0,0%,74%,.534)}.list-item-red .item-icon>svg[data-v-4d08ae52]{width:18px;height:18px;fill:#d33928}.list-item-red .item-disabled[data-v-4d08ae52]{cursor:not-allowed}.list-item-red .item-disabled>svg[data-v-4d08ae52]{fill:gray}.list-item-red .more[data-v-4d08ae52]{position:absolute;right:0;width:30px;height:100%;display:flex;align-items:center;justify-content:center;border-top-right-radius:3px;border-bottom-right-radius:3px}.list-item-red .more[data-v-4d08ae52]:hover{background-color:hsla(0,0%,50%,.1)}.list-item-red .more>svg[data-v-4d08ae52]{height:18px;fill:#d33928}.list-item-2077[data-v-4d08ae52]{background-color:#136377;margin:4px 6px;display:flex;justify-content:space-between;position:relative;width:295px;flex-grow:1}.list-item-2077 .item-subinfo[data-v-4d08ae52]{width:fit-content}.list-item-2077 .item-subinfo .item-subinfo-texts[data-v-4d08ae52]{display:flex;font-size:11px;color:#bbb33f}.list-item-2077 .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]{margin-right:10px}.list-item-2077 .item-subinfo .item-subinfo-texts div[data-v-4d08ae52]:last-child{margin-right:0}.list-item-2077 .item-subinfo .progress[data-v-4d08ae52]{background-color:#4e8a6f;text-align:center;height:3px;width:100%;color:#fff;position:relative;border-radius:3px;margin-bottom:2px}.list-item-2077 .item-subinfo .progress .percent[data-v-4d08ae52]{border-radius:3px;width:100%;top:0;left:0;position:absolute;height:100%;background-color:#b4555d}.list-item-2077 .indicator[data-v-4d08ae52]{margin-right:4px;margin-top:2px;width:4px;height:calc(100% - 4px);border-radius:10px;background-color:rgba(6,49,70,.411)}.list-item-2077 .item-info[data-v-4d08ae52]{padding:4px 5px;background-color:rgba(9,115,141,.917647);display:flex;align-items:center;justify-content:flex-start;flex-grow:1;max-width:calc(100% - 8px);border-radius:3px;height:100%;position:relative}.list-item-2077 .item-info .refresh-icon[data-v-4d08ae52]{width:18px;height:18px;position:absolute;right:3px;top:3px}.list-item-2077 .item-info .item-name[data-v-4d08ae52]{cursor:pointer;margin-left:5px;flex-grow:1;width:calc(100% - 50px);font-size:15px}.list-item-2077 .item-info .item-name .item-name-bottom[data-v-4d08ae52]{font-size:13px;cursor:pointer;max-width:calc(100% - 10px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-weight:400;color:#bbb33f}.list-item-2077 .item-info .item-edit-zone[data-v-4d08ae52]{background-color:#136377;box-shadow:0 0 4px 0 rgba(0,0,0,.3);border-radius:5px;position:absolute;width:175px;display:flex;flex-wrap:wrap;justify-content:space-between;right:30px;z-index:1}.list-item-2077 .item-icon[data-v-4d08ae52]{width:30px;height:30px;border-radius:5px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;cursor:pointer}.list-item-2077 .item-icon [data-v-4d08ae52]{cursor:pointer}.list-item-2077 .item-icon[data-v-4d08ae52]:hover{background-color:hsla(0,0%,74%,.534)}.list-item-2077 .item-icon>svg[data-v-4d08ae52]{width:18px;height:18px;fill:#fcec0c}.list-item-2077 .item-disabled[data-v-4d08ae52]{cursor:not-allowed}.list-item-2077 .item-disabled>svg[data-v-4d08ae52]{fill:gray}.list-item-2077 .more[data-v-4d08ae52]{position:absolute;right:0;width:30px;height:100%;display:flex;align-items:center;justify-content:center;border-top-right-radius:3px;border-bottom-right-radius:3px}.list-item-2077 .more[data-v-4d08ae52]:hover{background-color:hsla(0,0%,50%,.1)}.list-item-2077 .more>svg[data-v-4d08ae52]{height:18px;fill:#fcec0c}.item-cur-light .indicator[data-v-4d08ae52]{background-color:#41b883}.item-cur-dark .indicator[data-v-4d08ae52]{background-color:#0a0}.item-cur-red .indicator[data-v-4d08ae52]{background-color:rgba(27,180,6,.788235)}.item-cur-2077 .indicator[data-v-4d08ae52]{background-color:#f8ed53}.main[data-v-4d08ae52]{display:flex;flex-direction:column;height:100%}#main-server-view[data-v-4d08ae52]{height:100%}.list-view-light[data-v-4d08ae52]{margin-top:80px;height:calc(100% - 80px);width:100%;overflow-y:scroll;display:flex;flex-wrap:wrap;padding:10px 20px 20px 30px;align-content:flex-start}.list-view-light[data-v-4d08ae52]::-webkit-scrollbar{width:16px}.list-view-light[data-v-4d08ae52]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.list-view-light>[data-v-4d08ae52]{-webkit-user-drag:element}.list-view-light i[data-v-4d08ae52]{width:295px;margin:0 6px;flex-grow:1;height:0}.list-view-dark[data-v-4d08ae52]{margin-top:80px;height:calc(100% - 80px);width:100%;overflow-y:scroll;display:flex;flex-wrap:wrap;padding:10px 20px 20px 30px;align-content:flex-start}.list-view-dark[data-v-4d08ae52]::-webkit-scrollbar{width:16px}.list-view-dark[data-v-4d08ae52]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.list-view-dark>[data-v-4d08ae52]{-webkit-user-drag:element}.list-view-dark i[data-v-4d08ae52]{width:295px;margin:0 6px;flex-grow:1;height:0}.list-view-red[data-v-4d08ae52]{margin-top:80px;height:calc(100% - 80px);width:100%;overflow-y:scroll;display:flex;flex-wrap:wrap;padding:10px 20px 20px 30px;align-content:flex-start}.list-view-red[data-v-4d08ae52]::-webkit-scrollbar{width:16px}.list-view-red[data-v-4d08ae52]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.list-view-red>[data-v-4d08ae52]{-webkit-user-drag:element}.list-view-red i[data-v-4d08ae52]{width:295px;margin:0 6px;flex-grow:1;height:0}.list-view-2077[data-v-4d08ae52]{margin-top:80px;height:calc(100% - 80px);width:100%;overflow-y:scroll;display:flex;flex-wrap:wrap;padding:10px 20px 20px 30px;align-content:flex-start}.list-view-2077[data-v-4d08ae52]::-webkit-scrollbar{width:16px}.list-view-2077[data-v-4d08ae52]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.list-view-2077>[data-v-4d08ae52]{-webkit-user-drag:element}.list-view-2077 i[data-v-4d08ae52]{width:295px;margin:0 6px;flex-grow:1;height:0}.input-container[data-v-4d08ae52]{display:flex;flex-grow:1;overflow:hidden;padding-right:5px;justify-content:space-between;position:relative;z-index:1}.input-container input[data-v-4d08ae52]{border-top-left-radius:3px;border-bottom-left-radius:3px;padding-right:40px}.input-container svg[data-v-4d08ae52]{border-top-right-radius:3px;border-bottom-right-radius:3px}", ""])
}, function(e, t, i) {
    "use strict";
    i(226)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "input[data-v-4d08ae52]{cursor:text;width:calc(100vw - 230px);height:45px;font-size:1em;border:1px solid rgba(50,50,50,.2);padding:0 10px}input[data-v-4d08ae52]:focus{outline:none;box-shadow:0 0 2px 1px rgba(50,50,50,.2)}.remote-view[data-v-4d08ae52]{display:flex;align-items:center;justify-content:space-around}.local-view[data-v-4d08ae52]{right:0;margin:0 2vw 20px 1vw}.list-view[data-v-4d08ae52]>:last-child{margin-bottom:25px}.item-name-top[data-v-4d08ae52]{display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-size:15px}.item-name-top>div[data-v-4d08ae52]{max-width:calc((80vw - 80px) / 2 - 65px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.item-time[data-v-4d08ae52]{cursor:pointer}.item-expired[data-v-4d08ae52]{color:#fa4949}.item-parser[data-v-4d08ae52]{font-size:.8em}.item-time-now[data-v-4d08ae52]{color:#9eff71}.btns-container[data-v-4d08ae52]{display:flex;align-items:center;width:fit-content;justify-content:space-between}.confirm[data-v-4d08ae52]{height:45px;color:#fff;cursor:pointer;line-height:45px;text-align:center;background-color:#7e7b7b;border-radius:3px;padding-left:10px;padding-right:10px;font-size:.85em;box-shadow:0 2px 20px 2px rgba(50,50,50,.1);width:fit-content;white-space:nowrap}.confirm-left[data-v-4d08ae52]{padding:auto 30px}.confirm-right[data-v-4d08ae52]{margin-left:10px}.confirm-copy[data-v-4d08ae52]{border-radius:5px}.btn-error[data-v-4d08ae52]{background-color:#ec2658}.btn-success[data-v-4d08ae52]{background-color:#8ade4e}.btn-loading[data-v-4d08ae52]{box-shadow:2px 2px 5px 1px rgba(50,50,50,.1)}.hint-normal[data-v-4d08ae52]{text-align:center;font-size:1em;font-weight:500}.hint-error[data-v-4d08ae52]{color:#ec2658}.copy-icon[data-v-4d08ae52]{flex-shrink:0;height:45px;width:45px;padding:10px;background-color:#5e798b;cursor:pointer;box-shadow:0 0 2px 1px rgba(50,50,50,.2)}.clear-icon[data-v-4d08ae52]{height:45px;width:45px;padding:13px;position:absolute;right:50px}.rotating[data-v-4d08ae52]{animation:downloading-data-v-4d08ae52 1s infinite;animation-timing-function:linear}@keyframes downloading-data-v-4d08ae52{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}", ""])
}, function(e, t, i) {
    "use strict";
    i(227)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-connection-view-light[data-v-34dd3e44]{overflow:hidden;display:flex;justify-content:space-between;flex-direction:column;height:100%}.main-connection-view-light .header[data-v-34dd3e44]{height:40px;display:flex;justify-content:space-between;align-items:center;margin:auto 20px}.main-connection-view-light .header .search-area[data-v-34dd3e44]{position:relative;flex-grow:1;margin:0 10px}.main-connection-view-light .header .search-area .search-box[data-v-34dd3e44]{color:#000;padding:0 32px 0 12px;background-color:#f1f1f1;border:none;outline:none;height:25px;border-radius:50px;line-height:25px;font-size:14px;width:100%}.main-connection-view-light .header .search-area svg[data-v-34dd3e44]{position:absolute;right:0;height:100%;cursor:pointer;width:40px;padding:0 10px 0 15px}.main-connection-view-light .header .search-area svg [data-v-34dd3e44]{cursor:pointer}.main-connection-view-light .control-view[data-v-34dd3e44]{display:flex;padding:0 20px 10px 16px;justify-content:space-between;height:40px;border-bottom:1px solid #dcdcdc}.main-connection-view-light .control-view .labels[data-v-34dd3e44]{display:flex;align-items:center;color:#fff}.main-connection-view-light .control-view .labels .label[data-v-34dd3e44]{height:25px;font-size:14px;font-weight:400;margin:0 5px 0 0;padding:0 5px;line-height:25px;cursor:pointer;background-color:hsla(0,0%,39%,.5);border-radius:3px}.main-connection-view-light .control-view .labels .label-selected[data-v-34dd3e44]{background-color:rgba(14,184,65,.932)}.main-connection-view-dark[data-v-34dd3e44]{overflow:hidden;display:flex;justify-content:space-between;flex-direction:column;height:100%}.main-connection-view-dark .header[data-v-34dd3e44]{height:40px;display:flex;justify-content:space-between;align-items:center;margin:auto 20px}.main-connection-view-dark .header .search-area[data-v-34dd3e44]{position:relative;flex-grow:1;margin:0 10px}.main-connection-view-dark .header .search-area .search-box[data-v-34dd3e44]{color:#fff;padding:0 32px 0 12px;background-color:#606068;border:none;outline:none;height:25px;border-radius:50px;line-height:25px;font-size:14px;width:100%}.main-connection-view-dark .header .search-area svg[data-v-34dd3e44]{position:absolute;right:0;height:100%;cursor:pointer;width:40px;padding:0 10px 0 15px}.main-connection-view-dark .header .search-area svg [data-v-34dd3e44]{cursor:pointer}.main-connection-view-dark .control-view[data-v-34dd3e44]{display:flex;padding:0 20px 10px 16px;justify-content:space-between;height:40px;border-bottom:1px solid #554f4f}.main-connection-view-dark .control-view .labels[data-v-34dd3e44]{display:flex;align-items:center;color:#fff}.main-connection-view-dark .control-view .labels .label[data-v-34dd3e44]{height:25px;font-size:14px;font-weight:400;margin:0 5px 0 0;padding:0 5px;line-height:25px;cursor:pointer;background-color:hsla(0,0%,39%,.5);border-radius:3px}.main-connection-view-dark .control-view .labels .label-selected[data-v-34dd3e44]{background-color:rgba(14,184,65,.932)}.main-connection-view-red[data-v-34dd3e44]{overflow:hidden;display:flex;justify-content:space-between;flex-direction:column;height:100%}.main-connection-view-red .header[data-v-34dd3e44]{height:40px;display:flex;justify-content:space-between;align-items:center;margin:auto 20px}.main-connection-view-red .header .search-area[data-v-34dd3e44]{position:relative;flex-grow:1;margin:0 10px}.main-connection-view-red .header .search-area .search-box[data-v-34dd3e44]{color:#d33928;padding:0 32px 0 12px;background-color:#eda94c;border:none;outline:none;height:25px;border-radius:50px;line-height:25px;font-size:14px;width:100%}.main-connection-view-red .header .search-area svg[data-v-34dd3e44]{position:absolute;right:0;height:100%;cursor:pointer;width:40px;padding:0 10px 0 15px}.main-connection-view-red .header .search-area svg [data-v-34dd3e44]{cursor:pointer}.main-connection-view-red .control-view[data-v-34dd3e44]{display:flex;padding:0 20px 10px 16px;justify-content:space-between;height:40px;border-bottom:1px solid rgba(218,20,30,.247059)}.main-connection-view-red .control-view .labels[data-v-34dd3e44]{display:flex;align-items:center;color:#fff}.main-connection-view-red .control-view .labels .label[data-v-34dd3e44]{height:25px;font-size:14px;font-weight:400;margin:0 5px 0 0;padding:0 5px;line-height:25px;cursor:pointer;background-color:hsla(0,0%,39%,.5);border-radius:3px}.main-connection-view-red .control-view .labels .label-selected[data-v-34dd3e44]{background-color:rgba(14,184,65,.932)}.main-connection-view-2077[data-v-34dd3e44]{overflow:hidden;display:flex;justify-content:space-between;flex-direction:column;height:100%}.main-connection-view-2077 .header[data-v-34dd3e44]{height:40px;display:flex;justify-content:space-between;align-items:center;margin:auto 20px}.main-connection-view-2077 .header .search-area[data-v-34dd3e44]{position:relative;flex-grow:1;margin:0 10px}.main-connection-view-2077 .header .search-area .search-box[data-v-34dd3e44]{color:#fcec0c;padding:0 32px 0 12px;background-color:#084a5a;border:none;outline:none;height:25px;border-radius:50px;line-height:25px;font-size:14px;width:100%}.main-connection-view-2077 .header .search-area svg[data-v-34dd3e44]{position:absolute;right:0;height:100%;cursor:pointer;width:40px;padding:0 10px 0 15px}.main-connection-view-2077 .header .search-area svg [data-v-34dd3e44]{cursor:pointer}.main-connection-view-2077 .control-view[data-v-34dd3e44]{display:flex;padding:0 20px 10px 16px;justify-content:space-between;height:40px;border-bottom:1px solid rgba(6,145,180,.521569)}.main-connection-view-2077 .control-view .labels[data-v-34dd3e44]{display:flex;align-items:center;color:#fff}.main-connection-view-2077 .control-view .labels .label[data-v-34dd3e44]{height:25px;font-size:14px;font-weight:400;margin:0 5px 0 0;padding:0 5px;line-height:25px;cursor:pointer;background-color:hsla(0,0%,39%,.5);border-radius:3px}.main-connection-view-2077 .control-view .labels .label-selected[data-v-34dd3e44]{background-color:rgba(14,184,65,.932)}.title[data-v-34dd3e44]{height:40px;display:flex;align-items:center}.title div[data-v-34dd3e44]:first-child{font-size:20px;display:flex;align-items:baseline}.title div:first-child span[data-v-34dd3e44]{font-size:12px;margin-left:6px}.title div[data-v-34dd3e44]:last-child{height:30px;margin-left:5px;border-radius:20px}.title div:last-child svg[data-v-34dd3e44]{margin:5px;height:20px;width:20px;cursor:pointer}.title div[data-v-34dd3e44]:last-child:hover{background-color:hsla(0,0%,83%,.295)}.header-right[data-v-34dd3e44]{display:flex;align-items:center}.total-hint[data-v-34dd3e44]{font-size:15px;white-space:nowrap}.scroll-view-light[data-v-34dd3e44]{height:calc(100% - 60px);width:calc(100% - 0px);overflow-y:scroll}.scroll-view-light[data-v-34dd3e44]::-webkit-scrollbar{width:16px}.scroll-view-light[data-v-34dd3e44]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.scroll-view-dark[data-v-34dd3e44]{height:calc(100% - 60px);width:calc(100% - 0px);overflow-y:scroll}.scroll-view-dark[data-v-34dd3e44]::-webkit-scrollbar{width:16px}.scroll-view-dark[data-v-34dd3e44]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.scroll-view-red[data-v-34dd3e44]{height:calc(100% - 60px);width:calc(100% - 0px);overflow-y:scroll}.scroll-view-red[data-v-34dd3e44]::-webkit-scrollbar{width:16px}.scroll-view-red[data-v-34dd3e44]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.scroll-view-2077[data-v-34dd3e44]{height:calc(100% - 60px);width:calc(100% - 0px);overflow-y:scroll}.scroll-view-2077[data-v-34dd3e44]::-webkit-scrollbar{width:16px}.scroll-view-2077[data-v-34dd3e44]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.conn-item-light[data-v-34dd3e44]{border-bottom:1px solid hsla(0,0%,79%,.342)}.conn-item-dark[data-v-34dd3e44],.conn-item-light[data-v-34dd3e44]{padding:1px 20px;display:flex;justify-content:space-between;align-items:center}.conn-item-dark[data-v-34dd3e44]{border-bottom:1px solid #626262}.conn-item-red[data-v-34dd3e44]{border-bottom:1px solid rgba(218,20,30,.247059)}.conn-item-2077[data-v-34dd3e44],.conn-item-red[data-v-34dd3e44]{padding:1px 20px;display:flex;justify-content:space-between;align-items:center}.conn-item-2077[data-v-34dd3e44]{border-bottom:1px solid #626262}.conn-item-closed[data-v-34dd3e44]{opacity:.7}.conn-item-top[data-v-34dd3e44]{display:flex;justify-content:space-between}.conn-host[data-v-34dd3e44]{font-size:15px;font-weight:500}.close-btn[data-v-34dd3e44]{width:23px;height:23px;border-radius:15px;cursor:pointer;background-color:rgba(223,51,51,.876);color:#fff;opacity:.8}.close-btn [data-v-34dd3e44]{cursor:pointer}.close-btn[data-v-34dd3e44]:hover{opacity:1}.item-icon[data-v-34dd3e44]{width:19px;margin:2px;height:19px}.close-all-btn[data-v-34dd3e44]{padding:0 10px;margin-left:10px;text-align:center;height:30px;line-height:30px;cursor:pointer;background-color:rgba(243,61,61,.801);border-radius:3px;color:#fff}.conn-labels[data-v-34dd3e44]{font-size:12px;display:flex;margin-bottom:3px;flex-wrap:wrap}.conn-labels>div[data-v-34dd3e44]{margin-right:5px;margin-top:4px;padding:2px 4px;color:#fff;font-weight:400;border-radius:3px}.conn1[data-v-34dd3e44]{background-color:#c26819cc}.conn2[data-v-34dd3e44]{background-color:#c18310c5}.conn4[data-v-34dd3e44]{background-color:#559834ce}.conn3[data-v-34dd3e44]{background-color:#00864cc9}.conn5[data-v-34dd3e44]{background-color:#428ee4}.conn6[data-v-34dd3e44]{background-color:#4c10ae}.button-control[data-v-34dd3e44]{padding:0 10px;margin-right:10px;text-align:center;height:25px;font-weight:400;line-height:25px;cursor:pointer;border-radius:3px;color:#fff}.button-resume[data-v-34dd3e44]{background-color:rgba(14,151,185,.959)}.button-pause[data-v-34dd3e44]{background-color:rgba(243,61,61,.801)}", ""])
}, function(e, t, i) {
    "use strict";
    i(228)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.main-router-config-view[data-v-510e6d90]{background-color:rgba(50,50,50,.6);width:100%;height:100%;position:absolute;top:0;left:0;color:#000}.main-router-config-view .content[data-v-510e6d90]{border-radius:3px;background-color:#fff;width:500px;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);padding:20px;font-size:14px;font-weight:700}.main-router-config-view .content .title[data-v-510e6d90]{font-size:16px;margin-bottom:5px}.main-router-config-view .content .sec[data-v-510e6d90]{margin:10px 0;border-radius:3px;padding:5px 0}.main-router-config-view .content .sec .flex[data-v-510e6d90]{display:flex}.main-router-config-view .content .sec span[data-v-510e6d90]{margin-right:3px}.main-router-config-view .content .sec span[data-v-510e6d90]:after{content:" :"}.main-router-config-view .content .sec input[data-v-510e6d90]{text-align:center;width:120px;margin-right:20px;border:none;outline:none;font-weight:400;border-bottom:1px solid #c2c2c2}.main-router-config-view .content .btn[data-v-510e6d90]{background-color:#41b883;color:#fff;height:30px;line-height:30px;text-align:center;border-radius:3px}', ""])
}, function(e, t, i) {
    "use strict";
    i(229)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-router-view-light[data-v-e70fadb0]{height:100%;width:100%;position:relative}.main-router-view-light .header[data-v-e70fadb0]{height:80px;border-bottom:1px solid #dcdcdc;font-size:20px;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-router-view-light .header .btn[data-v-e70fadb0]{font-size:16px;padding:5px 15px;margin-right:10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;color:#fff}.main-router-view-light .header .btn-start[data-v-e70fadb0]{background-color:#535353}.main-router-view-light .header .btn-stop[data-v-e70fadb0]{background-color:#41b883}.main-router-view-light .list[data-v-e70fadb0]{font-size:16px;padding:20px 20px 20px 30px;height:calc(100% - 80px);overflow-y:scroll}.main-router-view-light .list[data-v-e70fadb0]::-webkit-scrollbar{width:16px}.main-router-view-light .list[data-v-e70fadb0]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.main-router-view-light .list .item[data-v-e70fadb0]{margin:10px 0;display:flex;align-items:center;justify-content:space-between}.main-router-view-light .list .item .left .name Input[data-v-e70fadb0]{font-size:16px;border:none;outline:none;background-color:#fff0;color:#000}.main-router-view-light .list .item .left .ip[data-v-e70fadb0]{font-size:12px;color:gray}.main-router-view-light .list .item .right[data-v-e70fadb0]{font-size:14px;display:flex;align-items:center}.main-router-view-light .list .item .right .btn[data-v-e70fadb0]{padding:5px 10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;background-color:hsla(0,0%,85%,.452);margin-left:10px}.main-router-view-dark[data-v-e70fadb0]{height:100%;width:100%;position:relative}.main-router-view-dark .header[data-v-e70fadb0]{height:80px;border-bottom:1px solid #554f4f;font-size:20px;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-router-view-dark .header .btn[data-v-e70fadb0]{font-size:16px;padding:5px 15px;margin-right:10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;color:#fff}.main-router-view-dark .header .btn-start[data-v-e70fadb0]{background-color:#535353}.main-router-view-dark .header .btn-stop[data-v-e70fadb0]{background-color:#41b883}.main-router-view-dark .list[data-v-e70fadb0]{font-size:16px;padding:20px 20px 20px 30px;height:calc(100% - 80px);overflow-y:scroll}.main-router-view-dark .list[data-v-e70fadb0]::-webkit-scrollbar{width:16px}.main-router-view-dark .list[data-v-e70fadb0]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.main-router-view-dark .list .item[data-v-e70fadb0]{margin:10px 0;display:flex;align-items:center;justify-content:space-between}.main-router-view-dark .list .item .left .name Input[data-v-e70fadb0]{font-size:16px;border:none;outline:none;background-color:#fff0;color:#fff}.main-router-view-dark .list .item .left .ip[data-v-e70fadb0]{font-size:12px;color:#a7a7a7}.main-router-view-dark .list .item .right[data-v-e70fadb0]{font-size:14px;display:flex;align-items:center}.main-router-view-dark .list .item .right .btn[data-v-e70fadb0]{padding:5px 10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;background-color:hsla(0,0%,85%,.452);margin-left:10px}.main-router-view-red[data-v-e70fadb0]{height:100%;width:100%;position:relative}.main-router-view-red .header[data-v-e70fadb0]{height:80px;border-bottom:1px solid rgba(218,20,30,.247059);font-size:20px;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-router-view-red .header .btn[data-v-e70fadb0]{font-size:16px;padding:5px 15px;margin-right:10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;color:#fff}.main-router-view-red .header .btn-start[data-v-e70fadb0]{background-color:#535353}.main-router-view-red .header .btn-stop[data-v-e70fadb0]{background-color:#41b883}.main-router-view-red .list[data-v-e70fadb0]{font-size:16px;padding:20px 20px 20px 30px;height:calc(100% - 80px);overflow-y:scroll}.main-router-view-red .list[data-v-e70fadb0]::-webkit-scrollbar{width:16px}.main-router-view-red .list[data-v-e70fadb0]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.main-router-view-red .list .item[data-v-e70fadb0]{margin:10px 0;display:flex;align-items:center;justify-content:space-between}.main-router-view-red .list .item .left .name Input[data-v-e70fadb0]{font-size:16px;border:none;outline:none;background-color:#fff0;color:#d33928}.main-router-view-red .list .item .left .ip[data-v-e70fadb0]{font-size:12px;color:#995e00}.main-router-view-red .list .item .right[data-v-e70fadb0]{font-size:14px;display:flex;align-items:center}.main-router-view-red .list .item .right .btn[data-v-e70fadb0]{padding:5px 10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;background-color:hsla(0,0%,85%,.452);margin-left:10px}.main-router-view-2077[data-v-e70fadb0]{height:100%;width:100%;position:relative}.main-router-view-2077 .header[data-v-e70fadb0]{height:80px;border-bottom:1px solid rgba(6,145,180,.521569);font-size:20px;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-router-view-2077 .header .btn[data-v-e70fadb0]{font-size:16px;padding:5px 15px;margin-right:10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;color:#fff}.main-router-view-2077 .header .btn-start[data-v-e70fadb0]{background-color:#535353}.main-router-view-2077 .header .btn-stop[data-v-e70fadb0]{background-color:#41b883}.main-router-view-2077 .list[data-v-e70fadb0]{font-size:16px;padding:20px 20px 20px 30px;height:calc(100% - 80px);overflow-y:scroll}.main-router-view-2077 .list[data-v-e70fadb0]::-webkit-scrollbar{width:16px}.main-router-view-2077 .list[data-v-e70fadb0]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.main-router-view-2077 .list .item[data-v-e70fadb0]{margin:10px 0;display:flex;align-items:center;justify-content:space-between}.main-router-view-2077 .list .item .left .name Input[data-v-e70fadb0]{font-size:16px;border:none;outline:none;background-color:#fff0;color:#fcec0c}.main-router-view-2077 .list .item .left .ip[data-v-e70fadb0]{font-size:12px;color:#bbb33f}.main-router-view-2077 .list .item .right[data-v-e70fadb0]{font-size:14px;display:flex;align-items:center}.main-router-view-2077 .list .item .right .btn[data-v-e70fadb0]{padding:5px 10px;text-align:center;font-weight:400;cursor:pointer;border-radius:3px;background-color:hsla(0,0%,85%,.452);margin-left:10px}", ""])
}, function(e, t, i) {
    "use strict";
    i(230)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-setting-section-light[data-v-f0b72b92]{margin:0 2% 10px;font-size:15px;width:96%}.main-setting-section-light .title[data-v-f0b72b92]{font-size:16px;height:34px;line-height:34px}.main-setting-section-light .content[data-v-f0b72b92]{background-color:#f1f1f1;padding:5px 15px;border-radius:3px}.main-setting-section-dark[data-v-f0b72b92]{margin:0 2% 10px;font-size:15px;width:96%}.main-setting-section-dark .title[data-v-f0b72b92]{font-size:16px;height:34px;line-height:34px}.main-setting-section-dark .content[data-v-f0b72b92]{background-color:#606068;padding:5px 15px;border-radius:3px}.main-setting-section-red[data-v-f0b72b92]{margin:0 2% 10px;font-size:15px;width:96%}.main-setting-section-red .title[data-v-f0b72b92]{font-size:16px;height:34px;line-height:34px}.main-setting-section-red .content[data-v-f0b72b92]{background-color:#eda94c;padding:5px 15px;border-radius:3px}.main-setting-section-2077[data-v-f0b72b92]{margin:0 2% 10px;font-size:15px;width:96%}.main-setting-section-2077 .title[data-v-f0b72b92]{font-size:16px;height:34px;line-height:34px}.main-setting-section-2077 .content[data-v-f0b72b92]{background-color:#084a5a;padding:5px 15px;border-radius:3px}", ""])
}, function(e, t, i) {
    "use strict";
    i(231)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "input[data-v-4b964f25]::-webkit-inner-spin-button,input[data-v-4b964f25]::-webkit-outer-spin-button{-webkit-appearance:none}.main-key-capture-light[data-v-4b964f25]{position:relative;width:200px}.main-key-capture-light input[data-v-4b964f25]{width:100%;text-align:center;border:none;outline-style:none;background-color:#fff;color:#000;height:26px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-key-capture-light input[data-v-4b964f25]::placeholder{color:#a3a3a3}.main-key-capture-light .suffix[data-v-4b964f25]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:#747d88;font-size:13px}.main-key-capture-light .hint[data-v-4b964f25]{position:absolute;font-size:12px;top:0;padding:0 10px;border-radius:13px;height:26px;line-height:26px;text-align:center;color:#fff;background-color:#535353;opacity:1;transform:translateX(calc(-100% - 10px));transition:all .3s}.main-key-capture-light .hint-hide[data-v-4b964f25]{opacity:0}.main-key-capture-dark[data-v-4b964f25]{position:relative;width:200px}.main-key-capture-dark input[data-v-4b964f25]{width:100%;text-align:center;border:none;outline-style:none;background-color:rgba(46,46,46,.822);color:#fff;height:26px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-key-capture-dark input[data-v-4b964f25]::placeholder{color:#a3a3a3}.main-key-capture-dark .suffix[data-v-4b964f25]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:#d4d4d4;font-size:13px}.main-key-capture-dark .hint[data-v-4b964f25]{position:absolute;font-size:12px;top:0;padding:0 10px;border-radius:13px;height:26px;line-height:26px;text-align:center;color:#fff;background-color:#535353;opacity:1;transform:translateX(calc(-100% - 10px));transition:all .3s}.main-key-capture-dark .hint-hide[data-v-4b964f25]{opacity:0}.main-key-capture-red[data-v-4b964f25]{position:relative;width:200px}.main-key-capture-red input[data-v-4b964f25]{width:100%;text-align:center;border:none;outline-style:none;background-color:#d39126;color:#d33928;height:26px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-key-capture-red input[data-v-4b964f25]::placeholder{color:#cfcfcf}.main-key-capture-red .suffix[data-v-4b964f25]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:rgba(218,20,30,.796078);font-size:13px}.main-key-capture-red .hint[data-v-4b964f25]{position:absolute;font-size:12px;top:0;padding:0 10px;border-radius:13px;height:26px;line-height:26px;text-align:center;color:#fff;background-color:#535353;opacity:1;transform:translateX(calc(-100% - 10px));transition:all .3s}.main-key-capture-red .hint-hide[data-v-4b964f25]{opacity:0}.main-key-capture-2077[data-v-4b964f25]{position:relative;width:200px}.main-key-capture-2077 input[data-v-4b964f25]{width:100%;text-align:center;border:none;outline-style:none;background-color:rgba(2,45,53,.822);color:#fcec0c;height:26px;box-shadow:1px 1px 4px 1px rgba(50,50,50,.04);border-radius:2px}.main-key-capture-2077 input[data-v-4b964f25]::placeholder{color:#a3a3a3}.main-key-capture-2077 .suffix[data-v-4b964f25]{position:absolute;right:10px;top:0;height:25px;line-height:25px;color:#c79707;font-size:13px}.main-key-capture-2077 .hint[data-v-4b964f25]{position:absolute;font-size:12px;top:0;padding:0 10px;border-radius:13px;height:26px;line-height:26px;text-align:center;color:#fff;background-color:#535353;opacity:1;transform:translateX(calc(-100% - 10px));transition:all .3s}.main-key-capture-2077 .hint-hide[data-v-4b964f25]{opacity:0}", ""])
}, function(e, t, i) {
    "use strict";
    i(232)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-more-hint-light[data-v-3ddd8481]{display:flex;align-items:center}.main-more-hint-light .text[data-v-3ddd8481]{color:#747d88;font-size:13px}.main-more-hint-light .tirangle[data-v-3ddd8481]{width:0;height:0;margin-left:5px;margin-top:2px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid #747d88}.main-more-hint-dark[data-v-3ddd8481]{display:flex;align-items:center}.main-more-hint-dark .text[data-v-3ddd8481]{color:#d4d4d4;font-size:13px}.main-more-hint-dark .tirangle[data-v-3ddd8481]{width:0;height:0;margin-left:5px;margin-top:2px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid #d4d4d4}.main-more-hint-red[data-v-3ddd8481]{display:flex;align-items:center}.main-more-hint-red .text[data-v-3ddd8481]{color:rgba(218,20,30,.796078);font-size:13px}.main-more-hint-red .tirangle[data-v-3ddd8481]{width:0;height:0;margin-left:5px;margin-top:2px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid rgba(218,20,30,.796078)}.main-more-hint-2077[data-v-3ddd8481]{display:flex;align-items:center}.main-more-hint-2077 .text[data-v-3ddd8481]{color:#c79707;font-size:13px}.main-more-hint-2077 .tirangle[data-v-3ddd8481]{width:0;height:0;margin-left:5px;margin-top:2px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid #c79707}", ""])
}, function(e, t, i) {
    "use strict";
    i(233)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-settings-separator-light[data-v-0d6d5378]{height:1px;width:100%;opacity:.5;background-color:#cac8c6;margin:5px auto}.main-settings-separator-dark[data-v-0d6d5378]{height:1px;width:100%;opacity:.5;background-color:#4d4d5a;margin:5px auto}.main-settings-separator-red[data-v-0d6d5378]{height:1px;width:100%;opacity:.5;background-color:rgba(183,46,41,.643137);margin:5px auto}.main-settings-separator-2077[data-v-0d6d5378]{height:1px;width:100%;opacity:.5;background-color:rgba(238,222,0,.796078);margin:5px auto}", ""])
}, function(e, t, i) {
    "use strict";
    i(234)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".tray-order-main-light[data-v-459d2b96]{display:flex;align-items:center;font-size:13px}.tray-order-main-light .title[data-v-459d2b96]{margin-right:5px}.tray-order-main-light .list[data-v-459d2b96]{height:28px;display:flex;justify-content:center;align-items:center;min-width:40px;border-radius:3px;background-color:#e2e2e2;padding:3px 5px}.tray-order-main-light .list img[data-v-459d2b96]{-webkit-user-drag:element;display:flex;align-items:center;justify-content:center;height:16px;margin:0 2px}.tray-order-main-light .left-list[data-v-459d2b96]{margin-right:10px}.tray-order-main-dark[data-v-459d2b96]{display:flex;align-items:center;font-size:13px}.tray-order-main-dark .title[data-v-459d2b96]{margin-right:5px}.tray-order-main-dark .list[data-v-459d2b96]{height:28px;display:flex;justify-content:center;align-items:center;min-width:40px;border-radius:3px;background-color:#e2e2e2;padding:3px 5px}.tray-order-main-dark .list img[data-v-459d2b96]{-webkit-user-drag:element;display:flex;align-items:center;justify-content:center;height:16px;margin:0 2px}.tray-order-main-dark .left-list[data-v-459d2b96]{margin-right:10px}.tray-order-main-red[data-v-459d2b96]{display:flex;align-items:center;font-size:13px}.tray-order-main-red .title[data-v-459d2b96]{margin-right:5px}.tray-order-main-red .list[data-v-459d2b96]{height:28px;display:flex;justify-content:center;align-items:center;min-width:40px;border-radius:3px;background-color:#e2e2e2;padding:3px 5px}.tray-order-main-red .list img[data-v-459d2b96]{-webkit-user-drag:element;display:flex;align-items:center;justify-content:center;height:16px;margin:0 2px}.tray-order-main-red .left-list[data-v-459d2b96]{margin-right:10px}.tray-order-main-2077[data-v-459d2b96]{display:flex;align-items:center;font-size:13px}.tray-order-main-2077 .title[data-v-459d2b96]{margin-right:5px}.tray-order-main-2077 .list[data-v-459d2b96]{height:28px;display:flex;justify-content:center;align-items:center;min-width:40px;border-radius:3px;background-color:#e2e2e2;padding:3px 5px}.tray-order-main-2077 .list img[data-v-459d2b96]{-webkit-user-drag:element;display:flex;align-items:center;justify-content:center;height:16px;margin:0 2px}.tray-order-main-2077 .left-list[data-v-459d2b96]{margin-right:10px}", ""])
}, function(e, t, i) {
    "use strict";
    i(235)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-setting-view-light[data-v-371dba32]{height:100%}.main-setting-view-light .blur[data-v-371dba32]{filter:blur(15px)}.main-setting-view-light .title[data-v-371dba32]{height:80px;border-bottom:1px solid #dcdcdc;font-size:20px;background-color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-setting-view-light .title .btns[data-v-371dba32]{height:100%;display:flex;align-items:center}.main-setting-view-light .title .btns .btn[data-v-371dba32]{cursor:pointer;font-size:14px;color:#fa1313;font-weight:400;padding:5px 15px;border-radius:3px;background-color:#f1f1f1}.main-setting-view-light .content[data-v-371dba32]{overflow-y:scroll;padding:10px 10px 20px;height:calc(100% - 80px)}.main-setting-view-light .content[data-v-371dba32]::-webkit-scrollbar{width:16px}.main-setting-view-light .content[data-v-371dba32]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.main-setting-view-light .quit-btns[data-v-371dba32]{display:flex;align-items:center;justify-content:center;margin-top:30px}.main-setting-view-light .quit-btns .btn[data-v-371dba32]{background-color:rgba(255,30,0,.8);margin:0 7px;padding:5px 20px;color:#fff;border-radius:3px;font-size:14px;text-align:center}.main-setting-view-light .item[data-v-371dba32]{font-weight:400;display:flex;justify-content:space-between;align-items:center;height:35px}.main-setting-view-light .item .short-input[data-v-371dba32]{width:190px}.main-setting-view-light .item .shorter-input[data-v-371dba32]{width:156px}.main-setting-view-light .item .hint[data-v-371dba32]{margin-left:10px}.main-setting-view-light .item .interface-hint[data-v-371dba32]{margin-right:10px}.main-setting-view-light .edit-hint[data-v-371dba32]{background-color:rgba(0,0,0,.4);position:fixed;top:25px;width:calc(100% - 170px);height:calc(100vh - 25px);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.main-setting-view-light .edit-hint div[data-v-371dba32]:first-child{font-size:20px}.main-setting-view-light .edit-hint div[data-v-371dba32]:nth-child(2){font-size:16px;margin-top:20px}.main-setting-view-light .edit-hint .btn[data-v-371dba32]{font-size:18px;margin-top:40px;background-color:rgba(26,26,26,.7);padding:4px 12px;border-radius:3px;cursor:pointer}.main-setting-view-dark[data-v-371dba32]{height:100%}.main-setting-view-dark .blur[data-v-371dba32]{filter:blur(15px)}.main-setting-view-dark .title[data-v-371dba32]{height:80px;border-bottom:1px solid #554f4f;font-size:20px;background-color:#2c2a38;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-setting-view-dark .title .btns[data-v-371dba32]{height:100%;display:flex;align-items:center}.main-setting-view-dark .title .btns .btn[data-v-371dba32]{cursor:pointer;font-size:14px;color:#ff5f5f;font-weight:400;padding:5px 15px;border-radius:3px;background-color:#606068}.main-setting-view-dark .content[data-v-371dba32]{overflow-y:scroll;padding:10px 10px 20px;height:calc(100% - 80px)}.main-setting-view-dark .content[data-v-371dba32]::-webkit-scrollbar{width:16px}.main-setting-view-dark .content[data-v-371dba32]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.main-setting-view-dark .quit-btns[data-v-371dba32]{display:flex;align-items:center;justify-content:center;margin-top:30px}.main-setting-view-dark .quit-btns .btn[data-v-371dba32]{background-color:rgba(255,30,0,.8);margin:0 7px;padding:5px 20px;color:#fff;border-radius:3px;font-size:14px;text-align:center}.main-setting-view-dark .item[data-v-371dba32]{font-weight:400;display:flex;justify-content:space-between;align-items:center;height:35px}.main-setting-view-dark .item .short-input[data-v-371dba32]{width:190px}.main-setting-view-dark .item .shorter-input[data-v-371dba32]{width:156px}.main-setting-view-dark .item .hint[data-v-371dba32]{margin-left:10px}.main-setting-view-dark .item .interface-hint[data-v-371dba32]{margin-right:10px}.main-setting-view-dark .edit-hint[data-v-371dba32]{background-color:rgba(0,0,0,.4);position:fixed;top:25px;width:calc(100% - 170px);height:calc(100vh - 25px);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.main-setting-view-dark .edit-hint div[data-v-371dba32]:first-child{font-size:20px}.main-setting-view-dark .edit-hint div[data-v-371dba32]:nth-child(2){font-size:16px;margin-top:20px}.main-setting-view-dark .edit-hint .btn[data-v-371dba32]{font-size:18px;margin-top:40px;background-color:rgba(26,26,26,.7);padding:4px 12px;border-radius:3px;cursor:pointer}.main-setting-view-red[data-v-371dba32]{height:100%}.main-setting-view-red .blur[data-v-371dba32]{filter:blur(15px)}.main-setting-view-red .title[data-v-371dba32]{height:80px;border-bottom:1px solid rgba(218,20,30,.247059);font-size:20px;background-color:#f8b74f;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-setting-view-red .title .btns[data-v-371dba32]{height:100%;display:flex;align-items:center}.main-setting-view-red .title .btns .btn[data-v-371dba32]{cursor:pointer;font-size:14px;color:red;font-weight:400;padding:5px 15px;border-radius:3px;background-color:#eda94c}.main-setting-view-red .content[data-v-371dba32]{overflow-y:scroll;padding:10px 10px 20px;height:calc(100% - 80px)}.main-setting-view-red .content[data-v-371dba32]::-webkit-scrollbar{width:16px}.main-setting-view-red .content[data-v-371dba32]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.main-setting-view-red .quit-btns[data-v-371dba32]{display:flex;align-items:center;justify-content:center;margin-top:30px}.main-setting-view-red .quit-btns .btn[data-v-371dba32]{background-color:rgba(255,30,0,.8);margin:0 7px;padding:5px 20px;color:#fff;border-radius:3px;font-size:14px;text-align:center}.main-setting-view-red .item[data-v-371dba32]{font-weight:400;display:flex;justify-content:space-between;align-items:center;height:35px}.main-setting-view-red .item .short-input[data-v-371dba32]{width:190px}.main-setting-view-red .item .shorter-input[data-v-371dba32]{width:156px}.main-setting-view-red .item .hint[data-v-371dba32]{margin-left:10px}.main-setting-view-red .item .interface-hint[data-v-371dba32]{margin-right:10px}.main-setting-view-red .edit-hint[data-v-371dba32]{background-color:rgba(0,0,0,.4);position:fixed;top:25px;width:calc(100% - 170px);height:calc(100vh - 25px);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.main-setting-view-red .edit-hint div[data-v-371dba32]:first-child{font-size:20px}.main-setting-view-red .edit-hint div[data-v-371dba32]:nth-child(2){font-size:16px;margin-top:20px}.main-setting-view-red .edit-hint .btn[data-v-371dba32]{font-size:18px;margin-top:40px;background-color:rgba(26,26,26,.7);padding:4px 12px;border-radius:3px;cursor:pointer}.main-setting-view-2077[data-v-371dba32]{height:100%}.main-setting-view-2077 .blur[data-v-371dba32]{filter:blur(15px)}.main-setting-view-2077 .title[data-v-371dba32]{height:80px;border-bottom:1px solid rgba(6,145,180,.521569);font-size:20px;background-color:#136377;display:flex;justify-content:space-between;align-items:center;padding:0 20px}.main-setting-view-2077 .title .btns[data-v-371dba32]{height:100%;display:flex;align-items:center}.main-setting-view-2077 .title .btns .btn[data-v-371dba32]{cursor:pointer;font-size:14px;color:#ff5f5f;font-weight:400;padding:5px 15px;border-radius:3px;background-color:#084a5a}.main-setting-view-2077 .content[data-v-371dba32]{overflow-y:scroll;padding:10px 10px 20px;height:calc(100% - 80px)}.main-setting-view-2077 .content[data-v-371dba32]::-webkit-scrollbar{width:16px}.main-setting-view-2077 .content[data-v-371dba32]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.main-setting-view-2077 .quit-btns[data-v-371dba32]{display:flex;align-items:center;justify-content:center;margin-top:30px}.main-setting-view-2077 .quit-btns .btn[data-v-371dba32]{background-color:rgba(255,30,0,.8);margin:0 7px;padding:5px 20px;color:#fff;border-radius:3px;font-size:14px;text-align:center}.main-setting-view-2077 .item[data-v-371dba32]{font-weight:400;display:flex;justify-content:space-between;align-items:center;height:35px}.main-setting-view-2077 .item .short-input[data-v-371dba32]{width:190px}.main-setting-view-2077 .item .shorter-input[data-v-371dba32]{width:156px}.main-setting-view-2077 .item .hint[data-v-371dba32]{margin-left:10px}.main-setting-view-2077 .item .interface-hint[data-v-371dba32]{margin-right:10px}.main-setting-view-2077 .edit-hint[data-v-371dba32]{background-color:rgba(0,0,0,.4);position:fixed;top:25px;width:calc(100% - 170px);height:calc(100vh - 25px);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.main-setting-view-2077 .edit-hint div[data-v-371dba32]:first-child{font-size:20px}.main-setting-view-2077 .edit-hint div[data-v-371dba32]:nth-child(2){font-size:16px;margin-top:20px}.main-setting-view-2077 .edit-hint .btn[data-v-371dba32]{font-size:18px;margin-top:40px;background-color:rgba(26,26,26,.7);padding:4px 12px;border-radius:3px;cursor:pointer}", ""])
}, function(e, t, i) {
    "use strict";
    i(236)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".ad-img[data-v-65724216]{max-width:630px;height:150px;border-radius:3px}.placeholder[data-v-65724216]{line-height:150px;color:#fff;width:630px;background-color:#e2e2e2;display:flex;align-items:center;justify-content:center}.placeholder div[data-v-65724216]{margin-right:10px;color:#fff}.placeholder img[data-v-65724216]{width:30px}.error-img[data-v-65724216]{display:flex;width:630px;height:150px;background-color:#e2e2e2;align-items:center;justify-content:center}.error-img div[data-v-65724216]{margin-right:10px;color:#858585}.error-img img[data-v-65724216]{width:30px}.twinkling[data-v-65724216]{animation:twinkling-data-v-65724216 2s infinite;animation-timing-function:ease-in-out}@keyframes twinkling-data-v-65724216{0%{background-color:#e9e9e9}50%{background-color:#d4d4d4}to{background-color:#e9e9e9}}", ""])
}, function(e, t, i) {
    "use strict";
    i(237)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".chat-item-light[data-v-787e70b2]{cursor:pointer;margin-right:15px;color:#019ff5}.chat-item-dark[data-v-787e70b2]{cursor:pointer;margin-right:15px;color:#1788c5}.chat-item-red[data-v-787e70b2]{cursor:pointer;margin-right:15px;color:#b72d29}.chat-item-2077[data-v-787e70b2]{cursor:pointer;margin-right:15px;color:#a5dbe9}.chat-list[data-v-787e70b2]{display:flex;justify-content:left;flex-wrap:wrap}", ""])
}, function(e, t, i) {
    "use strict";
    i(238)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "#main-about-view[data-v-787e70b2]{padding:0 30px}.section[data-v-787e70b2]{margin:10px 0}.ad-section[data-v-787e70b2]{margin:13px 0 0}.title[data-v-787e70b2]{margin-bottom:0;font-size:1.1em}.ad-img-list[data-v-787e70b2]{display:flex;flex-direction:column;justify-content:space-between;margin-top:10px;height:315px}", ""])
}, function(e, t, i) {
    var n = i(373);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3d73fb4a", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-aria-container{position:absolute;left:-999em}", ""])
}, function(e, t, i) {
    var n = i(375);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2e61e6d5", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-custom-checkbox{margin-left:2px;float:left;cursor:pointer;overflow:hidden;opacity:.7;width:20px;height:20px;border:1px solid transparent;padding:1px;box-sizing:border-box;user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-custom-checkbox.checked,.monaco-custom-checkbox:hover{opacity:1}.hc-black .monaco-custom-checkbox,.hc-black .monaco-custom-checkbox:hover{background:none}.monaco-custom-checkbox.monaco-simple-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px!important}.monaco-custom-checkbox.monaco-simple-checkbox:not(.checked):before{visibility:hidden}", ""])
}, function(e, t, i) {
    var n = i(377);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3a529e35", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ':root{--sash-size:4px}.monaco-sash{position:absolute;z-index:35;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;top:0;width:var(--sash-size);height:100%}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:var(--sash-size)}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";height:calc(var(--sash-size) * 2);width:calc(var(--sash-size) * 2);z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--sash-size) * -.5);top:calc(var(--sash-size) * -1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{left:calc(var(--sash-size) * -.5);bottom:calc(var(--sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{top:calc(var(--sash-size) * -.5);left:calc(var(--sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{top:calc(var(--sash-size) * -.5);right:calc(var(--sash-size) * -1)}.monaco-sash:before{content:"";pointer-events:none;position:absolute;width:100%;height:100%;transition:background-color .1s ease-out;background:transparent}.monaco-sash.vertical:before{width:var(--sash-hover-size);left:calc(50% - (var(--sash-hover-size) / 2))}.monaco-sash.horizontal:before{height:var(--sash-hover-size);top:calc(50% - (var(--sash-hover-size) / 2))}.monaco-sash.debug{background:cyan}.monaco-sash.debug.disabled{background:rgba(0,255,255,.2)}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}', ""])
}, function(e, t, i) {
    var n = i(379);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("4c3c2b86", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .find-widget{position:absolute;z-index:35;height:33px;overflow:hidden;line-height:19px;transition:transform .2s linear;padding:0 4px;box-sizing:border-box;transform:translateY(calc(-100% - 10px))}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:4px 0 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:flex;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{display:flex;flex:initial;margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button{width:16px;height:16px;padding:3px;border-radius:5px;flex:initial;margin-left:3px;background-position:50%;background-repeat:no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center}.monaco-editor .find-widget .codicon-find-selection{width:22px;height:22px;padding:3px;border-radius:5px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:3px;width:18px;height:100%;border-radius:0;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{opacity:.3;cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:flex;vertical-align:middle;flex:auto;flex-grow:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}", ""])
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{display:flex;margin:0 auto;padding:0;height:100%;width:100%;align-items:center}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{display:block;align-items:center;justify-content:center;cursor:pointer;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{display:flex;align-items:center;width:16px;height:16px}.monaco-action-bar .action-label{font-size:11px;padding:3px;border-radius:5px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.4}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:.8em;margin-right:.8em}.monaco-action-bar .action-item .action-label.separator{width:1px;height:16px;margin:5px 4px!important;cursor:default;min-width:1px;padding:0;background-color:#bbb}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;flex:1;max-width:170px;min-width:60px;display:flex;align-items:center;justify-content:center;margin-right:10px}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-label{margin-right:1px}", ""])
}, function(e, t, i) {
    var n = i(382);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("77a3beb2", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;background:transparent;transition:opacity .1s linear}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}", ""])
}, function(e, t, i) {
    var n = i(384);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("8e50da5a", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-inputbox{position:relative;display:block;padding:0;box-sizing:border-box;font-size:inherit}.monaco-inputbox.idle{border:1px solid transparent}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px}.monaco-inputbox>.ibwrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.ibwrapper>.input{display:inline-block;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;-ms-overflow-style:none;scrollbar-width:none;outline:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;box-sizing:border-box;padding:.4em;font-size:12px;line-height:17px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}", ""])
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}", ""])
}, function(e, t, i) {
    var n = i(387);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("73b862ee", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.monaco-editor{font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif;--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{position:absolute!important;top:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%)}.monaco-editor.hc-black{-ms-high-contrast-adjust:none}@media screen and (-ms-high-contrast:active){.monaco-editor.vs-dark .view-overlays .current-line,.monaco-editor.vs .view-overlays .current-line{border-color:windowtext!important;border-left:0;border-right:0}.monaco-editor.vs-dark .cursor,.monaco-editor.vs .cursor{background-color:windowtext!important}.monaco-editor.vs-dark .dnd-target,.monaco-editor.vs .dnd-target{border-color:windowtext!important}.monaco-editor.vs-dark .selected-text,.monaco-editor.vs .selected-text{background-color:highlight!important}.monaco-editor.vs-dark .view-line,.monaco-editor.vs .view-line{-ms-high-contrast-adjust:none}.monaco-editor.vs-dark .view-line span,.monaco-editor.vs .view-line span{color:windowtext!important}.monaco-editor.vs-dark .view-line span.inline-selected-text,.monaco-editor.vs .view-line span.inline-selected-text{color:highlighttext!important}.monaco-editor.vs-dark .view-overlays,.monaco-editor.vs .view-overlays{-ms-high-contrast-adjust:none}.monaco-editor.vs-dark .reference-decoration,.monaco-editor.vs-dark .selectionHighlight,.monaco-editor.vs-dark .wordHighlight,.monaco-editor.vs-dark .wordHighlightStrong,.monaco-editor.vs .reference-decoration,.monaco-editor.vs .selectionHighlight,.monaco-editor.vs .wordHighlight,.monaco-editor.vs .wordHighlightStrong{border:2px dotted highlight!important;background:transparent!important;box-sizing:border-box}.monaco-editor.vs-dark .rangeHighlight,.monaco-editor.vs .rangeHighlight{background:transparent!important;border:1px dotted activeborder!important;box-sizing:border-box}.monaco-editor.vs-dark .bracket-match,.monaco-editor.vs .bracket-match{border-color:windowtext!important;background:transparent!important}.monaco-editor.vs-dark .currentFindMatch,.monaco-editor.vs-dark .findMatch,.monaco-editor.vs .currentFindMatch,.monaco-editor.vs .findMatch{border:2px dotted activeborder!important;background:transparent!important;box-sizing:border-box}.monaco-editor.vs-dark .find-widget,.monaco-editor.vs .find-widget{border:1px solid windowtext}.monaco-editor.vs-dark .monaco-list .monaco-list-row,.monaco-editor.vs .monaco-list .monaco-list-row{-ms-high-contrast-adjust:none;color:windowtext!important}.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused,.monaco-editor.vs .monaco-list .monaco-list-row.focused{color:highlighttext!important;background-color:highlight!important}.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover,.monaco-editor.vs .monaco-list .monaco-list-row:hover{background:transparent!important;border:1px solid highlight;box-sizing:border-box}.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar,.monaco-editor.vs .monaco-scrollable-element>.scrollbar{-ms-high-contrast-adjust:none;background:background!important;border:1px solid windowtext;box-sizing:border-box}.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider{background:windowtext!important}.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider.active,.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider:hover,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider.active,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider:hover{background:highlight!important}.monaco-editor.vs-dark .decorationsOverviewRuler,.monaco-editor.vs .decorationsOverviewRuler{opacity:0}.monaco-editor.vs-dark .minimap,.monaco-editor.vs .minimap{display:none}.monaco-editor.vs-dark .squiggly-d-error,.monaco-editor.vs .squiggly-d-error{background:transparent!important;border-bottom:4px double #e47777}.monaco-editor.vs-dark .squiggly-b-info,.monaco-editor.vs-dark .squiggly-c-warning,.monaco-editor.vs .squiggly-b-info,.monaco-editor.vs .squiggly-c-warning{border-bottom:4px double #71b771}.monaco-editor.vs-dark .squiggly-a-hint,.monaco-editor.vs .squiggly-a-hint{border-bottom:4px double #6c6c6c}.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label{-ms-high-contrast-adjust:none;color:highlighttext!important;background-color:highlight!important}.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label{-ms-high-contrast-adjust:none;background:transparent!important;border:1px solid highlight;box-sizing:border-box}.monaco-diff-editor.vs-dark .diffOverviewRuler,.monaco-diff-editor.vs .diffOverviewRuler{display:none}.monaco-editor.vs-dark .line-delete,.monaco-editor.vs-dark .line-insert,.monaco-editor.vs .line-delete,.monaco-editor.vs .line-insert{background:transparent!important;border:1px solid highlight!important;box-sizing:border-box}.monaco-editor.vs-dark .char-delete,.monaco-editor.vs-dark .char-insert,.monaco-editor.vs .char-delete,.monaco-editor.vs .char-insert{background:transparent!important}}', ""])
}, function(e, t, i) {
    var n = i(389);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("ff930204", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, "::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}", ""])
}, function(e, t, i) {
    var n = i(391);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("4e3582ac", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none!important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent}.monaco-editor .inputarea.ime-input{z-index:10}", ""])
}, function(e, t, i) {
    var n = i(393);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("b6a02bd2", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .margin-view-overlays .line-numbers{font-variant-numeric:tabular-nums;position:absolute;text-align:right;display:inline-block;vertical-align:middle;box-sizing:border-box;cursor:default;height:100%}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}", ""])
}, function(e, t, i) {
    var n = i(395);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("6d4a0b29", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-mouse-cursor-text{cursor:text}.hc-black.mac .monaco-mouse-cursor-text,.hc-black .mac .monaco-mouse-cursor-text,.vs-dark.mac .monaco-mouse-cursor-text,.vs-dark .mac .monaco-mouse-cursor-text{cursor:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8,text}", ""])
}, function(e, t, i) {
    var n = i(397);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("6e373848", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{display:block;position:absolute;left:0;top:0;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}", ""])
}, function(e, t, i) {
    var n = i(399);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("021e0744", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .lines-content .cdr{position:absolute}", ""])
}, function(e, t, i) {
    var n = i(401);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("5d17f6db", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .margin-view-overlays .cgmr{position:absolute;display:flex;align-items:center;justify-content:center}", ""])
}, function(e, t, i) {
    var n = i(403);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2710e980", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .lines-content .core-guide{position:absolute;box-sizing:border-box}", ""])
}, function(e, t, i) {
    var n = i(405);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("5ba0a660", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".mtkcontrol{color:#fff!important;background:#960000!important}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkz{display:inline-block}", ""])
}, function(e, t, i) {
    var n = i(407);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("58e5f13f", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}", ""])
}, function(e, t, i) {
    var n = i(409);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2a724df6", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}", ""])
}, function(e, t, i) {
    var n = i(411);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("00911a66", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{position:absolute;left:-1px;width:1px}", ""])
}, function(e, t, i) {
    var n = i(413);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("8e4cf978", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .overlayWidgets{position:absolute;top:0;left:0}", ""])
}, function(e, t, i) {
    var n = i(415);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2dad93c6", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .view-ruler{position:absolute;top:0}", ""])
}, function(e, t, i) {
    var n = i(417);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("24e408a6", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px}", ""])
}, function(e, t, i) {
    var n = i(419);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("4091ce1c", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}", ""])
}, function(e, t, i) {
    var n = i(421);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("19ee8719", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;overflow:hidden}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{box-sizing:border-box;background:transparent!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent!important;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent!important;box-sizing:border-box}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}", ""])
}, function(e, t, i) {
    var n = i(423);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("2968c9de", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:rgba(0,0,0,.03)}.monaco-diff-editor.vs-dark .diffOverview{background:hsla(0,0%,100%,.01)}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar{background:transparent}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:hsla(0,0%,67%,.4)}.modified-in-monaco-diff-editor.hc-black .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{font-size:11px!important;opacity:.7!important;display:flex!important;align-items:center}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}", ""])
}, function(e, t, i) {
    var n = i(425);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("b88f7404", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-diff-editor .diff-review-line-number{text-align:right;display:inline-block}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;width:10px;vertical-align:middle}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px}.monaco-diff-editor .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}", ""])
}, function(e, t, i) {
    var n = i(427);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("744717be", n, !0, {})
}, function(e, t, i) {
    var n = i(428);
    (e.exports = i(24)(!1)).push([e.i, "@font-face{font-family:codicon;font-display:block;src:url(" + n(i(429)) + ') format("truetype")}.codicon[class*=codicon-]{font:normal normal normal 16px/1 codicon;display:inline-block;text-decoration:none;text-rendering:auto;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none;-ms-user-select:none}', ""])
}, function(e, t) {
    e.exports = function(e) {
        return "string" != typeof e ? e : (/^['"].*['"]$/.test(e) && (e = e.slice(1, -1)), /["'() \t\n]/.test(e) ? '"' + e.replace(/"/g, '\\"').replace(/\n/g, "\\n") + '"' : e)
    }
}, function(e, t, i) {
    e.exports = i.p + "fonts/codicon--codicon.ttf"
}, function(e, t, i) {
    var n = i(431);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("a3180c7e", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}", ""])
}, function(e, t, i) {
    var n = i(433);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("e383fdd8", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".context-view{position:absolute;z-index:2500}.context-view.fixed{all:initial;font-family:inherit;font-size:13px;position:fixed;z-index:2500;color:inherit}", ""])
}, function(e, t, i) {
    var n = i(435);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("5dfc30d8", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".context-view .monaco-menu{min-width:130px}", ""])
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none;-ms-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute;z-index:1000}.monaco-list-type-filter{display:flex;align-items:center;position:absolute;border-radius:2px;padding:0 3px;max-width:calc(100% - 10px);text-overflow:ellipsis;overflow:hidden;text-align:right;box-sizing:border-box;cursor:all-scroll;font-size:13px;line-height:18px;height:20px;z-index:1;top:4px}.monaco-list-type-filter.dragging{transition:top .2s,left .2s}.monaco-list-type-filter.ne{right:4px}.monaco-list-type-filter.nw{left:4px}.monaco-list-type-filter>.controls{display:flex;align-items:center;box-sizing:border-box;transition:width .2s;width:0}.monaco-list-type-filter.dragging>.controls,.monaco-list-type-filter:hover>.controls{width:36px}.monaco-list-type-filter>.controls>*{border:none;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;background:none;width:16px;height:16px;flex-shrink:0;margin:0;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer}.monaco-list-type-filter>.controls>.filter{margin-left:4px}.monaco-list-type-filter-message{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em;text-align:center;white-space:normal;opacity:.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-list-type-filter{cursor:grab}.monaco-list-type-filter.dragging{cursor:grabbing}", ""])
}, function(e, t, i) {
    var n = i(438);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("9e67c956", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{width:100%;height:100%;white-space:nowrap;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:normal;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}', ""])
}, function(e, t, i) {
    var n = i(440);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("6a9957c2", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.monaco-table{display:flex;flex-direction:column;position:relative;height:100%;width:100%;white-space:nowrap}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{width:100%;height:100%;font-weight:700;overflow:hidden;text-overflow:ellipsis}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:"";position:absolute;left:calc(var(--sash-size) / 2);width:0;border-left:1px solid transparent}.monaco-table>.monaco-split-view2,.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}', ""])
}, function(e, t, i) {
    var n = i(442);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3f517a24", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-tl-row{display:flex;height:100%;align-items:center;position:relative}.monaco-tl-indent{height:100%;position:absolute;top:0;left:16px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;box-sizing:border-box;height:100%;border-left:1px solid transparent;transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;padding-right:6px;flex-shrink:0;width:16px;display:flex!important;align-items:center;justify-content:center;transform:translateX(3px)}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}", ""])
}, function(e, t, i) {
    var n = i(444);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("07a9a8c0", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,87%,.4);border:1px solid hsla(0,0%,80%,.4);border-bottom-color:hsla(0,0%,73%,.4);box-shadow:inset 0 -1px 0 hsla(0,0%,73%,.4);color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #6fc3df;box-shadow:none;color:#fff}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,50%,.17);border:1px solid rgba(51,51,51,.6);border-bottom-color:rgba(68,68,68,.6);box-shadow:inset 0 -1px 0 rgba(68,68,68,.6);color:#ccc}", ""])
}, function(e, t, i) {
    var n = i(446);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("bf5313b8", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-text-button{box-sizing:border-box;display:flex;width:100%;padding:4px;text-align:center;cursor:pointer;justify-content:center;align-items:center}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{opacity:.4!important;cursor:default}.monaco-text-button>.codicon{margin:0 .2em;color:inherit!important}.monaco-button-dropdown{display:flex;cursor:pointer}.monaco-button-dropdown>.monaco-dropdown-button{margin-left:1px}.monaco-description-button{flex-direction:column}.monaco-description-button .monaco-button-label{font-weight:500}.monaco-description-button .monaco-button-description{font-style:italic}", ""])
}, function(e, t, i) {
    var n = i(448);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("3efe2286", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-count-badge{padding:3px 6px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;box-sizing:border-box}.monaco-count-badge.long{padding:2px 3px;border-radius:2px;min-height:auto;line-height:normal}", ""])
}, function(e, t, i) {
    var n = i(450);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("eada882c", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-progress-container{width:100%;height:5px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:5px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;animation-timing-function:linear;transform:translateZ(0)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}", ""])
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, '.quick-input-widget{position:absolute;width:600px;z-index:2000;padding:0 1px 1px;left:50%;margin-left:-300px}.quick-input-titlebar{display:flex;align-items:center}.quick-input-left-action-bar{display:flex;margin-left:4px;flex:1}.quick-input-title{padding:3px 0;text-align:center;text-overflow:ellipsis;overflow:hidden}.quick-input-right-action-bar{display:flex;margin-right:4px;flex:1}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px}.quick-input-header .quick-input-description{margin:4px 2px}.quick-input-header{display:flex;padding:6px 6px 0;margin-bottom:-2px}.quick-input-widget.hidden-input .quick-input-header{padding:0;margin-bottom:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;position:absolute;right:4px;display:flex;align-items:center}.quick-input-count .monaco-count-badge{vertical-align:middle;padding:2px 4px;border-radius:2px;min-height:auto;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{font-size:11px;padding:0 6px;display:flex;height:27.5px;align-items:center}.quick-input-message{margin-top:-1px;padding:5px 5px 2px;overflow-wrap:break-word}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-progress.monaco-progress-container,.quick-input-progress.monaco-progress-container .progress-bit{height:2px}.quick-input-list{line-height:22px;margin-top:6px}.quick-input-widget.hidden-input .quick-input-list{margin-top:0}.quick-input-list .monaco-list{overflow:hidden;max-height:440px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;overflow:hidden;display:flex;height:100%;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-width:1px;border-top-style:solid}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{overflow:hidden;display:flex;height:100%;flex:1}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-rows{overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;height:100%;flex:1;margin-left:5px}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{display:flex;align-items:center}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;line-height:normal;text-overflow:ellipsis;overflow:hidden}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:8px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px;margin-right:4px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}', ""])
}, function(e, t, i) {
    var n = i(453);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("7cbdc36e", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;line-height:inherit!important;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;flex-shrink:0}.monaco-icon-label>.monaco-icon-label-container{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;margin-left:.5em;font-size:.9em;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{text-decoration:line-through;opacity:.66}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;font-size:90%;font-weight:600;margin:auto 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}", ""])
}, function(e, t, i) {
    var n = i(455);
    (n = "string" == typeof(n = n.__esModule ? n.default : n) ? [
        [e.i, n, ""]
    ] : n).locals && (e.exports = n.locals), (0, i(25).default)("216f5d02", n, !0, {})
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".monaco-keybinding{display:flex;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border-style:solid;border-width:1px;border-radius:3px;vertical-align:middle;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}", ""])
}, function(e, t) {
    (function(t) {
        e.exports = t
    }).call(this, {})
}, function(e, t, i) {
    "use strict";
    i(242)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-input-view-plugin[data-v-d01c3192]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:rgba(50,50,50,.6);color:#000;z-index:1000}.card-main[data-v-d01c3192]{border-radius:2px;background-color:#fff;display:flex;flex-direction:column;justify-content:space-around;max-width:390px}.card-content[data-v-d01c3192]{padding:15px 20px}.content-title[data-v-d01c3192]{font-size:1.2em;margin-bottom:15px}.content-hint[data-v-d01c3192]{font-size:.9em;margin-bottom:5px;margin-top:-5px;color:#179bbb}.content-item[data-v-d01c3192]{display:flex;margin:0 0 10px;align-items:baseline;flex-direction:column;justify-content:space-between}.item-key[data-v-d01c3192]{margin-bottom:5px;font-size:16px}.error-hint[data-v-d01c3192]{font-size:.9em;color:red}.card-btns[data-v-d01c3192]{margin-top:20px;display:flex;justify-content:space-around}.btn[data-v-d01c3192]{cursor:pointer;color:#fff;width:100px;height:40px;text-align:center;line-height:40px;border-radius:3px}.btn-cancel[data-v-d01c3192]{background-color:#676475}.btn-ok[data-v-d01c3192]{background-color:#3e3c4d}span[data-v-d01c3192]{color:red}textarea[data-v-d01c3192]{cursor:pointer;font-size:14px;outline:none;padding:10px 5px;border:1px solid #c6c6cf;width:350px;resize:none;font-family:inherit;max-height:200px;overflow-y:auto}", ""])
}, function(e, t, i) {
    "use strict";
    i(243)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main[data-v-23874bae]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:rgba(50,50,50,.6);color:#000;z-index:10}.main [data-v-23874bae],.main[data-v-23874bae] *{user-select:text}.card-main[data-v-23874bae]{border-radius:2px;background-color:#fff;min-width:300px;display:flex;flex-direction:column;justify-content:space-around;box-shadow:0 0 10px 3px hsla(0,0%,5%,.164)}.card-content[data-v-23874bae]{padding:15px 20px}.content-title[data-v-23874bae]{font-size:20px;margin-bottom:15px}.content-item[data-v-23874bae]{border-top:1px solid rgba(50,50,50,.1);display:flex;height:55px;align-items:baseline;flex-direction:column;justify-content:center}.item-key[data-v-23874bae]{font-size:17px}.item-value[data-v-23874bae]{font-size:14px;color:rgba(40,44,52,.897)}", ""])
}, function(e, t, i) {
    "use strict";
    i(244)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-alert-view-plugin[data-v-a49f7ad8]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:rgba(50,50,50,.6);color:#000;z-index:10}.main-alert-view-plugin .card-main[data-v-a49f7ad8]{border-radius:2px;background-color:#fff;display:flex;flex-direction:column;justify-content:space-around;width:50%}.main-alert-view-plugin .card-main .card-content[data-v-a49f7ad8]{padding:15px 20px}.main-alert-view-plugin .card-main .card-content .content-title[data-v-a49f7ad8]{font-size:1.2em;margin-bottom:15px}.main-alert-view-plugin .card-main .card-content .content-content-light[data-v-a49f7ad8]{font-size:15px;text-overflow:inherit;word-wrap:break-word;max-height:200px;overflow-y:scroll}.main-alert-view-plugin .card-main .card-content .content-content-light[data-v-a49f7ad8]::-webkit-scrollbar{width:16px}.main-alert-view-plugin .card-main .card-content .content-content-light[data-v-a49f7ad8]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.main-alert-view-plugin .card-main .card-content .content-content-dark[data-v-a49f7ad8]{font-size:15px;text-overflow:inherit;word-wrap:break-word;max-height:200px;overflow-y:scroll}.main-alert-view-plugin .card-main .card-content .content-content-dark[data-v-a49f7ad8]::-webkit-scrollbar{width:16px}.main-alert-view-plugin .card-main .card-content .content-content-dark[data-v-a49f7ad8]::-webkit-scrollbar-thumb{background-color:#4d4d5a;border-radius:100px;border:3px solid #2c2a38}.main-alert-view-plugin .card-main .card-content .content-content-red[data-v-a49f7ad8]{font-size:15px;text-overflow:inherit;word-wrap:break-word;max-height:200px;overflow-y:scroll}.main-alert-view-plugin .card-main .card-content .content-content-red[data-v-a49f7ad8]::-webkit-scrollbar{width:16px}.main-alert-view-plugin .card-main .card-content .content-content-red[data-v-a49f7ad8]::-webkit-scrollbar-thumb{background-color:rgba(183,46,41,.643137);border-radius:100px;border:3px solid #f8b74f}.main-alert-view-plugin .card-main .card-content .content-content-2077[data-v-a49f7ad8]{font-size:15px;text-overflow:inherit;word-wrap:break-word;max-height:200px;overflow-y:scroll}.main-alert-view-plugin .card-main .card-content .content-content-2077[data-v-a49f7ad8]::-webkit-scrollbar{width:16px}.main-alert-view-plugin .card-main .card-content .content-content-2077[data-v-a49f7ad8]::-webkit-scrollbar-thumb{background-color:rgba(238,222,0,.796078);border-radius:100px;border:3px solid #136377}.main-alert-view-plugin .card-main .card-content .card-btns[data-v-a49f7ad8]{margin-top:20px;display:flex;justify-content:space-around}.main-alert-view-plugin .card-main .card-content .card-btns .btn[data-v-a49f7ad8]{cursor:pointer;color:#fff;width:100px;height:40px;text-align:center;line-height:40px;border-radius:3px}.main-alert-view-plugin .card-main .card-content .card-btns .btn-cancel[data-v-a49f7ad8]{background-color:#676475}.main-alert-view-plugin .card-main .card-content .card-btns .btn-ok[data-v-a49f7ad8]{background-color:#3e3c4d}", ""])
}, function(e, t, i) {
    "use strict";
    i(245)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-select-view-plugin[data-v-309e2da2]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:rgba(50,50,50,.6);color:#000;z-index:10}.main-select-view-plugin .card-main[data-v-309e2da2]{border-radius:2px;background-color:#fff;display:flex;flex-direction:column;justify-content:space-around;width:50%}.main-select-view-plugin .card-main .card-content[data-v-309e2da2]{padding:15px 20px}.main-select-view-plugin .card-main .card-content .content-title[data-v-309e2da2]{font-size:1.2em;margin-bottom:10px}.main-select-view-plugin .card-main .card-content .content-message[data-v-309e2da2]{margin:5px 0 10px;max-height:60vh;overflow-x:hidden;word-break:break-word;overflow-y:scroll}.main-select-view-plugin .card-main .card-content .content-message[data-v-309e2da2]::-webkit-scrollbar{width:16px}.main-select-view-plugin .card-main .card-content .content-message[data-v-309e2da2]::-webkit-scrollbar-thumb{background-color:#cac8c6;border-radius:100px;border:3px solid #fff}.main-select-view-plugin .card-main .card-content .btns[data-v-309e2da2]{display:flex;justify-content:flex-start;flex-wrap:wrap}.main-select-view-plugin .card-main .card-content .btns .btn[data-v-309e2da2]{border-radius:3px;text-align:center;height:35px;line-height:35px;flex-shrink:1;color:#fff;background-color:#3e3c4d;border-radius:5px;cursor:pointer;margin:5px}.main-select-view-plugin .card-main .card-content .btns .btn [data-v-309e2da2]:hover{cursor:pointer}.main-select-view-plugin .card-main .card-content .btns .btn span[data-v-309e2da2]{padding:0 10px}", ""])
}, function(e, t, i) {
    "use strict";
    i(246)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-code-view-light[data-v-4bcad04a]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;left:0;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.main-code-view-light .editor[data-v-4bcad04a]{width:100%;height:100%;overflow:hidden}.main-code-view-light .error[data-v-4bcad04a]{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);box-shadow:0 0 10px rgba(0,0,0,.3);padding:10px 12px;border-radius:10px;background-color:#fff;display:flex;align-items:center}.main-code-view-light .error div[data-v-4bcad04a]:first-child{color:red;font-weight:400;font-size:14px;flex-shrink:1;white-space:pre-wrap}.main-code-view-light .error div[data-v-4bcad04a]:last-child{height:26px;width:26px;padding:3px;margin-left:10px;flex-shrink:0}.main-code-view-light .error div[data-v-4bcad04a]:last-child:hover{background-color:hsla(0,0%,63%,.534);border-radius:3px}.main-code-view-light .btns[data-v-4bcad04a]{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;z-index:100;color:#fff;margin-right:20px;margin-bottom:20px;color:#000;font-size:14px}.main-code-view-light .btns div[data-v-4bcad04a]{padding:5px 20px;color:#fff;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.2)}.main-code-view-light .btns .abort-btn[data-v-4bcad04a]{margin-bottom:10px;background-color:#ea4079}.main-code-view-light .btns .save-btn[data-v-4bcad04a]{background-color:#41b883}.main-code-view-dark[data-v-4bcad04a]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;left:0;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.main-code-view-dark .editor[data-v-4bcad04a]{width:100%;height:100%;overflow:hidden}.main-code-view-dark .error[data-v-4bcad04a]{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);box-shadow:0 0 10px rgba(0,0,0,.3);padding:10px 12px;border-radius:10px;background-color:#fff;display:flex;align-items:center}.main-code-view-dark .error div[data-v-4bcad04a]:first-child{color:red;font-weight:400;font-size:14px;flex-shrink:1;white-space:pre-wrap}.main-code-view-dark .error div[data-v-4bcad04a]:last-child{height:26px;width:26px;padding:3px;margin-left:10px;flex-shrink:0}.main-code-view-dark .error div[data-v-4bcad04a]:last-child:hover{background-color:hsla(0,0%,63%,.534);border-radius:3px}.main-code-view-dark .btns[data-v-4bcad04a]{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;z-index:100;margin-right:20px;margin-bottom:20px;color:#fff;font-size:14px}.main-code-view-dark .btns div[data-v-4bcad04a]{padding:5px 20px;color:#fff;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.2)}.main-code-view-dark .btns .abort-btn[data-v-4bcad04a]{margin-bottom:10px;background-color:#ea4079}.main-code-view-dark .btns .save-btn[data-v-4bcad04a]{background-color:#41b883}.main-code-view-red[data-v-4bcad04a]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;left:0;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.main-code-view-red .editor[data-v-4bcad04a]{width:100%;height:100%;overflow:hidden}.main-code-view-red .error[data-v-4bcad04a]{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);box-shadow:0 0 10px rgba(0,0,0,.3);padding:10px 12px;border-radius:10px;background-color:#fff;display:flex;align-items:center}.main-code-view-red .error div[data-v-4bcad04a]:first-child{color:red;font-weight:400;font-size:14px;flex-shrink:1;white-space:pre-wrap}.main-code-view-red .error div[data-v-4bcad04a]:last-child{height:26px;width:26px;padding:3px;margin-left:10px;flex-shrink:0}.main-code-view-red .error div[data-v-4bcad04a]:last-child:hover{background-color:hsla(0,0%,63%,.534);border-radius:3px}.main-code-view-red .btns[data-v-4bcad04a]{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;z-index:100;color:#fff;margin-right:20px;margin-bottom:20px;color:#d33928;font-size:14px}.main-code-view-red .btns div[data-v-4bcad04a]{padding:5px 20px;color:#fff;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.2)}.main-code-view-red .btns .abort-btn[data-v-4bcad04a]{margin-bottom:10px;background-color:#ea4079}.main-code-view-red .btns .save-btn[data-v-4bcad04a]{background-color:#41b883}.main-code-view-2077[data-v-4bcad04a]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;left:0;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.main-code-view-2077 .editor[data-v-4bcad04a]{width:100%;height:100%;overflow:hidden}.main-code-view-2077 .error[data-v-4bcad04a]{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);box-shadow:0 0 10px rgba(0,0,0,.3);padding:10px 12px;border-radius:10px;background-color:#fff;display:flex;align-items:center}.main-code-view-2077 .error div[data-v-4bcad04a]:first-child{color:red;font-weight:400;font-size:14px;flex-shrink:1;white-space:pre-wrap}.main-code-view-2077 .error div[data-v-4bcad04a]:last-child{height:26px;width:26px;padding:3px;margin-left:10px;flex-shrink:0}.main-code-view-2077 .error div[data-v-4bcad04a]:last-child:hover{background-color:hsla(0,0%,63%,.534);border-radius:3px}.main-code-view-2077 .btns[data-v-4bcad04a]{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;z-index:100;color:#fff;margin-right:20px;margin-bottom:20px;color:#fcec0c;font-size:14px}.main-code-view-2077 .btns div[data-v-4bcad04a]{padding:5px 20px;color:#fff;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.2)}.main-code-view-2077 .btns .abort-btn[data-v-4bcad04a]{margin-bottom:10px;background-color:#ea4079}.main-code-view-2077 .btns .save-btn[data-v-4bcad04a]{background-color:#41b883}.error-hint[data-v-4bcad04a]{background-color:red}", ""])
}, function(e, t, i) {
    "use strict";
    i(247)
}, function(e, t, i) {
    (e.exports = i(24)(!1)).push([e.i, ".main-menu-view-plugin[data-v-3d907f50]{width:100%;height:calc(100% - 25px);position:fixed;top:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:hsla(0,0%,100%,0);color:#000;z-index:100}.main-menu-view-plugin .card-main[data-v-3d907f50]{border-radius:2px;background-color:#414141;display:flex;flex-direction:column;justify-content:space-around;width:fit-content}.main-menu-view-plugin .card-main .card-content[data-v-3d907f50]{position:fixed;background-color:#4e4e4e;overflow-y:scroll;font-weight:400;box-shadow:2px 2px 8px 2px rgba(0,0,0,.2);padding:5px 0;font-size:13px;border-radius:5px}.main-menu-view-plugin .card-main .card-content[data-v-3d907f50]::-webkit-scrollbar{display:none}.main-menu-view-plugin .card-main .card-content .item[data-v-3d907f50]{margin:2px 5px;padding:5px 10px;border-radius:3px;color:#fff;display:flex;align-items:center;justify-content:flex-start;min-width:150px}.main-menu-view-plugin .card-main .card-content .item[data-v-3d907f50]:hover{background-color:#302a2a}.main-menu-view-plugin .card-main .card-content .item svg[data-v-3d907f50]{width:15px;height:15px;fill:#fff;margin-right:15px}.main-menu-view-plugin .card-main .card-content .item div[data-v-3d907f50]{flex:1;white-space:nowrap}.main-menu-view-plugin .card-main .card-content .indicator[data-v-3d907f50]{position:sticky;bottom:-5px;left:0;width:100%;height:30px;display:flex;align-items:center;justify-content:center;background-color:#4e4e4e}", ""])
}, function(e, t) {
    e.exports = require("vue-electron")
}, , function(e, t, i) {
    "use strict";
    i.r(t);
    var n = {};
    i.r(n), i.d(n, "install", (function() {
        return O
    }));
    var r = {};
    i.r(r), i.d(r, "install", (function() {
        return R
    }));
    var o = {};
    i.r(o), i.d(o, "install", (function() {
        return K
    }));
    var s = i(10),
        a = i.n(s),
        l = i(18),
        d = i.n(l),
        c = i(3),
        h = i.n(c),
        u = i(88),
        p = i(12),
        g = {
            name: "Clash"
        },
        f = (i(257), i(30)),
        m = Object(f.a)(g, (function() {
            var e = this.$createElement;
            return (e = this._self._c || e)("div", {
                attrs: {
                    id: "app"
                }
            }, [e("router-view")], 1)
        }), [], !1, null, null, null).exports,
        v = i(176),
        b = i.n(v);
    u.a.use(b.a);
    var _ = new b.a({
            routes: [{
                path: "/home",
                name: "landing-page",
                component: i(474).default,
                children: [{
                    path: "general",
                    component: i(475).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "proxy",
                    component: i(477).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "provider",
                    component: i(478).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "log",
                    component: i(480).default
                }, {
                    path: "server",
                    component: i(473).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "connection",
                    component: i(481).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "router",
                    component: i(476).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "setting",
                    component: i(472).default,
                    meta: {
                        keepAlive: !0
                    }
                }, {
                    path: "about",
                    component: i(479).default,
                    meta: {
                        keepAlive: !0
                    }
                }]
            }, {
                path: "*",
                redirect: "/home/general"
            }],
            saveScrollPosition: !0
        }),
        w = i(42),
        y = i(16),
        C = i(12),
        x = y.readdirSync(C.join(__static, "svg")),
        S = /(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,
        k = /\uFE0F/g,
        L = String.fromCharCode(8205);

    function O(e, t) {
        var i = t.store;
        e.prototype.$parseEmoji = function(e) {
            var t = i.state.app.settings.useSystemEmoji;
            return void 0 !== t && t ? e : (e = e.replace(S, (function(e) {
                var t = function(e) {
                    return function(e, t) {
                        for (var i = [], n = 0, r = 0, o = 0; o < e.length;) n = e.charCodeAt(o++), r ? (i.push((65536 + (r - 55296 << 10) + (n - 56320)).toString(16)), r = 0) : 55296 <= n && n <= 56319 ? r = n : i.push(n.toString(16));
                        return i.join("-")
                    }(e.indexOf(L) < 0 ? e.replace(k, "") : e)
                }(e);
                return -1 < x.indexOf("".concat(t, ".svg")) ? '<img src="static/svg/'.concat(t, '.svg" style="height: 1em;vertical-align: -0.15em;"/>') : e
            })), '<span style="cursor: inherit; word-break: break-all;">'.concat(e, "</span>"))
        }, e.prototype.$removeEmoji = function(e) {
            return e.replace(S, "")
        }
    }
    var E = i(48),
        N = (i(69), i(45)),
        D = i(169),
        I = i(19),
        T = i(153),
        M = i(77),
        P = i(12),
        A = "127.0.0.1";

    function R(e, t) {
        var i, n = t.store;
        e.prototype.$setSystemProxy = (i = a()(h.a.mark((function e(t) {
            var i, r, o, s, a, l, d, c, u, p, g, f;
            return h.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (r = n.state.app.settings, l = r.bypassText, a = r.staticSystemProxyHost, i = void 0 === a ? A : a, r = [], l) try {
                            o = N.parse(l), s = o.bypass, r = (void 0 === s ? [] : s) || []
                        } catch (e) {} else r = D.a;
                        if (e.prev = 4, a = !1, Object(I.i)()) return l = n.getters.mixedPort, l = t ? ["-http", "".concat(i || A, ":").concat(l), "-https", "".concat(i || A, ":").concat(l), "-socks", "".concat(i || A, ":").concat(l)] : ["-stop"], e.next = 11, Object(T.a)(l);
                        e.next = 21;
                        break;
                    case 11:
                        if (e.sent.success) return e.next = 16, Object(T.a)(["-bypass", r.join(",")]);
                        e.next = 19;
                        break;
                    case 16:
                        e.sent.success && (a = !0, n.commit("CHANGE_STATUS", {
                            status: t ? E.b.SYSTEM_PROXY : E.b.DEFAULT
                        }));
                    case 19:
                        e.next = 42;
                        break;
                    case 21:
                        if (!Object(I.j)()) {
                            e.next = 42;
                            break
                        }
                        if (g = n.state.app.settings, p = g.systemProxyTypeIndex, d = void 0 === p ? 0 : p, f = g.specifyHttpProxyProtocol, c = void 0 !== f && f, u = n.getters.mixedPort, p = P.join(n.getters.filesPath, "win", "common"), g = ["set", "1"], !t) {
                            e.next = 40;
                            break
                        }
                        if (0 !== d) {
                            e.next = 32;
                            break
                        }(g = ["global", "".concat(c ? "http://" : "").concat(i || A, ":").concat(u)]).push(r.join(";")), e.next = 40;
                        break;
                    case 32:
                        e.prev = 32, f = "http://".concat(i || A, ":").concat(n.state.app.innerServerPort, "/pac?t=").concat((new Date).getTime()), g = ["pac", f], e.next = 40;
                        break;
                    case 37:
                        return e.prev = 37, e.t0 = e.catch(32), e.abrupt("return", !1);
                    case 40:
                        0 === M.spawnSync("sysproxy.exe", g, {
                            cwd: p,
                            windowsHide: !0
                        }).status && (a = !0, n.commit("CHANGE_STATUS", {
                            status: t ? E.b.SYSTEM_PROXY : E.b.DEFAULT
                        }));
                    case 42:
                        return e.abrupt("return", a);
                    case 45:
                        e.prev = 45, e.t1 = e.catch(4), console.error(e.t1.stack);
                    case 48:
                        return e.abrupt("return", !1);
                    case 49:
                    case "end":
                        return e.stop()
                }
            }), e, null, [
                [4, 45],
                [32, 37]
            ])
        }))), function(e) {
            return i.apply(this, arguments)
        }), e.prototype.$getSystemProxyStatus = function() {
            var e = !1;
            if (Object(I.i)()) {
                var t = n.state.app.clashPath,
                    i = (t = (i = M.spawnSync("./sysproxy", ["-show"], {
                        cwd: t,
                        windowsHide: !0
                    })).error, i.output);
                return !t && (i && (r = i.toString(), /socks=/.test(r) && (e = !0)), n.commit("CHANGE_STATUS", {
                    status: e ? E.b.SYSTEM_PROXY : E.b.DEFAULT
                }), e)
            }
            var r = P.join(n.getters.filesPath, "win", "common");
            return (r = M.spawnSync("sysproxy.exe", ["query"], {
                cwd: r,
                windowsHide: !0
            })).error && (e = !1), 0 === r.status && r.stdout && (e = 51 === r.stdout[0] || 53 === r.stdout[0]), n.commit("CHANGE_STATUS", {
                status: e ? E.b.SYSTEM_PROXY : E.b.DEFAULT
            }), e
        }, e.prototype.$getTrayIcon = function(e) {
            var t = void 0 === (o = (i = n.state.app).clashPath) ? "" : o,
                i = (o = void 0 === (r = i.settings) ? {} : r).iconSystemProxy,
                r = o.iconDefault,
                o = [P.join(__static, "tray_normal.ico"), P.join(__static, "tray_reverse.ico")];
            return r && (o[0] = P.isAbsolute(r) ? r : P.join(t, r)), i && (o[1] = P.isAbsolute(i) ? i : P.join(t, i)), o[e]
        }
    }
    var F = i(52),
        j = i.n(F),
        B = i(105),
        V = i.n(B),
        W = i(22),
        z = i(16);

    function H(e) {
        return U.apply(this, arguments)
    }

    function U() {
        return (U = a()(h.a.mark((function e(t) {
            var i, n, r, o;
            return h.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        if (Object(I.h)()) return e.next = 3, Promise.all([
                            ["getVersion"],
                            ["getPath", "exe"],
                            ["getPath", "home"]
                        ].map((function(e) {
                            return W.ipcRenderer.invoke.apply(W.ipcRenderer, ["app"].concat(j()(e)))
                        })));
                        e.next = 14;
                        break;
                    case 3:
                        r = e.sent, n = V()(r, 3), i = n[0], o = n[1], r = n[2], n = Object(p.join)(r, ".config", "autostart"), r = Object(p.join)(n, "cfw.desktop"), o = "[Desktop Entry]\n    Type=Application\n    Version=".concat(i, "\n    Name=Clash for Windows\n    Comment=Clash for Windows startup script\n    Exec=").concat(o, "\n    StartupNotify=false\n    Terminal=false"), t ? (Object(z.existsSync)(n) || Object(z.mkdirSync)(n), Object(z.writeFileSync)(r, o)) : Object(z.existsSync)(r) && Object(z.unlinkSync)(r), e.next = 16;
                        break;
                    case 14:
                        return e.next = 16, W.ipcRenderer.invoke("app", "setLoginItemSettings", {
                            openAtLogin: t
                        });
                    case 16:
                    case "end":
                        return e.stop()
                }
            }), e)
        })))).apply(this, arguments)
    }

    function K(e) {
        e.prototype.$setAutoLaunch = H
    }
    i(103);
    var $ = i(32),
        q = i(4),
        G = i(6),
        Y = i(20),
        Z = i(21),
        X = i(28),
        Q = i(68),
        J = i(8),
        ee = i(5),
        te = i(36),
        ie = i(89),
        ne = i(44),
        re = i(76),
        oe = i(7),
        se = i(23);
    class ae {
        constructor(e) {
            this._editor = e, this._decorations = [], this._overviewRulerApproximateDecorations = [], this._findScopeDecorationIds = [], this._rangeHighlightDecorationId = null, this._highlightedDecorationId = null, this._startPosition = this._editor.getPosition()
        }
        dispose() {
            this._editor.deltaDecorations(this._allDecorations(), []), this._decorations = [], this._overviewRulerApproximateDecorations = [], this._findScopeDecorationIds = [], this._rangeHighlightDecorationId = null, this._highlightedDecorationId = null
        }
        reset() {
            this._decorations = [], this._overviewRulerApproximateDecorations = [], this._findScopeDecorationIds = [], this._rangeHighlightDecorationId = null, this._highlightedDecorationId = null
        }
        getCount() {
            return this._decorations.length
        }
        getFindScope() {
            return this._findScopeDecorationIds[0] ? this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]) : null
        }
        getFindScopes() {
            if (this._findScopeDecorationIds.length) {
                var e = this._findScopeDecorationIds.map(e => this._editor.getModel().getDecorationRange(e)).filter(e => !!e);
                if (e.length) return e
            }
            return null
        }
        getStartPosition() {
            return this._startPosition
        }
        setStartPosition(e) {
            this._startPosition = e, this.setCurrentFindMatch(null)
        }
        _getDecorationIndex(e) {
            return 0 <= (e = this._decorations.indexOf(e)) ? e + 1 : 1
        }
        getCurrentMatchesPosition(e) {
            for (const i of this._editor.getModel().getDecorationsInRange(e)) {
                var t = i.options;
                if (t === ae._FIND_MATCH_DECORATION || t === ae._CURRENT_FIND_MATCH_DECORATION) return this._getDecorationIndex(i.id)
            }
            return 0
        }
        setCurrentFindMatch(e) {
            let t = null,
                i = 0;
            if (e)
                for (let r = 0, o = this._decorations.length; r < o; r++) {
                    var n = this._editor.getModel().getDecorationRange(this._decorations[r]);
                    if (e.equalsRange(n)) {
                        t = this._decorations[r], i = r + 1;
                        break
                    }
                }
            return null === this._highlightedDecorationId && null === t || this._editor.changeDecorations(e => {
                if (null !== this._highlightedDecorationId && (e.changeDecorationOptions(this._highlightedDecorationId, ae._FIND_MATCH_DECORATION), this._highlightedDecorationId = null), null !== t && (this._highlightedDecorationId = t, e.changeDecorationOptions(this._highlightedDecorationId, ae._CURRENT_FIND_MATCH_DECORATION)), null !== this._rangeHighlightDecorationId && (e.removeDecoration(this._rangeHighlightDecorationId), this._rangeHighlightDecorationId = null), null !== t) {
                    let r = this._editor.getModel().getDecorationRange(t);
                    var i, n;
                    r.startLineNumber !== r.endLineNumber && 1 === r.endColumn && (i = r.endLineNumber - 1, n = this._editor.getModel().getLineMaxColumn(i), r = new ee.a(r.startLineNumber, r.startColumn, i, n)), this._rangeHighlightDecorationId = e.addDecoration(r, ae._RANGE_HIGHLIGHT_DECORATION)
                }
            }), i
        }
        set(e, t) {
            this._editor.changeDecorations(i => {
                let n = ae._FIND_MATCH_DECORATION,
                    r = [];
                if (1e3 < e.length) {
                    n = ae._FIND_MATCH_NO_OVERVIEW_DECORATION;
                    var o = this._editor.getModel().getLineCount(),
                        s = this._editor.getLayoutInfo().height,
                        a = Math.max(2, Math.ceil(3 / (s / o)));
                    let t = e[0].range.startLineNumber,
                        i = e[0].range.endLineNumber;
                    for (let n = 1, o = e.length; n < o; n++) {
                        var l = e[n].range;
                        i + a >= l.startLineNumber ? l.endLineNumber > i && (i = l.endLineNumber) : (r.push({
                            range: new ee.a(t, 1, i, 1),
                            options: ae._FIND_MATCH_ONLY_OVERVIEW_DECORATION
                        }), t = l.startLineNumber, i = l.endLineNumber)
                    }
                    r.push({
                        range: new ee.a(t, 1, i, 1),
                        options: ae._FIND_MATCH_ONLY_OVERVIEW_DECORATION
                    })
                }
                let d = new Array(e.length);
                for (let t = 0, i = e.length; t < i; t++) d[t] = {
                    range: e[t].range,
                    options: n
                };
                this._decorations = i.deltaDecorations(this._decorations, d), this._overviewRulerApproximateDecorations = i.deltaDecorations(this._overviewRulerApproximateDecorations, r), this._rangeHighlightDecorationId && (i.removeDecoration(this._rangeHighlightDecorationId), this._rangeHighlightDecorationId = null), this._findScopeDecorationIds.length && (this._findScopeDecorationIds.forEach(e => i.removeDecoration(e)), this._findScopeDecorationIds = []), null != t && t.length && (this._findScopeDecorationIds = t.map(e => i.addDecoration(e, ae._FIND_SCOPE_DECORATION)))
            })
        }
        matchBeforePosition(e) {
            if (0 === this._decorations.length) return null;
            for (let i = this._decorations.length - 1; 0 <= i; i--) {
                var t = this._decorations[i];
                if ((t = this._editor.getModel().getDecorationRange(t)) && !(t.endLineNumber > e.lineNumber)) {
                    if (t.endLineNumber < e.lineNumber) return t;
                    if (!(t.endColumn > e.column)) return t
                }
            }
            return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length - 1])
        }
        matchAfterPosition(e) {
            if (0 === this._decorations.length) return null;
            for (let i = 0, n = this._decorations.length; i < n; i++) {
                var t = this._decorations[i];
                if ((t = this._editor.getModel().getDecorationRange(t)) && !(t.startLineNumber < e.lineNumber)) {
                    if (t.startLineNumber > e.lineNumber) return t;
                    if (!(t.startColumn < e.column)) return t
                }
            }
            return this._editor.getModel().getDecorationRange(this._decorations[0])
        }
        _allDecorations() {
            let e = [];
            return e = e.concat(this._decorations), e = e.concat(this._overviewRulerApproximateDecorations), this._findScopeDecorationIds.length && e.push(...this._findScopeDecorationIds), this._rangeHighlightDecorationId && e.push(this._rangeHighlightDecorationId), e
        }
    }
    ae._CURRENT_FIND_MATCH_DECORATION = re.b.register({
        description: "current-find-match",
        stickiness: 1,
        zIndex: 13,
        className: "currentFindMatch",
        showIfCollapsed: !0,
        overviewRuler: {
            color: Object(se.g)(oe.Tb),
            position: ne.g.Center
        },
        minimap: {
            color: Object(se.g)(oe.Mb),
            position: ne.f.Inline
        }
    }), ae._FIND_MATCH_DECORATION = re.b.register({
        description: "find-match",
        stickiness: 1,
        zIndex: 10,
        className: "findMatch",
        showIfCollapsed: !0,
        overviewRuler: {
            color: Object(se.g)(oe.Tb),
            position: ne.g.Center
        },
        minimap: {
            color: Object(se.g)(oe.Mb),
            position: ne.f.Inline
        }
    }), ae._FIND_MATCH_NO_OVERVIEW_DECORATION = re.b.register({
        description: "find-match-no-overview",
        stickiness: 1,
        className: "findMatch",
        showIfCollapsed: !0
    }), ae._FIND_MATCH_ONLY_OVERVIEW_DECORATION = re.b.register({
        description: "find-match-only-overview",
        stickiness: 1,
        overviewRuler: {
            color: Object(se.g)(oe.Tb),
            position: ne.g.Center
        }
    }), ae._RANGE_HIGHLIGHT_DECORATION = re.b.register({
        description: "find-range-highlight",
        stickiness: 1,
        className: "rangeHighlight",
        isWholeLine: !0
    }), ae._FIND_SCOPE_DECORATION = re.b.register({
        description: "find-scope",
        className: "findScope",
        isWholeLine: !0
    });
    class le {
        constructor(e, t, i) {
            this._editorSelection = e, this._ranges = t, this._replaceStrings = i, this._trackedEditorSelectionId = null
        }
        getEditOperations(e, t) {
            if (0 < this._ranges.length) {
                let e = [];
                for (let t = 0; t < this._ranges.length; t++) e.push({
                    range: this._ranges[t],
                    text: this._replaceStrings[t]
                });
                e.sort((e, t) => ee.a.compareRangesUsingStarts(e.range, t.range));
                let i = [],
                    n = e[0];
                for (let t = 1; t < e.length; t++) n.range.endLineNumber === e[t].range.startLineNumber && n.range.endColumn === e[t].range.startColumn ? (n.range = n.range.plusRange(e[t].range), n.text = n.text + e[t].text) : (i.push(n), n = e[t]);
                i.push(n);
                for (const e of i) t.addEditOperation(e.range, e.text)
            }
            this._trackedEditorSelectionId = t.trackSelection(this._editorSelection)
        }
        computeCursorState(e, t) {
            return t.getTrackedSelection(this._trackedEditorSelectionId)
        }
    }

    function de(e, t) {
        if (e && "" !== e[0]) {
            var i = ce(e, t, "-"),
                n = ce(e, t, "_");
            return i && !n ? he(e, t, "-") : !i && n ? he(e, t, "_") : e[0].toUpperCase() === e[0] ? t.toUpperCase() : e[0].toLowerCase() === e[0] ? t.toLowerCase() : G.o(e[0][0]) && 0 < t.length ? t[0].toUpperCase() + t.substr(1) : e[0][0].toUpperCase() !== e[0][0] && 0 < t.length ? t[0].toLowerCase() + t.substr(1) : t
        }
        return t
    }

    function ce(e, t, i) {
        return -1 !== e[0].indexOf(i) && -1 !== t.indexOf(i) && e[0].split(i).length === t.split(i).length
    }

    function he(e, t, i) {
        const n = t.split(i),
            r = e[0].split(i);
        let o = "";
        return n.forEach((e, t) => {
            o += de([r[t]], e) + i
        }), o.slice(0, -1)
    }
    class ue {
        constructor(e) {
            this.staticValue = e, this.kind = 0
        }
    }
    class pe {
        constructor(e) {
            this.pieces = e, this.kind = 1
        }
    }
    class ge {
        constructor(e) {
            e && 0 !== e.length ? 1 === e.length && null !== e[0].staticValue ? this._state = new ue(e[0].staticValue) : this._state = new pe(e) : this._state = new ue("")
        }
        static fromStaticValue(e) {
            return new ge([fe.staticValue(e)])
        }
        get hasReplacementPatterns() {
            return 1 === this._state.kind
        }
        buildReplaceString(e, t) {
            if (0 === this._state.kind) return t ? de(e, this._state.staticValue) : this._state.staticValue;
            let i = "";
            for (let t = 0, o = this._state.pieces.length; t < o; t++) {
                var n = this._state.pieces[t];
                if (null === n.staticValue) {
                    let t = ge._substitute(n.matchIndex, e);
                    if (null !== n.caseOps && 0 < n.caseOps.length) {
                        let e = [];
                        var r = n.caseOps.length;
                        let i = 0;
                        for (let o = 0, s = t.length; o < s; o++) {
                            if (i >= r) {
                                e.push(t.slice(o));
                                break
                            }
                            switch (n.caseOps[i]) {
                                case "U":
                                    e.push(t[o].toUpperCase());
                                    break;
                                case "u":
                                    e.push(t[o].toUpperCase()), i++;
                                    break;
                                case "L":
                                    e.push(t[o].toLowerCase());
                                    break;
                                case "l":
                                    e.push(t[o].toLowerCase()), i++;
                                    break;
                                default:
                                    e.push(t[o])
                            }
                        }
                        t = e.join("")
                    }
                    i += t
                } else i += n.staticValue
            }
            return i
        }
        static _substitute(e, t) {
            if (null === t) return "";
            if (0 === e) return t[0];
            let i = "";
            for (; 0 < e;) {
                if (e < t.length) return (t[e] || "") + i;
                i = String(e % 10) + i, e = Math.floor(e / 10)
            }
            return "$" + i
        }
    }
    class fe {
        constructor(e, t, i) {
            this.staticValue = e, this.matchIndex = t, i && 0 !== i.length ? this.caseOps = i.slice(0) : this.caseOps = null
        }
        static staticValue(e) {
            return new fe(e, -1, null)
        }
        static caseOps(e, t) {
            return new fe(null, e, t)
        }
    }
    class me {
        constructor(e) {
            this._source = e, this._lastCharIndex = 0, this._result = [], this._resultLen = 0, this._currentStaticPiece = ""
        }
        emitUnchanged(e) {
            this._emitStatic(this._source.substring(this._lastCharIndex, e)), this._lastCharIndex = e
        }
        emitStatic(e, t) {
            this._emitStatic(e), this._lastCharIndex = t
        }
        _emitStatic(e) {
            0 !== e.length && (this._currentStaticPiece += e)
        }
        emitMatchIndex(e, t, i) {
            0 !== this._currentStaticPiece.length && (this._result[this._resultLen++] = fe.staticValue(this._currentStaticPiece), this._currentStaticPiece = ""), this._result[this._resultLen++] = fe.caseOps(e, i), this._lastCharIndex = t
        }
        finalize() {
            return this.emitUnchanged(this._source.length), 0 !== this._currentStaticPiece.length && (this._result[this._resultLen++] = fe.staticValue(this._currentStaticPiece), this._currentStaticPiece = ""), new ge(this._result)
        }
    }
    var ve = i(13);
    const be = new ve.c("findWidgetVisible", !1),
        _e = new ve.c("findInputFocussed", !1),
        we = new ve.c("replaceInputFocussed", !1);
    t = {
        primary: 545,
        mac: {
            primary: 2593
        }
    }, s = {
        primary: 565,
        mac: {
            primary: 2613
        }
    }, l = {
        primary: 560,
        mac: {
            primary: 2608
        }
    }, c = {
        primary: 554,
        mac: {
            primary: 2602
        }
    }, g = {
        primary: 558,
        mac: {
            primary: 2606
        }
    };
    const ye = "actions.find",
        Ce = "actions.findWithSelection",
        xe = "editor.action.nextMatchFindAction",
        Se = "editor.action.previousMatchFindAction",
        ke = "editor.action.nextSelectionMatchFindAction",
        Le = "editor.action.previousSelectionMatchFindAction",
        Oe = "editor.action.startFindReplaceAction",
        Ee = "closeFindWidget",
        Ne = "toggleFindCaseSensitive",
        De = "toggleFindWholeWord",
        Ie = "toggleFindRegex",
        Te = "toggleFindInSelection",
        Me = "togglePreserveCase",
        Pe = "editor.action.replaceOne",
        Ae = "editor.action.replaceAll",
        Re = "editor.action.selectAllMatches",
        Fe = 19999;
    class je {
        constructor(e, t) {
            this._toDispose = new q.b, this._editor = e, this._state = t, this._isDisposed = !1, this._startSearchingTimer = new $.g, this._decorations = new ae(e), this._toDispose.add(this._decorations), this._updateDecorationsScheduler = new $.e(() => this.research(!1), 100), this._toDispose.add(this._updateDecorationsScheduler), this._toDispose.add(this._editor.onDidChangeCursorPosition(e => {
                3 !== e.reason && 5 !== e.reason && 6 !== e.reason || this._decorations.setStartPosition(this._editor.getPosition())
            })), this._ignoreModelContentChanged = !1, this._toDispose.add(this._editor.onDidChangeModelContent(e => {
                this._ignoreModelContentChanged || (e.isFlush && this._decorations.reset(), this._decorations.setStartPosition(this._editor.getPosition()), this._updateDecorationsScheduler.schedule())
            })), this._toDispose.add(this._state.onFindReplaceStateChange(e => this._onStateChanged(e))), this.research(!1, this._state.searchScope)
        }
        dispose() {
            this._isDisposed = !0, Object(q.f)(this._startSearchingTimer), this._toDispose.dispose()
        }
        _onStateChanged(e) {
            if (!this._isDisposed && this._editor.hasModel() && (e.searchString || e.isReplaceRevealed || e.isRegex || e.wholeWord || e.matchCase || e.searchScope)) {
                this._editor.getModel().isTooLargeForSyncing() ? (this._startSearchingTimer.cancel(), this._startSearchingTimer.setIfNotSet(() => {
                    e.searchScope ? this.research(e.moveCursor, this._state.searchScope) : this.research(e.moveCursor)
                }, 240)) : e.searchScope ? this.research(e.moveCursor, this._state.searchScope) : this.research(e.moveCursor)
            }
        }
        static _getSearchRange(e, t) {
            return t || e.getFullModelRange()
        }
        research(e, t) {
            let i = null;
            void 0 !== t ? null !== t && (i = Array.isArray(t) ? t : [t]) : i = this._decorations.getFindScopes(), null !== i && (i = i.map(e => {
                if (e.startLineNumber === e.endLineNumber) return e; {
                    let t = e.endLineNumber;
                    return 1 === e.endColumn && (t -= 1), new ee.a(e.startLineNumber, 1, t, this._editor.getModel().getLineMaxColumn(t))
                }
            }));
            let n = this._findMatches(i, !1, Fe);
            this._decorations.set(n, i);
            const r = this._editor.getSelection();
            let o = this._decorations.getCurrentMatchesPosition(r);
            0 === o && 0 < n.length && (o = 0 < (t = Object(X.h)(n.map(e => e.range), e => 0 <= ee.a.compareRangesUsingStarts(e, r))) ? t - 1 + 1 : o), this._state.changeMatchInfo(o, this._decorations.getCount(), void 0), e && this._editor.getOption(35).cursorMoveOnType && this._moveToNextMatch(this._decorations.getStartPosition())
        }
        _hasMatches() {
            return 0 < this._state.matchesCount
        }
        _cannotFind() {
            if (this._hasMatches()) return !1;
            var e = this._decorations.getFindScope();
            return e && this._editor.revealRangeInCenterIfOutsideViewport(e, 0), !0
        }
        _setCurrentFindMatch(e) {
            var t = this._decorations.setCurrentFindMatch(e);
            this._state.changeMatchInfo(t, this._decorations.getCount(), e), this._editor.setSelection(e), this._editor.revealRangeInCenterIfOutsideViewport(e, 0)
        }
        _prevSearchPosition(e) {
            var t = this._state.isRegex && (0 <= this._state.searchString.indexOf("^") || 0 <= this._state.searchString.indexOf("$"));
            let {
                lineNumber: i,
                column: n
            } = e, r = this._editor.getModel();
            return t || 1 === n ? (1 === i ? i = r.getLineCount() : i--, n = r.getLineMaxColumn(i)) : n--, new J.a(i, n)
        }
        _moveToPrevMatch(e, t = !1) {
            if (this._state.canNavigateBack()) {
                if (this._decorations.getCount() < Fe) {
                    let t = this._decorations.matchBeforePosition(e);
                    return t && t.isEmpty() && t.getStartPosition().equals(e) && (e = this._prevSearchPosition(e), t = this._decorations.matchBeforePosition(e)), void(t && this._setCurrentFindMatch(t))
                }
                if (!this._cannotFind()) {
                    var i = this._decorations.getFindScope();
                    let r = je._getSearchRange(this._editor.getModel(), i);
                    var {
                        lineNumber: n,
                        column: i
                    } = e = (e = r.getEndPosition().isBefore(e) ? r.getEndPosition() : e).isBefore(r.getStartPosition()) ? r.getEndPosition() : e;
                    let o = this._editor.getModel(),
                        s = new J.a(n, i),
                        a = o.findPreviousMatch(this._state.searchString, s, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115) : null, !1);
                    if (a && a.range.isEmpty() && a.range.getStartPosition().equals(s) && (s = this._prevSearchPosition(s), a = o.findPreviousMatch(this._state.searchString, s, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115) : null, !1)), a) return t || r.containsRange(a.range) ? void this._setCurrentFindMatch(a.range) : this._moveToPrevMatch(a.range.getStartPosition(), !0)
                }
            } else(e = this._decorations.matchAfterPosition(e)) && this._setCurrentFindMatch(e)
        }
        moveToPrevMatch() {
            this._moveToPrevMatch(this._editor.getSelection().getStartPosition())
        }
        _nextSearchPosition(e) {
            var t = this._state.isRegex && (0 <= this._state.searchString.indexOf("^") || 0 <= this._state.searchString.indexOf("$"));
            let {
                lineNumber: i,
                column: n
            } = e, r = this._editor.getModel();
            return t || n === r.getLineMaxColumn(i) ? (i === r.getLineCount() ? i = 1 : i++, n = 1) : n++, new J.a(i, n)
        }
        _moveToNextMatch(e) {
            if (this._state.canNavigateForward()) {
                if (this._decorations.getCount() < Fe) {
                    let t = this._decorations.matchAfterPosition(e);
                    return t && t.isEmpty() && t.getStartPosition().equals(e) && (e = this._nextSearchPosition(e), t = this._decorations.matchAfterPosition(e)), void(t && this._setCurrentFindMatch(t))
                }
                var t = this._getNextMatch(e, !1, !0);
                t && this._setCurrentFindMatch(t.range)
            } else(e = this._decorations.matchBeforePosition(e)) && this._setCurrentFindMatch(e)
        }
        _getNextMatch(e, t, i, n = !1) {
            if (this._cannotFind()) return null;
            var r = this._decorations.getFindScope();
            let o = je._getSearchRange(this._editor.getModel(), r);
            var {
                lineNumber: r,
                column: e
            } = e = (e = o.getEndPosition().isBefore(e) ? o.getStartPosition() : e).isBefore(o.getStartPosition()) ? o.getStartPosition() : e;
            let s = this._editor.getModel(),
                a = new J.a(r, e),
                l = s.findNextMatch(this._state.searchString, a, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115) : null, t);
            return i && l && l.range.isEmpty() && l.range.getStartPosition().equals(a) && (a = this._nextSearchPosition(a), l = s.findNextMatch(this._state.searchString, a, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115) : null, t)), l ? n || o.containsRange(l.range) ? l : this._getNextMatch(l.range.getEndPosition(), t, i, !0) : null
        }
        moveToNextMatch() {
            this._moveToNextMatch(this._editor.getSelection().getEndPosition())
        }
        _getReplacePattern() {
            return this._state.isRegex ? function(e) {
                if (!e || 0 === e.length) return new ge(null);
                let t = [],
                    i = new me(e);
                for (let o = 0, s = e.length; o < s; o++) {
                    var n = e.charCodeAt(o);
                    if (92 !== n) {
                        if (36 === n) {
                            if (o++, o >= s) break;
                            if (36 !== (n = e.charCodeAt(o)))
                                if (48 !== n && 38 !== n) {
                                    if (49 <= n && n <= 57) {
                                        let r = n - 48;
                                        if (o + 1 < s && 48 <= (n = e.charCodeAt(o + 1)) && n <= 57) {
                                            o++, r = 10 * r + (n - 48), i.emitUnchanged(o - 2), i.emitMatchIndex(r, o + 1, t), t.length = 0;
                                            continue
                                        }
                                        i.emitUnchanged(o - 1), i.emitMatchIndex(r, o + 1, t), t.length = 0
                                    }
                                } else i.emitUnchanged(o - 1), i.emitMatchIndex(0, o + 1, t), t.length = 0;
                            else i.emitUnchanged(o - 1), i.emitStatic("$", o + 1)
                        }
                    } else {
                        if (o++, o >= s) break;
                        var r = e.charCodeAt(o);
                        switch (r) {
                            case 92:
                                i.emitUnchanged(o - 1), i.emitStatic("\\", o + 1);
                                break;
                            case 110:
                                i.emitUnchanged(o - 1), i.emitStatic("\n", o + 1);
                                break;
                            case 116:
                                i.emitUnchanged(o - 1), i.emitStatic("\t", o + 1);
                                break;
                            case 117:
                            case 85:
                            case 108:
                            case 76:
                                i.emitUnchanged(o - 1), i.emitStatic("", o + 1), t.push(String.fromCharCode(r))
                        }
                    }
                }
                return i.finalize()
            }(this._state.replaceString) : ge.fromStaticValue(this._state.replaceString)
        }
        replace() {
            if (this._hasMatches()) {
                let n = this._getReplacePattern(),
                    r = this._editor.getSelection();
                var e, t, i = this._getNextMatch(r.getStartPosition(), !0, !1);
                i && (r.equalsRange(i.range) ? (e = n.buildReplaceString(i.matches, this._state.preserveCase), t = new Q.a(r, e), this._executeEditorCommand("replace", t), this._decorations.setStartPosition(new J.a(r.startLineNumber, r.startColumn + e.length)), this.research(!0)) : (this._decorations.setStartPosition(this._editor.getPosition()), this._setCurrentFindMatch(i.range)))
            }
        }
        _findMatches(e, t, i) {
            return e = (e || [null]).map(e => je._getSearchRange(this._editor.getModel(), e)), this._editor.getModel().findMatches(this._state.searchString, e, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115) : null, t, i)
        }
        replaceAll() {
            var e;
            this._hasMatches() && (null === (e = this._decorations.getFindScopes()) && this._state.matchesCount >= Fe ? this._largeReplaceAll() : this._regularReplaceAll(e), this.research(!1))
        }
        _largeReplaceAll() {
            var e = new ie.a(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115) : null).parseSearchRequest();
            if (e) {
                let t = e.regex;
                if (!t.multiline) {
                    let e = "mu";
                    t.ignoreCase && (e += "i"), t.global && (e += "g"), t = new RegExp(t.source, e)
                }
                const i = this._editor.getModel(),
                    n = i.getValue(1);
                e = i.getFullModelRange();
                const r = this._getReplacePattern();
                let o;
                const s = this._state.preserveCase;
                o = r.hasReplacementPatterns || s ? n.replace(t, (function() {
                    return r.buildReplaceString(arguments, s)
                })) : n.replace(t, r.buildReplaceString(null, s)), e = new Q.b(e, o, this._editor.getSelection()), this._executeEditorCommand("replaceAll", e)
            }
        }
        _regularReplaceAll(e) {
            const t = this._getReplacePattern();
            let i = this._findMatches(e, t.hasReplacementPatterns || this._state.preserveCase, 1073741824),
                n = [];
            for (let e = 0, r = i.length; e < r; e++) n[e] = t.buildReplaceString(i[e].matches, this._state.preserveCase);
            e = new le(this._editor.getSelection(), i.map(e => e.range), n), this._executeEditorCommand("replaceAll", e)
        }
        selectAllMatches() {
            if (this._hasMatches()) {
                var e = this._decorations.getFindScopes();
                let t = this._findMatches(e, !1, 1073741824).map(e => new te.a(e.range.startLineNumber, e.range.startColumn, e.range.endLineNumber, e.range.endColumn)),
                    i = this._editor.getSelection();
                for (let e = 0, n = t.length; e < n; e++) {
                    if (t[e].equalsRange(i)) {
                        t = [i].concat(t.slice(0, e)).concat(t.slice(e + 1));
                        break
                    }
                }
                this._editor.setSelections(t)
            }
        }
        _executeEditorCommand(e, t) {
            try {
                this._ignoreModelContentChanged = !0, this._editor.pushUndoStop(), this._editor.executeCommand(e, t), this._editor.pushUndoStop()
            } finally {
                this._ignoreModelContentChanged = !1
            }
        }
    }
    var Be = i(1),
        Ve = (v = i(84), i(33)),
        We = (b = i(11), i(2));
    i(374);
    const ze = {
        inputActiveOptionBorder: b.a.fromHex("#007ACC00"),
        inputActiveOptionForeground: b.a.fromHex("#FFFFFF"),
        inputActiveOptionBackground: b.a.fromHex("#0E639C50")
    };
    class He extends v.a {
        constructor(e) {
            super(), this._onChange = this._register(new We.b), this.onChange = this._onChange.event, this._onKeyDown = this._register(new We.b), this.onKeyDown = this._onKeyDown.event, this._opts = Object.assign(Object.assign({}, ze), e), this._checked = this._opts.isChecked;
            const t = ["monaco-custom-checkbox"];
            this._opts.icon && t.push(...Ve.a.asClassNameArray(this._opts.icon)), this._opts.actionClassName && t.push(...this._opts.actionClassName.split(" ")), this._checked && t.push("checked"), this.domNode = document.createElement("div"), this.domNode.title = this._opts.title, this.domNode.classList.add(...t), this._opts.notFocusable || (this.domNode.tabIndex = 0), this.domNode.setAttribute("role", "checkbox"), this.domNode.setAttribute("aria-checked", String(this._checked)), this.domNode.setAttribute("aria-label", this._opts.title), this.applyStyles(), this.onclick(this.domNode, e => {
                this.checked = !this._checked, this._onChange.fire(!1), e.preventDefault()
            }), this.ignoreGesture(this.domNode), this.onkeydown(this.domNode, e => 10 === e.keyCode || 3 === e.keyCode ? (this.checked = !this._checked, this._onChange.fire(!0), void e.preventDefault()) : void this._onKeyDown.fire(e))
        }
        get enabled() {
            return "true" !== this.domNode.getAttribute("aria-disabled")
        }
        focus() {
            this.domNode.focus()
        }
        get checked() {
            return this._checked
        }
        set checked(e) {
            this._checked = e, this.domNode.setAttribute("aria-checked", String(this._checked)), this.domNode.classList.toggle("checked", this._checked), this.applyStyles()
        }
        width() {
            return 22
        }
        style(e) {
            e.inputActiveOptionBorder && (this._opts.inputActiveOptionBorder = e.inputActiveOptionBorder), e.inputActiveOptionForeground && (this._opts.inputActiveOptionForeground = e.inputActiveOptionForeground), e.inputActiveOptionBackground && (this._opts.inputActiveOptionBackground = e.inputActiveOptionBackground), this.applyStyles()
        }
        applyStyles() {
            this.domNode && (this.domNode.style.borderColor = this._checked && this._opts.inputActiveOptionBorder ? this._opts.inputActiveOptionBorder.toString() : "transparent", this.domNode.style.color = this._checked && this._opts.inputActiveOptionForeground ? this._opts.inputActiveOptionForeground.toString() : "inherit", this.domNode.style.backgroundColor = this._checked && this._opts.inputActiveOptionBackground ? this._opts.inputActiveOptionBackground.toString() : "transparent")
        }
        enable() {
            this.domNode.setAttribute("aria-disabled", String(!1))
        }
        disable() {
            this.domNode.setAttribute("aria-disabled", String(!0))
        }
    }
    var Ue = i(0);
    const Ke = Ue.a("caseDescription", "Match Case"),
        $e = Ue.a("wordsDescription", "Match Whole Word"),
        qe = Ue.a("regexDescription", "Use Regular Expression");
    class Ge extends He {
        constructor(e) {
            super({
                icon: Ve.b.caseSensitive,
                title: Ke + e.appendTitle,
                isChecked: e.isChecked,
                inputActiveOptionBorder: e.inputActiveOptionBorder,
                inputActiveOptionForeground: e.inputActiveOptionForeground,
                inputActiveOptionBackground: e.inputActiveOptionBackground
            })
        }
    }
    class Ye extends He {
        constructor(e) {
            super({
                icon: Ve.b.wholeWord,
                title: $e + e.appendTitle,
                isChecked: e.isChecked,
                inputActiveOptionBorder: e.inputActiveOptionBorder,
                inputActiveOptionForeground: e.inputActiveOptionForeground,
                inputActiveOptionBackground: e.inputActiveOptionBackground
            })
        }
    }
    class Ze extends He {
        constructor(e) {
            super({
                icon: Ve.b.regex,
                title: qe + e.appendTitle,
                isChecked: e.isChecked,
                inputActiveOptionBorder: e.inputActiveOptionBorder,
                inputActiveOptionForeground: e.inputActiveOptionForeground,
                inputActiveOptionBackground: e.inputActiveOptionBackground
            })
        }
    }
    class Xe extends v.a {
        constructor(e, t, i, n) {
            super(), this._hideSoon = this._register(new $.e(() => this._hide(), 2e3)), this._isVisible = !1, this._editor = e, this._state = t, this._keybindingService = i, this._domNode = document.createElement("div"), this._domNode.className = "findOptionsWidget", this._domNode.style.display = "none", this._domNode.style.top = "10px", this._domNode.setAttribute("role", "presentation"), this._domNode.setAttribute("aria-hidden", "true"), e = n.getColorTheme().getColor(oe.U), t = n.getColorTheme().getColor(oe.V), i = n.getColorTheme().getColor(oe.T), this.caseSensitive = this._register(new Ge({
                appendTitle: this._keybindingLabelFor(Ne),
                isChecked: this._state.matchCase,
                inputActiveOptionBorder: e,
                inputActiveOptionForeground: t,
                inputActiveOptionBackground: i
            })), this._domNode.appendChild(this.caseSensitive.domNode), this._register(this.caseSensitive.onChange(() => {
                this._state.change({
                    matchCase: this.caseSensitive.checked
                }, !1)
            })), this.wholeWords = this._register(new Ye({
                appendTitle: this._keybindingLabelFor(De),
                isChecked: this._state.wholeWord,
                inputActiveOptionBorder: e,
                inputActiveOptionForeground: t,
                inputActiveOptionBackground: i
            })), this._domNode.appendChild(this.wholeWords.domNode), this._register(this.wholeWords.onChange(() => {
                this._state.change({
                    wholeWord: this.wholeWords.checked
                }, !1)
            })), this.regex = this._register(new Ze({
                appendTitle: this._keybindingLabelFor(Ie),
                isChecked: this._state.isRegex,
                inputActiveOptionBorder: e,
                inputActiveOptionForeground: t,
                inputActiveOptionBackground: i
            })), this._domNode.appendChild(this.regex.domNode), this._register(this.regex.onChange(() => {
                this._state.change({
                    isRegex: this.regex.checked
                }, !1)
            })), this._editor.addOverlayWidget(this), this._register(this._state.onFindReplaceStateChange(e => {
                let t = !1;
                e.isRegex && (this.regex.checked = this._state.isRegex, t = !0), e.wholeWord && (this.wholeWords.checked = this._state.wholeWord, t = !0), e.matchCase && (this.caseSensitive.checked = this._state.matchCase, t = !0), !this._state.isRevealed && t && this._revealTemporarily()
            })), this._register(Be.h(this._domNode, e => this._onMouseOut())), this._register(Be.g(this._domNode, "mouseover", e => this._onMouseOver())), this._applyTheme(n.getColorTheme()), this._register(n.onDidColorThemeChange(this._applyTheme.bind(this)))
        }
        _keybindingLabelFor(e) {
            let t = this._keybindingService.lookupKeybinding(e);
            return t ? ` (${t.getLabel()})` : ""
        }
        dispose() {
            this._editor.removeOverlayWidget(this), super.dispose()
        }
        getId() {
            return Xe.ID
        }
        getDomNode() {
            return this._domNode
        }
        getPosition() {
            return {
                preference: 0
            }
        }
        highlightFindOptions() {
            this._revealTemporarily()
        }
        _revealTemporarily() {
            this._show(), this._hideSoon.schedule()
        }
        _onMouseOut() {
            this._hideSoon.schedule()
        }
        _onMouseOver() {
            this._hideSoon.cancel()
        }
        _show() {
            this._isVisible || (this._isVisible = !0, this._domNode.style.display = "block")
        }
        _hide() {
            this._isVisible && (this._isVisible = !1, this._domNode.style.display = "none")
        }
        _applyTheme(e) {
            e = {
                inputActiveOptionBorder: e.getColor(oe.U),
                inputActiveOptionForeground: e.getColor(oe.V),
                inputActiveOptionBackground: e.getColor(oe.T)
            }, this.caseSensitive.style(e), this.wholeWords.style(e), this.regex.style(e)
        }
    }

    function Qe(e, t) {
        return 1 === e || 2 !== e && t
    }
    Xe.ID = "editor.contrib.findOptionsWidget", Object(se.f)((e, t) => {
        var i = e.getColor(oe.N);
        i && t.addRule(`.monaco-editor .findOptionsWidget { background-color: ${i}; }`), (i = e.getColor(oe.P)) && t.addRule(`.monaco-editor .findOptionsWidget { color: ${i}; }`), (i = e.getColor(oe.mc)) && t.addRule(`.monaco-editor .findOptionsWidget { box-shadow: 0 0 8px 2px ${i}; }`), (e = e.getColor(oe.h)) && t.addRule(`.monaco-editor .findOptionsWidget { border: 2px solid ${e}; }`)
    });
    class Je extends q.a {
        constructor() {
            super(), this._onFindReplaceStateChange = this._register(new We.b), this.onFindReplaceStateChange = this._onFindReplaceStateChange.event, this._searchString = "", this._replaceString = "", this._isRevealed = !1, this._isReplaceRevealed = !1, this._isRegex = !1, this._isRegexOverride = 0, this._wholeWord = !1, this._wholeWordOverride = 0, this._matchCase = !1, this._matchCaseOverride = 0, this._preserveCase = !1, this._preserveCaseOverride = 0, this._searchScope = null, this._matchesPosition = 0, this._matchesCount = 0, this._currentMatch = null, this._loop = !0
        }
        get searchString() {
            return this._searchString
        }
        get replaceString() {
            return this._replaceString
        }
        get isRevealed() {
            return this._isRevealed
        }
        get isReplaceRevealed() {
            return this._isReplaceRevealed
        }
        get isRegex() {
            return Qe(this._isRegexOverride, this._isRegex)
        }
        get wholeWord() {
            return Qe(this._wholeWordOverride, this._wholeWord)
        }
        get matchCase() {
            return Qe(this._matchCaseOverride, this._matchCase)
        }
        get preserveCase() {
            return Qe(this._preserveCaseOverride, this._preserveCase)
        }
        get actualIsRegex() {
            return this._isRegex
        }
        get actualWholeWord() {
            return this._wholeWord
        }
        get actualMatchCase() {
            return this._matchCase
        }
        get actualPreserveCase() {
            return this._preserveCase
        }
        get searchScope() {
            return this._searchScope
        }
        get matchesPosition() {
            return this._matchesPosition
        }
        get matchesCount() {
            return this._matchesCount
        }
        get currentMatch() {
            return this._currentMatch
        }
        changeMatchInfo(e, t, i) {
            let n = {
                    moveCursor: !1,
                    updateHistory: !1,
                    searchString: !1,
                    replaceString: !1,
                    isRevealed: !1,
                    isReplaceRevealed: !1,
                    isRegex: !1,
                    wholeWord: !1,
                    matchCase: !1,
                    preserveCase: !1,
                    searchScope: !1,
                    matchesPosition: !1,
                    matchesCount: !1,
                    currentMatch: !1,
                    loop: !1
                },
                r = !1;
            this._matchesPosition !== (e = t < (e = 0 === t ? 0 : e) ? t : e) && (this._matchesPosition = e, n.matchesPosition = !0, r = !0), this._matchesCount !== t && (this._matchesCount = t, n.matchesCount = !0, r = !0), void 0 !== i && (ee.a.equalsRange(this._currentMatch, i) || (this._currentMatch = i, n.currentMatch = !0, r = !0)), r && this._onFindReplaceStateChange.fire(n)
        }
        change(e, t, i = !0) {
            let n = {
                    moveCursor: t,
                    updateHistory: i,
                    searchString: !1,
                    replaceString: !1,
                    isRevealed: !1,
                    isReplaceRevealed: !1,
                    isRegex: !1,
                    wholeWord: !1,
                    matchCase: !1,
                    preserveCase: !1,
                    searchScope: !1,
                    matchesPosition: !1,
                    matchesCount: !1,
                    currentMatch: !1,
                    loop: !1
                },
                r = !1;
            var o = this.isRegex,
                s = this.wholeWord,
                a = this.matchCase;
            t = this.preserveCase;
            void 0 !== e.searchString && this._searchString !== e.searchString && (this._searchString = e.searchString, n.searchString = !0, r = !0), void 0 !== e.replaceString && this._replaceString !== e.replaceString && (this._replaceString = e.replaceString, n.replaceString = !0, r = !0), void 0 !== e.isRevealed && this._isRevealed !== e.isRevealed && (this._isRevealed = e.isRevealed, n.isRevealed = !0, r = !0), void 0 !== e.isReplaceRevealed && this._isReplaceRevealed !== e.isReplaceRevealed && (this._isReplaceRevealed = e.isReplaceRevealed, n.isReplaceRevealed = !0, r = !0), void 0 !== e.isRegex && (this._isRegex = e.isRegex), void 0 !== e.wholeWord && (this._wholeWord = e.wholeWord), void 0 !== e.matchCase && (this._matchCase = e.matchCase), void 0 !== e.preserveCase && (this._preserveCase = e.preserveCase), void 0 !== e.searchScope && (null !== (i = e.searchScope) && void 0 !== i && i.every(e => {
                var t;
                return null === (t = this._searchScope) || void 0 === t ? void 0 : t.some(t => !ee.a.equalsRange(t, e))
            }) || (this._searchScope = e.searchScope, n.searchScope = !0, r = !0)), void 0 !== e.loop && this._loop !== e.loop && (this._loop = e.loop, n.loop = !0, r = !0), this._isRegexOverride = void 0 !== e.isRegexOverride ? e.isRegexOverride : 0, this._wholeWordOverride = void 0 !== e.wholeWordOverride ? e.wholeWordOverride : 0, this._matchCaseOverride = void 0 !== e.matchCaseOverride ? e.matchCaseOverride : 0, this._preserveCaseOverride = void 0 !== e.preserveCaseOverride ? e.preserveCaseOverride : 0, o !== this.isRegex && (r = !0, n.isRegex = !0), s !== this.wholeWord && (r = !0, n.wholeWord = !0), a !== this.matchCase && (r = !0, n.matchCase = !0), t !== this.preserveCase && (r = !0, n.preserveCase = !0), r && this._onFindReplaceStateChange.fire(n)
        }
        canNavigateBack() {
            return this.canNavigateInLoop() || 1 !== this.matchesPosition
        }
        canNavigateForward() {
            return this.canNavigateInLoop() || this.matchesPosition < this.matchesCount
        }
        canNavigateInLoop() {
            return this._loop || this.matchesCount >= Fe
        }
    }
    var et = i(91),
        tt = i(142),
        it = i(31),
        nt = i(9),
        rt = (i(378), i(152));
    i(240);
    const ot = Ue.a("defaultLabel", "input");
    class st extends v.a {
        constructor(e, t, i, n) {
            super(), this._showOptionButtons = i, this.fixFocusOnOptionClickEnabled = !0, this.imeSessionInProgress = !1, this._onDidOptionChange = this._register(new We.b), this.onDidOptionChange = this._onDidOptionChange.event, this._onKeyDown = this._register(new We.b), this.onKeyDown = this._onKeyDown.event, this._onMouseDown = this._register(new We.b), this.onMouseDown = this._onMouseDown.event, this._onInput = this._register(new We.b), this._onKeyUp = this._register(new We.b), this._onCaseSensitiveKeyDown = this._register(new We.b), this.onCaseSensitiveKeyDown = this._onCaseSensitiveKeyDown.event, this._onRegexKeyDown = this._register(new We.b), this.onRegexKeyDown = this._onRegexKeyDown.event, this._lastHighlightFindOptions = 0, this.contextViewProvider = t, this.placeholder = n.placeholder || "", this.validation = n.validation, this.label = n.label || ot, this.inputActiveOptionBorder = n.inputActiveOptionBorder, this.inputActiveOptionForeground = n.inputActiveOptionForeground, this.inputActiveOptionBackground = n.inputActiveOptionBackground, this.inputBackground = n.inputBackground, this.inputForeground = n.inputForeground, this.inputBorder = n.inputBorder, this.inputValidationInfoBorder = n.inputValidationInfoBorder, this.inputValidationInfoBackground = n.inputValidationInfoBackground, this.inputValidationInfoForeground = n.inputValidationInfoForeground, this.inputValidationWarningBorder = n.inputValidationWarningBorder, this.inputValidationWarningBackground = n.inputValidationWarningBackground, this.inputValidationWarningForeground = n.inputValidationWarningForeground, this.inputValidationErrorBorder = n.inputValidationErrorBorder, this.inputValidationErrorBackground = n.inputValidationErrorBackground, this.inputValidationErrorForeground = n.inputValidationErrorForeground;
            var r = n.appendCaseSensitiveLabel || "",
                o = n.appendWholeWordsLabel || "",
                s = n.appendRegexLabel || "",
                a = n.history || [],
                l = !!n.flexibleHeight;
            i = !!n.flexibleWidth, t = n.flexibleMaxHeight;
            this.domNode = document.createElement("div"), this.domNode.classList.add("monaco-findInput"), this.inputBox = this._register(new rt.a(this.domNode, this.contextViewProvider, {
                placeholder: this.placeholder || "",
                ariaLabel: this.label || "",
                validationOptions: {
                    validation: this.validation
                },
                inputBackground: this.inputBackground,
                inputForeground: this.inputForeground,
                inputBorder: this.inputBorder,
                inputValidationInfoBackground: this.inputValidationInfoBackground,
                inputValidationInfoForeground: this.inputValidationInfoForeground,
                inputValidationInfoBorder: this.inputValidationInfoBorder,
                inputValidationWarningBackground: this.inputValidationWarningBackground,
                inputValidationWarningForeground: this.inputValidationWarningForeground,
                inputValidationWarningBorder: this.inputValidationWarningBorder,
                inputValidationErrorBackground: this.inputValidationErrorBackground,
                inputValidationErrorForeground: this.inputValidationErrorForeground,
                inputValidationErrorBorder: this.inputValidationErrorBorder,
                history: a,
                showHistoryHint: n.showHistoryHint,
                flexibleHeight: l,
                flexibleWidth: i,
                flexibleMaxHeight: t
            })), this.regex = this._register(new Ze({
                appendTitle: s,
                isChecked: !1,
                inputActiveOptionBorder: this.inputActiveOptionBorder,
                inputActiveOptionForeground: this.inputActiveOptionForeground,
                inputActiveOptionBackground: this.inputActiveOptionBackground
            })), this._register(this.regex.onChange(e => {
                this._onDidOptionChange.fire(e), !e && this.fixFocusOnOptionClickEnabled && this.inputBox.focus(), this.validate()
            })), this._register(this.regex.onKeyDown(e => {
                this._onRegexKeyDown.fire(e)
            })), this.wholeWords = this._register(new Ye({
                appendTitle: o,
                isChecked: !1,
                inputActiveOptionBorder: this.inputActiveOptionBorder,
                inputActiveOptionForeground: this.inputActiveOptionForeground,
                inputActiveOptionBackground: this.inputActiveOptionBackground
            })), this._register(this.wholeWords.onChange(e => {
                this._onDidOptionChange.fire(e), !e && this.fixFocusOnOptionClickEnabled && this.inputBox.focus(), this.validate()
            })), this.caseSensitive = this._register(new Ge({
                appendTitle: r,
                isChecked: !1,
                inputActiveOptionBorder: this.inputActiveOptionBorder,
                inputActiveOptionForeground: this.inputActiveOptionForeground,
                inputActiveOptionBackground: this.inputActiveOptionBackground
            })), this._register(this.caseSensitive.onChange(e => {
                this._onDidOptionChange.fire(e), !e && this.fixFocusOnOptionClickEnabled && this.inputBox.focus(), this.validate()
            })), this._register(this.caseSensitive.onKeyDown(e => {
                this._onCaseSensitiveKeyDown.fire(e)
            })), this._showOptionButtons && (this.inputBox.paddingRight = this.caseSensitive.width() + this.wholeWords.width() + this.regex.width());
            let d = [this.caseSensitive.domNode, this.wholeWords.domNode, this.regex.domNode];
            this.onkeydown(this.domNode, e => {
                if (e.equals(15) || e.equals(17) || e.equals(9)) {
                    var t = d.indexOf(document.activeElement);
                    if (0 <= t) {
                        let i = -1;
                        e.equals(17) ? i = (t + 1) % d.length : e.equals(15) && (i = 0 === t ? d.length - 1 : t - 1), e.equals(9) ? (d[t].blur(), this.inputBox.focus()) : 0 <= i && d[i].focus(), Be.c.stop(e, !0)
                    }
                }
            });
            let c = document.createElement("div");
            c.className = "controls", c.style.display = this._showOptionButtons ? "block" : "none", c.appendChild(this.caseSensitive.domNode), c.appendChild(this.wholeWords.domNode), c.appendChild(this.regex.domNode), this.domNode.appendChild(c), e && e.appendChild(this.domNode), this._register(Be.g(this.inputBox.inputElement, "compositionstart", e => {
                this.imeSessionInProgress = !0
            })), this._register(Be.g(this.inputBox.inputElement, "compositionend", e => {
                this.imeSessionInProgress = !1, this._onInput.fire()
            })), this.onkeydown(this.inputBox.inputElement, e => this._onKeyDown.fire(e)), this.onkeyup(this.inputBox.inputElement, e => this._onKeyUp.fire(e)), this.oninput(this.inputBox.inputElement, e => this._onInput.fire()), this.onmousedown(this.inputBox.inputElement, e => this._onMouseDown.fire(e))
        }
        enable() {
            this.domNode.classList.remove("disabled"), this.inputBox.enable(), this.regex.enable(), this.wholeWords.enable(), this.caseSensitive.enable()
        }
        disable() {
            this.domNode.classList.add("disabled"), this.inputBox.disable(), this.regex.disable(), this.wholeWords.disable(), this.caseSensitive.disable()
        }
        setFocusInputOnOptionClick(e) {
            this.fixFocusOnOptionClickEnabled = e
        }
        setEnabled(e) {
            e ? this.enable() : this.disable()
        }
        getValue() {
            return this.inputBox.value
        }
        setValue(e) {
            this.inputBox.value !== e && (this.inputBox.value = e)
        }
        style(e) {
            this.inputActiveOptionBorder = e.inputActiveOptionBorder, this.inputActiveOptionForeground = e.inputActiveOptionForeground, this.inputActiveOptionBackground = e.inputActiveOptionBackground, this.inputBackground = e.inputBackground, this.inputForeground = e.inputForeground, this.inputBorder = e.inputBorder, this.inputValidationInfoBackground = e.inputValidationInfoBackground, this.inputValidationInfoForeground = e.inputValidationInfoForeground, this.inputValidationInfoBorder = e.inputValidationInfoBorder, this.inputValidationWarningBackground = e.inputValidationWarningBackground, this.inputValidationWarningForeground = e.inputValidationWarningForeground, this.inputValidationWarningBorder = e.inputValidationWarningBorder, this.inputValidationErrorBackground = e.inputValidationErrorBackground, this.inputValidationErrorForeground = e.inputValidationErrorForeground, this.inputValidationErrorBorder = e.inputValidationErrorBorder, this.applyStyles()
        }
        applyStyles() {
            var e;
            this.domNode && (e = {
                inputActiveOptionBorder: this.inputActiveOptionBorder,
                inputActiveOptionForeground: this.inputActiveOptionForeground,
                inputActiveOptionBackground: this.inputActiveOptionBackground
            }, this.regex.style(e), this.wholeWords.style(e), this.caseSensitive.style(e), e = {
                inputBackground: this.inputBackground,
                inputForeground: this.inputForeground,
                inputBorder: this.inputBorder,
                inputValidationInfoBackground: this.inputValidationInfoBackground,
                inputValidationInfoForeground: this.inputValidationInfoForeground,
                inputValidationInfoBorder: this.inputValidationInfoBorder,
                inputValidationWarningBackground: this.inputValidationWarningBackground,
                inputValidationWarningForeground: this.inputValidationWarningForeground,
                inputValidationWarningBorder: this.inputValidationWarningBorder,
                inputValidationErrorBackground: this.inputValidationErrorBackground,
                inputValidationErrorForeground: this.inputValidationErrorForeground,
                inputValidationErrorBorder: this.inputValidationErrorBorder
            }, this.inputBox.style(e))
        }
        select() {
            this.inputBox.select()
        }
        focus() {
            this.inputBox.focus()
        }
        getCaseSensitive() {
            return this.caseSensitive.checked
        }
        setCaseSensitive(e) {
            this.caseSensitive.checked = e
        }
        getWholeWords() {
            return this.wholeWords.checked
        }
        setWholeWords(e) {
            this.wholeWords.checked = e
        }
        getRegex() {
            return this.regex.checked
        }
        setRegex(e) {
            this.regex.checked = e, this.validate()
        }
        focusOnCaseSensitive() {
            this.caseSensitive.focus()
        }
        highlightFindOptions() {
            this.domNode.classList.remove("highlight-" + this._lastHighlightFindOptions), this._lastHighlightFindOptions = 1 - this._lastHighlightFindOptions, this.domNode.classList.add("highlight-" + this._lastHighlightFindOptions)
        }
        validate() {
            this.inputBox.validate()
        }
        clearMessage() {
            this.inputBox.hideMessage()
        }
    }
    const at = Ue.a("defaultLabel", "input"),
        lt = Ue.a("label.preserveCaseCheckbox", "Preserve Case");
    class dt extends He {
        constructor(e) {
            super({
                icon: Ve.b.preserveCase,
                title: lt + e.appendTitle,
                isChecked: e.isChecked,
                inputActiveOptionBorder: e.inputActiveOptionBorder,
                inputActiveOptionForeground: e.inputActiveOptionForeground,
                inputActiveOptionBackground: e.inputActiveOptionBackground
            })
        }
    }
    class ct extends v.a {
        constructor(e, t, i, n) {
            super(), this._showOptionButtons = i, this.fixFocusOnOptionClickEnabled = !0, this.cachedOptionsWidth = 0, this._onDidOptionChange = this._register(new We.b), this.onDidOptionChange = this._onDidOptionChange.event, this._onKeyDown = this._register(new We.b), this.onKeyDown = this._onKeyDown.event, this._onMouseDown = this._register(new We.b), this._onInput = this._register(new We.b), this._onKeyUp = this._register(new We.b), this._onPreserveCaseKeyDown = this._register(new We.b), this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event, this.contextViewProvider = t, this.placeholder = n.placeholder || "", this.validation = n.validation, this.label = n.label || at, this.inputActiveOptionBorder = n.inputActiveOptionBorder, this.inputActiveOptionForeground = n.inputActiveOptionForeground, this.inputActiveOptionBackground = n.inputActiveOptionBackground, this.inputBackground = n.inputBackground, this.inputForeground = n.inputForeground, this.inputBorder = n.inputBorder, this.inputValidationInfoBorder = n.inputValidationInfoBorder, this.inputValidationInfoBackground = n.inputValidationInfoBackground, this.inputValidationInfoForeground = n.inputValidationInfoForeground, this.inputValidationWarningBorder = n.inputValidationWarningBorder, this.inputValidationWarningBackground = n.inputValidationWarningBackground, this.inputValidationWarningForeground = n.inputValidationWarningForeground, this.inputValidationErrorBorder = n.inputValidationErrorBorder, this.inputValidationErrorBackground = n.inputValidationErrorBackground, this.inputValidationErrorForeground = n.inputValidationErrorForeground;
            var r = n.appendPreserveCaseLabel || "",
                o = n.history || [],
                s = !!n.flexibleHeight;
            i = !!n.flexibleWidth, t = n.flexibleMaxHeight;
            this.domNode = document.createElement("div"), this.domNode.classList.add("monaco-findInput"), this.inputBox = this._register(new rt.a(this.domNode, this.contextViewProvider, {
                ariaLabel: this.label || "",
                placeholder: this.placeholder || "",
                validationOptions: {
                    validation: this.validation
                },
                inputBackground: this.inputBackground,
                inputForeground: this.inputForeground,
                inputBorder: this.inputBorder,
                inputValidationInfoBackground: this.inputValidationInfoBackground,
                inputValidationInfoForeground: this.inputValidationInfoForeground,
                inputValidationInfoBorder: this.inputValidationInfoBorder,
                inputValidationWarningBackground: this.inputValidationWarningBackground,
                inputValidationWarningForeground: this.inputValidationWarningForeground,
                inputValidationWarningBorder: this.inputValidationWarningBorder,
                inputValidationErrorBackground: this.inputValidationErrorBackground,
                inputValidationErrorForeground: this.inputValidationErrorForeground,
                inputValidationErrorBorder: this.inputValidationErrorBorder,
                history: o,
                showHistoryHint: n.showHistoryHint,
                flexibleHeight: s,
                flexibleWidth: i,
                flexibleMaxHeight: t
            })), this.preserveCase = this._register(new dt({
                appendTitle: r,
                isChecked: !1,
                inputActiveOptionBorder: this.inputActiveOptionBorder,
                inputActiveOptionForeground: this.inputActiveOptionForeground,
                inputActiveOptionBackground: this.inputActiveOptionBackground
            })), this._register(this.preserveCase.onChange(e => {
                this._onDidOptionChange.fire(e), !e && this.fixFocusOnOptionClickEnabled && this.inputBox.focus(), this.validate()
            })), this._register(this.preserveCase.onKeyDown(e => {
                this._onPreserveCaseKeyDown.fire(e)
            })), this._showOptionButtons ? this.cachedOptionsWidth = this.preserveCase.width() : this.cachedOptionsWidth = 0;
            let a = [this.preserveCase.domNode];
            this.onkeydown(this.domNode, e => {
                if (e.equals(15) || e.equals(17) || e.equals(9)) {
                    var t = a.indexOf(document.activeElement);
                    if (0 <= t) {
                        let i = -1;
                        e.equals(17) ? i = (t + 1) % a.length : e.equals(15) && (i = 0 === t ? a.length - 1 : t - 1), e.equals(9) ? (a[t].blur(), this.inputBox.focus()) : 0 <= i && a[i].focus(), Be.c.stop(e, !0)
                    }
                }
            });
            let l = document.createElement("div");
            l.className = "controls", l.style.display = this._showOptionButtons ? "block" : "none", l.appendChild(this.preserveCase.domNode), this.domNode.appendChild(l), e && e.appendChild(this.domNode), this.onkeydown(this.inputBox.inputElement, e => this._onKeyDown.fire(e)), this.onkeyup(this.inputBox.inputElement, e => this._onKeyUp.fire(e)), this.oninput(this.inputBox.inputElement, e => this._onInput.fire()), this.onmousedown(this.inputBox.inputElement, e => this._onMouseDown.fire(e))
        }
        enable() {
            this.domNode.classList.remove("disabled"), this.inputBox.enable(), this.preserveCase.enable()
        }
        disable() {
            this.domNode.classList.add("disabled"), this.inputBox.disable(), this.preserveCase.disable()
        }
        setEnabled(e) {
            e ? this.enable() : this.disable()
        }
        style(e) {
            this.inputActiveOptionBorder = e.inputActiveOptionBorder, this.inputActiveOptionForeground = e.inputActiveOptionForeground, this.inputActiveOptionBackground = e.inputActiveOptionBackground, this.inputBackground = e.inputBackground, this.inputForeground = e.inputForeground, this.inputBorder = e.inputBorder, this.inputValidationInfoBackground = e.inputValidationInfoBackground, this.inputValidationInfoForeground = e.inputValidationInfoForeground, this.inputValidationInfoBorder = e.inputValidationInfoBorder, this.inputValidationWarningBackground = e.inputValidationWarningBackground, this.inputValidationWarningForeground = e.inputValidationWarningForeground, this.inputValidationWarningBorder = e.inputValidationWarningBorder, this.inputValidationErrorBackground = e.inputValidationErrorBackground, this.inputValidationErrorForeground = e.inputValidationErrorForeground, this.inputValidationErrorBorder = e.inputValidationErrorBorder, this.applyStyles()
        }
        applyStyles() {
            var e;
            this.domNode && (e = {
                inputActiveOptionBorder: this.inputActiveOptionBorder,
                inputActiveOptionForeground: this.inputActiveOptionForeground,
                inputActiveOptionBackground: this.inputActiveOptionBackground
            }, this.preserveCase.style(e), e = {
                inputBackground: this.inputBackground,
                inputForeground: this.inputForeground,
                inputBorder: this.inputBorder,
                inputValidationInfoBackground: this.inputValidationInfoBackground,
                inputValidationInfoForeground: this.inputValidationInfoForeground,
                inputValidationInfoBorder: this.inputValidationInfoBorder,
                inputValidationWarningBackground: this.inputValidationWarningBackground,
                inputValidationWarningForeground: this.inputValidationWarningForeground,
                inputValidationWarningBorder: this.inputValidationWarningBorder,
                inputValidationErrorBackground: this.inputValidationErrorBackground,
                inputValidationErrorForeground: this.inputValidationErrorForeground,
                inputValidationErrorBorder: this.inputValidationErrorBorder
            }, this.inputBox.style(e))
        }
        select() {
            this.inputBox.select()
        }
        focus() {
            this.inputBox.focus()
        }
        getPreserveCase() {
            return this.preserveCase.checked
        }
        setPreserveCase(e) {
            this.preserveCase.checked = e
        }
        focusOnPreserve() {
            this.preserveCase.focus()
        }
        validate() {
            this.inputBox && this.inputBox.validate()
        }
        set width(e) {
            this.inputBox.paddingRight = this.cachedOptionsWidth, this.inputBox.width = e, this.domNode.style.width = e + "px"
        }
        dispose() {
            super.dispose()
        }
    }
    y = i(128);
    var ht = i(51),
        ut = i(109),
        pt = i(90),
        gt = i(17),
        ft = i(39),
        mt = i(15),
        vt = i(114);
    class bt {
        constructor() {
            this.value = "", this.pos = 0
        }
        static isDigitCharacter(e) {
            return 48 <= e && e <= 57
        }
        static isVariableCharacter(e) {
            return 95 === e || 97 <= e && e <= 122 || 65 <= e && e <= 90
        }
        text(e) {
            this.value = e, this.pos = 0
        }
        tokenText(e) {
            return this.value.substr(e.pos, e.len)
        }
        next() {
            if (this.pos >= this.value.length) return {
                type: 14,
                pos: this.pos,
                len: 0
            };
            var e = this.pos;
            let t, i = 0,
                n = this.value.charCodeAt(e);
            if (t = bt._table[n], "number" == typeof t) return this.pos += 1, {
                type: t,
                pos: e,
                len: 1
            };
            if (bt.isDigitCharacter(n)) {
                for (t = 8; i += 1, n = this.value.charCodeAt(e + i), bt.isDigitCharacter(n););
                return this.pos += i, {
                    type: t,
                    pos: e,
                    len: i
                }
            }
            if (bt.isVariableCharacter(n)) {
                for (t = 9; n = this.value.charCodeAt(e + ++i), bt.isVariableCharacter(n) || bt.isDigitCharacter(n););
                return this.pos += i, {
                    type: t,
                    pos: e,
                    len: i
                }
            }
            for (t = 10; i += 1, n = this.value.charCodeAt(e + i), !isNaN(n) && void 0 === bt._table[n] && !bt.isDigitCharacter(n) && !bt.isVariableCharacter(n););
            return this.pos += i, {
                type: t,
                pos: e,
                len: i
            }
        }
    }
    bt._table = {
        36: 0,
        58: 1,
        44: 2,
        123: 3,
        125: 4,
        92: 5,
        47: 6,
        124: 7,
        43: 11,
        45: 12,
        63: 13
    };
    class _t {
        constructor() {
            this._children = []
        }
        appendChild(e) {
            return e instanceof wt && this._children[this._children.length - 1] instanceof wt ? this._children[this._children.length - 1].value += e.value : (e.parent = this)._children.push(e), this
        }
        replace(e, t) {
            const {
                parent: i
            } = e;
            e = i.children.indexOf(e);
            const n = i.children.slice(0);
            n.splice(e, 1, ...t), i._children = n,
                function e(t, i) {
                    for (const n of t) n.parent = i, e(n.children, n)
                }(t, i)
        }
        get children() {
            return this._children
        }
        get snippet() {
            let e = this;
            for (;;) {
                if (!e) return;
                if (e instanceof Et) return e;
                e = e.parent
            }
        }
        toString() {
            return this.children.reduce((e, t) => e + t.toString(), "")
        }
        len() {
            return 0
        }
    }
    class wt extends _t {
        constructor(e) {
            super(), this.value = e
        }
        toString() {
            return this.value
        }
        len() {
            return this.value.length
        }
        clone() {
            return new wt(this.value)
        }
    }
    class yt extends _t {}
    class Ct extends yt {
        constructor(e) {
            super(), this.index = e
        }
        static compareByIndex(e, t) {
            return e.index === t.index ? 0 : e.isFinalTabstop ? 1 : t.isFinalTabstop || e.index < t.index ? -1 : e.index > t.index ? 1 : 0
        }
        get isFinalTabstop() {
            return 0 === this.index
        }
        get choice() {
            return 1 === this._children.length && this._children[0] instanceof xt ? this._children[0] : void 0
        }
        clone() {
            let e = new Ct(this.index);
            return this.transform && (e.transform = this.transform.clone()), e._children = this.children.map(e => e.clone()), e
        }
    }
    class xt extends _t {
        constructor() {
            super(...arguments), this.options = []
        }
        appendChild(e) {
            return e instanceof wt && (e.parent = this).options.push(e), this
        }
        toString() {
            return this.options[0].value
        }
        len() {
            return this.options[0].len()
        }
        clone() {
            var e = new xt;
            return this.options.forEach(e.appendChild, e), e
        }
    }
    class St extends _t {
        constructor() {
            super(...arguments), this.regexp = new RegExp("")
        }
        resolve(e) {
            const t = this;
            let i = !1,
                n = e.replace(this.regexp, (function() {
                    return i = !0, t._replace(Array.prototype.slice.call(arguments, 0, -2))
                }));
            return !i && this._children.some(e => e instanceof kt && Boolean(e.elseValue)) && (n = this._replace([])), n
        }
        _replace(e) {
            let t = "";
            for (const n of this._children) {
                var i;
                n instanceof kt ? (i = e[n.index] || "", t += i = n.resolve(i)) : t += n.toString()
            }
            return t
        }
        toString() {
            return ""
        }
        clone() {
            let e = new St;
            return e.regexp = new RegExp(this.regexp.source, (this.regexp.ignoreCase ? "i" : "") + (this.regexp.global ? "g" : "")), e._children = this.children.map(e => e.clone()), e
        }
    }
    class kt extends _t {
        constructor(e, t, i, n) {
            super(), this.index = e, this.shorthandName = t, this.ifValue = i, this.elseValue = n
        }
        resolve(e) {
            return "upcase" === this.shorthandName ? e ? e.toLocaleUpperCase() : "" : "downcase" === this.shorthandName ? e ? e.toLocaleLowerCase() : "" : "capitalize" === this.shorthandName ? e ? e[0].toLocaleUpperCase() + e.substr(1) : "" : "pascalcase" === this.shorthandName ? e ? this._toPascalCase(e) : "" : "camelcase" === this.shorthandName ? e ? this._toCamelCase(e) : "" : Boolean(e) && "string" == typeof this.ifValue ? this.ifValue : Boolean(e) || "string" != typeof this.elseValue ? e || "" : this.elseValue
        }
        _toPascalCase(e) {
            const t = e.match(/[a-z0-9]+/gi);
            return t ? t.map(e => e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()).join("") : e
        }
        _toCamelCase(e) {
            const t = e.match(/[a-z0-9]+/gi);
            return t ? t.map((e, t) => 0 === t ? e.toLowerCase() : e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()).join("") : e
        }
        clone() {
            return new kt(this.index, this.shorthandName, this.ifValue, this.elseValue)
        }
    }
    class Lt extends yt {
        constructor(e) {
            super(), this.name = e
        }
        resolve(e) {
            let t = e.resolve(this);
            return this.transform && (t = this.transform.resolve(t || "")), void 0 !== t && (this._children = [new wt(t)], !0)
        }
        clone() {
            const e = new Lt(this.name);
            return this.transform && (e.transform = this.transform.clone()), e._children = this.children.map(e => e.clone()), e
        }
    }

    function Ot(e, t) {
        const i = [...e];
        for (; 0 < i.length;) {
            const e = i.shift();
            if (!t(e)) break;
            i.unshift(...e.children)
        }
    }
    class Et extends _t {
        get placeholderInfo() {
            if (!this._placeholders) {
                let e, t = [];
                this.walk((function(i) {
                    return i instanceof Ct && (t.push(i), e = !e || e.index < i.index ? i : e), !0
                })), this._placeholders = {
                    all: t,
                    last: e
                }
            }
            return this._placeholders
        }
        get placeholders() {
            var {
                all: e
            } = this.placeholderInfo;
            return e
        }
        offset(e) {
            let t = 0,
                i = !1;
            return this.walk(n => n === e ? !(i = !0) : (t += n.len(), !0)), i ? t : -1
        }
        fullLen(e) {
            let t = 0;
            return Ot([e], e => (t += e.len(), !0)), t
        }
        enclosingPlaceholders(e) {
            let t = [],
                {
                    parent: i
                } = e;
            for (; i;) i instanceof Ct && t.push(i), i = i.parent;
            return t
        }
        resolveVariables(e) {
            return this.walk(t => (t instanceof Lt && t.resolve(e) && (this._placeholders = void 0), !0)), this
        }
        appendChild(e) {
            return this._placeholders = void 0, super.appendChild(e)
        }
        replace(e, t) {
            return this._placeholders = void 0, super.replace(e, t)
        }
        clone() {
            var e = new Et;
            return this._children = this.children.map(e => e.clone()), e
        }
        walk(e) {
            Ot(this.children, e)
        }
    }
    class Nt {
        constructor() {
            this._scanner = new bt, this._token = {
                type: 14,
                pos: 0,
                len: 0
            }
        }
        static escape(e) {
            return e.replace(/\$|}|\\/g, "\\$&")
        }
        static guessNeedsClipboard(e) {
            return /\${?CLIPBOARD/.test(e)
        }
        parse(e, t, i) {
            this._scanner.text(e), this._token = this._scanner.next();
            const n = new Et;
            for (; this._parse(n););
            const r = new Map,
                o = [];
            let s = 0;
            n.walk(e => (e instanceof Ct && (s += 1, e.isFinalTabstop ? r.set(0, void 0) : !r.has(e.index) && 0 < e.children.length ? r.set(e.index, e.children) : o.push(e)), !0));
            for (const e of o) {
                var a = r.get(e.index);
                if (a) {
                    const t = new Ct(e.index);
                    t.transform = e.transform;
                    for (const e of a) t.appendChild(e.clone());
                    n.replace(e, [t])
                }
            }
            return i = i || 0 < s && t, !r.has(0) && i && n.appendChild(new Ct(0)), n
        }
        _accept(e, t) {
            return (void 0 === e || this._token.type === e) && (t = !t || this._scanner.tokenText(this._token), this._token = this._scanner.next(), t)
        }
        _backTo(e) {
            return this._scanner.pos = e.pos + e.len, this._token = e, !1
        }
        _until(e) {
            for (var t = this._token; this._token.type !== e;) {
                if (14 === this._token.type) return !1;
                if (5 === this._token.type) {
                    var i = this._scanner.next();
                    if (0 !== i.type && 4 !== i.type && 5 !== i.type) return !1
                }
                this._token = this._scanner.next()
            }
            return t = this._scanner.value.substring(t.pos, this._token.pos).replace(/\\(\$|}|\\)/g, "$1"), this._token = this._scanner.next(), t
        }
        _parse(e) {
            return this._parseEscaped(e) || this._parseTabstopOrVariableName(e) || this._parseComplexPlaceholder(e) || this._parseComplexVariable(e) || this._parseAnything(e)
        }
        _parseEscaped(e) {
            let t;
            return !!(t = this._accept(5, !0)) && (t = this._accept(0, !0) || this._accept(4, !0) || this._accept(5, !0) || t, e.appendChild(new wt(t)), !0)
        }
        _parseTabstopOrVariableName(e) {
            let t;
            var i = this._token;
            return this._accept(0) && (t = this._accept(9, !0) || this._accept(8, !0)) ? (e.appendChild(/^\d+$/.test(t) ? new Ct(Number(t)) : new Lt(t)), !0) : this._backTo(i)
        }
        _parseComplexPlaceholder(e) {
            let t;
            var i = this._token;
            if (!(this._accept(0) && this._accept(3) && (t = this._accept(8, !0)))) return this._backTo(i);
            const n = new Ct(Number(t));
            if (this._accept(1))
                for (;;) {
                    if (this._accept(4)) return e.appendChild(n), !0;
                    if (!this._parse(n)) return e.appendChild(new wt("${" + t + ":")), n.children.forEach(e.appendChild, e), !0
                } else {
                    if (!(0 < n.index && this._accept(7))) return this._accept(6) ? this._parseTransform(n) ? (e.appendChild(n), !0) : (this._backTo(i), !1) : this._accept(4) ? (e.appendChild(n), !0) : this._backTo(i);
                    for (var r = new xt;;) {
                        if (this._parseChoiceElement(r)) {
                            if (this._accept(2)) continue;
                            if (this._accept(7) && (n.appendChild(r), this._accept(4))) return e.appendChild(n), !0
                        }
                        return this._backTo(i), !1
                    }
                }
        }
        _parseChoiceElement(e) {
            var t = this._token;
            const i = [];
            for (; 2 !== this._token.type && 7 !== this._token.type;) {
                let e;
                if (e = (e = this._accept(5, !0)) ? this._accept(2, !0) || this._accept(7, !0) || this._accept(5, !0) || e : this._accept(void 0, !0), !e) return this._backTo(t), !1;
                i.push(e)
            }
            return 0 === i.length ? (this._backTo(t), !1) : (e.appendChild(new wt(i.join(""))), !0)
        }
        _parseComplexVariable(e) {
            let t;
            var i = this._token;
            if (!(this._accept(0) && this._accept(3) && (t = this._accept(9, !0)))) return this._backTo(i);
            const n = new Lt(t);
            if (!this._accept(1)) return this._accept(6) ? this._parseTransform(n) ? (e.appendChild(n), !0) : (this._backTo(i), !1) : this._accept(4) ? (e.appendChild(n), !0) : this._backTo(i);
            for (;;) {
                if (this._accept(4)) return e.appendChild(n), !0;
                if (!this._parse(n)) return e.appendChild(new wt("${" + t + ":")), n.children.forEach(e.appendChild, e), !0
            }
        }
        _parseTransform(e) {
            let t = new St,
                i = "",
                n = "";
            for (; !this._accept(6);) {
                let e;
                if (e = this._accept(5, !0)) e = this._accept(6, !0) || e, i += e;
                else {
                    if (14 === this._token.type) return !1;
                    i += this._accept(void 0, !0)
                }
            }
            for (; !this._accept(6);) {
                let e;
                if (e = this._accept(5, !0)) e = this._accept(5, !0) || this._accept(6, !0) || e, t.appendChild(new wt(e));
                else if (!this._parseFormatString(t) && !this._parseAnything(t)) return !1
            }
            for (; !this._accept(4);) {
                if (14 === this._token.type) return !1;
                n += this._accept(void 0, !0)
            }
            try {
                t.regexp = new RegExp(i, n)
            } catch (e) {
                return !1
            }
            return e.transform = t, !0
        }
        _parseFormatString(e) {
            var t = this._token;
            if (!this._accept(0)) return !1;
            let i = !1;
            this._accept(3) && (i = !0);
            var n = this._accept(8, !0);
            if (!n) return this._backTo(t), !1;
            if (!i) return e.appendChild(new kt(Number(n))), !0;
            if (this._accept(4)) return e.appendChild(new kt(Number(n))), !0;
            if (!this._accept(1)) return this._backTo(t), !1;
            if (this._accept(6)) {
                var r = this._accept(9, !0);
                return r && this._accept(4) ? (e.appendChild(new kt(Number(n), r)), !0) : (this._backTo(t), !1)
            }
            if (this._accept(11)) {
                if (r = this._until(4)) return e.appendChild(new kt(Number(n), void 0, r, void 0)), !0
            } else if (this._accept(12)) {
                var o = this._until(4);
                if (o) return e.appendChild(new kt(Number(n), void 0, void 0, o)), !0
            } else if (this._accept(13)) {
                if (o = this._until(1)) {
                    var s = this._until(4);
                    if (s) return e.appendChild(new kt(Number(n), void 0, o, s)), !0
                }
            } else if (s = this._until(4)) return e.appendChild(new kt(Number(n), void 0, void 0, s)), !0;
            return this._backTo(t), !1
        }
        _parseAnything(e) {
            return 14 !== this._token.type && (e.appendChild(new wt(this._scanner.tokenText(this._token))), this._accept(void 0), !0)
        }
    }
    var Dt = i(63),
        It = (C = i(46), function(e, t, i, n) {
            return new(i = i || Promise)((function(r, o) {
                function s(e) {
                    try {
                        l(n.next(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function a(e) {
                    try {
                        l(n.throw(e))
                    } catch (e) {
                        o(e)
                    }
                }

                function l(e) {
                    var t;
                    e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                        e(t)
                    }))).then(s, a)
                }
                l((n = n.apply(e, t || [])).next())
            }))
        });
    const Tt = {
        Visible: new ve.c("suggestWidgetVisible", !1, Object(Ue.a)("suggestWidgetVisible", "Whether suggestion are visible")),
        DetailsVisible: new ve.c("suggestWidgetDetailsVisible", !1, Object(Ue.a)("suggestWidgetDetailsVisible", "Whether suggestion details are visible")),
        MultipleSuggestions: new ve.c("suggestWidgetMultipleSuggestions", !1, Object(Ue.a)("suggestWidgetMultipleSuggestions", "Whether there are multiple suggestions to pick from")),
        MakesTextEdit: new ve.c("suggestionMakesTextEdit", !0, Object(Ue.a)("suggestionMakesTextEdit", "Whether inserting the current suggestion yields in a change or has everything already been typed")),
        AcceptSuggestionsOnEnter: new ve.c("acceptSuggestionOnEnter", !0, Object(Ue.a)("acceptSuggestionOnEnter", "Whether suggestions are inserted when pressing Enter")),
        HasInsertAndReplaceRange: new ve.c("suggestionHasInsertAndReplaceRange", !1, Object(Ue.a)("suggestionHasInsertAndReplaceRange", "Whether the current suggestion has insert and replace behaviour")),
        InsertMode: new ve.c("suggestionInsertMode", void 0, {
            type: "string",
            description: Object(Ue.a)("suggestionInsertMode", "Whether the default behaviour is to insert or replace")
        }),
        CanResolve: new ve.c("suggestionCanResolve", !1, Object(Ue.a)("suggestionCanResolve", "Whether the current suggestion supports to resolve further details"))
    };
    new Dt.b("suggestWidgetStatusBar");
    class Mt {
        constructor(e, t, i, n) {
            this.position = e, this.completion = t, this.container = i, this.provider = n, this.isInvalid = !1, this.score = ut.a.Default, this.distance = 0, this.textLabel = ("string" == typeof t.label ? t : t.label).label, this.labelLow = this.textLabel.toLowerCase(), this.isInvalid = !this.textLabel, this.sortTextLow = t.sortText && t.sortText.toLowerCase(), this.filterTextLow = t.filterText && t.filterText.toLowerCase(), ee.a.isIRange(t.range) ? (this.editStart = new J.a(t.range.startLineNumber, t.range.startColumn), this.editInsertEnd = new J.a(t.range.endLineNumber, t.range.endColumn), this.editReplaceEnd = new J.a(t.range.endLineNumber, t.range.endColumn), this.isInvalid = this.isInvalid || ee.a.spansMultipleLines(t.range) || t.range.startLineNumber !== e.lineNumber) : (this.editStart = new J.a(t.range.insert.startLineNumber, t.range.insert.startColumn), this.editInsertEnd = new J.a(t.range.insert.endLineNumber, t.range.insert.endColumn), this.editReplaceEnd = new J.a(t.range.replace.endLineNumber, t.range.replace.endColumn), this.isInvalid = this.isInvalid || ee.a.spansMultipleLines(t.range.insert) || ee.a.spansMultipleLines(t.range.replace) || t.range.insert.startLineNumber !== e.lineNumber || t.range.replace.startLineNumber !== e.lineNumber || t.range.insert.startColumn !== t.range.replace.startColumn), "function" != typeof n.resolveCompletionItem && (this._resolveCache = Promise.resolve(), this._isResolved = !0)
        }
        get isResolved() {
            return !!this._isResolved
        }
        resolve(e) {
            return It(this, void 0, void 0, (function*() {
                if (!this._resolveCache) {
                    const t = e.onCancellationRequested(() => {
                        this._resolveCache = void 0, this._isResolved = !1
                    });
                    this._resolveCache = Promise.resolve(this.provider.resolveCompletionItem(this.completion, e)).then(e => {
                        Object.assign(this.completion, e), this._isResolved = !0, t.dispose()
                    }, e => {
                        Object(it.e)(e) && (this._resolveCache = void 0, this._isResolved = !1)
                    })
                }
                return this._resolveCache
            }))
        }
    }
    class Pt {
        constructor(e = 2, t = new Set, i = new Set, n = !0) {
            this.snippetSortOrder = e, this.kindFilter = t, this.providerFilter = i, this.showDeprecated = n
        }
    }
    Pt.default = new Pt;
    class At {
        constructor(e, t, i, n) {
            this.items = e, this.needsClipboard = t, this.durations = i, this.disposable = n
        }
    }

    function Rt(e, t) {
        if (e.sortTextLow && t.sortTextLow) {
            if (e.sortTextLow < t.sortTextLow) return -1;
            if (e.sortTextLow > t.sortTextLow) return 1
        }
        return e.completion.label < t.completion.label ? -1 : e.completion.label > t.completion.label ? 1 : e.completion.kind - t.completion.kind
    }
    const Ft = new Map;
    Ft.set(0, (function(e, t) {
        if (e.completion.kind !== t.completion.kind) {
            if (27 === e.completion.kind) return -1;
            if (27 === t.completion.kind) return 1
        }
        return Rt(e, t)
    })), Ft.set(2, (function(e, t) {
        if (e.completion.kind !== t.completion.kind) {
            if (27 === e.completion.kind) return 1;
            if (27 === t.completion.kind) return -1
        }
        return Rt(e, t)
    })), Ft.set(1, Rt), C.a.registerCommand("_executeCompletionItemProvider", (e, ...t) => It(void 0, void 0, void 0, (function*() {
        var [i, n, r, o] = t;
        Object(gt.b)(ft.a.isUri(i)), Object(gt.b)(J.a.isIPosition(n)), Object(gt.b)("string" == typeof r || !r), Object(gt.b)("number" == typeof o || !o);
        const s = yield e.get(vt.a).createModelReference(i);
        try {
            const e = {
                    incomplete: !1,
                    suggestions: []
                },
                t = [],
                i = yield function(e, t, i = Pt.default, n = {
                    triggerKind: 0
                }, r = ht.a.None) {
                    return It(this, void 0, void 0, (function*() {
                        const o = new pt.a(!0);
                        t = t.clone();
                        const s = (g = e.getWordAtPosition(t)) ? new ee.a(t.lineNumber, g.startColumn, t.lineNumber, g.endColumn) : ee.a.fromPositions(t),
                            a = {
                                replace: s,
                                insert: s.setEndPosition(t.lineNumber, t.column)
                            },
                            l = [],
                            d = new q.b,
                            c = [];
                        let h = !1;
                        const u = (e, n, r) => {
                            var o, s;
                            if (n) {
                                for (var u of n.suggestions) i.kindFilter.has(u.kind) || !i.showDeprecated && null !== (o = null == u ? void 0 : u.tags) && void 0 !== o && o.includes(1) || (u.range || (u.range = a), u.sortText || (u.sortText = ("string" == typeof u.label ? u : u.label).label), !h && u.insertTextRules && 4 & u.insertTextRules && (h = Nt.guessNeedsClipboard(u.insertText)), l.push(new Mt(t, u, n, e)));
                                Object(q.g)(n) && d.add(n), c.push({
                                    providerName: null !== (s = e._debugDisplayName) && void 0 !== s ? s : "unkown_provider",
                                    elapsedProvider: null !== (s = n.duration) && void 0 !== s ? s : -1,
                                    elapsedOverall: r.elapsed()
                                })
                            }
                        };
                        var p, g = It(this, void 0, void 0, (function*() {}));
                        for (p of mt.d.orderedGroups(e)) {
                            var f = l.length;
                            if (yield Promise.all(p.map(o => It(this, void 0, void 0, (function*() {
                                    if (!(0 < i.providerFilter.size) || i.providerFilter.has(o)) try {
                                        var s = new pt.a(!0),
                                            a = yield o.provideCompletionItems(e, t, n, r);
                                        u(o, a, s)
                                    } catch (s) {
                                        Object(it.g)(s)
                                    }
                                })))), f !== l.length || r.isCancellationRequested) break
                        }
                        return yield g, r.isCancellationRequested ? (d.dispose(), Promise.reject(Object(it.b)())) : new At(l.sort((g = i.snippetSortOrder, Ft.get(g))), h, {
                            entries: c,
                            elapsed: o.elapsed()
                        }, d)
                    }))
                }(s.object.textEditorModel, J.a.lift(n), void 0, {
                    triggerCharacter: r,
                    triggerKind: r ? 1 : 0
                });
            for (const n of i.items) t.length < (null != o ? o : 0) && t.push(n.resolve(ht.a.None)), e.incomplete = e.incomplete || n.container.incomplete, e.suggestions.push(n.completion);
            try {
                return yield Promise.all(t), e
            } finally {
                setTimeout(() => i.disposable.dispose(), 100)
            }
        } finally {
            s.dispose()
        }
    })));
    const jt = new class {
        constructor() {
            this.onlyOnceSuggestions = []
        }
        provideCompletionItems() {
            var e = {
                suggestions: this.onlyOnceSuggestions.slice(0)
            };
            return this.onlyOnceSuggestions.length = 0, e
        }
    };
    mt.d.register("*", jt), F = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, B = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    const Bt = "historyNavigationWidget",
        Vt = "historyNavigationForwardsEnabled",
        Wt = "historyNavigationBackwardsEnabled";

    function zt(e, t) {
        return e.getContext(document.activeElement).getValue(t)
    }

    function Ht(e, t) {
        var i, n = e.createScoped(t.target);
        return i = n, e = t, t = Bt, new ve.c(t, e).bindTo(i), {
            scopedContextKeyService: n,
            historyNavigationForwardsEnablement: new ve.c(Vt, !0).bindTo(n),
            historyNavigationBackwardsEnablement: new ve.c(Wt, !0).bindTo(n)
        }
    }
    let Ut = class extends st {
        constructor(e, t, i, n, r = !1) {
            super(e, t, r, i), this._register(Ht(n, {
                target: this.inputBox.element,
                historyNavigator: this.inputBox
            }).scopedContextKeyService)
        }
    };
    Ut = F([B(3, ve.b)], Ut);
    let Kt = class extends ct {
        constructor(e, t, i, n, r = !1) {
            super(e, t, r, i), this._register(Ht(n, {
                target: this.inputBox.element,
                historyNavigator: this.inputBox
            }).scopedContextKeyService)
        }
    };

    function $t(e) {
        var t;
        return "Up" === (null === (t = e.lookupKeybinding("history.showPrevious")) || void 0 === t ? void 0 : t.getElectronAccelerator()) && "Down" === (null === (e = e.lookupKeybinding("history.showNext")) || void 0 === e ? void 0 : e.getElectronAccelerator())
    }
    Kt = F([B(3, ve.b)], Kt), y.a.registerCommandAndKeybindingRule({
        id: "history.showPrevious",
        weight: 200,
        when: ve.a.and(ve.a.has(Bt), ve.a.equals(Wt, !0), Tt.Visible.isEqualTo(!1)),
        primary: 16,
        secondary: [528],
        handler: e => {
            if (e = zt(e.get(ve.b), Bt)) {
                e.historyNavigator.showPreviousValue()
            }
        }
    }), y.a.registerCommandAndKeybindingRule({
        id: "history.showNext",
        weight: 200,
        when: ve.a.and(ve.a.has(Bt), ve.a.equals(Vt, !0), Tt.Visible.isEqualTo(!1)),
        primary: 18,
        secondary: [530],
        handler: e => {
            if (e = zt(e.get(ve.b), Bt)) {
                e.historyNavigator.showNextValue()
            }
        }
    });
    var qt = i(87);
    const Gt = Object(qt.b)("find-selection", Ve.b.selection, Ue.a("findSelectionIcon", "Icon for 'Find in Selection' in the editor find widget.")),
        Yt = Object(qt.b)("find-collapsed", Ve.b.chevronRight, Ue.a("findCollapsedIcon", "Icon to indicate that the editor find widget is collapsed.")),
        Zt = Object(qt.b)("find-expanded", Ve.b.chevronDown, Ue.a("findExpandedIcon", "Icon to indicate that the editor find widget is expanded.")),
        Xt = Object(qt.b)("find-replace", Ve.b.replace, Ue.a("findReplaceIcon", "Icon for 'Replace' in the editor find widget.")),
        Qt = Object(qt.b)("find-replace-all", Ve.b.replaceAll, Ue.a("findReplaceAllIcon", "Icon for 'Replace All' in the editor find widget.")),
        Jt = Object(qt.b)("find-previous-match", Ve.b.arrowUp, Ue.a("findPreviousMatchIcon", "Icon for 'Find Previous' in the editor find widget.")),
        ei = Object(qt.b)("find-next-match", Ve.b.arrowDown, Ue.a("findNextMatchIcon", "Icon for 'Find Next' in the editor find widget.")),
        ti = Ue.a("label.find", "Find"),
        ii = Ue.a("placeholder.find", "Find"),
        ni = Ue.a("label.previousMatchButton", "Previous Match"),
        ri = Ue.a("label.nextMatchButton", "Next Match"),
        oi = Ue.a("label.toggleSelectionFind", "Find in Selection"),
        si = Ue.a("label.closeButton", "Close"),
        ai = Ue.a("label.replace", "Replace"),
        li = Ue.a("placeholder.replace", "Replace"),
        di = Ue.a("label.replaceButton", "Replace"),
        ci = Ue.a("label.replaceAllButton", "Replace All"),
        hi = Ue.a("label.toggleReplaceButton", "Toggle Replace"),
        ui = Ue.a("title.matchesCountLimit", "Only the first {0} results are highlighted, but all find operations work on the entire text.", Fe),
        pi = Ue.a("label.matchesLocation", "{0} of {1}"),
        gi = Ue.a("label.noResults", "No results");
    let fi = 69;
    const mi = "ctrlEnterReplaceAll.windows.donotask",
        vi = nt.f ? 256 : 2048;
    class bi {
        constructor(e) {
            this.afterLineNumber = e, this.heightInPx = 33, this.suppressMouseDown = !1, this.domNode = document.createElement("div"), this.domNode.className = "dock-find-viewzone"
        }
    }

    function _i(e, t, i) {
        t = !!t.match(/\n/), i && t && 0 < i.selectionStart && e.stopPropagation()
    }

    function wi(e, t, i) {
        t = !!t.match(/\n/), i && t && i.selectionEnd < i.value.length && e.stopPropagation()
    }
    class yi extends v.a {
        constructor(e, t, i, n, r, o, s, a, l) {
            super(), this._cachedHeight = null, this._revealTimeouts = [], this._codeEditor = e, this._controller = t, this._state = i, this._contextViewProvider = n, this._keybindingService = r, this._contextKeyService = o, this._storageService = a, this._notificationService = l, this._ctrlEnterReplaceAllWarningPrompted = !!a.getBoolean(mi, 0), this._isVisible = !1, this._isReplaceVisible = !1, this._ignoreChangeEvent = !1, this._updateHistoryDelayer = new $.a(500), this._register(Object(q.i)(() => this._updateHistoryDelayer.cancel())), this._register(this._state.onFindReplaceStateChange(e => this._onStateChanged(e))), this._buildDomNode(), this._updateButtons(), this._tryUpdateWidgetWidth(), this._findInput.inputBox.layout(), this._register(this._codeEditor.onDidChange配置(e => {
                e.hasChanged(80) && (this._codeEditor.getOption(80) && this._state.change({
                    isReplaceRevealed: !1
                }, !1), this._updateButtons()), e.hasChanged(129) && this._tryUpdateWidgetWidth(), e.hasChanged(2) && this.updateAccessibilitySupport(), e.hasChanged(35) && ((e = this._codeEditor.getOption(35).addExtraSpaceOnTop) && !this._viewZone && (this._viewZone = new bi(0), this._showViewZone()), !e && this._viewZone && this._removeViewZone())
            })), this.updateAccessibilitySupport(), this._register(this._codeEditor.onDidChangeCursorSelection(() => {
                this._isVisible && this._updateToggleSelectionFindButton()
            })), this._register(this._codeEditor.onDidFocusEditorWidget(() => function(e, t, i, n) {
                return new(i = i || Promise)((function(r, o) {
                    function s(e) {
                        try {
                            l(n.next(e))
                        } catch (e) {
                            o(e)
                        }
                    }

                    function a(e) {
                        try {
                            l(n.throw(e))
                        } catch (e) {
                            o(e)
                        }
                    }

                    function l(e) {
                        var t;
                        e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                            e(t)
                        }))).then(s, a)
                    }
                    l((n = n.apply(e, t || [])).next())
                }))
            }(this, void 0, void 0, (function*() {
                var e;
                !this._isVisible || (e = yield this._controller.getGlobalBufferTerm()) && e !== this._state.searchString && (this._state.change({
                    searchString: e
                }, !1), this._findInput.select())
            })))), this._findInputFocused = _e.bindTo(o), this._findFocusTracker = this._register(Be.T(this._findInput.inputBox.inputElement)), this._register(this._findFocusTracker.onDidFocus(() => {
                this._findInputFocused.set(!0), this._updateSearchScope()
            })), this._register(this._findFocusTracker.onDidBlur(() => {
                this._findInputFocused.set(!1)
            })), this._replaceInputFocused = we.bindTo(o), this._replaceFocusTracker = this._register(Be.T(this._replaceInput.inputBox.inputElement)), this._register(this._replaceFocusTracker.onDidFocus(() => {
                this._replaceInputFocused.set(!0), this._updateSearchScope()
            })), this._register(this._replaceFocusTracker.onDidBlur(() => {
                this._replaceInputFocused.set(!1)
            })), this._codeEditor.addOverlayWidget(this), this._codeEditor.getOption(35).addExtraSpaceOnTop && (this._viewZone = new bi(0)), this._applyTheme(s.getColorTheme()), this._register(s.onDidColorThemeChange(this._applyTheme.bind(this))), this._register(this._codeEditor.onDidChangeModel(() => {
                this._isVisible && (this._viewZoneId = void 0)
            })), this._register(this._codeEditor.onDidScrollChange(e => {
                e.scrollTopChanged ? this._layoutViewZone() : setTimeout(() => {
                    this._layoutViewZone()
                }, 0)
            }))
        }
        getId() {
            return yi.ID
        }
        getDomNode() {
            return this._domNode
        }
        getPosition() {
            return this._isVisible ? {
                preference: 0
            } : null
        }
        _onStateChanged(e) {
            if (e.searchString) {
                try {
                    this._ignoreChangeEvent = !0, this._findInput.setValue(this._state.searchString)
                } finally {
                    this._ignoreChangeEvent = !1
                }
                this._updateButtons()
            }
            var t;
            e.replaceString && (this._replaceInput.inputBox.value = this._state.replaceString), e.isRevealed && (this._state.isRevealed ? this._reveal() : this._hide(!0)), e.isReplaceRevealed && (this._state.isReplaceRevealed ? this._codeEditor.getOption(80) || this._isReplaceVisible || (this._isReplaceVisible = !0, this._replaceInput.width = Be.F(this._findInput.domNode), this._updateButtons(), this._replaceInput.inputBox.layout()) : this._isReplaceVisible && (this._isReplaceVisible = !1, this._updateButtons())), (e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed) && this._tryUpdateHeight() && this._showViewZone(), e.isRegex && this._findInput.setRegex(this._state.isRegex), e.wholeWord && this._findInput.setWholeWords(this._state.wholeWord), e.matchCase && this._findInput.setCaseSensitive(this._state.matchCase), e.preserveCase && this._replaceInput.setPreserveCase(this._state.preserveCase), e.searchScope && (this._state.searchScope ? this._toggleSelectionFind.checked = !0 : this._toggleSelectionFind.checked = !1, this._updateToggleSelectionFindButton()), (e.searchString || e.matchesCount || e.matchesPosition) && (t = 0 < this._state.searchString.length && 0 === this._state.matchesCount, this._domNode.classList.toggle("no-results", t), this._updateMatchesCount(), this._updateButtons()), (e.searchString || e.currentMatch) && this._layoutViewZone(), e.updateHistory && this._delayedUpdateHistory(), e.loop && this._updateButtons()
        }
        _delayedUpdateHistory() {
            this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0, it.f)
        }
        _updateHistory() {
            this._state.searchString && this._findInput.inputBox.addToHistory(), this._state.replaceString && this._replaceInput.inputBox.addToHistory()
        }
        _updateMatchesCount() {
            let e;
            if (this._matchesCount.style.minWidth = fi + "px", this._state.matchesCount >= Fe ? this._matchesCount.title = ui : this._matchesCount.title = "", this._matchesCount.firstChild && this._matchesCount.removeChild(this._matchesCount.firstChild), 0 < this._state.matchesCount) {
                let t = String(this._state.matchesCount);
                this._state.matchesCount >= Fe && (t += "+");
                let i = String(this._state.matchesPosition);
                "0" === i && (i = "?"), e = G.v(pi, i, t)
            } else e = gi;
            this._matchesCount.appendChild(document.createTextNode(e)), Object(et.a)(this._getAriaLabel(e, this._state.currentMatch, this._state.searchString)), fi = Math.max(fi, this._matchesCount.clientWidth)
        }
        _getAriaLabel(e, t, i) {
            if (e === gi) return "" === i ? Ue.a("ariaSearchNoResultEmpty", "{0} found", e) : Ue.a("ariaSearchNoResult", "{0} found for '{1}'", e, i);
            if (t) {
                var n = Ue.a("ariaSearchNoResultWithLineNum", "{0} found for '{1}', at {2}", e, i, t.startLineNumber + ":" + t.startColumn);
                const r = this._codeEditor.getModel();
                return r && t.startLineNumber <= r.getLineCount() && 1 <= t.startLineNumber ? `${r.getLineContent(t.startLineNumber)}, ${n}` : n
            }
            return Ue.a("ariaSearchNoResultWithLineNumNoCurrentMatch", "{0} found for '{1}'", e, i)
        }
        _updateToggleSelectionFindButton() {
            var e = !!(t = this._codeEditor.getSelection()) && (t.startLineNumber !== t.endLineNumber || t.startColumn !== t.endColumn),
                t = this._toggleSelectionFind.checked;
            this._isVisible && (t || e) ? this._toggleSelectionFind.enable() : this._toggleSelectionFind.disable()
        }
        _updateButtons() {
            this._findInput.setEnabled(this._isVisible), this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible), this._updateToggleSelectionFindButton(), this._closeBtn.setEnabled(this._isVisible);
            var e = 0 < this._state.searchString.length,
                t = !!this._state.matchesCount;
            this._prevBtn.setEnabled(this._isVisible && e && t && this._state.canNavigateBack()), this._nextBtn.setEnabled(this._isVisible && e && t && this._state.canNavigateForward()), this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && e), this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && e), this._domNode.classList.toggle("replaceToggled", this._isReplaceVisible), this._toggleReplaceBtn.setExpanded(this._isReplaceVisible), e = !this._codeEditor.getOption(80), this._toggleReplaceBtn.setEnabled(this._isVisible && e)
        }
        _reveal() {
            if (this._revealTimeouts.forEach(e => {
                    clearTimeout(e)
                }), this._revealTimeouts = [], !this._isVisible) {
                this._isVisible = !0;
                const r = this._codeEditor.getSelection();
                switch (this._codeEditor.getOption(35).autoFindInSelection) {
                    case "always":
                        this._toggleSelectionFind.checked = !0;
                        break;
                    case "never":
                        this._toggleSelectionFind.checked = !1;
                        break;
                    case "multiline":
                        var e = !!r && r.startLineNumber !== r.endLineNumber;
                        this._toggleSelectionFind.checked = e
                }
                this._tryUpdateWidgetWidth(), this._updateButtons(), this._revealTimeouts.push(setTimeout(() => {
                    this._domNode.classList.add("visible"), this._domNode.setAttribute("aria-hidden", "false")
                }, 0)), this._revealTimeouts.push(setTimeout(() => {
                    this._findInput.validate()
                }, 200)), this._codeEditor.layoutOverlayWidget(this);
                let o = !0;
                var t, i, n;
                this._codeEditor.getOption(35).seedSearchStringFromSelection && r && (n = this._codeEditor.getDomNode()) && (t = Be.A(n), i = this._codeEditor.getScrolledVisiblePosition(r.getStartPosition()), n = t.left + (i ? i.left : 0), i = i ? i.top : 0, this._viewZone && i < this._viewZone.heightInPx && (r.endLineNumber > r.startLineNumber && (o = !1), (i = Be.D(this._domNode).left) < n && (o = !1), n = this._codeEditor.getScrolledVisiblePosition(r.getEndPosition()), i < t.left + (n ? n.left : 0) && (o = !1))), this._showViewZone(o)
            }
        }
        _hide(e) {
            this._revealTimeouts.forEach(e => {
                clearTimeout(e)
            }), this._revealTimeouts = [], this._isVisible && (this._isVisible = !1, this._updateButtons(), this._domNode.classList.remove("visible"), this._domNode.setAttribute("aria-hidden", "true"), this._findInput.clearMessage(), e && this._codeEditor.focus(), this._codeEditor.layoutOverlayWidget(this), this._removeViewZone())
        }
        _layoutViewZone(e) {
            if (this._codeEditor.getOption(35).addExtraSpaceOnTop) {
                if (this._isVisible) {
                    const t = this._viewZone;
                    void 0 === this._viewZoneId && t && this._codeEditor.changeViewZones(i => {
                        t.heightInPx = this._getHeight(), this._viewZoneId = i.addZone(t), this._codeEditor.setScrollTop(e || this._codeEditor.getScrollTop() + t.heightInPx)
                    })
                }
            } else this._removeViewZone()
        }
        _showViewZone(e = !0) {
            if (this._isVisible && this._codeEditor.getOption(35).addExtraSpaceOnTop) {
                void 0 === this._viewZone && (this._viewZone = new bi(0));
                const t = this._viewZone;
                this._codeEditor.changeViewZones(i => {
                    var n, r;
                    void 0 !== this._viewZoneId ? (n = this._getHeight()) !== t.heightInPx && (r = n - t.heightInPx, t.heightInPx = n, i.layoutZone(this._viewZoneId), e && this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + r)) : (r = this._getHeight(), (r -= this._codeEditor.getOption(74).top) <= 0 || (t.heightInPx = r, this._viewZoneId = i.addZone(t), e && this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + r)))
                })
            }
        }
        _removeViewZone() {
            this._codeEditor.changeViewZones(e => {
                void 0 !== this._viewZoneId && (e.removeZone(this._viewZoneId), this._viewZoneId = void 0, this._viewZone && (this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx), this._viewZone = void 0))
            })
        }
        _applyTheme(e) {
            e = {
                inputActiveOptionBorder: e.getColor(oe.U),
                inputActiveOptionBackground: e.getColor(oe.T),
                inputActiveOptionForeground: e.getColor(oe.V),
                inputBackground: e.getColor(oe.W),
                inputForeground: e.getColor(oe.Y),
                inputBorder: e.getColor(oe.X),
                inputValidationInfoBackground: e.getColor(oe.cb),
                inputValidationInfoForeground: e.getColor(oe.eb),
                inputValidationInfoBorder: e.getColor(oe.db),
                inputValidationWarningBackground: e.getColor(oe.fb),
                inputValidationWarningForeground: e.getColor(oe.hb),
                inputValidationWarningBorder: e.getColor(oe.gb),
                inputValidationErrorBackground: e.getColor(oe.Z),
                inputValidationErrorForeground: e.getColor(oe.bb),
                inputValidationErrorBorder: e.getColor(oe.ab)
            }, this._findInput.style(e), this._replaceInput.style(e), this._toggleSelectionFind.style(e)
        }
        _tryUpdateWidgetWidth() {
            if (this._isVisible && Be.K(this._domNode))
                if ((t = this._codeEditor.getLayoutInfo()).contentWidth <= 0) this._domNode.classList.add("hiddenEditor");
                else {
                    this._domNode.classList.contains("hiddenEditor") && this._domNode.classList.remove("hiddenEditor");
                    var e = t.width,
                        t = t.minimap.minimapWidth;
                    let i = !1,
                        n = !1,
                        r = !1;
                    if (this._resized && 419 < Be.F(this._domNode)) return this._domNode.style.maxWidth = e - 28 - t - 15 + "px", void(this._replaceInput.width = Be.F(this._findInput.domNode));
                    e <= 447 + t && (n = !0), 447 + t - fi >= e && (r = !0), 447 + t - fi >= e + 50 && (i = !0), this._domNode.classList.toggle("collapsed-find-widget", i), this._domNode.classList.toggle("narrow-find-widget", r), this._domNode.classList.toggle("reduced-find-widget", n), r || i || (this._domNode.style.maxWidth = e - 28 - t - 15 + "px"), this._resized ? (this._findInput.inputBox.layout(), 0 < (t = this._findInput.inputBox.element.clientWidth) && (this._replaceInput.width = t)) : this._isReplaceVisible && (this._replaceInput.width = Be.F(this._findInput.domNode))
                }
        }
        _getHeight() {
            let e = 0;
            return e += 4, e += this._findInput.inputBox.height + 2, this._isReplaceVisible && (e += 4, e += this._replaceInput.inputBox.height + 2), e += 4, e
        }
        _tryUpdateHeight() {
            var e = this._getHeight();
            return (null === this._cachedHeight || this._cachedHeight !== e) && (this._cachedHeight = e, this._domNode.style.height = e + "px", !0)
        }
        focusFindInput() {
            this._findInput.select(), this._findInput.focus()
        }
        focusReplaceInput() {
            this._replaceInput.select(), this._replaceInput.focus()
        }
        highlightFindOptions() {
            this._findInput.highlightFindOptions()
        }
        _updateSearchScope() {
            if (this._codeEditor.hasModel() && this._toggleSelectionFind.checked) {
                let e = this._codeEditor.getSelections();
                e.map(e => {
                    1 === e.endColumn && e.endLineNumber > e.startLineNumber && (e = e.setEndPosition(e.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber - 1)));
                    var t = this._state.currentMatch;
                    return e.startLineNumber === e.endLineNumber || ee.a.equalsRange(e, t) ? null : e
                }).filter(e => !!e), e.length && this._state.change({
                    searchScope: e
                }, !0)
            }
        }
        _onFindInputMouseDown(e) {
            e.middleButton && e.stopPropagation()
        }
        _onFindInputKeyDown(e) {
            return e.equals(3 | vi) ? (this._keybindingService.dispatchEvent(e, e.target) || this._findInput.inputBox.insertAtCursor("\n"), void e.preventDefault()) : e.equals(2) ? (this._isReplaceVisible ? this._replaceInput.focus() : this._findInput.focusOnCaseSensitive(), void e.preventDefault()) : e.equals(2066) ? (this._codeEditor.focus(), void e.preventDefault()) : e.equals(16) ? _i(e, this._findInput.getValue(), this._findInput.domNode.querySelector("textarea")) : e.equals(18) ? wi(e, this._findInput.getValue(), this._findInput.domNode.querySelector("textarea")) : void 0
        }
        _onReplaceInputKeyDown(e) {
            return e.equals(3 | vi) ? (this._keybindingService.dispatchEvent(e, e.target) || (nt.i && nt.g && !this._ctrlEnterReplaceAllWarningPrompted && (this._notificationService.info(Ue.a("ctrlEnter.keybindingChanged", "Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")), this._ctrlEnterReplaceAllWarningPrompted = !0, this._storageService.store(mi, !0, 0, 0)), this._replaceInput.inputBox.insertAtCursor("\n")), void e.preventDefault()) : e.equals(2) ? (this._findInput.focusOnCaseSensitive(), void e.preventDefault()) : e.equals(1026) ? (this._findInput.focus(), void e.preventDefault()) : e.equals(2066) ? (this._codeEditor.focus(), void e.preventDefault()) : e.equals(16) ? _i(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector("textarea")) : e.equals(18) ? wi(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector("textarea")) : void 0
        }
        getVerticalSashLeft(e) {
            return 0
        }
        _keybindingLabelFor(e) {
            let t = this._keybindingService.lookupKeybinding(e);
            return t ? ` (${t.getLabel()})` : ""
        }
        _buildDomNode() {
            this._findInput = this._register(new Ut(null, this._contextViewProvider, {
                width: 221,
                label: ti,
                placeholder: ii,
                appendCaseSensitiveLabel: this._keybindingLabelFor(Ne),
                appendWholeWordsLabel: this._keybindingLabelFor(De),
                appendRegexLabel: this._keybindingLabelFor(Ie),
                validation: e => {
                    if (0 === e.length || !this._findInput.getRegex()) return null;
                    try {
                        return new RegExp(e, "gu"), null
                    } catch (e) {
                        return {
                            content: e.message
                        }
                    }
                },
                flexibleHeight: !0,
                flexibleWidth: !0,
                flexibleMaxHeight: 118,
                showHistoryHint: () => $t(this._keybindingService)
            }, this._contextKeyService, !0)), this._findInput.setRegex(!!this._state.isRegex), this._findInput.setCaseSensitive(!!this._state.matchCase), this._findInput.setWholeWords(!!this._state.wholeWord), this._register(this._findInput.onKeyDown(e => this._onFindInputKeyDown(e))), this._register(this._findInput.inputBox.onDidChange(() => {
                this._ignoreChangeEvent || this._state.change({
                    searchString: this._findInput.getValue()
                }, !0)
            })), this._register(this._findInput.onDidOptionChange(() => {
                this._state.change({
                    isRegex: this._findInput.getRegex(),
                    wholeWord: this._findInput.getWholeWords(),
                    matchCase: this._findInput.getCaseSensitive()
                }, !0)
            })), this._register(this._findInput.onCaseSensitiveKeyDown(e => {
                e.equals(1026) && this._isReplaceVisible && (this._replaceInput.focus(), e.preventDefault())
            })), this._register(this._findInput.onRegexKeyDown(e => {
                e.equals(2) && this._isReplaceVisible && (this._replaceInput.focusOnPreserve(), e.preventDefault())
            })), this._register(this._findInput.inputBox.onDidHeightChange(e => {
                this._tryUpdateHeight() && this._showViewZone()
            })), nt.d && this._register(this._findInput.onMouseDown(e => this._onFindInputMouseDown(e))), this._matchesCount = document.createElement("div"), this._matchesCount.className = "matchesCount", this._updateMatchesCount(), this._prevBtn = this._register(new Ci({
                label: ni + this._keybindingLabelFor(Se),
                icon: Jt,
                onTrigger: () => {
                    this._codeEditor.getAction(Se).run().then(void 0, it.f)
                }
            })), this._nextBtn = this._register(new Ci({
                label: ri + this._keybindingLabelFor(xe),
                icon: ei,
                onTrigger: () => {
                    this._codeEditor.getAction(xe).run().then(void 0, it.f)
                }
            }));
            let e = document.createElement("div");
            e.className = "find-part", e.appendChild(this._findInput.domNode);
            const t = document.createElement("div");
            t.className = "find-actions", e.appendChild(t), t.appendChild(this._matchesCount), t.appendChild(this._prevBtn.domNode), t.appendChild(this._nextBtn.domNode), this._toggleSelectionFind = this._register(new He({
                icon: Gt,
                title: oi + this._keybindingLabelFor(Te),
                isChecked: !1
            })), this._register(this._toggleSelectionFind.onChange(() => {
                if (this._toggleSelectionFind.checked) {
                    if (this._codeEditor.hasModel()) {
                        let e = this._codeEditor.getSelections();
                        e.map(e => (e = 1 === e.endColumn && e.endLineNumber > e.startLineNumber ? e.setEndPosition(e.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber - 1)) : e).isEmpty() ? null : e).filter(e => !!e), e.length && this._state.change({
                            searchScope: e
                        }, !0)
                    }
                } else this._state.change({
                    searchScope: null
                }, !0)
            })), t.appendChild(this._toggleSelectionFind.domNode), this._closeBtn = this._register(new Ci({
                label: si + this._keybindingLabelFor(Ee),
                icon: qt.c,
                onTrigger: () => {
                    this._state.change({
                        isRevealed: !1,
                        searchScope: null
                    }, !1)
                },
                onKeyDown: e => {
                    e.equals(2) && this._isReplaceVisible && ((this._replaceBtn.isEnabled() ? this._replaceBtn : this._codeEditor).focus(), e.preventDefault())
                }
            })), t.appendChild(this._closeBtn.domNode), this._replaceInput = this._register(new Kt(null, void 0, {
                label: ai,
                placeholder: li,
                appendPreserveCaseLabel: this._keybindingLabelFor(Me),
                history: [],
                flexibleHeight: !0,
                flexibleWidth: !0,
                flexibleMaxHeight: 118,
                showHistoryHint: () => $t(this._keybindingService)
            }, this._contextKeyService, !0)), this._replaceInput.setPreserveCase(!!this._state.preserveCase), this._register(this._replaceInput.onKeyDown(e => this._onReplaceInputKeyDown(e))), this._register(this._replaceInput.inputBox.onDidChange(() => {
                this._state.change({
                    replaceString: this._replaceInput.inputBox.value
                }, !1)
            })), this._register(this._replaceInput.inputBox.onDidHeightChange(e => {
                this._isReplaceVisible && this._tryUpdateHeight() && this._showViewZone()
            })), this._register(this._replaceInput.onDidOptionChange(() => {
                this._state.change({
                    preserveCase: this._replaceInput.getPreserveCase()
                }, !0)
            })), this._register(this._replaceInput.onPreserveCaseKeyDown(e => {
                e.equals(2) && (this._prevBtn.isEnabled() ? this._prevBtn.focus() : this._nextBtn.isEnabled() ? this._nextBtn.focus() : this._toggleSelectionFind.enabled ? this._toggleSelectionFind.focus() : this._closeBtn.isEnabled() && this._closeBtn.focus(), e.preventDefault())
            })), this._replaceBtn = this._register(new Ci({
                label: di + this._keybindingLabelFor(Pe),
                icon: Xt,
                onTrigger: () => {
                    this._controller.replace()
                },
                onKeyDown: e => {
                    e.equals(1026) && (this._closeBtn.focus(), e.preventDefault())
                }
            })), this._replaceAllBtn = this._register(new Ci({
                label: ci + this._keybindingLabelFor(Ae),
                icon: Qt,
                onTrigger: () => {
                    this._controller.replaceAll()
                }
            }));
            let i = document.createElement("div");
            i.className = "replace-part", i.appendChild(this._replaceInput.domNode);
            const n = document.createElement("div");
            n.className = "replace-actions", i.appendChild(n), n.appendChild(this._replaceBtn.domNode), n.appendChild(this._replaceAllBtn.domNode), this._toggleReplaceBtn = this._register(new Ci({
                label: hi,
                className: "codicon toggle left",
                onTrigger: () => {
                    this._state.change({
                        isReplaceRevealed: !this._isReplaceVisible
                    }, !1), this._isReplaceVisible && (this._replaceInput.width = Be.F(this._findInput.domNode), this._replaceInput.inputBox.layout()), this._showViewZone()
                }
            })), this._toggleReplaceBtn.setExpanded(this._isReplaceVisible), this._domNode = document.createElement("div"), this._domNode.className = "editor-widget find-widget", this._domNode.setAttribute("aria-hidden", "true"), this._domNode.style.width = "419px", this._domNode.appendChild(this._toggleReplaceBtn.domNode), this._domNode.appendChild(e), this._domNode.appendChild(i), this._resizeSash = new tt.a(this._domNode, this, {
                orientation: 0,
                size: 2
            }), this._resized = !1;
            let r = 419;
            this._register(this._resizeSash.onDidStart(() => {
                r = Be.F(this._domNode)
            })), this._register(this._resizeSash.onDidChange(e => {
                this._resized = !0, (e = r + e.startX - e.currentX) < 419 || (parseFloat(Be.x(this._domNode).maxWidth) || 0) < e || (this._domNode.style.width = e + "px", this._isReplaceVisible && (this._replaceInput.width = Be.F(this._findInput.domNode)), this._findInput.inputBox.layout(), this._tryUpdateHeight())
            })), this._register(this._resizeSash.onDidReset(() => {
                var e = Be.F(this._domNode);
                if (!(e < 419)) {
                    let t = 419;
                    this._resized && 419 !== e || (t = (e = this._codeEditor.getLayoutInfo()).width - 28 - e.minimap.minimapWidth - 15, this._resized = !0), this._domNode.style.width = t + "px", this._isReplaceVisible && (this._replaceInput.width = Be.F(this._findInput.domNode)), this._findInput.inputBox.layout()
                }
            }))
        }
        updateAccessibilitySupport() {
            var e = this._codeEditor.getOption(2);
            this._findInput.setFocusInputOnOptionClick(2 !== e)
        }
    }
    yi.ID = "editor.contrib.findWidget";
    class Ci extends v.a {
        constructor(e) {
            super(), this._opts = e;
            let t = "button";
            this._opts.className && (t = t + " " + this._opts.className), this._opts.icon && (t = t + " " + se.d.asClassName(this._opts.icon)), this._domNode = document.createElement("div"), this._domNode.title = this._opts.label, this._domNode.tabIndex = 0, this._domNode.className = t, this._domNode.setAttribute("role", "button"), this._domNode.setAttribute("aria-label", this._opts.label), this.onclick(this._domNode, e => {
                this._opts.onTrigger(), e.preventDefault()
            }), this.onkeydown(this._domNode, e => e.equals(10) || e.equals(3) ? (this._opts.onTrigger(), void e.preventDefault()) : void(this._opts.onKeyDown && this._opts.onKeyDown(e)))
        }
        get domNode() {
            return this._domNode
        }
        isEnabled() {
            return 0 <= this._domNode.tabIndex
        }
        focus() {
            this._domNode.focus()
        }
        setEnabled(e) {
            this._domNode.classList.toggle("disabled", !e), this._domNode.setAttribute("aria-disabled", String(!e)), this._domNode.tabIndex = e ? 0 : -1
        }
        setExpanded(e) {
            this._domNode.setAttribute("aria-expanded", String(!!e)), e ? (this._domNode.classList.remove(...se.d.asClassNameArray(Yt)), this._domNode.classList.add(...se.d.asClassNameArray(Zt))) : (this._domNode.classList.remove(...se.d.asClassNameArray(Zt)), this._domNode.classList.add(...se.d.asClassNameArray(Yt)))
        }
    }
    Object(se.f)((e, t) => {
        var i = (e, i) => {
            i && t.addRule(`.monaco-editor ${e} { background-color: ${i}; }`)
        };
        i(".findMatch", e.getColor(oe.w)), i(".currentFindMatch", e.getColor(oe.u)), i(".findScope", e.getColor(oe.y)), i(".find-widget", e.getColor(oe.N)), (i = e.getColor(oe.mc)) && t.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${i}; }`), (i = e.getColor(oe.x)) && t.addRule(`.monaco-editor .findMatch { border: 1px ${"hc"===e.type?"dotted":"solid"} ${i}; box-sizing: border-box; }`), (i = e.getColor(oe.v)) && t.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${i}; padding: 1px; box-sizing: border-box; }`), (i = e.getColor(oe.z)) && t.addRule(`.monaco-editor .findScope { border: 1px ${"hc"===e.type?"dashed":"solid"} ${i}; }`), (i = e.getColor(oe.h)) && t.addRule(`.monaco-editor .find-widget { border: 1px solid ${i}; }`), (i = e.getColor(oe.P)) && t.addRule(`.monaco-editor .find-widget { color: ${i}; }`), (i = e.getColor(oe.R)) && t.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${i}; }`), (i = e.getColor(oe.Q)) ? t.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${i}; }`) : (n = e.getColor(oe.O)) && t.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${n}; }`);
        var n = e.getColor(oe.kc);
        n && t.addRule(`\n\t\t.monaco-editor .find-widget .button:not(.disabled):hover,\n\t\t.monaco-editor .find-widget .codicon-find-selection:hover {\n\t\t\tbackground-color: ${n} !important;\n\t\t}\n\t`), (e = e.getColor(oe.S)) && t.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${e}; }`)
    });
    ne = i(117), re = i(94), b = i(81), C = i(80), F = i(156), B = function(e, t, i, n) {
        var r, o = arguments.length,
            s = o < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, i) : n;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, i, n);
        else
            for (var a = e.length - 1; 0 <= a; a--)(r = e[a]) && (s = (o < 3 ? r(s) : 3 < o ? r(t, i, s) : r(t, i)) || s);
        return 3 < o && s && Object.defineProperty(t, i, s), s
    }, y = function(e, t) {
        return function(i, n) {
            t(i, n, e)
        }
    };
    var xi = function(e, t, i, n) {
        return new(i = i || Promise)((function(r, o) {
            function s(e) {
                try {
                    l(n.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function a(e) {
                try {
                    l(n.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                var t;
                e.done ? r(e.value) : ((t = e.value) instanceof i ? t : new i((function(e) {
                    e(t)
                }))).then(s, a)
            }
            l((n = n.apply(e, t || [])).next())
        }))
    };

    function Si(e, t = "single", i = !1) {
        if (!e.hasModel()) return null;
        const n = e.getSelection();
        if ("single" === t && n.startLineNumber === n.endLineNumber || "multiple" === t)
            if (n.isEmpty()) {
                if ((t = e.getConfiguredWordAtPosition(n.getStartPosition())) && !1 === i) return t.word
            } else if (e.getModel().getValueLengthInRange(n) < 524288) return e.getModel().getValueInRange(n);
        return null
    }
    let ki = class e extends q.a {
        constructor(e, t, i, n) {
            super(), this._editor = e, this._findWidgetVisible = be.bindTo(t), this._contextKeyService = t, this._storageService = i, this._clipboardService = n, this._updateHistoryDelayer = new $.a(500), this._state = this._register(new Je), this.loadQueryState(), this._register(this._state.onFindReplaceStateChange(e => this._onStateChanged(e))), this._model = null, this._register(this._editor.onDidChangeModel(() => {
                var e = this._editor.getModel() && this._state.isRevealed;
                this.disposeModel(), this._state.change({
                    searchScope: null,
                    matchCase: this._storageService.getBoolean("editor.matchCase", 1, !1),
                    wholeWord: this._storageService.getBoolean("editor.wholeWord", 1, !1),
                    isRegex: this._storageService.getBoolean("editor.isRegex", 1, !1),
                    preserveCase: this._storageService.getBoolean("editor.preserveCase", 1, !1)
                }, !1), e && this._start({
                    forceRevealReplace: !1,
                    seedSearchStringFromSelection: "none",
                    seedSearchStringFromNonEmptySelection: !1,
                    seedSearchStringFromGlobalClipboard: !1,
                    shouldFocus: 0,
                    shouldAnimate: !1,
                    updateSearchScope: !1,
                    loop: this._editor.getOption(35).loop
                })
            }))
        }
        get editor() {
            return this._editor
        }
        static get(t) {
            return t.getContribution(e.ID)
        }
        dispose() {
            this.disposeModel(), super.dispose()
        }
        disposeModel() {
            this._model && (this._model.dispose(), this._model = null)
        }
        _onStateChanged(e) {
            this.saveQueryState(e), e.isRevealed && (this._state.isRevealed ? this._findWidgetVisible.set(!0) : (this._findWidgetVisible.reset(), this.disposeModel())), e.searchString && this.setGlobalBufferTerm(this._state.searchString)
        }
        saveQueryState(e) {
            e.isRegex && this._storageService.store("editor.isRegex", this._state.actualIsRegex, 1, 0), e.wholeWord && this._storageService.store("editor.wholeWord", this._state.actualWholeWord, 1, 0), e.matchCase && this._storageService.store("editor.matchCase", this._state.actualMatchCase, 1, 0), e.preserveCase && this._storageService.store("editor.preserveCase", this._state.actualPreserveCase, 1, 0)
        }
        loadQueryState() {
            this._state.change({
                matchCase: this._storageService.getBoolean("editor.matchCase", 1, this._state.matchCase),
                wholeWord: this._storageService.getBoolean("editor.wholeWord", 1, this._state.wholeWord),
                isRegex: this._storageService.getBoolean("editor.isRegex", 1, this._state.isRegex),
                preserveCase: this._storageService.getBoolean("editor.preserveCase", 1, this._state.preserveCase)
            }, !1)
        }
        isFindInputFocused() {
            return !!_e.getValue(this._contextKeyService)
        }
        getState() {
            return this._state
        }
        closeFindWidget() {
            this._state.change({
                isRevealed: !1,
                searchScope: null
            }, !1), this._editor.focus()
        }
        toggleCaseSensitive() {
            this._state.change({
                matchCase: !this._state.matchCase
            }, !1), this._state.isRevealed || this.highlightFindOptions()
        }
        toggleWholeWords() {
            this._state.change({
                wholeWord: !this._state.wholeWord
            }, !1), this._state.isRevealed || this.highlightFindOptions()
        }
        toggleRegex() {
            this._state.change({
                isRegex: !this._state.isRegex
            }, !1), this._state.isRevealed || this.highlightFindOptions()
        }
        togglePreserveCase() {
            this._state.change({
                preserveCase: !this._state.preserveCase
            }, !1), this._state.isRevealed || this.highlightFindOptions()
        }
        toggleSearchScope() {
            if (this._state.searchScope) this._state.change({
                searchScope: null
            }, !0);
            else if (this._editor.hasModel()) {
                let e = this._editor.getSelections();
                e.map(e => (e = 1 === e.endColumn && e.endLineNumber > e.startLineNumber ? e.setEndPosition(e.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(e.endLineNumber - 1)) : e).isEmpty() ? null : e).filter(e => !!e), e.length && this._state.change({
                    searchScope: e
                }, !0)
            }
        }
        setSearchString(e) {
            this._state.isRegex && (e = G.t(e)), this._state.change({
                searchString: e
            }, !1)
        }
        highlightFindOptions(e = 0) {}
        _start(e) {
            return xi(this, void 0, void 0, (function*() {
                if (this.disposeModel(), this._editor.hasModel()) {
                    let n = {
                        isRevealed: !0
                    };
                    var t;
                    if ("single" === e.seedSearchStringFromSelection ? (t = Si(this._editor, e.seedSearchStringFromSelection, e.seedSearchStringFromNonEmptySelection)) && (this._state.isRegex ? n.searchString = G.t(t) : n.searchString = t) : "multiple" !== e.seedSearchStringFromSelection || e.updateSearchScope || (i = Si(this._editor, e.seedSearchStringFromSelection)) && (n.searchString = i), !n.searchString && e.seedSearchStringFromGlobalClipboard) {
                        var i = yield this.getGlobalBufferTerm();
                        if (!this._editor.hasModel()) return;
                        i && (n.searchString = i)
                    }
                    if (e.forceRevealReplace ? n.isReplaceRevealed = !0 : this._findWidgetVisible.get() || (n.isReplaceRevealed = !1), e.updateSearchScope) {
                        let e = this._editor.getSelections();
                        e.some(e => !e.isEmpty()) && (n.searchScope = e)
                    }
                    n.loop = e.loop, this._state.change(n, !1), this._model || (this._model = new je(this._editor, this._state))
                }
            }))
        }
        start(e) {
            return this._start(e)
        }
        moveToNextMatch() {
            return !!this._model && (this._model.moveToNextMatch(), !0)
        }
        moveToPrevMatch() {
            return !!this._model && (this._model.moveToPrevMatch(), !0)
        }
        replace() {
            return !!this._model && (this._model.replace(), !0)
        }
        replaceAll() {
            return !!this._model && (this._model.replaceAll(), !0)
        }
        selectAllMatches() {
            return !!this._model && (this._model.selectAllMatches(), this._editor.focus(), !0)
        }
        getGlobalBufferTerm() {
            return xi(this, void 0, void 0, (function*() {
                return this._editor.getOption(35).globalFindClipboard && this._editor.hasModel() && !this._editor.getModel().isTooLargeForSyncing() ? this._clipboardService.readFindText() : ""
            }))
        }
        setGlobalBufferTerm(e) {
            this._editor.getOption(35).globalFindClipboard && this._editor.hasModel() && !this._editor.getModel().isTooLargeForSyncing() && this._clipboardService.writeFindText(e)
        }
    };
    ki.ID = "editor.contrib.findController", ki = B([y(1, ve.b), y(2, F.a), y(3, ne.a)], ki), v = class extends ki {
        constructor(e, t, i, n, r, o, s, a) {
            super(e, i, s, a), this._contextViewService = t, this._keybindingService = n, this._themeService = r, this._notificationService = o, this._widget = null, this._findOptionsWidget = null
        }
        _start(e) {
            const t = Object.create(null, {
                _start: {
                    get: () => super._start
                }
            });
            return xi(this, void 0, void 0, (function*() {
                this._widget || this._createFindWidget();
                var i = this._editor.getSelection();
                let n = !1;
                switch (this._editor.getOption(35).autoFindInSelection) {
                    case "always":
                        n = !0;
                        break;
                    case "never":
                        n = !1;
                        break;
                    case "multiline":
                        n = !!i && i.startLineNumber !== i.endLineNumber
                }
                e.updateSearchScope = n, yield t._start.call(this, e), this._widget && (2 === e.shouldFocus ? this._widget.focusReplaceInput() : 1 === e.shouldFocus && this._widget.focusFindInput())
            }))
        }
        highlightFindOptions(e = !1) {
            this._widget || this._createFindWidget(), (this._state.isRevealed && !e ? this._widget : this._findOptionsWidget).highlightFindOptions()
        }
        _createFindWidget() {
            this._widget = this._register(new yi(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._themeService, this._storageService, this._notificationService)), this._findOptionsWidget = this._register(new Xe(this._editor, this._state, this._keybindingService, this._themeService))
        }
    }, v = B([y(1, re.b), y(2, ve.b), y(3, b.a), y(4, se.b), y(5, C.a), y(6, F.a), y(7, ne.a)], v);
    Object(Y.l)(new Y.e({
        id: ye,
        label: Ue.a("startFindAction", "Find"),
        alias: "Find",
        precondition: ve.a.or(Z.a.focus, ve.a.has("editorIsOpen")),
        kbOpts: {
            kbExpr: null,
            primary: 2084,
            weight: 100
        },
        menuOpts: {
            menuId: Dt.b.MenubarEditMenu,
            group: "3_find",
            title: Ue.a({
                key: "miFind",
                comment: ["&& denotes a mnemonic"]
            }, "&&Find"),
            order: 1
        }
    })).addImplementation(0, (e, t, i) => {
        const n = ki.get(t);
        return !!n && n.start({
            forceRevealReplace: !1,
            seedSearchStringFromSelection: "never" !== t.getOption(35).seedSearchStringFromSelection ? "single" : "none",
            seedSearchStringFromNonEmptySelection: "selection" === t.getOption(35).seedSearchStringFromSelection,
            seedSearchStringFromGlobalClipboard: t.getOption(35).globalFindClipboard,
            shouldFocus: 1,
            shouldAnimate: !0,
            updateSearchScope: !1,
            loop: t.getOption(35).loop
        })
    });
    class Li extends Y.b {
        constructor() {
            super({
                id: Ce,
                label: Ue.a("startFindWithSelectionAction", "Find With Selection"),
                alias: "Find With Selection",
                precondition: void 0,
                kbOpts: {
                    kbExpr: null,
                    primary: 0,
                    mac: {
                        primary: 2083
                    },
                    weight: 100
                }
            })
        }
        run(e, t) {
            return xi(this, void 0, void 0, (function*() {
                let e = ki.get(t);
                e && (yield e.start({
                    forceRevealReplace: !1,
                    seedSearchStringFromSelection: "multiple",
                    seedSearchStringFromNonEmptySelection: !1,
                    seedSearchStringFromGlobalClipboard: !1,
                    shouldFocus: 0,
                    shouldAnimate: !0,
                    updateSearchScope: !1,
                    loop: t.getOption(35).loop
                }), e.setGlobalBufferTerm(e.getState().searchString))
            }))
        }
    }
    class Oi extends Y.b {
        run(e, t) {
            return xi(this, void 0, void 0, (function*() {
                let e = ki.get(t);
                e && !this._run(e) && (yield e.start({
                    forceRevealReplace: !1,
                    seedSearchStringFromSelection: 0 === e.getState().searchString.length && "never" !== t.getOption(35).seedSearchStringFromSelection ? "single" : "none",
                    seedSearchStringFromNonEmptySelection: "selection" === t.getOption(35).seedSearchStringFromSelection,
                    seedSearchStringFromGlobalClipboard: !0,
                    shouldFocus: 0,
                    shouldAnimate: !0,
                    updateSearchScope: !1,
                    loop: t.getOption(35).loop
                }), this._run(e))
            }))
        }
    }
    class Ei extends Y.b {
        run(e, t) {
            return xi(this, void 0, void 0, (function*() {
                let e = ki.get(t);
                if (e) {
                    var i = "selection" === t.getOption(35).seedSearchStringFromSelection;
                    let n = null;
                    "never" !== t.getOption(35).seedSearchStringFromSelection && (n = Si(t, "single", i)), n && e.setSearchString(n), this._run(e) || (yield e.start({
                        forceRevealReplace: !1,
                        seedSearchStringFromSelection: "never" !== t.getOption(35).seedSearchStringFromSelection ? "single" : "none",
                        seedSearchStringFromNonEmptySelection: i,
                        seedSearchStringFromGlobalClipboard: !1,
                        shouldFocus: 0,
                        shouldAnimate: !0,
                        updateSearchScope: !1,
                        loop: t.getOption(35).loop
                    }), this._run(e))
                }
            }))
        }
    }
    Object(Y.l)(new Y.e({
        id: Oe,
        label: Ue.a("startReplace", "Replace"),
        alias: "Replace",
        precondition: ve.a.or(Z.a.focus, ve.a.has("editorIsOpen")),
        kbOpts: {
            kbExpr: null,
            primary: 2086,
            mac: {
                primary: 2596
            },
            weight: 100
        },
        menuOpts: {
            menuId: Dt.b.MenubarEditMenu,
            group: "3_find",
            title: Ue.a({
                key: "miReplace",
                comment: ["&& denotes a mnemonic"]
            }, "&&Replace"),
            order: 2
        }
    })).addImplementation(0, (e, t, i) => {
        if (!t.hasModel() || t.getOption(80)) return !1;
        const n = ki.get(t);
        if (!n) return !1;
        const r = t.getSelection();
        var o = n.isFindInputFocused(),
            s = !r.isEmpty() && r.startLineNumber === r.endLineNumber && "never" !== t.getOption(35).seedSearchStringFromSelection && !o;
        o = o || s ? 2 : 1;
        return n.start({
            forceRevealReplace: !0,
            seedSearchStringFromSelection: s ? "single" : "none",
            seedSearchStringFromNonEmptySelection: "selection" === t.getOption(35).seedSearchStringFromSelection,
            seedSearchStringFromGlobalClipboard: "never" !== t.getOption(35).seedSearchStringFromSelection,
            shouldFocus: o,
            shouldAnimate: !0,
            updateSearchScope: !1,
            loop: t.getOption(35).loop
        })
    }), Object(Y.k)(ki.ID, v), Object(Y.i)(Li), Object(Y.i)(class extends Oi {
        constructor() {
            super({
                id: xe,
                label: Ue.a("findNextMatchAction", "Find Next"),
                alias: "Find Next",
                precondition: void 0,
                kbOpts: [{
                    kbExpr: Z.a.focus,
                    primary: 61,
                    mac: {
                        primary: 2085,
                        secondary: [61]
                    },
                    weight: 100
                }, {
                    kbExpr: ve.a.and(Z.a.focus, _e),
                    primary: 3,
                    weight: 100
                }]
            })
        }
        _run(e) {
            return !!e.moveToNextMatch() && (e.editor.pushUndoStop(), !0)
        }
    }), Object(Y.i)(class extends Oi {
        constructor() {
            super({
                id: Se,
                label: Ue.a("findPreviousMatchAction", "Find Previous"),
                alias: "Find Previous",
                precondition: void 0,
                kbOpts: [{
                    kbExpr: Z.a.focus,
                    primary: 1085,
                    mac: {
                        primary: 3109,
                        secondary: [1085]
                    },
                    weight: 100
                }, {
                    kbExpr: ve.a.and(Z.a.focus, _e),
                    primary: 1027,
                    weight: 100
                }]
            })
        }
        _run(e) {
            return e.moveToPrevMatch()
        }
    }), Object(Y.i)(class extends Ei {
        constructor() {
            super({
                id: ke,
                label: Ue.a("nextSelectionMatchFindAction", "Find Next Selection"),
                alias: "Find Next Selection",
                precondition: void 0,
                kbOpts: {
                    kbExpr: Z.a.focus,
                    primary: 2109,
                    weight: 100
                }
            })
        }
        _run(e) {
            return e.moveToNextMatch()
        }
    }), Object(Y.i)(class extends Ei {
        constructor() {
            super({
                id: Le,
                label: Ue.a("previousSelectionMatchFindAction", "Find Previous Selection"),
                alias: "Find Previous Selection",
                precondition: void 0,
                kbOpts: {
                    kbExpr: Z.a.focus,
                    primary: 3133,
                    weight: 100
                }
            })
        }
        _run(e) {
            return e.moveToPrevMatch()
        }
    });
    const Ni = Y.c.bindToContribution(ki.get);
    Object(Y.j)(new Ni({
        id: Ee,
        precondition: be,
        handler: e => e.closeFindWidget(),
        kbOpts: {
            weight: 105,
            kbExpr: ve.a.and(Z.a.focus, ve.a.not("isComposing")),
            primary: 9,
            secondary: [1033]
        }
    })), Object(Y.j)(new Ni({
        id: Ne,
        precondition: void 0,
        handler: e => e.toggleCaseSensitive(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: t.primary,
            mac: t.mac,
            win: t.win,
            linux: t.linux
        }
    })), Object(Y.j)(new Ni({
        id: De,
        precondition: void 0,
        handler: e => e.toggleWholeWords(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: s.primary,
            mac: s.mac,
            win: s.win,
            linux: s.linux
        }
    })), Object(Y.j)(new Ni({
        id: Ie,
        precondition: void 0,
        handler: e => e.toggleRegex(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: l.primary,
            mac: l.mac,
            win: l.win,
            linux: l.linux
        }
    })), Object(Y.j)(new Ni({
        id: Te,
        precondition: void 0,
        handler: e => e.toggleSearchScope(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: c.primary,
            mac: c.mac,
            win: c.win,
            linux: c.linux
        }
    })), Object(Y.j)(new Ni({
        id: Me,
        precondition: void 0,
        handler: e => e.togglePreserveCase(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: g.primary,
            mac: g.mac,
            win: g.win,
            linux: g.linux
        }
    })), Object(Y.j)(new Ni({
        id: Pe,
        precondition: be,
        handler: e => e.replace(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: 3094
        }
    })), Object(Y.j)(new Ni({
        id: Pe,
        precondition: be,
        handler: e => e.replace(),
        kbOpts: {
            weight: 105,
            kbExpr: ve.a.and(Z.a.focus, we),
            primary: 3
        }
    })), Object(Y.j)(new Ni({
        id: Ae,
        precondition: be,
        handler: e => e.replaceAll(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: 2563
        }
    })), Object(Y.j)(new Ni({
        id: Ae,
        precondition: be,
        handler: e => e.replaceAll(),
        kbOpts: {
            weight: 105,
            kbExpr: ve.a.and(Z.a.focus, we),
            primary: void 0,
            mac: {
                primary: 2051
            }
        }
    })), Object(Y.j)(new Ni({
        id: Re,
        precondition: be,
        handler: e => e.selectAllMatches(),
        kbOpts: {
            weight: 105,
            kbExpr: Z.a.focus,
            primary: 515
        }
    }));
    var Di = i(92),
        Ii = i(107),
        Ti = i(57);
    class Mi {
        constructor(e, t) {
            this._selection = e, this._insertSpace = t, this._usedEndToken = null
        }
        static _haystackHasNeedleAtOffset(e, t, i) {
            if (i < 0) return !1;
            var n = t.length;
            if (e.length < i + n) return !1;
            for (let s = 0; s < n; s++) {
                var r = e.charCodeAt(i + s),
                    o = t.charCodeAt(s);
                if (r !== o && !(65 <= r && r <= 90 && r + 32 === o || 65 <= o && o <= 90 && o + 32 === r)) return !1
            }
            return !0
        }
        _createOperationsForBlockComment(e, t, i, n, r, o) {
            var s = e.startLineNumber,
                a = e.startColumn,
                l = e.endLineNumber,
                d = e.endColumn;
            const c = r.getLineContent(s),
                h = r.getLineContent(l);
            let u, p = c.lastIndexOf(t, a - 1 + t.length),
                g = h.indexOf(i, d - 1 - i.length);
            if (-1 !== p && -1 !== g)
                if (s === l) {
                    0 <= c.substring(p + t.length, g).indexOf(i) && (p = -1, g = -1)
                } else {
                    const e = c.substring(p + t.length),
                        n = h.substring(0, g);
                    (0 <= e.indexOf(i) || 0 <= n.indexOf(i)) && (p = -1, g = -1)
                } - 1 !== p && -1 !== g ? (n && p + t.length < c.length && 32 === c.charCodeAt(p + t.length) && (t += " "), n && 0 < g && 32 === h.charCodeAt(g - 1) && (i = " " + i, --g), u = Mi._createRemoveBlockCommentOperations(new ee.a(s, p + t.length + 1, l, g + 1), t, i)) : (u = Mi._createAddBlockCommentOperations(e, t, i, this._insertSpace), this._usedEndToken = 1 === u.length ? i : null);
            for (const e of u) o.addTrackedEditOperation(e.range, e.text)
        }
        static _createRemoveBlockCommentOperations(e, t, i) {
            let n = [];
            return ee.a.isEmpty(e) ? n.push(Ii.a.delete(new ee.a(e.startLineNumber, e.startColumn - t.length, e.endLineNumber, e.endColumn + i.length))) : (n.push(Ii.a.delete(new ee.a(e.startLineNumber, e.startColumn - t.length, e.startLineNumber, e.startColumn))), n.push(Ii.a.delete(new ee.a(e.endLineNumber, e.endColumn, e.endLineNumber, e.endColumn + i.length)))), n
        }
        static _createAddBlockCommentOperations(e, t, i, n) {
            let r = [];
            return ee.a.isEmpty(e) ? r.push(Ii.a.replace(new ee.a(e.startLineNumber, e.startColumn, e.endLineNumber, e.endColumn), t + "  " + i)) : (r.push(Ii.a.insert(new J.a(e.startLineNumber, e.startColumn), t + (n ? " " : ""))), r.push(Ii.a.insert(new J.a(e.endLineNumber, e.endColumn), (n ? " " : "") + i))), r
        }
        getEditOperations(e, t) {
            var i = this._selection.startLineNumber,
                n = this._selection.startColumn;
            e.tokenizeIfCheap(i), n = e.getLanguageIdAtPosition(i, n), (n = Ti.b.getComments(n)) && n.blockCommentStartToken && n.blockCommentEndToken && this._createOperationsForBlockComment(this._selection, n.blockCommentStartToken, n.blockCommentEndToken, this._insertSpace, e, t)
        }
        computeCursorState(e, t) {
            var i = t.getInverseEditOperations();
            if (2 === i.length) {
                t = i[0];
                var n = i[1];
                return new te.a(t.range.endLineNumber, t.range.endColumn, n.range.startLineNumber, n.range.startColumn)
            }
            return n = i[0].range, i = this._usedEndToken ? -this._usedEndToken.length - 1 : 0, new te.a(n.endLineNumber, n.endColumn + i, n.endLineNumber, n.endColumn + i)
        }
    }
    class Pi {
        constructor(e, t, i, n, r, o) {
            this._selection = e, this._tabSize = t, this._type = i, this._insertSpace = n, this._selectionId = null, this._deltaColumn = 0, this._moveEndPositionDown = !1, this._ignoreEmptyLines = r, this._ignoreFirstLine = o || !1
        }
        static _gatherPreflightCommentStrings(e, t, i) {
            e.tokenizeIfCheap(t);
            e = e.getLanguageIdAtPosition(t, 1);
            var n = (e = Ti.b.getComments(e)) ? e.lineCommentToken : null;
            if (!n) return null;
            let r = [];
            for (let e = 0, o = i - t + 1; e < o; e++) r[e] = {
                ignore: !1,
                commentStr: n,
                commentStrOffset: 0,
                commentStrLength: n.length
            };
            return r
        }
        static _analyzeLines(e, t, i, n, r, o, s) {
            let a, l = !0;
            a = 0 === e || 1 !== e;
            for (let c = 0, h = n.length; c < h; c++) {
                const h = n[c];
                var d = r + c;
                if (d === r && s) h.ignore = !0;
                else {
                    const n = i.getLineContent(d); - 1 !== (d = G.u(n)) ? (l = !1, h.ignore = !1, h.commentStrOffset = d, a && !Mi._haystackHasNeedleAtOffset(n, h.commentStr, d) && (0 === e ? a = !1 : 1 === e || (h.ignore = !0)), a && t && (d += h.commentStrLength) < n.length && 32 === n.charCodeAt(d) && (h.commentStrLength += 1)) : (h.ignore = o, h.commentStrOffset = n.length)
                }
            }
            if (0 === e && l) {
                a = !1;
                for (let e = 0, t = n.length; e < t; e++) n[e].ignore = !1
            }
            return {
                supported: !0,
                shouldRemoveComments: a,
                lines: n
            }
        }
        static _gatherPreflightData(e, t, i, n, r, o, s) {
            return null === (r = Pi._gatherPreflightCommentStrings(i, n, r)) ? {
                supported: !1
            } : Pi._analyzeLines(e, t, i, r, n, o, s)
        }
        _executeLineComments(e, t, i, n) {
            let r;
            r = i.shouldRemoveComments ? Pi._createRemoveLineCommentsOperations(i.lines, n.startLineNumber) : (Pi._normalizeInsertionPoint(e, i.lines, n.startLineNumber, this._tabSize), this._createAddLineCommentsOperations(i.lines, n.startLineNumber));
            var o = new J.a(n.positionLineNumber, n.positionColumn);
            for (let i = 0, n = r.length; i < n; i++) t.addEditOperation(r[i].range, r[i].text), ee.a.isEmpty(r[i].range) && ee.a.getStartPosition(r[i].range).equals(o) && e.getLineContent(o.lineNumber).length + 1 === o.column && (this._deltaColumn = (r[i].text || "").length);
            this._selectionId = t.trackSelection(n)
        }
        _attemptRemoveBlockComment(e, t, i, n) {
            let r = t.startLineNumber,
                o = t.endLineNumber;
            var s = n.length + Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber), t.startColumn);
            let a = e.getLineContent(r).lastIndexOf(i, s - 1),
                l = e.getLineContent(o).indexOf(n, t.endColumn - 1 - i.length);
            return -1 !== a && -1 === l && (l = e.getLineContent(r).indexOf(n, a + i.length), o = r), -1 === a && -1 !== l && (a = e.getLineContent(o).lastIndexOf(i, l), r = o), !t.isEmpty() || -1 !== a && -1 !== l || (a = e.getLineContent(r).indexOf(i), -1 !== a && (l = e.getLineContent(r).indexOf(n, a + i.length))), -1 !== a && 32 === e.getLineContent(r).charCodeAt(a + i.length) && (i += " "), -1 !== l && 32 === e.getLineContent(o).charCodeAt(l - 1) && (n = " " + n, --l), -1 !== a && -1 !== l ? Mi._createRemoveBlockCommentOperations(new ee.a(r, a + i.length + 1, o, l + 1), i, n) : null
        }
        _executeBlockComment(e, t, i) {
            e.tokenizeIfCheap(i.startLineNumber);
            var n = e.getLanguageIdAtPosition(i.startLineNumber, 1),
                r = Ti.b.getComments(n);
            if (r && r.blockCommentStartToken && r.blockCommentEndToken) {
                var o = r.blockCommentStartToken;
                n = r.blockCommentEndToken;
                let s = this._attemptRemoveBlockComment(e, i, o, n);
                if (!s) {
                    if (i.isEmpty()) {
                        r = e.getLineContent(i.startLineNumber);
                        let t = G.u(r); - 1 === t && (t = r.length), s = Mi._createAddBlockCommentOperations(new ee.a(i.startLineNumber, t + 1, i.startLineNumber, r.length + 1), o, n, this._insertSpace)
                    } else s = Mi._createAddBlockCommentOperations(new ee.a(i.startLineNumber, e.getLineFirstNonWhitespaceColumn(i.startLineNumber), i.endLineNumber, e.getLineMaxColumn(i.endLineNumber)), o, n, this._insertSpace);
                    1 === s.length && (this._deltaColumn = o.length + 1)
                }
                this._selectionId = t.trackSelection(i);
                for (const e of s) t.addEditOperation(e.range, e.text)
            }
        }
        getEditOperations(e, t) {
            let i = this._selection;
            if (this._moveEndPositionDown = !1, i.startLineNumber === i.endLineNumber && this._ignoreFirstLine) return t.addEditOperation(new ee.a(i.startLineNumber, e.getLineMaxColumn(i.startLineNumber), i.startLineNumber + 1, 1), i.startLineNumber === e.getLineCount() ? "" : "\n"), void(this._selectionId = t.trackSelection(i));
            i.startLineNumber < i.endLineNumber && 1 === i.endColumn && (this._moveEndPositionDown = !0, i = i.setEndPosition(i.endLineNumber - 1, e.getLineMaxColumn(i.endLineNumber - 1)));
            var n = Pi._gatherPreflightData(this._type, this._insertSpace, e, i.startLineNumber, i.endLineNumber, this._ignoreEmptyLines, this._ignoreFirstLine);
            return n.supported ? this._executeLineComments(e, t, n, i) : this._executeBlockComment(e, t, i)
        }
        computeCursorState(e, t) {
            let i = t.getTrackedSelection(this._selectionId);
            return this._moveEndPositionDown && (i = i.setEndPosition(i.endLineNumber + 1, 1)), new te.a(i.selectionStartLineNumber, i.selectionStartColumn + this._deltaColumn, i.positionLineNumber, i.positionColumn + this._deltaColumn)
        }
        static _createRemoveLineCommentsOperations(e, t) {
            let i = [];
            for (let r = 0, o = e.length; r < o; r++) {
                var n = e[r];
                n.ignore || i.push(Ii.a.delete(new ee.a(t + r, n.commentStrOffset + 1, t + r, n.commentStrOffset + n.commentStrLength + 1)))
            }
            return i
        }
        _createAddLineCommentsOperations(e, t) {
            let i = [];
            var n = this._insertSpace ? " " : "";
            for (let o = 0, s = e.length; o < s; o++) {
                var r = e[o];
                r.ignore || i.push(Ii.a.insert(new J.a(t + o, r.commentStrOffset + 1), r.commentStr + n))
            }
            return i
        }
        static nextVisibleColumn(e, t, i, n) {
            return i ? e + (t - e % t) : e + n
        }
        static _normalizeInsertionPoint(e, t, i, n) {
            let r, o = 1073741824;
            var s;
            for (let r = 0, s = t.length; r < s; r++)
                if (!t[r].ignore) {
                    const s = e.getLineContent(i + r);
                    let a = 0;
                    for (let e = 0, i = t[r].commentStrOffset; a < o && e < i; e++) a = Pi.nextVisibleColumn(a, n, 9 === s.charCodeAt(e), 1);
                    a < o && (o = a)
                } o = Math.floor(o / n) * n;
            for (let a = 0, l = t.length; a < l; a++)
                if (!t[a].ignore) {
                    const l = e.getLineContent(i + a);
                    let d = 0;
                    for (r = 0, s = t[a].commentStrOffset; d < o && r < s; r++) d = Pi.nextVisibleColumn(d, n, 9 === l.charCodeAt(r), 1);
                    t[a].commentStrOffset = d > o ? r - 1 : r
                }
        }
    }
    class Ai extends Y.b {
        constructor(e, t) {
            super(t), this._type = e
        }
        run(e, t) {
            if (t.hasModel()) {
                const e = [];
                var i = t.getModel().getOptions(),
                    n = t.getOption(19);
                const r = t.getSelections().map((e, t) => ({
                    selection: e,
                    index: t,
                    ignoreFirstLine: !1
                }));
                r.sort((e, t) => ee.a.compareRangesUsingStarts(e.selection, t.selection));
                let o = r[0];
                for (let e = 1; e < r.length; e++) {
                    const t = r[e];
                    o.selection.endLineNumber === t.selection.startLineNumber && (o.index < t.index ? t.ignoreFirstLine = !0 : (o.ignoreFirstLine = !0, o = t))
                }
                for (const t of r) e.push(new Pi(t.selection, i.tabSize, this._type, n.insertSpace, n.ignoreEmptyLines, t.ignoreFirstLine));
                t.pushUndoStop(), t.executeCommands(this.id, e), t.pushUndoStop()
            }
        }
    }
    class Ri extends Y.b {
        constructor() {
            super({
                id: "editor.action.blockComment",
                label: Ue.a("comment.block", "Toggle Block Comment"),
                alias: "Toggle Block Comment",
                precondition: Z.a.writable,
                kbOpts: {
                    kbExpr: Z.a.editorTextFocus,
                    primary: 1567,
                    linux: {
                        primary: 3103
                    },
                    weight: 100
                },
                menuOpts: {
                    menuId: Dt.b.MenubarEditMenu,
                    group: "5_insert",
                    title: Ue.a({
                        key: "miToggleBlockComment",
                        comment: ["&& denotes a mnemonic"]
                    }, "Toggle &&Block Comment"),
                    order: 2
                }
            })
        }
        run(e, t) {
            if (t.hasModel()) {
                var i = t.getOption(19);
                const e = [];
                for (const n of t.getSelections()) e.push(new Mi(n, i.insertSpace));
                t.pushUndoStop(), t.executeCommands(this.id, e), t.pushUndoStop()
            }
        }
    }
    Object(Y.i)(class extends Ai {
        constructor() {
            super(0, {
                id: "editor.action.commentLine",
                label: Ue.a("comment.line", "Toggle Line Comment"),
                alias: "Toggle Line Comment",
                precondition: Z.a.writable,
                kbOpts: {
                    kbExpr: Z.a.editorTextFocus,
                    primary: 2133,
                    weight: 100
                },
                menuOpts: {
                    menuId: Dt.b.MenubarEditMenu,
                    group: "5_insert",
                    title: Ue.a({
                        key: "miToggleLineComment",
                        comment: ["&& denotes a mnemonic"]
                    }, "&&Toggle Line Comment"),
                    order: 1
                }
            })
        }
    }), Object(Y.i)(class extends Ai {
        constructor() {
            super(1, {
                id: "editor.action.addCommentLine",
                label: Ue.a("comment.line.add", "Add Line Comment"),
                alias: "Add Line Comment",
                precondition: Z.a.writable,
                kbOpts: {
                    kbExpr: Z.a.editorTextFocus,
                    primary: Object(Di.c)(2089, 2081),
                    weight: 100
                }
            })
        }
    }), Object(Y.i)(class extends Ai {
        constructor() {
            super(2, {
                id: "editor.action.removeCommentLine",
                label: Ue.a("comment.line.remove", "Remove Line Comment"),
                alias: "Remove Line Comment",
                precondition: Z.a.writable,
                kbOpts: {
                    kbExpr: Z.a.editorTextFocus,
                    primary: Object(Di.c)(2089, 2099),
                    weight: 100
                }
            })
        }
    }), Object(Y.i)(Ri);
    var Fi = i(111),
        ji = (i(255), i(161)),
        Bi = {},
        Vi = {},
        Wi = (zi.getOrCreate = function(e) {
            return Vi[e] || (Vi[e] = new zi(e)), Vi[e]
        }, zi.prototype.whenLoaded = function() {
            return this._lazyLoadPromise
        }, zi.prototype.load = function() {
            var e = this;
            return this._loadingTriggered || (this._loadingTriggered = !0, Bi[this._languageId].loader().then((function(t) {
                return e._lazyLoadPromiseResolve(t)
            }), (function(t) {
                return e._lazyLoadPromiseReject(t)
            }))), this._lazyLoadPromise
        }, zi);

    function zi(e) {
        var t = this;
        this._languageId = e, this._loadingTriggered = !1, this._lazyLoadPromise = new Promise((function(e, i) {
            t._lazyLoadPromiseResolve = e, t._lazyLoadPromiseReject = i
        }))
    }

    function Hi(e) {
        var t = e.id;
        Bi[t] = e, ji.a.register(e);
        var i = Wi.getOrCreate(t);
        ji.a.setMonarchTokensProvider(t, i.whenLoaded().then((function(e) {
            return e.language
        }))), ji.a.onLanguage(t, (function() {
            i.load().then((function(e) {
                ji.a.setLanguage配置(t, e.conf)
            }))
        }))
    }
    Hi({
        id: "javascript",
        extensions: [".js", ".es6", ".jsx", ".mjs"],
        firstLine: "^#!.*\\bnode",
        filenames: ["jakefile"],
        aliases: ["JavaScript", "javascript", "js"],
        mimetypes: ["text/javascript"],
        loader: function() {
            return i.e(2).then(i.bind(null, 485))
        }
    }), Hi({
        id: "yaml",
        extensions: [".yaml", ".yml"],
        aliases: ["YAML", "yaml", "YML", "yml"],
        mimetypes: ["application/x-yaml", "text/x-yaml"],
        loader: function() {
            return i.e(3).then(i.bind(null, 483))
        }
    });
    t = {
        components: {
            EscCapture: (v = i(121)).a
        },
        name: "InputView",
        props: [],
        data: function() {
            return {
                data: [],
                isShow: !1,
                error: "",
                title: "",
                hint: "",
                resolve: null,
                reject: null
            }
        },
        watch: {},
        methods: {
            show: function(e) {
                var t = this,
                    i = void 0 === (n = e.data) ? [] : n,
                    n = void 0 === (n = e.title) ? "" : n;
                e = void 0 === (e = e.hint) ? "" : e;
                return this.error = "", this.isShow = !0, this.data = i, this.title = n, this.hint = e, this.$nextTick((function() {
                    for (var e in i)(e = t.$refs["ta".concat(e)][0]).style.height = e.scrollHeight + 2 + "px"
                })), new Promise((function(e, i) {
                    t.resolve = e, t.reject = i
                }))
            },
            handleTextareaInput: function(e) {
                (e = e.target) && (e.style.height = "", e.style.height = e.scrollHeight + 2 + "px")
            },
            handleKeyDown: function(e) {
                13 === e.keyCode && this.handleDone()
            },
            handleCancel: function() {
                this.isShow = !1, this.reject()
            },
            handleDone: function() {
                var e, t;
                0 < this.data.filter((function(e) {
                    return e.required && "" === e.value
                })).length ? this.error = "required key(*) must have a value" : (e = this.data.find((function(e) {
                    return e.hasOwnProperty("validate") && "" !== e.validate(e.value)
                }))) ? this.error = e.validate(e.value) : (this.isShow = !1, t = {}, this.data.forEach((function(e) {
                    var i = e.value;
                    "" !== i && (t[e.key] = i)
                })), this.resolve(t))
            }
        }
    };
    var Ui = (i(457), Object(f.a)(t, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return e.isShow ? i("EscCapture", {
            staticClass: "main-input-view-plugin",
            on: {
                esc: e.handleCancel,
                keydown: e.handleKeyDown,
                mousedown: e.handleCancel
            }
        }, [i("div", {
            staticClass: "card-main",
            on: {
                mousedown: function(e) {
                    e.stopPropagation()
                }
            }
        }, [i("div", {
            staticClass: "card-content"
        }, [i("div", {
            staticClass: "content-title"
        }, [e._v(e._s(e.title))]), e._v(" "), e.hint ? i("div", {
            staticClass: "content-hint"
        }, [e._v(e._s(e.hint))]) : e._e(), e._v(" "), e._l(e.data, (function(t, n) {
            return i("div", {
                key: n,
                staticClass: "content-item"
            }, [i("div", {
                staticClass: "item-key"
            }, [e._v("\n          " + e._s(t.name) + "\n          "), t.required ? i("span", [e._v("*")]) : e._e()]), e._v(" "), i("textarea", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: t.value,
                    expression: "item.value"
                }],
                ref: "ta" + n,
                refInFor: !0,
                attrs: {
                    type: "text",
                    rows: "1",
                    spellcheck: "false",
                    placeholder: t.placeholder
                },
                domProps: {
                    value: t.value
                },
                on: {
                    input: [function(i) {
                        i.target.composing || e.$set(t, "value", i.target.value)
                    }, e.handleTextareaInput]
                }
            })])
        })), e._v(" "), e.error ? i("div", {
            staticClass: "error-hint"
        }, [e._v(e._s(e.error))]) : e._e(), e._v(" "), i("div", {
            staticClass: "card-btns"
        }, [i("div", {
            staticClass: "btn btn-cancel",
            on: {
                click: e.handleCancel
            }
        }, [e._v("取消")]), e._v(" "), i("div", {
            staticClass: "btn btn-ok",
            on: {
                click: e.handleDone
            }
        }, [e._v("确定")])])], 2)])]) : e._e()
    }), [], !1, null, "d01c3192", null).exports);

    function Ki(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function $i(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? Ki(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : Ki(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    l = s = {
        install: function(e, t) {
            var i = t.store;
            i = (t = new(e.extend($i($i({}, Ui), {}, {
                store: i
            })))).$mount().$el;
            document.body.appendChild(i), e.prototype.$input = t.show
        }
    }, c = {
        name: "PreviewView",
        props: [],
        data: function() {
            return {
                data: {},
                isShow: !1,
                title: "",
                onExit: function(e) {}
            }
        },
        methods: {
            show: function(e) {
                this.isShow = !0;
                var t = e.data;
                this.data = void 0 === t ? {} : t, t = e.title, this.title = void 0 === t ? "" : t, e = e.onExit, this.onExit = void 0 === e ? function(e) {} : e
            },
            handleExit: function() {
                this.isShow = !1, this.onExit()
            }
        }
    };
    var qi = (i(459), Object(f.a)(c, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return e.isShow ? i("div", {
            staticClass: "main",
            on: {
                mousedown: e.handleExit
            }
        }, [i("div", {
            staticClass: "card-main",
            on: {
                mousedown: function(e) {
                    e.stopPropagation()
                }
            }
        }, [i("div", {
            staticClass: "card-content"
        }, [i("div", {
            staticClass: "content-title"
        }, [e._v(e._s(e.title))]), e._v(" "), e._l(Object.keys(e.data), (function(t, n) {
            return i("div", {
                key: n,
                staticClass: "content-item"
            }, [i("div", {
                staticClass: "item-key"
            }, [e._v(e._s(t))]), e._v(" "), e.data[t] ? i("div", {
                staticClass: "item-value",
                domProps: {
                    innerHTML: e._s(e.$parseEmoji(e.data[t]))
                }
            }) : i("div", [e._v("--")])])
        }))], 2)])]) : e._e()
    }), [], !1, null, "23874bae", null).exports);
    Y = g = {
        install: function(e) {
            var t = new(e.extend(qi)),
                i = t.$mount().$el;
            document.body.appendChild(i), e.prototype.$preview = t.show
        }
    }, t = i(27);

    function Gi(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function Yi(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? Gi(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : Gi(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    s = {
        components: {
            EscCapture: v.a
        },
        name: "AlertView",
        props: [],
        data: function() {
            return {
                isShow: !1,
                content: "",
                title: "错误",
                isShowErrorBtn: !1,
                resolve: null,
                reject: null
            }
        },
        computed: Yi(Yi({}, Object(t.mapState)({})), Object(t.mapGetters)(["theme"])),
        methods: {
            show: function(e) {
                var t = this,
                    i = void 0 === (n = e.title) ? "错误" : n,
                    n = void 0 === (n = e.content) ? "" : n;
                e = void 0 !== (e = e.isShowErrorBtn) && e;
                return this.isShow = !0, this.title = i, this.content = n, this.isShowErrorBtn = e, new Promise((function(e, i) {
                    t.resolve = e, t.reject = i
                }))
            },
            handleKeyDown: function(e) {
                13 === e.keyCode && this.handleDone()
            },
            handleCancel: function() {
                this.isShow = !1, this.reject()
            },
            handleDone: function() {
                this.isShow = !1, this.resolve({})
            }
        }
    };
    var Zi = (i(461), Object(f.a)(s, (function() {
        var e = this,
            t = e.$createElement;
        t = e._self._c || t;
        return e.isShow ? t("EscCapture", {
            staticClass: "main-alert-view-plugin",
            on: {
                esc: e.handleCancel,
                mousedown: e.handleCancel
            }
        }, [t("div", {
            staticClass: "card-main",
            on: {
                mousedown: function(e) {
                    e.stopPropagation()
                }
            }
        }, [t("div", {
            staticClass: "card-content"
        }, [t("div", {
            staticClass: "content-title"
        }, [e._v(e._s(e.title))]), e._v(" "), t("div", {
            class: ["content-content-" + e.theme],
            domProps: {
                innerHTML: e._s(e.content)
            }
        }), e._v(" "), t("div", {
            staticClass: "card-btns"
        }, [e.isShowErrorBtn ? t("div", {
            staticClass: "btn btn-cancel",
            on: {
                click: e.handleCancel
            }
        }, [e._v("\n          取消\n        ")]) : e._e(), e._v(" "), t("div", {
            staticClass: "btn btn-ok",
            on: {
                click: e.handleDone
            }
        }, [e._v("确定")])])])])]) : e._e()
    }), [], !1, null, "a49f7ad8", null).exports);

    function Xi(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function Qi(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? Xi(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : Xi(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function Ji(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    g = c = {
        install: function(e, t) {
            var i = t.store;
            i = (t = new(e.extend(Qi(Qi({}, Zi), {}, {
                store: i
            })))).$mount().$el;
            document.body.appendChild(i), e.prototype.$alert = t.show
        }
    };
    s = {
        components: {
            EscCapture: v.a
        },
        name: "SelectView",
        props: [],
        data: function() {
            return {
                isShow: !1,
                title: "",
                message: "",
                items: [],
                resolve: null,
                reject: null
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? Ji(Object(i), !0).forEach((function(t) {
                    d()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : Ji(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(t.mapState)({})),
        methods: {
            show: function(e) {
                var t = this,
                    i = void 0 === (n = e.items) ? [] : n,
                    n = void 0 === (n = e.title) ? "Select" : n;
                e = void 0 === (e = e.message) ? "" : e;
                return this.isShow = !0, this.title = n, this.items = i, this.message = e, new Promise((function(e, i) {
                    t.resolve = e, t.reject = i
                }))
            },
            handleCancel: function() {
                this.isShow = !1, this.reject()
            },
            handleDone: function() {
                this.isShow = !1, this.resolve({})
            },
            handleItemSelect: function(e) {
                this.isShow = !1, this.resolve(e)
            }
        }
    };
    var en = (i(463), Object(f.a)(s, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return e.isShow ? i("EscCapture", {
            staticClass: "main-select-view-plugin",
            on: {
                esc: e.handleCancel,
                mousedown: e.handleCancel
            }
        }, [i("div", {
            staticClass: "card-main",
            on: {
                mousedown: function(e) {
                    e.stopPropagation()
                }
            }
        }, [i("div", {
            staticClass: "card-content"
        }, [i("div", {
            staticClass: "content-title"
        }, [e._v(e._s(e.title))]), e._v(" "), i("div", {
            staticClass: "content-message",
            domProps: {
                innerHTML: e._s(e.message)
            }
        }), e._v(" "), i("div", {
            staticClass: "btns"
        }, e._l(e.items, (function(t, n) {
            return i("div", {
                key: n,
                staticClass: "btn",
                on: {
                    click: function(t) {
                        return e.handleItemSelect(n)
                    }
                }
            }, [t ? i("span", [e._v(e._s(t))]) : e._e()])
        })), 0)])])]) : e._e()
    }), [], !1, null, "309e2da2", null).exports);

    function tn(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function nn(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? tn(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : tn(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function rn(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function on(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? rn(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : rn(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    s = c = {
        install: function(e, t) {
            var i = t.store;
            i = (t = new(e.extend(nn(nn({}, en), {}, {
                store: i
            })))).$mount().$el;
            document.body.appendChild(i), e.prototype.$select = t.show
        }
    };
    c = {
        name: "CodeView",
        props: [],
        components: {},
        data: function() {
            return {
                editor: null,
                isShow: !1,
                resolve: null,
                reject: null,
                language: "",
                code: "",
                error: null
            }
        },
        watch: {
            isShow: function(e) {
                e || (this.editor && this.editor.dispose(), this.editor = null)
            }
        },
        computed: on(on({}, Object(t.mapState)({})), Object(t.mapGetters)(["theme"])),
        methods: {
            show: function(e) {
                var t = this,
                    i = e.code,
                    n = void 0 === (e = e.language) ? "yaml" : e;
                return this.isShow = !0, this.language = n, this.error = "", this.code = i, this.$nextTick((function() {
                    t.editor = Fi.i.create(t.$refs.editor, {
                        value: i,
                        language: n,
                        theme: ["light", "red"].includes(t.theme) ? "vs" : "vs-dark",
                        fontFamily: "Consolas, Monaco, Lucida Console, Liberation Mono,\n        DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace",
                        fontSize: 14,
                        minimap: {
                            enabled: !1
                        },
                        contextmenu: !1,
                        scrollbar: {
                            verticalScrollbarSize: 12,
                            horizontalScrollbarSize: 12
                        }
                    }), t.editor.onDidChangeModelContent((function() {
                        t.code = t.editor.getValue()
                    })), t.editor.addAction({
                        id: "save",
                        label: "保存",
                        run: function() {
                            t.save()
                        },
                        keybindings: [Fi.c.CtrlCmd | Fi.b.KeyS]
                    }), t.editor.addAction({
                        id: "abort",
                        label: "Abort",
                        run: function() {
                            t.reject(), t.isShow = !1
                        },
                        keybindings: [Fi.b.Escape]
                    }), t.editor.setSelection(new Fi.g(1, 1, 1, 1)), t.editor.focus()
                })), new Promise((function(e, i) {
                    t.resolve = e, t.reject = i
                }))
            },
            handleSaveClick: function() {
                this.save()
            },
            handleAbortClick: function() {
                this.reject(), this.isShow = !1
            },
            save: function() {
                if (this.resolve) try {
                    "yaml" === this.language && N.parse(this.code, {
                        prettyErrors: !0
                    }), this.resolve({
                        code: this.code
                    }), this.isShow = !1
                } catch (e) {
                    this.error = "Error: ".concat(e.message)
                }
            }
        },
        mounted: function() {},
        beforeDestroy: function() {}
    };
    var sn = (i(465), Object(f.a)(c, (function() {
        var e = this,
            t = e.$createElement;
        t = e._self._c || t;
        return e.isShow ? t("div", {
            class: ["main-code-view-" + e.theme, "line-numbers"]
        }, [t("div", {
            ref: "editor",
            staticClass: "editor"
        }), e._v(" "), e.error ? t("div", {
            staticClass: "error"
        }, [t("div", [e._v(e._s(e.error))]), e._v(" "), t("div", {
            staticClass: "clickable",
            on: {
                click: function(t) {
                    e.error = ""
                }
            }
        }, [t("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24"
            }
        }, [t("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), t("path", {
            attrs: {
                d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
            }
        })])])]) : e._e(), e._v(" "), t("div", {
            staticClass: "btns"
        }, [t("div", {
            staticClass: "abort-btn clickable",
            on: {
                click: e.handleAbortClick
            }
        }, [e._v("中止")]), e._v(" "), t("div", {
            staticClass: "save-btn clickable",
            on: {
                click: e.handleSaveClick
            }
        }, [e._v("保存")])])]) : e._e()
    }), [], !1, null, "4bcad04a", null).exports);

    function an(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function ln(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? an(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : an(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function dn(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    c = {
        install: function(e, t) {
            var i = t.store;
            i = (t = new(e.extend(ln(ln({}, sn), {}, {
                store: i
            })))).$mount().$el;
            document.body.appendChild(i), e.prototype.$code = t.show
        }
    };
    v = {
        name: "MenuView",
        props: [],
        components: {
            EscCapture: v.a
        },
        data: function() {
            return {
                isShow: !1,
                options: {},
                items: [],
                resolve: null,
                reject: null,
                contentStyles: {},
                isScrollBottom: !0
            }
        },
        watch: {
            isShow: function(e) {
                var t = this;
                this.$nextTick((function() {
                    var i, n, r, o, s, a, l;
                    e && t.$refs.menu && t.$refs.window.$el && (i = (s = t.$refs.menu).clientHeight, n = s.clientWidth, o = (l = t.$refs.window.$el).clientHeight, r = l.clientWidth, s = (a = t.options).clientX, l = {}, (a = a.clientY) + i <= (o += 25) - 10 ? l.top = a + "px" : 10 <= a - i ? l.top = a - i + "px" : (l.top = a + "px", l.height = o - a - 10 + "px", t.isScrollBottom = !1), l.left = s + n <= r ? s + "px" : s - n + "px", t.contentStyles = l)
                }))
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? dn(Object(i), !0).forEach((function(t) {
                    d()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : dn(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(t.mapState)({})),
        methods: {
            show: function() {
                var e = this,
                    t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : [],
                    i = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
                return this.items = t, this.options = i, this.isShow = !0, this.contentStyles = {}, this.isScrollBottom = !0, new Promise((function(t, i) {
                    e.resolve = t
                }))
            },
            handleCancel: function() {
                this.isShow = !1, this.resolve(-1)
            },
            handleItemSelect: function(e) {
                this.isShow = !1, this.resolve(e)
            },
            handleMenuScroll: function(e) {
                e = e.target, this.isScrollBottom = e.scrollTop + e.clientHeight >= e.scrollHeight - 20
            }
        }
    };
    var cn = (i(467), Object(f.a)(v, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return e.isShow ? i("EscCapture", {
            ref: "window",
            staticClass: "main-menu-view-plugin",
            on: {
                esc: e.handleCancel,
                mousedown: e.handleCancel
            }
        }, [i("div", {
            staticClass: "card-main",
            on: {
                mousedown: function(e) {
                    e.stopPropagation()
                }
            }
        }, [i("div", {
            ref: "menu",
            staticClass: "card-content",
            style: e.contentStyles,
            on: {
                scroll: e.handleMenuScroll
            }
        }, [e._l(e.items, (function(t, n) {
            return [t.hide ? e._e() : i("div", {
                key: t.text,
                staticClass: "item clickable",
                on: {
                    click: function(t) {
                        return e.handleItemSelect(n)
                    }
                }
            }, ["proxy" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M3.4 20.4l17.45-7.48c.81-.35.81-1.49 0-1.84L3.4 3.6c-.66-.29-1.39.2-1.39.91L2 9.12c0 .5.37.93.87.99L17 12 2.87 13.88c-.5.07-.87.5-.87 1l.01 4.61c0 .71.73 1.2 1.39.91z"
                }
            })]) : "rule" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M12 9h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1s.45 1 1 1zM7 7h2v2H7zm0 4h2v2H7zm0 4h2v2H7zM20 3H4c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-1 16H5V5h14v14z"
                }
            })]) : "copy" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M15 1H4c-1.1 0-2 .9-2 2v13c0 .55.45 1 1 1s1-.45 1-1V4c0-.55.45-1 1-1h10c.55 0 1-.45 1-1s-.45-1-1-1zm4 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-1 16H9c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1z"
                }
            })]) : "diff" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M17.7 19.7c.39-.39.39-1.02 0-1.41l-2.7-2.7L13.59 17l2.7 2.7c.39.39 1.03.39 1.41 0zM8.71 8H11v5.59l-4.71 4.7c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0l4.71-4.7c.38-.38.59-.88.59-1.41V8h2.29c.45 0 .67-.54.35-.85l-3.29-3.29c-.2-.2-.51-.2-.71 0L8.35 7.15c-.31.31-.09.85.36.85z"
                }
            })]) : "编辑" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M8.7 15.9L4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4-.39-.39-1.01-.39-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0 .39-.39.39-1.01 0-1.4zm6.6 0l3.9-3.9-3.9-3.9c-.39-.39-.39-1.01 0-1.4.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0-.39-.39-.39-1.01 0-1.4z"
                }
            })]) : "qrcode" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    "enable-background": "new 0 0 24 24",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px",
                    fill: "none"
                }
            }, [i("g", [i("rect", {
                attrs: {
                    fill: "none",
                    height: "24",
                    width: "24"
                }
            }), e._v(" "), i("rect", {
                attrs: {
                    fill: "none",
                    height: "24",
                    width: "24"
                }
            })]), e._v(" "), i("g", [i("g", [i("path", {
                attrs: {
                    d: "M5,11h4c1.1,0,2-0.9,2-2V5c0-1.1-0.9-2-2-2H5C3.9,3,3,3.9,3,5v4C3,10.1,3.9,11,5,11z M5,5h4v4H5V5z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M5,21h4c1.1,0,2-0.9,2-2v-4c0-1.1-0.9-2-2-2H5c-1.1,0-2,0.9-2,2v4C3,20.1,3.9,21,5,21z M5,15h4v4H5V15z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M13,5v4c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2V5c0-1.1-0.9-2-2-2h-4C13.9,3,13,3.9,13,5z M19,9h-4V5h4V9z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M21,20.5v-1c0-0.28-0.22-0.5-0.5-0.5h-1c-0.28,0-0.5,0.22-0.5,0.5v1c0,0.28,0.22,0.5,0.5,0.5h1C20.78,21,21,20.78,21,20.5 z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M13,13.5v1c0,0.28,0.22,0.5,0.5,0.5h1c0.28,0,0.5-0.22,0.5-0.5v-1c0-0.28-0.22-0.5-0.5-0.5h-1C13.22,13,13,13.22,13,13.5z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M16.5,15h-1c-0.28,0-0.5,0.22-0.5,0.5v1c0,0.28,0.22,0.5,0.5,0.5h1c0.28,0,0.5-0.22,0.5-0.5v-1C17,15.22,16.78,15,16.5,15 z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M13,17.5v1c0,0.28,0.22,0.5,0.5,0.5h1c0.28,0,0.5-0.22,0.5-0.5v-1c0-0.28-0.22-0.5-0.5-0.5h-1C13.22,17,13,17.22,13,17.5z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M15.5,21h1c0.28,0,0.5-0.22,0.5-0.5v-1c0-0.28-0.22-0.5-0.5-0.5h-1c-0.28,0-0.5,0.22-0.5,0.5v1C15,20.78,15.22,21,15.5,21 z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M17.5,19h1c0.28,0,0.5-0.22,0.5-0.5v-1c0-0.28-0.22-0.5-0.5-0.5h-1c-0.28,0-0.5,0.22-0.5,0.5v1C17,18.78,17.22,19,17.5,19 z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M18.5,13h-1c-0.28,0-0.5,0.22-0.5,0.5v1c0,0.28,0.22,0.5,0.5,0.5h1c0.28,0,0.5-0.22,0.5-0.5v-1C19,13.22,18.78,13,18.5,13 z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M19.5,17h1c0.28,0,0.5-0.22,0.5-0.5v-1c0-0.28-0.22-0.5-0.5-0.5h-1c-0.28,0-0.5,0.22-0.5,0.5v1C19,16.78,19.22,17,19.5,17 z"
                }
            })])])]) : "parser" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M10 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h5v1c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1v1zm0 15H5l5-6v6zm9-15h-5v2h4c.55 0 1 .45 1 1v12l-5-6v9h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
                }
            })]) : "setting" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"
                }
            })]) : "delete" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v10zM18 4h-2.5l-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"
                }
            })]) : "update" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-4.65 4.65c-.2.2-.51.2-.71 0L7 13h3V9h4v4h3z"
                }
            })]) : "list" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("g", {
                attrs: {
                    fill: "none"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    opacity: ".87"
                }
            })]), e._v(" "), i("path", {
                attrs: {
                    d: "M4 13c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-8c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm4 4h12c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h12c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zM7 8c0 .55.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1zm-3 5c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-8c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm4 4h12c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h12c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zM7 8c0 .55.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1z"
                }
            })]) : "reorder" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M4 15h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm0-8h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM3 6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1z"
                }
            })]) : "folder" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M10.59 4.59C10.21 4.21 9.7 4 9.17 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-1.41-1.41z"
                }
            })]) : "js" === t.icon ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    "enable-background": "new 0 0 24 24",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px",
                    fill: "#000000"
                }
            }, [i("g", [i("rect", {
                attrs: {
                    fill: "none",
                    height: "24",
                    width: "24"
                }
            }), e._v(" "), i("rect", {
                attrs: {
                    fill: "none",
                    height: "24",
                    width: "24"
                }
            })]), e._v(" "), i("g", [i("g", [i("path", {
                attrs: {
                    d: "M4,7v2c0,0.55-0.45,1-1,1h0c-0.55,0-1,0.45-1,1v2c0,0.55,0.45,1,1,1h0c0.55,0,1,0.45,1,1v2c0,1.66,1.34,3,3,3h2 c0.55,0,1-0.45,1-1v0c0-0.55-0.45-1-1-1H7c-0.55,0-1-0.45-1-1v-2c0-1.3-0.84-2.42-2-2.83v-0.34C5.16,11.42,6,10.3,6,9V7 c0-0.55,0.45-1,1-1h2c0.55,0,1-0.45,1-1v0c0-0.55-0.45-1-1-1H7C5.34,4,4,5.34,4,7z"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M21,10c-0.55,0-1-0.45-1-1V7c0-1.66-1.34-3-3-3h-2c-0.55,0-1,0.45-1,1v0c0,0.55,0.45,1,1,1h2c0.55,0,1,0.45,1,1v2 c0,1.3,0.84,2.42,2,2.83v0.34c-1.16,0.41-2,1.52-2,2.83v2c0,0.55-0.45,1-1,1h-2c-0.55,0-1,0.45-1,1v0c0,0.55,0.45,1,1,1h2 c1.66,0,3-1.34,3-3v-2c0-0.55,0.45-1,1-1h0c0.55,0,1-0.45,1-1v-2C22,10.45,21.55,10,21,10L21,10z"
                }
            })])])]) : e._e(), e._v(" "), i("div", [e._v(e._s(t.text))])])]
        })), e._v(" "), e.isScrollBottom ? e._e() : i("div", {
            staticClass: "indicator"
        }, [i("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                height: "24px",
                viewBox: "0 0 24 24",
                width: "24px",
                fill: "#fff"
            }
        }, [i("path", {
            attrs: {
                d: "M24 24H0V0h24v24z",
                fill: "none",
                opacity: ".87"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M15.88 9.29L12 13.17 8.12 9.29c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41-.39-.38-1.03-.39-1.42 0z"
            }
        })])])], 2)])]) : e._e()
    }), [], !1, null, "3d907f50", null).exports);

    function hn(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function un(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? hn(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : hn(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    v = v = {
        install: function(e, t) {
            var i = t.store;
            i = (t = new(e.extend(un(un({}, cn), {}, {
                store: i
            })))).$mount().$el;
            document.body.appendChild(i), e.prototype.$menu = t.show
        }
    };
    var pn = i(82);

    function gn(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function fn(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? gn(Object(i), !0).forEach((function(t) {
                d()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : gn(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    self.MonacoEnvironment = {
        getWorkerUrl: function(e, t) {
            return "./editor.worker.bundle.js"
        }
    }, process.env.IS_WEB || u.a.use(i(469)), u.a.use(n, {
        store: w.a
    }), u.a.use(r, {
        store: w.a
    }), u.a.use(o), u.a.use(l, {
        store: w.a
    }), u.a.use(Y), u.a.use(g, {
        store: w.a
    }), u.a.use(s, {
        store: w.a
    }), u.a.use(c, {
        store: w.a
    }), u.a.use(v, {
        store: w.a
    }), u.a.config.productionTip = !1, u.a.mixin({
        data: function() {
            return {
                mixinScrollTop: 0
            }
        },
        computed: fn(fn(fn({
            isWindows: function() {
                return Object(I.j)()
            },
            isMacOS: function() {
                return Object(I.i)()
            },
            isLinux: function() {
                return Object(I.h)()
            }
        }, Object(t.mapState)({
            sts: function(e) {
                return e.app.settings
            }
        })), Object(t.mapGetters)({
            theme: "theme"
        })), {}, {
            settings: function() {
                var e = this;
                if (this.sts) return new Proxy(pn.cloneDeep(this.sts), {
                    get: function(e, t) {
                        return e[t]
                    },
                    set: function(t, i, n) {
                        return t[i] = n, e.saveSettingsObject({
                            obj: pn.cloneDeep(t)
                        }), !0
                    }
                })
            }
        }),
        methods: fn(fn({}, Object(t.mapMutations)({
            saveSettingsObject: "SAVE_SETTINGS_OBJECT"
        })), {}, {
            reloadElectron: function() {
                return a()(h.a.mark((function e() {
                    return h.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, W.ipcRenderer.invoke("app", "relaunch");
                            case 2:
                                return e.next = 4, W.ipcRenderer.invoke("app", "exit", 0);
                            case 4:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                })))()
            }
        }),
        beforeRouteEnter: function(e, t, i) {
            i((function(e) {
                var t, i = e.$refs["mixin-scroll-content"];
                i && ((t = "$el" in i ? i.$el : i).style.scrollBehavior = "auto", setTimeout((function() {
                    t.style.scrollBehavior = "smooth"
                }), 1), e.$nextTick((function() {
                    t.scrollTop = e.mixinScrollTop
                })))
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            var n = this.$refs["mixin-scroll-content"];
            n && (this.mixinScrollTop = "$el" in n ? n.$el.scrollTop : n.scrollTop), i()
        }
    }), new u.a({
        components: {
            App: m
        },
        router: _,
        store: w.a,
        template: "<App/>"
    }).$mount("#app")
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(52),
        r = i.n(n),
        o = i(10),
        s = i.n(o),
        a = i(18),
        l = i.n(a),
        d = i(3),
        c = i.n(d),
        h = (i(35), i(45)),
        u = (i(82), i(16)),
        p = i(27);

    function g(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    var f = {
            name: "setting-section",
            props: {
                title: String
            },
            data: function() {
                return {}
            },
            computed: function(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var i = null != arguments[t] ? arguments[t] : {};
                    t % 2 ? g(Object(i), !0).forEach((function(t) {
                        l()(e, t, i[t])
                    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : g(Object(i)).forEach((function(t) {
                        Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                    }))
                }
                return e
            }({}, Object(p.mapState)({}))
        },
        m = (i(354), i(30)),
        v = Object(m.a)(f, (function() {
            var e = this.$createElement;
            return (e = this._self._c || e)("div", {
                class: ["main-setting-section-" + this.theme]
            }, [e("div", {
                staticClass: "title"
            }, [this._v(this._s(this.title))]), this._v(" "), e("div", {
                staticClass: "content"
            }, [this._t("default")], 2)])
        }), [], !1, null, "f0b72b92", null).exports,
        b = i(173);

    function _(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function w(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? _(Object(i), !0).forEach((function(t) {
                l()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : _(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    var y = {
            name: "key-capture",
            props: {
                value: {
                    type: String,
                    default: ""
                },
                placeholder: String
            },
            model: {
                prop: "value",
                event: "change"
            },
            data: function() {
                return {
                    isRecording: !1,
                    keyChain: []
                }
            },
            watch: {
                isRecording: function(e) {
                    e || this.$emit("change", this.shortcut)
                }
            },
            computed: w(w({}, Object(p.mapState)({})), {}, {
                shortcut: function() {
                    return this.keyChain.join("+")
                },
                hint: function() {
                    return this.isRecording ? "记录中..." : this.placeholder
                }
            }),
            methods: {
                handleKeyDown: function(e) {
                    var t;
                    this.isRecording && (t = e.key, 13 !== e.keyCode ? t && this.keyChain.push(t) : this.isRecording = !1)
                },
                handleClick: function() {
                    this.keyChain = [], this.isRecording = !0, this.$emit("change", "")
                },
                handleBlur: function() {
                    this.isRecording = !1
                },
                mounted: function() {}
            },
            mounted: function() {
                this.keyChain = this.value.split("+")
            }
        },
        C = (i(356), Object(m.a)(y, (function() {
            var e = this,
                t = e.$createElement;
            return (t = e._self._c || t)("div", {
                class: ["main-key-capture-" + e.theme]
            }, [t("input", {
                class: [e.isRecording ? "recording" : ""],
                style: {
                    padding: "10px"
                },
                attrs: {
                    placeholder: e.hint,
                    readonly: ""
                },
                domProps: {
                    value: e.shortcut
                },
                on: {
                    click: e.handleClick,
                    keydown: e.handleKeyDown,
                    blur: e.handleBlur
                }
            }), e._v(" "), t("div", {
                staticClass: "hint",
                class: [e.isRecording ? "" : "hint-hide"]
            }, [e._v("\n    按 Enter 停止\n  ")])])
        }), [], !1, null, "4b964f25", null).exports);
    n = i(150), o = i(151);

    function x(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function S(e) {
        var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "",
            i = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : "code --wait";
        return new Promise((function(n, r) {
            T = r, N.ipcRenderer.invoke("app", "getPath", "temp").then((function(o) {
                var s = Object(D.join)(o, "close-to-save.".concat(e));
                Object(u.writeFileSync)(s, t), Object(I.exec)("".concat(i, " ").concat(s), {
                    windowsHide: !0
                }, (function(e, t, i) {
                    e && r(e)
                })).on("exit", (function() {
                    n(Object(u.readFileSync)(s).toString())
                }))
            })).catch(r)
        }))
    }
    a = {
        name: "more-hint",
        props: {
            text: String,
            clickable: {
                type: Boolean,
                default: !0
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? x(Object(i), !0).forEach((function(t) {
                    l()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : x(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(p.mapState)({}))
    }, i(358), d = Object(m.a)(a, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            class: ["main-more-hint-" + e.theme, e.clickable ? "clickable" : ""],
            on: {
                click: function(t) {
                    return e.$emit("click")
                }
            }
        }, [t("div", {
            staticClass: "text"
        }, [e._v(e._s(e.text))]), e._v(" "), e.clickable ? t("div", {
            staticClass: "tirangle"
        }) : e._e()])
    }), [], !1, null, "3ddd8481", null).exports, f = {
        name: "separator"
    }, i(360), y = Object(m.a)(f, (function() {
        var e = this.$createElement;
        return (this._self._c || e)("div", {
            class: ["main-settings-separator-" + this.theme]
        })
    }), [], !1, null, "0d6d5378", null).exports, a = i(131), f = {
        name: "TrayOrder",
        components: {
            draggable: i.n(a).a
        },
        props: {
            arr: {
                type: Array,
                default: function() {
                    return [
                        [],
                        []
                    ]
                }
            }
        },
        model: {
            prop: "arr",
            event: "drag"
        },
        watch: {
            arr: {
                handler: function(e) {
                    this.array = e
                },
                deep: !0
            }
        },
        data: function() {
            return {
                array: this.arr
            }
        },
        methods: {
            handleDrag: function(e) {
                this.$emit("drag", this.array)
            }
        },
        mounted: function() {}
    }, i(362), a = Object(m.a)(f, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["tray-order-main-" + e.theme]
        }, [i("div", {
            staticClass: "title"
        }, [e._v("显示:")]), e._v(" "), i("draggable", {
            staticClass: "list left-list",
            attrs: {
                group: "tray",
                list: e.array[0]
            },
            on: {
                change: e.handleDrag
            }
        }, e._l(e.array[0], (function(e) {
            return i("img", {
                key: e,
                staticClass: "clickable",
                attrs: {
                    src: "static/imgs/tray-" + e + ".png",
                    alt: ""
                }
            })
        })), 0), e._v(" "), i("div", {
            staticClass: "title"
        }, [e._v("隐藏:")]), e._v(" "), i("draggable", {
            staticClass: "list",
            attrs: {
                group: "tray",
                list: e.array[1]
            },
            on: {
                change: e.handleDrag
            }
        }, e._l(e.array[1], (function(e) {
            return i("img", {
                key: e,
                staticClass: "clickable",
                attrs: {
                    src: "static/imgs/tray-" + e + ".png",
                    alt: ""
                }
            })
        })), 0)], 1)
    }), [], !1, null, "459d2b96", null).exports;
    var k = i(162),
        L = i(169),
        O = i(166),
        E = i(127),
        N = i(22),
        D = i(12),
        I = i(77),
        T = null,
        M = i(19),
        P = (f = i(60), i.n(f)),
        A = i(40);

    function R(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function F(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? R(Object(i), !0).forEach((function(t) {
                l()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : R(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    p = {
        components: {
            Section: v,
            SimpleInput: b.a,
            KeyCapture: C,
            MoreHint: d,
            SelectView: n.a,
            SwitchView: o.a,
            Separator: y,
            TrayOrder: a,
            Navigator: k.a
        },
        data: function() {
            return k.a, {
                scrollTop: 0,
                fontFamilyPlaceholder: Object(M.i)() ? "PingFang SC" : Object(M.j)() ? "Microsoft Yahei" : "system-ui",
                isEditingExternal: !1,
                sections: []
            }
        },
        computed: F(F({}, Object(p.mapState)({
            detectedInterfaceName: function(e) {
                return e.app.detectedInterfaceName
            }
        })), Object(p.mapGetters)(["clashAxiosClient"])),
        watch: {
            "sts.mixinType": function() {
                this.$parent.refreshProfile()
            },
            "sts.profilePath": function() {
                this.refreshCore()
            }
        },
        methods: F(F(F({}, Object(p.mapMutations)({
            saveSettingsObject: "SAVE_SETTINGS_OBJECT"
        })), Object(p.mapActions)(["getParserLogPath", "getScriptLogPath"])), {}, {
            refreshCore: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.$parent.handlerRestartClash();
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleNavigatToGroup: function(e) {
                var t = this.$refs["mixin-scroll-content"],
                    i = t.children[e];
                this.$nextTick((function() {
                    t.scrollTop = i.offsetTop - 110
                }))
            },
            cancelExternalEdit: function() {
                T && T()
            },
            edit: function(e) {
                var t = arguments,
                    i = this;
                return s()(c.a.mark((function n() {
                    var r, o, s, a, l, d;
                    return c.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                if (a = 1 < t.length && void 0 !== t[1] ? t[1] : "", r = 2 < t.length && void 0 !== t[2] ? t[2] : "yaml", o = !1, n.prev = 3, l = i.settings, s = l[e], l = l.editor, s = s || a, 0 === (a = void 0 === l ? 0 : l)) return n.next = 9, i.$code({
                                    code: s,
                                    language: r
                                });
                                n.next = 16;
                                break;
                            case 9:
                                l = void 0 === (l = (l = n.sent).code) ? "" : l, i.settings[e] = l, o = l !== s, n.next = 32;
                                break;
                            case 16:
                                if (1 === a) return i.isEditingExternal = !0, n.next = 20, S(r, s);
                                n.next = 25;
                                break;
                            case 20:
                                d = n.sent, i.settings[e] = d, o = d !== s, n.next = 32;
                                break;
                            case 25:
                                if (2 === a) return i.isEditingExternal = !0, n.next = 29, S(r, s, i.settings.editorCustomCommand || "subl --wait");
                                n.next = 32;
                                break;
                            case 29:
                                d = n.sent, i.settings[e] = d, o = d !== s;
                            case 32:
                                n.next = 36;
                                break;
                            case 34:
                                n.prev = 34, n.t0 = n.catch(3);
                            case 36:
                                return i.isEditingExternal = !1, n.abrupt("return", o);
                            case 38:
                            case "end":
                                return n.stop()
                        }
                    }), n, null, [
                        [3, 34]
                    ])
                })))()
            },
            handleEditBypass: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.edit("bypassText", h.stringify({
                                    bypass: L.a
                                }));
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditPACContent: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.edit("pacContentText", O.a, "javascript");
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditMixinYAML: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = e.settings.mixinType, t.next = 3, e.edit("mixinText", "mixin: # object\n");
                            case 3:
                                if (t.t0 = t.sent, !t.t0) {
                                    t.next = 6;
                                    break
                                }
                                t.t0 = 0 === i;
                            case 6:
                                if (!t.t0) {
                                    t.next = 8;
                                    break
                                }
                                e.$parent.refreshProfile();
                            case 8:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditMixinJS: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = e.settings.mixinType, t.next = 4, e.edit("mixinCode", "module.exports.parse = ({ content, name, url }, { yaml, axios, notify }) => {\n  return content\n}", "javascript");
                            case 4:
                                if (t.t0 = t.sent, !t.t0) {
                                    t.next = 7;
                                    break
                                }
                                t.t0 = 1 === i;
                            case 7:
                                if (!t.t0) {
                                    t.next = 9;
                                    break
                                }
                                e.$parent.refreshProfile();
                            case 9:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditHeaders: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.edit("headersText", "headers: # object\n");
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditChildProcess: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.edit("childProcessText", "processes: # array\n");
                            case 2:
                                if (!t.sent) {
                                    t.next = 4;
                                    break
                                }
                                e.refreshCore();
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleSelectInterface: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.prev = 0, i = Object(E.b)().map((function(e) {
                                    return e.name
                                })), t.next = 4, e.$select({
                                    title: "选择出接口",
                                    message: "仅在启用TAP模式时有效",
                                    items: [].concat(r()(i), ["[ 重启 ]"])
                                });
                            case 4:
                                (n = t.sent) === i.length ? e.settings.interfaceName = "" : e.settings.interfaceName = i[n], t.next = 10;
                                break;
                            case 8:
                                t.prev = 8, t.t0 = t.catch(0);
                            case 10:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [0, 8]
                    ])
                })))()
            },
            handleEditActionScripts: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.edit("scriptsText", h.stringify({
                                    scripts: {
                                        proxy: {},
                                        profile: {}
                                    }
                                }));
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleOpenActionScriptsConsoleFile: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.getScriptLogPath();
                            case 2:
                                i = t.sent, Object(u.existsSync)(i) || Object(u.writeFileSync)(i, ""), N.shell.openPath(i);
                            case 5:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditProfileParsers: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.edit("profileParsersText", "parsers: # array\n");
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleOpenConsoleFile: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.getParserLogPath();
                            case 2:
                                i = t.sent, Object(u.existsSync)(i) || Object(u.writeFileSync)(i, ""), N.shell.openPath(i);
                            case 5:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleChooseDefaultIcon: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.chooseFileOrPath();
                            case 2:
                                (i = t.sent) && (e.settings.iconDefault = i);
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleChooseSystemProxytOnIcon: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.chooseFileOrPath();
                            case 2:
                                (i = t.sent) && (e.settings.iconSystemProxy = i);
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleChooseProfilePath: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.chooseFileOrPath(!1);
                            case 2:
                                (i = t.sent) && (e.settings.profilePath = i);
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleSelectTrayScriptPath: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.chooseFileOrPath();
                            case 2:
                                (i = t.sent) && (e.settings.trayScriptPath = i);
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleTrayScriptManualRun: function() {
                this.settings.trayScriptManualRunTime = (new Date).getTime()
            },
            chooseFileOrPath: function() {
                var e = arguments;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = !(0 < e.length && void 0 !== e[0]) || e[0], t.next = 3, N.ipcRenderer.invoke("dialog", "showOpenDialogSync", {
                                    properties: [i ? "openFile" : "openDirectory"]
                                });
                            case 3:
                                if ((i = t.sent) && 0 < i.length) return t.abrupt("return", i[0]);
                                t.next = 6;
                                break;
                            case 6:
                                return t.abrupt("return", void 0);
                            case 7:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleReset: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.prev = 0, t.next = 3, e.$alert({
                                    title: "警告",
                                    content: "您确定要重设所有设置吗?",
                                    isShowErrorBtn: !0
                                });
                            case 3:
                                e.saveSettingsObject({
                                    obj: {}
                                }), t.next = 8;
                                break;
                            case 6:
                                t.prev = 6, t.t0 = t.catch(0);
                            case 8:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [0, 6]
                    ])
                })))()
            },
            handleOpenGUILog: function() {
                N.shell.openPath(Object(D.dirname)(P.a.transports.file.getFile().path))
            },
            handleQuit: function() {
                0 < arguments.length && void 0 !== arguments[0] && arguments[0] ? N.ipcRenderer.send("cleanup-done") : this.$parent.quit()
            },
            handlerClearFakeIPCache: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.clashAxiosClient.post("/cache/fakeip/flush", {}, {
                                    validateStatus: function(e) {
                                        return !0
                                    }
                                });
                            case 2:
                                n = t.sent, i = n.status, n = void 0 === (n = (n = void 0 === (n = n.data) ? {} : n).message) ? "" : n, Object(A.g)({
                                    message: 204 === i ? "Fake IP cache cleared" : "Failed with reason: ".concat(n)
                                });
                            case 8:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            }
        }),
        beforeMount: function() {},
        beforeRouteEnter: function(e, t, i) {
            i((function(t) {
                var i = e.query.action;
                "edit-parsers" === (void 0 === i ? "" : i) && t.handleEditProfileParsers()
            }))
        },
        mounted: function() {
            var e = this.$refs["mixin-scroll-content"].children;
            this.sections = r()(e).map((function(e) {
                return e.children[0].innerText
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            i()
        }
    }, i(364), p = Object(m.a)(p, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            class: ["main-setting-view-" + e.theme]
        }, [t("div", {
            class: ["title", e.isEditingExternal ? "blur" : ""]
        }, [t("div", [e._v("设置")]), e._v(" "), t("div", {
            staticClass: "btns"
        }, [t("div", {
            staticClass: "btn",
            on: {
                click: e.handleReset
            }
        }, [e._v("重置所有设置")])])]), e._v(" "), e.settings ? t("div", {
            ref: "mixin-scroll-content",
            class: ["content", , e.isEditingExternal ? "blur" : ""]
        }, [t("Section", {
            attrs: {
                title: "主页"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("配置编辑器")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["CFW", "Visual Studio Code", "自定义"]
            },
            model: {
                value: e.settings.editor,
                callback: function(t) {
                    e.$set(e.settings, "editor", t)
                },
                expression: "settings.editor"
            }
        })], 1), e._v(" "), 2 === e.settings.editor ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("自定义编辑器命令")]), e._v(" "), t("SimpleInput", {
            staticClass: "input",
            attrs: {
                placeholder: "subl --wait"
            },
            model: {
                value: e.settings.editorCustomCommand,
                callback: function(t) {
                    e.$set(e.settings, "editorCustomCommand", t)
                },
                expression: "settings.editorCustomCommand"
            }
        })], 1) : e._e(), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("向系统通知栏发送相关信息")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.showNotifications,
                callback: function(t) {
                    e.$set(e.settings, "showNotifications", t)
                },
                expression: "settings.showNotifications"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("开启Clash时默认缩小到任务栏")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.hideAfterStartup,
                callback: function(t) {
                    e.$set(e.settings, "hideAfterStartup", t)
                },
                expression: "settings.hideAfterStartup"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("随机占用端口")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.randomControllerPort,
                callback: function(t) {
                    e.$set(e.settings, "randomControllerPort", t)
                },
                expression: "settings.randomControllerPort"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("轻量模式")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.lightweightMode,
                callback: function(t) {
                    e.$set(e.settings, "lightweightMode", t)
                },
                expression: "settings.lightweightMode"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("运行时间格式")]), e._v(" "), t("SimpleInput", {
            staticClass: "input",
            attrs: {
                placeholder: "hh : mm : ss"
            },
            model: {
                value: e.settings.runTimeFormat,
                callback: function(t) {
                    e.$set(e.settings, "runTimeFormat", t)
                },
                expression: "settings.runTimeFormat"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("GUI日志文件夹")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "打开"
            },
            on: {
                click: e.handleOpenGUILog
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("有新版本时提醒")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.showNewVersionIcon,
                callback: function(t) {
                    e.$set(e.settings, "showNewVersionIcon", t)
                },
                expression: "settings.showNewVersionIcon"
            }
        })], 1), e._v(" "), e.isMacOS ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("自动升级")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.silentUpdate,
                callback: function(t) {
                    e.$set(e.settings, "silentUpdate", t)
                },
                expression: "settings.silentUpdate"
            }
        })], 1) : e._e()]), e._v(" "), t("Section", {
            attrs: {
                title: "外观"
            }
        }, [e.settings.systemTheme ? e._e() : t("div", {
            staticClass: "item"
        }, [t("div", [e._v("主题")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["明亮", "深色", "国庆中秋", "赛博朋克"]
            },
            model: {
                value: e.settings.theme,
                callback: function(t) {
                    e.$set(e.settings, "theme", t)
                },
                expression: "settings.theme"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("遵循系统主题")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.systemTheme,
                callback: function(t) {
                    e.$set(e.settings, "systemTheme", t)
                },
                expression: "settings.systemTheme"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("字体系列")]), e._v(" "), t("SimpleInput", {
            attrs: {
                placeholder: e.fontFamilyPlaceholder
            },
            model: {
                value: e.settings.fontFamily,
                callback: function(t) {
                    e.$set(e.settings, "fontFamily", t)
                },
                expression: "settings.fontFamily"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("使用系统表情符号")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.useSystemEmoji,
                callback: function(t) {
                    e.$set(e.settings, "useSystemEmoji", t)
                },
                expression: "settings.useSystemEmoji"
            }
        })], 1), e._v(" "), e.isWindows ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("自定义状态栏图标")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            staticClass: "short-input",
            attrs: {
                placeholder: "ICO(.ico) 路径"
            },
            model: {
                value: e.settings.iconDefault,
                callback: function(t) {
                    e.$set(e.settings, "iconDefault", t)
                },
                expression: "settings.iconDefault"
            }
        }), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "选择"
            },
            on: {
                click: e.handleChooseDefaultIcon
            }
        })], 1)]) : e._e(), e._v(" "), e.isWindows ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("状态栏图标上的系统代理")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            staticClass: "short-input",
            attrs: {
                placeholder: "ICO(.ico) 路径"
            },
            model: {
                value: e.settings.iconSystemProxy,
                callback: function(t) {
                    e.$set(e.settings, "iconSystemProxy", t)
                },
                expression: "settings.iconSystemProxy"
            }
        }), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "选择"
            },
            on: {
                click: e.handleChooseSystemProxytOnIcon
            }
        })], 1)]) : e._e(), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("隐藏托盘图标")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.hideTrayIcon,
                callback: function(t) {
                    e.$set(e.settings, "hideTrayIcon", t)
                },
                expression: "settings.hideTrayIcon"
            }
        })], 1), e._v(" "), e.isLinux ? e._e() : t("separator"), e._v(" "), e.isLinux ? e._e() : t("div", {
            staticClass: "item"
        }, [t("div", [e._v("悬浮窗")]), e._v(" "), t("TrayOrder", {
            model: {
                value: e.settings.trayOrders,
                callback: function(t) {
                    e.$set(e.settings, "trayOrders", t)
                },
                expression: "settings.trayOrders"
            }
        })], 1), e._v(" "), e.isLinux ? e._e() : t("div", {
            staticClass: "item"
        }, [t("div", [e._v("文本")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            attrs: {
                placeholder: "要显示在悬浮窗中的文本"
            },
            model: {
                value: e.settings.trayText,
                callback: function(t) {
                    e.$set(e.settings, "trayText", t)
                },
                expression: "settings.trayText"
            }
        })], 1)]), e._v(" "), e.settings.trayText ? e._e() : t("div", {
            staticClass: "item"
        }, [t("div", [e._v("脚本")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            staticClass: "short-input",
            attrs: {
                placeholder: "要运行的脚本"
            },
            model: {
                value: e.settings.trayScriptPath,
                callback: function(t) {
                    e.$set(e.settings, "trayScriptPath", t)
                },
                expression: "settings.trayScriptPath"
            }
        }), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "选择"
            },
            on: {
                click: e.handleSelectTrayScriptPath
            }
        })], 1)]), e._v(" "), !e.settings.trayText && e.settings.trayScriptPath ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("脚本间隔")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            staticClass: "shorter-input",
            attrs: {
                placeholder: "seconds",
                suffix: "s",
                type: "number"
            },
            model: {
                value: e.settings.trayScriptInterval,
                callback: function(t) {
                    e.$set(e.settings, "trayScriptInterval", t)
                },
                expression: "settings.trayScriptInterval"
            }
        }), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "Manual Run"
            },
            on: {
                click: e.handleTrayScriptManualRun
            }
        })], 1)]) : e._e(), e._v(" "), e.isWindows ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("透明")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            staticClass: "shorter-input",
            staticStyle: {
                "margin-right": "10px"
            },
            attrs: {
                placeholder: "前景色"
            },
            model: {
                value: e.settings.trayColorForeground,
                callback: function(t) {
                    e.$set(e.settings, "trayColorForeground", t)
                },
                expression: "settings.trayColorForeground"
            }
        }), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.trayColorTransparent,
                callback: function(t) {
                    e.$set(e.settings, "trayColorTransparent", t)
                },
                expression: "settings.trayColorTransparent"
            }
        })], 1)]) : e._e()], 1), e._v(" "), e.isLinux ? e._e() : t("Section", {
            attrs: {
                title: "系统代理"
            }
        }, [e.isWindows ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("类型")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["HTTP", "PAC"]
            },
            model: {
                value: e.settings.systemProxyTypeIndex,
                callback: function(t) {
                    e.$set(e.settings, "systemProxyTypeIndex", t)
                },
                expression: "settings.systemProxyTypeIndex"
            }
        })], 1) : e._e(), e._v(" "), e.isWindows && 1 === e.settings.systemProxyTypeIndex ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("PAC内容")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditPACContent
            }
        })], 1) : e._e(), e._v(" "), 1 !== e.settings.systemProxyTypeIndex ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("绕过域/网络")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditBypass
            }
        })], 1) : e._e(), e._v(" "), e.isWindows && 1 !== e.settings.systemProxyTypeIndex ? t("div", {
            staticClass: "item"
        }, [t("div", [e._v("指定协议")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.specifyHttpProxyProtocol,
                callback: function(t) {
                    e.$set(e.settings, "specifyHttpProxyProtocol", t)
                },
                expression: "settings.specifyHttpProxyProtocol"
            }
        })], 1) : e._e(), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("静态主机")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            attrs: {
                placeholder: "127.0.0.1"
            },
            model: {
                value: e.settings.staticSystemProxyHost,
                callback: function(t) {
                    e.$set(e.settings, "staticSystemProxyHost", t)
                },
                expression: "settings.staticSystemProxyHost"
            }
        })], 1)])]), e._v(" "), t("Section", {
            attrs: {
                title: "配置文件 Mixin"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("类型")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["YAML", "JavaScript"]
            },
            model: {
                value: e.settings.mixinType,
                callback: function(t) {
                    e.$set(e.settings, "mixinType", t)
                },
                expression: "settings.mixinType"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("YAML")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditMixinYAML
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("JavaScript")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditMixinJS
            }
        })], 1)]), e._v(" "), t("Section", {
            attrs: {
                title: "代理"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("代理项目宽度")]), e._v(" "), t("SimpleInput", {
            attrs: {
                placeholder: "290",
                suffix: "px"
            },
            model: {
                value: e.settings.proxyItemWidth,
                callback: function(t) {
                    e.$set(e.settings, "proxyItemWidth", t)
                },
                expression: "settings.proxyItemWidth"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("策略组导航器宽度")]), e._v(" "), t("SimpleInput", {
            attrs: {
                placeholder: "100(0=隐藏)",
                suffix: "px"
            },
            model: {
                value: e.settings.proxyMiniListWidth,
                callback: function(t) {
                    e.$set(e.settings, "proxyMiniListWidth", t)
                },
                expression: "settings.proxyMiniListWidth"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("自定义节点排序")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["默认", "延迟", "字母"]
            },
            model: {
                value: e.settings.proxyOrder,
                callback: function(t) {
                    e.$set(e.settings, "proxyOrder", t)
                },
                expression: "settings.proxyOrder"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("延迟测试网址")]), e._v(" "), t("SimpleInput", {
            attrs: {
                placeholder: "http://www.gstatic.com/generate_204"
            },
            model: {
                value: e.settings.latencyUrl,
                callback: function(t) {
                    e.$set(e.settings, "latencyUrl", t)
                },
                expression: "settings.latencyUrl"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("延迟测试超时")]), e._v(" "), t("SimpleInput", {
            attrs: {
                type: "number",
                placeholder: "3000",
                suffix: "ms"
            },
            model: {
                value: e.settings.latencyTimeout,
                callback: function(t) {
                    e.$set(e.settings, "latencyTimeout", t)
                },
                expression: "settings.latencyTimeout"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("显示筛选过滤器")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.showProxyFilter,
                callback: function(t) {
                    e.$set(e.settings, "showProxyFilter", t)
                },
                expression: "settings.showProxyFilter"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("隐藏无法选择的代理组")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.hideUnselectableGroup,
                callback: function(t) {
                    e.$set(e.settings, "hideUnselectableGroup", t)
                },
                expression: "settings.hideUnselectableGroup"
            }
        })], 1)]), e._v(" "), t("Section", {
            attrs: {
                title: "连接"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("代理更改时中断连接")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["不中断", "链接", "所有"]
            },
            model: {
                value: e.settings.connProxy,
                callback: function(t) {
                    e.$set(e.settings, "connProxy", t)
                },
                expression: "settings.connProxy"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("配置文件更改时中断连接")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.connProfile,
                callback: function(t) {
                    e.$set(e.settings, "connProfile", t)
                },
                expression: "settings.connProfile"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("模式更改时中断连接")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.connMode,
                callback: function(t) {
                    e.$set(e.settings, "connMode", t)
                },
                expression: "settings.connMode"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("显示链接类型")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["节点名", "分组名", "全部"]
            },
            model: {
                value: e.settings.connChainType,
                callback: function(t) {
                    e.$set(e.settings, "connChainType", t)
                },
                expression: "settings.connChainType"
            }
        })], 1)]), e._v(" "), t("Section", {
            attrs: {
                title: "选择流量出接口"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("接口名称")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [e.detectedInterfaceName ? t("MoreHint", {
            staticClass: "interface-hint",
            attrs: {
                text: "侦测到: " + e.detectedInterfaceName,
                clickable: !1
            }
        }) : e._e(), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: e.settings.interfaceName || "选择"
            },
            on: {
                click: e.handleSelectInterface
            }
        })], 1)])]), e._v(" "), t("Section", {
            attrs: {
                title: "子进程"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("启动其他应用")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditChildProcess
            }
        })], 1)]), e._v(" "), t("Section", {
            attrs: {
                title: "配置"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("配置文件预处理")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditProfileParsers
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("控制台输出")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "打开文件"
            },
            on: {
                click: e.handleOpenConsoleFile
            }
        })], 1), e._v(" "), t("separator"), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("资料夹路径")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("SimpleInput", {
            staticClass: "short-input",
            attrs: {
                placeholder: "配置文件文件夹路径"
            },
            model: {
                value: e.settings.profilePath,
                callback: function(t) {
                    e.$set(e.settings, "profilePath", t)
                },
                expression: "settings.profilePath"
            }
        }), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "选择"
            },
            on: {
                click: e.handleChooseProfilePath
            }
        })], 1)]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("自定义请求头")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditHeaders
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("更新后选择")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.selectAfterUpdated,
                callback: function(t) {
                    e.$set(e.settings, "selectAfterUpdated", t)
                },
                expression: "settings.selectAfterUpdated"
            }
        })], 1)], 1), e._v(" "), t("Section", {
            attrs: {
                title: "操作(Actions)"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("脚本")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "编辑"
            },
            on: {
                click: e.handleEditActionScripts
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("控制台输出")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "打开文件"
            },
            on: {
                click: e.handleOpenActionScriptsConsoleFile
            }
        })], 1)]), e._v(" "), t("Section", {
            attrs: {
                title: "快捷键"
            }
        }, [e.isLinux ? e._e() : t("div", {
            staticClass: "item"
        }, [t("div", [e._v("系统代理")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutSystemProxy,
                callback: function(t) {
                    e.$set(e.settings, "shortcutSystemProxy", t)
                },
                expression: "settings.shortcutSystemProxy"
            }
        })], 1)]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("TUN 模式")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutTun,
                callback: function(t) {
                    e.$set(e.settings, "shortcutTun", t)
                },
                expression: "settings.shortcutTun"
            }
        })], 1)]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("混淆")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutMixin,
                callback: function(t) {
                    e.$set(e.settings, "shortcutMixin", t)
                },
                expression: "settings.shortcutMixin"
            }
        })], 1)]), e._v(" "), t("separator"), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("全局模式")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutGlobalMode,
                callback: function(t) {
                    e.$set(e.settings, "shortcutGlobalMode", t)
                },
                expression: "settings.shortcutGlobalMode"
            }
        })], 1)]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("规则模式")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutRuleMode,
                callback: function(t) {
                    e.$set(e.settings, "shortcutRuleMode", t)
                },
                expression: "settings.shortcutRuleMode"
            }
        })], 1)]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("直连模式")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutDirectMode,
                callback: function(t) {
                    e.$set(e.settings, "shortcutDirectMode", t)
                },
                expression: "settings.shortcutDirectMode"
            }
        })], 1)]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("脚本模式")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutScriptMode,
                callback: function(t) {
                    e.$set(e.settings, "shortcutScriptMode", t)
                },
                expression: "settings.shortcutScriptMode"
            }
        })], 1)]), e._v(" "), t("separator"), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("div", [e._v("显示/隐藏仪表板")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutShowHideDashboard,
                callback: function(t) {
                    e.$set(e.settings, "shortcutShowHideDashboard", t)
                },
                expression: "settings.shortcutShowHideDashboard"
            }
        })], 1)]), e._v(" "), e.isLinux ? e._e() : t("div", {
            staticClass: "item"
        }, [t("div", [e._v("运行纸盘脚本")]), e._v(" "), t("div", {
            staticClass: "item"
        }, [t("KeyCapture", {
            staticClass: "input",
            attrs: {
                placeholder: "点击以录制热键"
            },
            model: {
                value: e.settings.shortcutRunTrayScript,
                callback: function(t) {
                    e.$set(e.settings, "shortcutRunTrayScript", t)
                },
                expression: "settings.shortcutRunTrayScript"
            }
        })], 1)])], 1), e._v(" "), t("Section", {
            attrs: {
                title: "缓存"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("Fake IP 缓存")]), e._v(" "), t("MoreHint", {
            staticClass: "hint",
            attrs: {
                text: "清除"
            },
            on: {
                click: e.handlerClearFakeIPCache
            }
        })], 1)]), e._v(" "), e.isMacOS ? t("Section", {
            attrs: {
                title: "Experimental Features"
            }
        }, [t("div", {
            staticClass: "item"
        }, [t("div", [e._v("DHCP 服务器")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.settings.enableDHCPServer,
                callback: function(t) {
                    e.$set(e.settings, "enableDHCPServer", t)
                },
                expression: "settings.enableDHCPServer"
            }
        })], 1)]) : e._e(), e._v(" "), t("div", {
            staticClass: "quit-btns"
        }, [t("div", {
            staticClass: "btn clickable btn-quit",
            on: {
                click: function(t) {
                    return e.handleQuit()
                }
            }
        }, [e._v("退出")]), e._v(" "), t("div", {
            staticClass: "btn clickable btn-force-quit",
            on: {
                click: function(t) {
                    return e.handleQuit(!0)
                }
            }
        }, [e._v("\n        强制退出\n      ")])])], 1) : e._e(), e._v(" "), t("navigator", {
            attrs: {
                list: e.sections
            },
            on: {
                select: e.handleNavigatToGroup
            }
        }), e._v(" "), e.isEditingExternal ? t("div", {
            staticClass: "edit-hint"
        }, [t("div", [e._v("\n      " + e._s(["", "Visual Studio Code", "Sublime Text"][e.settings.editor]) + " is\n      launching for editing.\n    ")]), e._v(" "), t("div", [e._v("关闭编辑文件以保存.")]), e._v(" "), t("div", {
            staticClass: "btn",
            on: {
                click: e.cancelExternalEdit
            }
        }, [e._v("取消")])]) : e._e()], 1)
    }), [], !1, null, "371dba32", null), t.default = p.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(10),
        r = i.n(n),
        o = i(18),
        s = i.n(o),
        a = i(3),
        l = i.n(a),
        d = i(61),
        c = i.n(d),
        h = i(45),
        u = i.n(h),
        p = i(163),
        g = i(40),
        f = i(27),
        m = i(131),
        v = i.n(m);

    function b(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    n = {
        props: ["type", "data"],
        data: function() {
            return {
                ssCipher: ["aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "chacha20-ietf", "xchacha20", "rc4-md5", "xchacha20-ietf-poly1305"],
                vmessCipher: ["none", "auto", "aes-128-gcm", "chacha20-poly1305"],
                pType: ["ss", "vmess", "socks5", "http"],
                gType: ["url-test", "fallback", "select", "load-balance"],
                vmessType: ["tcp", "ws"],
                groupName: "",
                groupType: "select",
                groupUrl: "http://www.gstatic.com/generate_204",
                groupInterval: 600,
                proxyType: "ss",
                proxyName: "",
                proxyServer: "",
                proxyPort: "",
                proxyChipher: "",
                proxyPassword: "",
                proxyUuid: "",
                proxyAlterid: "",
                proxyObfs: "",
                proxyObfshost: "",
                proxyTls: !1,
                proxyUsername: "",
                alterIdx: -1,
                proxySkipCertVerify: !1,
                proxy网络: "tcp",
                proxyWsPath: "",
                proxyWsHeaders: ""
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? b(Object(i), !0).forEach((function(t) {
                    s()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : b(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(f.mapState)({})),
        methods: {
            confirmInput: function() {
                if (0 === this.type) {
                    var e = {
                        name: this.groupName,
                        proxies: [],
                        type: this.groupType
                    };
                    "url-test" !== this.groupType && "fallback" !== this.groupType && "load-balance" !== this.groupType || (e.url = this.groupUrl, e.interval = this.groupInterval), this.$emit("inputDone", {
                        type: 0,
                        content: e,
                        index: this.alterIdx
                    })
                } else if (1 === this.type) {
                    if (e = {
                            name: this.proxyName,
                            type: this.proxyType,
                            server: this.proxyServer,
                            port: this.proxyPort
                        }, "ss" === this.proxyType) e.cipher = this.proxyChipher, e.password = this.proxyPassword, this.proxyObfs && (e.plugin = "obfs", e["plugin-opts"] = {
                        mode: this.proxyObfs,
                        host: this.proxyObfshost || "bing.com"
                    });
                    else if ("vmess" === this.proxyType) {
                        if (e.uuid = this.proxyUuid, e.alterId = this.proxyAlterid, e.cipher = this.proxyChipher, this.proxyTls && (e.tls = !0), this.proxySkipCertVerify && (e["skip-cert-verify"] = !0), "ws" === this.proxyNetwork) {
                            e.network = "ws", e["ws-path"] = this.proxyWsPath;
                            try {
                                e["ws-headers"] = JSON.parse(this.proxyWsHeaders)
                            } catch (e) {}
                        }
                    } else "socks5" !== this.proxyType && "http" !== this.proxyType || (this.proxyUsername && this.proxyPassword && (e.username = this.proxyUsername, e.password = this.proxyPassword), this.proxyTls && (e.tls = !0), this.proxySkipCertVerify && (e["skip-cert-verify"] = !0));
                    this.$emit("inputDone", {
                        type: 1,
                        content: e,
                        index: this.alterIdx
                    })
                }
            }
        },
        mounted: function() {
            if (this.data) {
                if (0 === this.type) this.groupName = this.data.name, this.groupType = this.data.type, "url" in this.data && (this.groupUrl = this.data.url), "interval" in this.data && (this.groupInterval = this.data.interval);
                else if (1 === this.type) {
                    var e, t;
                    this.proxyName = this.data.name, this.proxyPort = this.data.port, this.proxyServer = this.data.server, this.proxyType = this.data.type, "password" in this.data && (this.proxyPassword = this.data.password), "plugin" in this.data && (e = (t = void 0 === (e = this.data["plugin-opts"]) ? {} : e).mode, t = t.host, this.proxyObfs = e, this.proxyObfshost = t), "obfs-host" in this.data && (this.proxyObfshost = this.data["obfs-host"]), "tls" in this.data && (this.proxyTls = this.data.tls), "cipher" in this.data && (this.proxyChipher = this.data.cipher), "uuid" in this.data && (this.proxyUuid = this.data.uuid), "alterId" in this.data && (this.proxyAlterid = this.data.alterId), "skip-cert-verify" in this.data && (this.proxySkipCertVerify = this.data["skip-cert-verify"]), "network" in this.data && (this.proxyNetwork = this.data.network), "ws-path" in this.data && (this.proxyWsPath = this.data["ws-path"]);
                    try {
                        "ws-headers" in this.data && (this.proxyWsHeaders = JSON.stringify(this.data["ws-headers"]))
                    } catch (e) {}
                    "username" in this.data && (this.proxyUsername = this.data.username)
                }
                this.alterIdx = this.data._index
            }
        }
    }, i(326), i(328), o = i(30), a = Object(o.a)(n, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-" + e.theme],
            attrs: {
                id: "main-append-proxy-view"
            }
        }, [0 === e.type ? i("div", {
            staticClass: "input-view"
        }, [i("div", {
            staticClass: "title"
        }, [e._v(e._s(e.data ? "Edit" : "New") + " Proxy Group")]), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.groupName,
                expression: "groupName"
            }],
            attrs: {
                type: "text",
                placeholder: "Group Name"
            },
            domProps: {
                value: e.groupName
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.groupName = t.target.value)
                }
            }
        }), e._v(" "), i("div", {
            staticClass: "group-type-list"
        }, e._l(e.gType, (function(t, n) {
            return i("div", {
                key: n
            }, [i("input", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: e.groupType,
                    expression: "groupType"
                }],
                attrs: {
                    type: "radio",
                    id: t
                },
                domProps: {
                    value: t,
                    checked: e._q(e.groupType, t)
                },
                on: {
                    change: function(i) {
                        e.groupType = t
                    }
                }
            }), e._v(" "), i("label", {
                attrs: {
                    for: t
                }
            }, [e._v(e._s(t))])])
        })), 0), e._v(" "), "select" !== e.groupType ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.groupUrl,
                expression: "groupUrl"
            }],
            attrs: {
                type: "text",
                placeholder: "URL"
            },
            domProps: {
                value: e.groupUrl
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.groupUrl = t.target.value)
                }
            }
        }) : e._e(), e._v(" "), "select" !== e.groupType ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.groupInterval,
                expression: "groupInterval"
            }],
            attrs: {
                type: "text",
                placeholder: "Interval ( Second )"
            },
            domProps: {
                value: e.groupInterval
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.groupInterval = t.target.value)
                }
            }
        }) : e._e()]) : 1 === e.type ? i("div", {
            staticClass: "input-view"
        }, [i("div", {
            staticClass: "title"
        }, [e._v(e._s(e.data ? "Edit" : "New") + " Proxy")]), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyName,
                expression: "proxyName"
            }],
            attrs: {
                type: "text",
                placeholder: "Proxy Name"
            },
            domProps: {
                value: e.proxyName
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyName = t.target.value)
                }
            }
        }), e._v(" "), i("div", {
            staticClass: "proxy-type-list"
        }, e._l(e.pType, (function(t, n) {
            return i("div", {
                key: n
            }, [i("input", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: e.proxyType,
                    expression: "proxyType"
                }],
                attrs: {
                    type: "radio",
                    id: t
                },
                domProps: {
                    value: t,
                    checked: e._q(e.proxyType, t)
                },
                on: {
                    change: function(i) {
                        e.proxyType = t
                    }
                }
            }), e._v(" "), i("label", {
                attrs: {
                    for: t
                }
            }, [e._v(e._s(t))])])
        })), 0), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyServer,
                expression: "proxyServer"
            }],
            attrs: {
                type: "text",
                placeholder: "服务器"
            },
            domProps: {
                value: e.proxyServer
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyServer = t.target.value)
                }
            }
        }), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyPort,
                expression: "proxyPort"
            }],
            attrs: {
                type: "text",
                placeholder: "端口"
            },
            domProps: {
                value: e.proxyPort
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyPort = t.target.value)
                }
            }
        }), e._v(" "), "ss" === e.proxyType ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyPassword,
                expression: "proxyPassword"
            }],
            attrs: {
                type: "text",
                placeholder: "Password"
            },
            domProps: {
                value: e.proxyPassword
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyPassword = t.target.value)
                }
            }
        }) : e._e(), e._v(" "), "vmess" === e.proxyType ? i("div", {
            staticClass: "cipher-list"
        }, e._l(e.vmessCipher, (function(t, n) {
            return i("div", {
                key: n
            }, [i("input", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: e.proxyChipher,
                    expression: "proxyChipher"
                }],
                attrs: {
                    type: "radio",
                    id: t
                },
                domProps: {
                    value: t,
                    checked: e._q(e.proxyChipher, t)
                },
                on: {
                    change: function(i) {
                        e.proxyChipher = t
                    }
                }
            }), e._v(" "), i("label", {
                attrs: {
                    for: t
                }
            }, [e._v(e._s(t))])])
        })), 0) : "ss" === e.proxyType ? i("div", {
            staticClass: "cipher-list"
        }, e._l(e.ssCipher, (function(t, n) {
            return i("div", {
                key: n
            }, [i("input", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: e.proxyChipher,
                    expression: "proxyChipher"
                }],
                attrs: {
                    type: "radio",
                    id: t
                },
                domProps: {
                    value: t,
                    checked: e._q(e.proxyChipher, t)
                },
                on: {
                    change: function(i) {
                        e.proxyChipher = t
                    }
                }
            }), e._v(" "), i("label", {
                attrs: {
                    for: t
                }
            }, [e._v(e._s(t))])])
        })), 0) : e._e(), e._v(" "), "ss" === e.proxyType ? i("div", {
            staticClass: "ss-list"
        }, [i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyObfs,
                expression: "proxyObfs"
            }],
            attrs: {
                type: "text",
                placeholder: "Obfs (Optional, tls or http)"
            },
            domProps: {
                value: e.proxyObfs
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyObfs = t.target.value)
                }
            }
        }), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyObfshost,
                expression: "proxyObfshost"
            }],
            attrs: {
                type: "text",
                placeholder: "Obfs-host (Optional)"
            },
            domProps: {
                value: e.proxyObfshost
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyObfshost = t.target.value)
                }
            }
        })]) : e._e(), e._v(" "), "vmess" === e.proxyType ? i("div", {
            staticClass: "vmess-list"
        }, [i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyUuid,
                expression: "proxyUuid"
            }],
            attrs: {
                type: "text",
                placeholder: "UUID"
            },
            domProps: {
                value: e.proxyUuid
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyUuid = t.target.value)
                }
            }
        }), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyAlterid,
                expression: "proxyAlterid"
            }],
            attrs: {
                type: "text",
                placeholder: "AlterId"
            },
            domProps: {
                value: e.proxyAlterid
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyAlterid = t.target.value)
                }
            }
        }), e._v(" "), "vmess" === e.proxyType ? i("div", {
            staticClass: "cipher-list"
        }, e._l(e.vmessType, (function(t, n) {
            return i("div", {
                key: n
            }, [i("input", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: e.proxyNetwork,
                    expression: "proxyNetwork"
                }],
                attrs: {
                    type: "radio",
                    id: t
                },
                domProps: {
                    value: t,
                    checked: e._q(e.proxyNetwork, t)
                },
                on: {
                    change: function(i) {
                        e.proxyNetwork = t
                    }
                }
            }), e._v(" "), i("label", {
                attrs: {
                    for: t
                }
            }, [e._v(e._s(t))])])
        })), 0) : e._e()]) : e._e(), e._v(" "), "http" === e.proxyType || "socks5" === e.proxyType ? i("div", {
            staticClass: "input-view"
        }, [i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyUsername,
                expression: "proxyUsername"
            }],
            attrs: {
                type: "text",
                placeholder: "User Name (Optional)"
            },
            domProps: {
                value: e.proxyUsername
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyUsername = t.target.value)
                }
            }
        }), e._v(" "), i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyPassword,
                expression: "proxyPassword"
            }],
            attrs: {
                type: "text",
                placeholder: "Password (Optional)"
            },
            domProps: {
                value: e.proxyPassword
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyPassword = t.target.value)
                }
            }
        })]) : e._e(), e._v(" "), "vmess" === e.proxyType && "ws" === e.proxyNetwork ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyWsPath,
                expression: "proxyWsPath"
            }],
            attrs: {
                type: "text",
                placeholder: "ws path"
            },
            domProps: {
                value: e.proxyWsPath
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyWsPath = t.target.value)
                }
            }
        }) : e._e(), e._v(" "), "vmess" === e.proxyType && "ws" === e.proxyNetwork ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyWsHeaders,
                expression: "proxyWsHeaders"
            }],
            attrs: {
                type: "text",
                placeholder: "ws headers (JSON)"
            },
            domProps: {
                value: e.proxyWsHeaders
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.proxyWsHeaders = t.target.value)
                }
            }
        }) : e._e(), e._v(" "), "vmess" === e.proxyType || "socks5" === e.proxyType || "http" === e.proxyType ? i("div", [i("div", [i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxyTls,
                expression: "proxyTls"
            }],
            attrs: {
                type: "checkbox",
                id: "vmess-tls"
            },
            domProps: {
                checked: Array.isArray(e.proxyTls) ? -1 < e._i(e.proxyTls, null) : e.proxyTls
            },
            on: {
                change: function(t) {
                    var i = e.proxyTls,
                        n = t.target,
                        r = !!n.checked;
                    Array.isArray(i) ? (t = e._i(i, null), n.checked ? t < 0 && (e.proxyTls = i.concat([null])) : -1 < t && (e.proxyTls = i.slice(0, t).concat(i.slice(t + 1)))) : e.proxyTls = r
                }
            }
        }), e._v(" "), i("label", {
            attrs: {
                for: "vmess-tls"
            }
        }, [e._v("TLS")])]), e._v(" "), i("div", [i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.proxySkipCertVerify,
                expression: "proxySkipCertVerify"
            }],
            attrs: {
                type: "checkbox",
                id: "vmess-skip-cert-verify"
            },
            domProps: {
                checked: Array.isArray(e.proxySkipCertVerify) ? -1 < e._i(e.proxySkipCertVerify, null) : e.proxySkipCertVerify
            },
            on: {
                change: function(t) {
                    var i = e.proxySkipCertVerify,
                        n = t.target,
                        r = !!n.checked;
                    Array.isArray(i) ? (t = e._i(i, null), n.checked ? t < 0 && (e.proxySkipCertVerify = i.concat([null])) : -1 < t && (e.proxySkipCertVerify = i.slice(0, t).concat(i.slice(t + 1)))) : e.proxySkipCertVerify = r
                }
            }
        }), e._v(" "), i("label", {
            attrs: {
                for: "vmess-skip-cert-verify"
            }
        }, [e._v("跳过证书验证")])])]) : e._e()]) : e._e(), e._v(" "), i("div", {
            staticClass: "btns"
        }, [i("div", {
            staticClass: "btn cancel",
            on: {
                click: function(t) {
                    return e.$emit("inputCancel")
                }
            }
        }, [e._v("取消")]), e._v(" "), i("div", {
            staticClass: "btn confirm",
            on: {
                click: e.confirmInput
            }
        }, [e._v("确定")])])])
    }), [], !1, null, "8a057c1e", null).exports, d = i(16);
    var _ = i.n(d),
        w = (h = i(12), i.n(h));

    function y(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    var C = "proxy-groups",
        x = "proxies",
        S = (m = {
            props: ["profileName"],
            components: {
                draggable: v.a,
                AppendProxyView: a
            },
            data: function() {
                return {
                    conf: null,
                    specialProxies: [{
                        name: "DIRECT"
                    }, {
                        name: "REJECT"
                    }],
                    addType: -1,
                    addData: null,
                    saveBtn: "保存"
                }
            },
            computed: function(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var i = null != arguments[t] ? arguments[t] : {};
                    t % 2 ? y(Object(i), !0).forEach((function(t) {
                        s()(e, t, i[t])
                    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : y(Object(i)).forEach((function(t) {
                        Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                    }))
                }
                return e
            }({}, Object(f.mapState)({
                clashPath: function(e) {
                    return e.app.clashPath
                },
                profilesPath: function(e) {
                    return e.app.profilesPath
                }
            })),
            methods: {
                proxy2group: function(e) {
                    return e.name
                },
                removeFromGroup: function(e, t) {
                    this.conf[C][e].proxies.splice(t, 1)
                },
                removeFromProxies: function(e, t) {
                    e.stopPropagation();
                    var i = this.conf[x][t].name;
                    this.conf[x].splice(t, 1), this.conf[C].forEach((function(e) {
                        e.proxies = e.proxies.filter((function(e) {
                            return e !== i
                        }))
                    }))
                },
                removeGroup: function(e, t) {
                    e.stopPropagation();
                    var i = this.conf[C][t].name;
                    this.conf[C].splice(t, 1), this.conf[C].forEach((function(e) {
                        e.proxies = e.proxies.filter((function(e) {
                            return e !== i
                        }))
                    }))
                },
                renameGroup: function(e, t) {
                    this.conf[C].forEach((function(i) {
                        i.proxies = i.proxies.map((function(i) {
                            return i === e ? t : i
                        }))
                    }))
                },
                renameRule: function(e, t) {
                    this.conf.rules = this.conf.rules.map((function(i) {
                        if (/\s*MATCH\s*,([^,]*)($|,*|\/\/|#)/.test(i)) {
                            if (RegExp.$1.trim() === e.trim()) return "MATCH,".concat(t).concat(RegExp.$2)
                        } else if (/([^,]*?),([^,]*?),([^,]*)($|,*|\/\/|#)/.test(i) && RegExp.$3.trim() === e.trim()) return "".concat(RegExp.$1, ",").concat(RegExp.$2, ",").concat(t).concat(RegExp.$4);
                        return i
                    }))
                },
                handleInputDone: function(e) {
                    var t, i, n, r;
                    this.addType = -1, 0 === e.type ? -1 === e.index ? this.conf[C].push(e.content) : (t = this.conf[C][e.index].proxies, i = e.content, n = this.conf[C][e.index].name, r = e.content.name, i.proxies = t, this.conf[C][e.index] = i, this.renameGroup(n, r), this.renameRule(n, r)) : 1 === e.type && (-1 === e.index ? this.conf[x].push(e.content) : (n = e.content.name, r = this.conf[x][e.index].name, this.conf[x][e.index] = e.content, this.renameGroup(r, n), this.renameRule(r, n)))
                },
                newGroup: function() {
                    this.addType = 0, this.addData = null
                },
                editGroup: function(e, t) {
                    var i = e.type;
                    ["url-test", "fallback", "select", "load-balance"].includes(i) ? (this.addType = 0, e._index = t, this.addData = e) : this.$alert({
                        content: "无法编辑代理组类型 [".concat(i, "].")
                    })
                },
                newProxy: function() {
                    this.addType = 1, this.addData = null
                },
                editProxy: function(e, t) {
                    var i = e.type;
                    ["ss", "vmess", "http", "socks"].includes(i) ? (this.addType = 1, e._index = t, this.addData = e) : this.$alert({
                        content: "Could not edit proxy type [".concat(i, "].")
                    })
                },
                loadData: function() {
                    var e = w.a.join(this.profilesPath, this.profileName);
                    e = _.a.readFileSync(e, "utf8");
                    try {
                        this.conf = u.a.parse(e)
                    } catch (e) {}
                },
                saveData: function() {
                    if ("保存" === this.saveBtn) try {
                        var e = w.a.join(this.profilesPath, this.profileName);
                        _.a.writeFileSync(e, u.a.stringify(this.conf)), this.$emit("done")
                    } catch (e) {
                        this.$emit("error")
                    }
                }
            },
            mounted: function() {
                this.loadData()
            }
        }, n = (i(330), i(332), Object(o.a)(m, (function() {
            var e = this,
                t = e.$createElement,
                i = e._self._c || t;
            return i("div", {
                class: ["main-config-view-" + e.theme]
            }, [i("div", {
                staticClass: "floating"
            }, [i("div", {
                staticClass: "hint"
            }, [e._v("拖动以排序或添加到右侧列表中.")]), e._v(" "), i("div", {
                staticClass: "floating-right"
            }, [i("div", {
                staticClass: "main-btn save",
                on: {
                    click: e.saveData
                }
            }, [e._v(e._s(e.saveBtn))]), e._v(" "), i("div", {
                staticClass: "main-btn reload",
                on: {
                    click: function(t) {
                        return e.$emit("cancel")
                    }
                }
            }, [e._v("取消")])])]), e._v(" "), e.conf ? i("div", {
                staticClass: "drag"
            }, [i("div", {
                staticClass: "proxy"
            }, [e._m(0), e._v(" "), i("draggable", {
                staticClass: "dragArea",
                attrs: {
                    group: {
                        name: "people",
                        pull: "clone",
                        put: !1,
                        revertClone: !0
                    },
                    clone: e.proxy2group,
                    delay: 300,
                    animation: 200,
                    "delay-on-touch-only": !0
                },
                model: {
                    value: e.specialProxies,
                    callback: function(t) {
                        e.specialProxies = t
                    },
                    expression: "specialProxies"
                }
            }, e._l(e.specialProxies, (function(t, n) {
                return i("div", {
                    key: n,
                    staticClass: "proxy-item left-item"
                }, [e._v("\n          " + e._s(t.name) + "\n        ")])
            })), 0), e._v(" "), i("div", {
                staticClass: "section-title"
            }, [i("h2", [e._v("代理组")]), e._v(" "), i("div", {
                staticClass: "add-icon",
                on: {
                    click: e.newGroup
                }
            }, [e._v("添加")])]), e._v(" "), i("draggable", {
                staticClass: "dragArea",
                attrs: {
                    group: {
                        name: "people",
                        pull: "clone",
                        put: !1,
                        revertClone: !0
                    },
                    clone: e.proxy2group,
                    delay: 300,
                    animation: 200,
                    "delay-on-touch-only": !0
                },
                model: {
                    value: e.conf["proxy-groups"],
                    callback: function(t) {
                        e.$set(e.conf, "proxy-groups", t)
                    },
                    expression: "conf['proxy-groups']"
                }
            }, e._l(e.conf["proxy-groups"], (function(t, n) {
                return i("div", {
                    key: n,
                    staticClass: "proxy-item left-item",
                    on: {
                        click: function(i) {
                            return e.editGroup(t, n)
                        }
                    }
                }, [i("div", {
                    domProps: {
                        innerHTML: e._s(e.$parseEmoji(t.name))
                    }
                }), e._v(" "), i("svg", {
                    attrs: {
                        xmlns: "http://www.w3.org/2000/svg",
                        viewBox: "0 0 24 24",
                        fill: "white",
                        width: "18px",
                        height: "18px"
                    },
                    on: {
                        click: function(t) {
                            return e.removeGroup(t, n)
                        }
                    }
                }, [i("path", {
                    attrs: {
                        d: "M0 0h24v24H0V0z",
                        fill: "none"
                    }
                }), e._v(" "), i("path", {
                    attrs: {
                        d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
                    }
                })])])
            })), 0), e._v(" "), i("div", {
                staticClass: "section-title"
            }, [i("h2", [e._v("代理")]), e._v(" "), i("div", {
                staticClass: "add-icon",
                on: {
                    click: e.newProxy
                }
            }, [e._v("添加")])]), e._v(" "), i("draggable", {
                staticClass: "dragArea",
                attrs: {
                    group: {
                        name: "people",
                        pull: "clone",
                        put: !1,
                        revertClone: !0
                    },
                    clone: e.proxy2group,
                    delay: 300,
                    animation: 200,
                    "delay-on-touch-only": !0
                },
                model: {
                    value: e.conf.proxies,
                    callback: function(t) {
                        e.$set(e.conf, "proxies", t)
                    },
                    expression: "conf['proxies']"
                }
            }, e._l(e.conf.proxies, (function(t, n) {
                return i("div", {
                    key: n,
                    staticClass: "proxy-item left-item",
                    on: {
                        click: function(i) {
                            return e.editProxy(t, n)
                        }
                    }
                }, [i("div", {
                    domProps: {
                        innerHTML: e._s(e.$parseEmoji(t.name))
                    }
                }), e._v(" "), i("svg", {
                    attrs: {
                        xmlns: "http://www.w3.org/2000/svg",
                        viewBox: "0 0 24 24",
                        fill: "white",
                        width: "18px",
                        height: "18px"
                    },
                    on: {
                        click: function(t) {
                            return e.removeFromProxies(t, n)
                        }
                    }
                }, [i("path", {
                    attrs: {
                        d: "M0 0h24v24H0V0z",
                        fill: "none"
                    }
                }), e._v(" "), i("path", {
                    attrs: {
                        d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
                    }
                })])])
            })), 0)], 1), e._v(" "), i("div", {
                staticClass: "proxy-group"
            }, e._l(e.conf["proxy-groups"], (function(t, n) {
                return i("div", {
                    key: n
                }, [i("div", {
                    staticClass: "section-title"
                }, [i("h2", {
                    domProps: {
                        innerHTML: e._s(e.$parseEmoji(t.name))
                    }
                }), e._v(" "), i("div", {
                    staticClass: "type-icon"
                }, [e._v("( " + e._s(t.type) + " )")])]), e._v(" "), i("draggable", {
                    staticClass: "dragArea",
                    attrs: {
                        group: {
                            name: "people"
                        },
                        scroll: !0,
                        scrollSensitivity: 100,
                        scrollSpeed: 50,
                        delay: 300,
                        animation: 200,
                        "delay-on-touch-only": !0
                    },
                    model: {
                        value: t.proxies,
                        callback: function(i) {
                            e.$set(t, "proxies", i)
                        },
                        expression: "group.proxies"
                    }
                }, e._l(t.proxies, (function(t, r) {
                    return i("div", {
                        key: r,
                        staticClass: "proxy-item right-item"
                    }, [i("div", {
                        domProps: {
                            innerHTML: e._s(e.$parseEmoji(t))
                        }
                    }), e._v(" "), i("svg", {
                        attrs: {
                            xmlns: "http://www.w3.org/2000/svg",
                            viewBox: "0 0 24 24",
                            fill: "white",
                            width: "18px",
                            height: "18px"
                        },
                        on: {
                            click: function(t) {
                                return e.removeFromGroup(n, r)
                            }
                        }
                    }, [i("path", {
                        attrs: {
                            d: "M0 0h24v24H0V0z",
                            fill: "none"
                        }
                    }), e._v(" "), i("path", {
                        attrs: {
                            d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
                        }
                    })])])
                })), 0)], 1)
            })), 0)]) : e._e(), e._v(" "), -1 !== e.addType ? i("append-proxy-view", {
                attrs: {
                    data: e.addData,
                    type: e.addType
                },
                on: {
                    inputDone: e.handleInputDone,
                    inputCancel: function(t) {
                        e.addType = -1
                    }
                }
            }) : e._e()], 1)
        }), [function() {
            var e = this.$createElement;
            return (e = this._self._c || e)("div", {
                staticClass: "section-title"
            }, [e("h2", [this._v("特殊代理")])])
        }], !1, null, "16c92520", null).exports), d = i(105), i.n(d)),
        k = (h = i(52), i.n(h));

    function L(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function O(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? L(Object(i), !0).forEach((function(t) {
                s()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : L(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function E(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function N(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? E(Object(i), !0).forEach((function(t) {
                s()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : E(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    a = {
        props: ["profileName"],
        data: function() {
            return {
                ruleTypes: ["DOMAIN-SUFFIX", "DOMAIN", "DOMAIN-KEYWORD", "IP-CIDR", "SRC-IP-CIDR", "GEOIP", "PROCESS-NAME", "DST-PORT", "SRC-PORT", "MATCH"],
                selectedType: "",
                proxyGroups: [],
                selectedGroup: "",
                content: ""
            }
        },
        computed: O(O({}, Object(f.mapState)({
            profilesPath: function(e) {
                return e.app.profilesPath
            }
        })), Object(f.mapGetters)(["clashAxiosClient"])),
        methods: {
            inputDone: function() {
                var e = null;
                "MATCH" === this.selectedType && this.selectedGroup ? e = {
                    type: this.selectedType,
                    payload: "",
                    proxy: this.selectedGroup
                } : this.content && this.selectedType && this.selectedGroup && (e = {
                    type: this.selectedType,
                    payload: this.content,
                    proxy: this.selectedGroup
                }), this.$emit("done", e)
            },
            handleMaskClick: function(e) {
                this.$emit("close")
            }
        },
        mounted: function() {
            try {
                var e = u.a.parse(_.a.readFileSync(w.a.join(this.profilesPath, this.profileName)).toString()),
                    t = e.proxies,
                    i = void 0 === t ? [] : t,
                    n = e["proxy-groups"],
                    r = void 0 === n ? [] : n,
                    o = i.map((function(e) {
                        return e.name
                    })),
                    s = r.map((function(e) {
                        return e.name
                    }));
                this.proxyGroups = ["DIRECT", "REJECT"].concat(k()(s), k()(o))
            } catch (e) {}
        }
    }, i(334), i(336), m = Object(o.a)(a, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            attrs: {
                type: "text/x-template",
                id: "modal-template"
            }
        }, [i("transition", {
            attrs: {
                name: "modal"
            }
        }, [i("div", {
            staticClass: "modal-mask",
            on: {
                mousedown: e.handleMaskClick
            }
        }, [i("div", {
            staticClass: "modal-wrapper"
        }, [i("div", {
            class: ["modal-container-" + e.theme],
            on: {
                mousedown: function(e) {
                    e.stopPropagation()
                }
            }
        }, [i("div", {
            class: ["model-title-" + e.theme]
        }, [i("div", [e._v("创建新规则")]), e._v(" "), i("div", {
            staticClass: "rule-floating-btns"
        }, [i("div", {
            staticClass: "rule-floating-ok",
            on: {
                click: e.inputDone
            }
        }, [e._v("添加")]), e._v(" "), i("div", {
            staticClass: "rule-floating-cancel",
            on: {
                click: function(t) {
                    return e.$emit("close")
                }
            }
        }, [e._v("\n                取消\n              ")])])]), e._v(" "), i("div", {
            class: ["scroll-view-" + e.theme]
        }, ["MATCH" !== e.selectedType ? i("div", {
            staticClass: "rule-section-title"
        }, [e._v("\n              内容\n            ")]) : e._e(), e._v(" "), i("div", ["MATCH" !== e.selectedType ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.content,
                expression: "content"
            }],
            attrs: {
                placeholder: "eg: google.com",
                id: "rule-content",
                type: "text"
            },
            domProps: {
                value: e.content
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.content = t.target.value)
                }
            }
        }) : e._e()]), e._v(" "), i("div", {
            staticClass: "rule-section-title"
        }, [e._v("类型")]), e._v(" "), i("div", {
            staticClass: "rule-type-group"
        }, e._l(e.ruleTypes, (function(t, n) {
            return i("div", {
                key: n,
                class: {
                    "rule-type-item": !0, "rule-type-selected": t === e.selectedType
                },
                on: {
                    click: function(i) {
                        e.selectedType = t
                    }
                }
            }, [e._v("\n                " + e._s(t) + "\n              ")])
        })), 0), e._v(" "), i("div", {
            staticClass: "rule-section-title"
        }, [e._v("代理或策略")]), e._v(" "), i("div", {
            staticClass: "rule-proxy-group"
        }, e._l(e.proxyGroups, (function(t, n) {
            return i("div", {
                key: n,
                class: {
                    "rule-proxy-item": !0, "rule-proxy-selected": t === e.selectedGroup
                },
                domProps: {
                    innerHTML: e._s(e.$parseEmoji(t))
                },
                on: {
                    click: function(i) {
                        e.selectedGroup = t
                    }
                }
            }, [e._v("\n                " + e._s(t) + "\n              ")])
        })), 0)])])])])])], 1)
    }), [], !1, null, "281445b0", null).exports;
    d = i(82);
    var D = [],
        I = (h = {
            props: ["profileName"],
            data: function() {
                return {
                    listData: [],
                    memoryData: [],
                    showAlterModel: !1,
                    saveBtnText: "保存",
                    axiosSource: null,
                    filterKeywords: "",
                    providers: {}
                }
            },
            components: {
                RuleAlterView: m
            },
            watch: {},
            computed: N(N({}, Object(f.mapState)({
                clashPath: function(e) {
                    return e.app.clashPath
                },
                profiles: function(e) {
                    return e.app.profiles
                },
                profilesPath: function(e) {
                    return e.app.profilesPath
                }
            })), Object(f.mapGetters)(["clashAxiosClient"])),
            methods: {
                handleRuleClick: function(e) {
                    var t = this;
                    return r()(l.a.mark((function i() {
                        var n, r;
                        return l.a.wrap((function(i) {
                            for (;;) switch (i.prev = i.next) {
                                case 0:
                                    if (r = e.type, n = e.payload, "RULE-SET" === r) return i.prev = 2, i.next = 5, t.clashAxiosClient.put("/providers/rules/".concat(encodeURIComponent(n)));
                                    i.next = 13;
                                    break;
                                case 5:
                                    204 === (r = i.sent).status ? (t.loadData(), Object(g.h)("Success", "RULE-SET [".concat(n, "] has been updated!"))) : Object(g.h)("Failed", "RULE-SET [".concat(n, "] update failed(Server Error)!")), i.next = 13;
                                    break;
                                case 10:
                                    i.prev = 10, i.t0 = i.catch(2), Object(g.h)("Failed", "RULE-SET [".concat(n, "] 更新失败(网络错误)!"));
                                case 13:
                                case "end":
                                    return i.stop()
                            }
                        }), i, null, [
                            [2, 10]
                        ])
                    })))()
                },
                fromNow: function(e) {
                    return c()(e).locale('zh-cn').fromNow()
                },
                providerOfPayload: function(e) {
                    return (e = this.providers[e]) || null
                },
                moveItem: function(e, t, i) {
                    this.removeItem(t, i), e ? this.memoryData.unshift(t) : this.memoryData.push(t), this.listData = this.memoryData.slice(0, 100)
                },
                randomBGC: function(e) {
                    if (n = D.find((function(t) {
                            return t.type === e
                        }))) return {
                        "background-color": "rgb(".concat(n.r, ",").concat(n.g, ",").concat(n.b, ")")
                    };
                    var t = Math.floor(100 * Math.random() + 10),
                        i = Math.floor(100 * Math.random() + 10),
                        n = Math.floor(100 * Math.random() + 10);
                    return D.push({
                        type: e,
                        r: t,
                        g: i,
                        b: n
                    }), {
                        "background-color": "rgb(".concat(t, ",").concat(i, ",").concat(n, ")")
                    }
                },
                inputDone: function(e) {
                    this.showAlterModel = !1, e && (this.memoryData.unshift(e), this.listData.unshift(e))
                },
                handleFilterKeywordInput: d.debounce((function(e) {
                    (e = e.target) && (e = e.value, this.filterKeywords = e, this.loadData())
                }), 500),
                applyRules: function() {
                    var e = this;
                    return r()(l.a.mark((function t() {
                        var i, n, r, o, s;
                        return l.a.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    try {
                                        i = Object(g.d)(e.memoryData), n = i.map((function(e) {
                                            var t = e.type,
                                                i = e.payload,
                                                n = e.proxy;
                                            e = void 0 === (e = e.params) ? "" : e;
                                            return i ? "".concat(t, ",").concat(i, ",").concat(n).concat(e) : "".concat(t, ",").concat(n)
                                        })), r = w.a.join(e.profilesPath, e.profileName), o = _.a.readFileSync(r, "utf8"), (s = u.a.parse(o)).rules = n, _.a.writeFileSync(r, u.a.stringify(s)), e.$emit("done"), e.saveBtnText = "Done"
                                    } catch (t) {
                                        e.$emit("error"), e.saveBtnText = "Fail"
                                    }
                                    setTimeout((function() {
                                        e.saveBtnText = "保存"
                                    }), 3e3);
                                case 2:
                                case "end":
                                    return t.stop()
                            }
                        }), t)
                    })))()
                },
                removeItem: function(e, t) {
                    var i = this.memoryData.findIndex((function(t) {
                        return t.payload === e.payload && t.proxy === e.proxy && t.type === e.type
                    })); - 1 < i && (this.memoryData.splice(i, 1), this.listData.splice(t, 1))
                },
                loadData: function() {
                    var e = this;
                    return r()(l.a.mark((function t() {
                        var i, n, r, o;
                        return l.a.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return n = w.a.join(e.profilesPath, e.profileName), i = _.a.readFileSync(n, "utf8"), t.prev = 2, t.next = 5, Promise.all([e.clashAxiosClient.get("/rules"), e.clashAxiosClient.get("/providers/rules")]);
                                case 5:
                                    r = t.sent, n = S()(r, 2), r = void 0 === (r = n[0].data) ? {} : r, n = (n = void 0 === (n = n[1].data) ? {} : n).providers, e.providers = n, r = r.rules, r = u.a.parse(i), e.memoryData = r.rules.map((function(e) {
                                        return 2 === (e = e.split(",")).length ? {
                                            type: e[0].trim(),
                                            payload: "",
                                            proxy: e[1].trim(),
                                            params: ""
                                        } : 3 === e.length ? {
                                            payload: e[1].trim(),
                                            proxy: e[2].trim(),
                                            type: e[0].trim(),
                                            params: ""
                                        } : 4 === e.length ? {
                                            payload: e[1].trim(),
                                            proxy: e[2].trim(),
                                            type: e[0].trim(),
                                            params: ",".concat(e[3])
                                        } : null
                                    })).filter((function(e) {
                                        return e
                                    })), "" !== e.filterKeywords ? (r = e.filterKeywords.trim().split(/\s+/).join("|"), o = new RegExp(r, "i"), e.listData = e.memoryData.filter((function(e) {
                                        return o.test(e.proxy) || o.test(e.payload) || o.test(e.type)
                                    })).slice(0, 100)) : e.listData = e.memoryData.slice(0, 100), t.next = 21;
                                    break;
                                case 19:
                                    t.prev = 19, t.t0 = t.catch(2);
                                case 21:
                                case "end":
                                    return t.stop()
                            }
                        }), t, null, [
                            [2, 19]
                        ])
                    })))()
                }
            },
            mounted: function() {
                this.loadData()
            },
            destroyed: function() {}
        }, a = (i(338), i(340), Object(o.a)(h, (function() {
            var e = this,
                t = e.$createElement,
                i = e._self._c || t;
            return i("div", {
                attrs: {
                    id: "main-log-view"
                }
            }, [i("div", {
                staticClass: "header"
            }, [i("div", {
                staticClass: "title"
            }, [e._v("前100个匹配规则(" + e._s(e.memoryData.length) + ").")]), e._v(" "), i("div", {
                staticClass: "header-btns"
            }, [i("div", {
                staticClass: "btn btn-add md-button",
                on: {
                    click: function(t) {
                        e.showAlterModel = !0
                    }
                }
            }, [e._v("\n        添加\n      ")]), e._v(" "), i("div", {
                staticClass: "btn btn-save md-button",
                on: {
                    click: e.applyRules
                }
            }, [e._v("\n        " + e._s(e.saveBtnText) + "\n      ")]), e._v(" "), i("div", {
                staticClass: "btn btn-back md-button",
                on: {
                    click: function(t) {
                        return e.$emit("cancel")
                    }
                }
            }, [e._v("\n        取消\n      ")])])]), e._v(" "), i("div", {
                staticClass: "filter-view"
            }, [i("input", {
                directives: [{
                    name: "model",
                    rawName: "v-model",
                    value: e.filterKeywords,
                    expression: "filterKeywords"
                }],
                attrs: {
                    type: "text",
                    placeholder: "按关键字过滤"
                },
                domProps: {
                    value: e.filterKeywords
                },
                on: {
                    input: [function(t) {
                        t.target.composing || (e.filterKeywords = t.target.value)
                    }, function(t) {
                        return e.handleFilterKeywordInput(t)
                    }]
                }
            })]), e._v(" "), i("div", {
                class: ["log-list-" + e.theme]
            }, e._l(e.listData, (function(t, n) {
                return i("div", {
                    key: n,
                    class: ["log-item-" + e.theme],
                    attrs: {
                        title: t.payload
                    },
                    on: {
                        click: function(i) {
                            return e.handleRuleClick(t)
                        }
                    }
                }, [i("div", {
                    staticClass: "left"
                }, [i("div", {
                    class: ["url", e.providerOfPayload(t.payload) ? "rule-set" : ""]
                }, [e._v("\n          " + e._s(t.payload) + "\n        ")]), e._v(" "), i("div", {
                    class: ["rule-" + e.theme]
                }, [e._v("\n          " + e._s(t.type) + "\n          "), e.providerOfPayload(t.payload) ? i("div", [e._v("\n            Rules: " + e._s(e.providerOfPayload(t.payload).ruleCount) + "\n          ")]) : e._e(), e._v(" "), e.providerOfPayload(t.payload) ? i("div", [e._v("\n            Last Updated:\n            " + e._s(e.fromNow(e.providerOfPayload(t.payload).updatedAt)) + "\n          ")]) : e._e(), e._v(" "), e.providerOfPayload(t.payload) ? i("div", [e._v("\n            " + e._s(e.providerOfPayload(t.payload).vehicleType) + "\n            " + e._s(e.providerOfPayload(t.payload).behavior) + "\n          ")]) : e._e()])]), e._v(" "), i("div", {
                    staticClass: "right-main"
                }, [i("div", {
                    staticClass: "right",
                    style: e.randomBGC(t.proxy),
                    domProps: {
                        innerHTML: e._s(e.$parseEmoji(t.proxy))
                    }
                }, [e._v("\n          " + e._s(t.proxy) + "\n        ")]), e._v(" "), i("svg", {
                    staticClass: "icon",
                    attrs: {
                        xmlns: "http://www.w3.org/2000/svg",
                        "enable-background": "new 0 0 24 24",
                        viewBox: "0 0 24 24",
                        fill: "dark" === e.theme ? "white" : "black"
                    },
                    on: {
                        click: function(i) {
                            return i.stopPropagation(), e.moveItem(!0, t, n)
                        }
                    }
                }, [i("rect", {
                    attrs: {
                        fill: "none",
                        height: "24",
                        width: "24"
                    }
                }), e._v(" "), i("path", {
                    attrs: {
                        d: "M5.71,9.7L5.71,9.7c0.39,0.39,1.02,0.39,1.41,0L11,5.83V21c0,0.55,0.45,1,1,1h0c0.55,0,1-0.45,1-1V5.83l3.88,3.88 c0.39,0.39,1.02,0.39,1.41,0l0,0c0.39-0.39,0.39-1.02,0-1.41L12.7,2.7c-0.39-0.39-1.02-0.39-1.41,0L5.71,8.29 C5.32,8.68,5.32,9.32,5.71,9.7z"
                    }
                })]), e._v(" "), i("svg", {
                    staticClass: "icon",
                    attrs: {
                        xmlns: "http://www.w3.org/2000/svg",
                        "enable-background": "new 0 0 24 24",
                        viewBox: "0 0 24 24",
                        fill: "dark" === e.theme ? "white" : "black"
                    },
                    on: {
                        click: function(i) {
                            return i.stopPropagation(), e.moveItem(!1, t, n)
                        }
                    }
                }, [i("rect", {
                    attrs: {
                        fill: "none",
                        height: "24",
                        width: "24"
                    }
                }), e._v(" "), i("path", {
                    attrs: {
                        d: "M18.3,14.29L18.3,14.29c-0.39-0.39-1.02-0.39-1.41,0L13,18.17V3c0-0.55-0.45-1-1-1h0c-0.55,0-1,0.45-1,1v15.18l-3.88-3.88 c-0.39-0.39-1.02-0.39-1.41,0l0,0c-0.39,0.39-0.39,1.02,0,1.41l5.59,5.59c0.39,0.39,1.02,0.39,1.41,0l5.59-5.59 C18.68,15.32,18.68,14.68,18.3,14.29z"
                    }
                })]), e._v(" "), i("svg", {
                    staticClass: "icon",
                    attrs: {
                        xmlns: "http://www.w3.org/2000/svg",
                        viewBox: "0 0 24 24",
                        fill: "dark" === e.theme ? "white" : "black"
                    },
                    on: {
                        click: function(i) {
                            return i.stopPropagation(), e.removeItem(t, n)
                        }
                    }
                }, [i("path", {
                    attrs: {
                        d: "M0 0h24v24H0V0z",
                        fill: "none"
                    }
                }), e._v(" "), i("path", {
                    attrs: {
                        d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v10zm3.17-7.83c.39-.39 1.02-.39 1.41 0L12 12.59l1.42-1.42c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41L13.41 14l1.42 1.42c.39.39.39 1.02 0 1.41-.39.39-1.02.39-1.41 0L12 15.41l-1.42 1.42c-.39.39-1.02.39-1.41 0-.39-.39-.39-1.02 0-1.41L10.59 14l-1.42-1.42c-.39-.38-.39-1.02 0-1.41zM15.5 4l-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z"
                    }
                })])])])
            })), 0), e._v(" "), e.showAlterModel ? i("rule-alter-view", {
                attrs: {
                    "profile-name": e.profileName
                },
                on: {
                    close: function(t) {
                        e.showAlterModel = !1
                    },
                    done: e.inputDone
                }
            }) : e._e()], 1)
        }), [], !1, null, "d9c5f67a", null).exports), m = i(253), i.n(m)),
        T = i(22),
        M = (d = {
            name: "QRCodeView",
            components: {},
            props: {
                url: String
            },
            data: function() {
                return {
                    src: "",
                    isWithSheme: !0
                }
            },
            watch: {
                isWithSheme: function() {
                    this.updateQrcode()
                }
            },
            computed: {
                finalURL: function() {
                    return this.isWithSheme ? "clash://install-config?url=".concat(encodeURIComponent(this.url)) : this.url
                },
                shorternFinalURL: function() {
                    return this.finalURL ? Object(g.f)(this.finalURL, 120) : ""
                }
            },
            methods: {
                handleGoToURL: function() {
                    T.shell.openExternal(this.url)
                },
                updateQrcode: function() {
                    var e = this;
                    return r()(l.a.mark((function t() {
                        return l.a.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.prev = 0, t.next = 3, I.a.toDataURL(e.finalURL);
                                case 3:
                                    e.src = t.sent, t.next = 8;
                                    break;
                                case 6:
                                    t.prev = 6, t.t0 = t.catch(0);
                                case 8:
                                case "end":
                                    return t.stop()
                            }
                        }), t, null, [
                            [0, 6]
                        ])
                    })))()
                }
            },
            mounted: function() {
                this.updateQrcode()
            }
        }, h = (i(342), Object(o.a)(d, (function() {
            var e = this,
                t = e.$createElement;
            return (t = e._self._c || t)("div", {
                staticClass: "qrcode-view-main",
                on: {
                    click: function(t) {
                        return e.$emit("hide")
                    }
                }
            }, [t("div", {
                staticClass: "content",
                on: {
                    click: function(e) {
                        e.stopPropagation()
                    }
                }
            }, [t("img", {
                attrs: {
                    src: e.src,
                    alt: ""
                }
            }), e._v(" "), t("div", {
                staticClass: "url",
                on: {
                    click: e.handleGoToURL
                }
            }, [e._v("\n      " + e._s(e.shorternFinalURL) + "\n    ")]), e._v(" "), t("div", {
                staticClass: "btn",
                on: {
                    click: function(t) {
                        e.isWithSheme = !e.isWithSheme
                    }
                }
            }, [e._v("\n      " + e._s(e.isWithSheme ? "删除" : "包括") + " 跳转方案\n    ")])])])
        }), [], !1, null, "64e66e1e", null).exports), m = i(134), i(154));

    function P(e, t) {
        var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!i) {
            if (Array.isArray(e) || (i = function(e, t) {
                    if (e) {
                        if ("string" == typeof e) return A(e, t);
                        var i = Object.prototype.toString.call(e).slice(8, -1);
                        return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? A(e, t) : void 0
                    }
                }(e)) || t && e && "number" == typeof e.length) {
                i && (e = i);
                var n = 0;
                return {
                    s: t = function() {},
                    n: function() {
                        return n >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[n++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: t
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var r, o = !0,
            s = !1;
        return {
            s: function() {
                i = i.call(e)
            },
            n: function() {
                var e = i.next();
                return o = e.done, e
            },
            e: function(e) {
                s = !0, r = e
            },
            f: function() {
                try {
                    o || null == i.return || i.return()
                } finally {
                    if (s) throw r
                }
            }
        }
    }

    function A(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }

    function R(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function F(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? R(Object(i), !0).forEach((function(t) {
                s()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : R(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    var j = i(16),
        B = i(12),
        V = (d = i(69), i(82)),
        W = d.CancelToken,
        z = "manual-stop";
    f = {
        data: function() {
            return {
                btnType: 0,
                resultHint: "从URL下载",
                editProfileName: "",
                editProfileType: -1,
                fileWatcher: null,
                inputFocus: !1,
                subUrl: "",
                downlodingUrls: {},
                dragSelectedName: "",
                qrcodeURL: "",
                intervalID: null,
                now: c()()
            }
        },
        components: {
            draggable: v.a,
            ConfigView: n,
            RuleView: a,
            QRCodeView: h,
            Hint: m.a
        },
        directives: {
            focus: {
                update: function(e, t) {
                    t.value && e.focus()
                }
            }
        },
        computed: F(F(F({}, Object(f.mapState)({
            clashPath: function(e) {
                return e.app.clashPath
            },
            pfs: function(e) {
                return e.app.profiles
            },
            isWindowShow: function(e) {
                return e.app.isWindowShow
            },
            confData: function(e) {
                return e.app.confData
            },
            profilesPath: function(e) {
                return e.app.profilesPath
            }
        })), Object(f.mapGetters)(["clashAxiosClient"])), {}, {
            profiles: {
                get: function() {
                    var e = this.pfs.files;
                    return void 0 === e ? [] : e
                },
                set: function(e) {
                    this.changeProfiles({
                        profiles: e
                    })
                }
            },
            getBtnText: function() {
                return 3 === this.btnType ? "下载中" : 1 === this.btnType ? "错误!" : 2 === this.btnType ? "成功!" : "下载"
            },
            getRightBtnText: function() {
                return "直连模式"
            },
            getRightBtnClass: function() {
                return {
                    confirm: !0,
                    "confirm-right": !0,
                    "btn-error": 1 === this.btnType,
                    "btn-success": 2 === this.btnType,
                    "btn-loading": 3 === this.btnType
                }
            },
            getBtnClass: function() {
                return {
                    confirm: !0,
                    "confirm-left": !0,
                    "btn-error": 1 === this.btnType,
                    "btn-success": 2 === this.btnType,
                    "btn-loading": 3 === this.btnType
                }
            }
        }),
        methods: F(F({}, Object(f.mapMutations)({
            changeProfiles: "CHANGE_PROFILES",
            changeProfilesIndex: "CHANGE_PROFILES_INDEX",
            changeProfile: "CHANGE_PROFILE",
            appendProfile: "APPEND_PROFILE",
            deleteProfile: "DELETE_PROFILE"
        })), {}, {
            isProifleExpired: function(e) {
                var t = e.time;
                if (0 < (e = e.interval) && t) try {
                    var i = j.statSync(B.join(this.profilesPath, t)).mtime;
                    if (i) return c()(i).isBefore(c()().subtract(e, "hours"))
                } catch (e) {}
                return !1
            },
            parserHint: function(e) {
                var t = e.url;
                e = e.reg;
                return t ? "url (".concat(t.slice(0, 8), "...").concat(t.slice(-20), ")") : e ? "reg (".concat(e, ")") : ""
            },
            matchingParserCount: function(e) {
                var t = this.settings.profileParsersText,
                    i = [];
                if (t) try {
                    var n = u.a.parse(t).parsers;
                    i = (void 0 === n ? [] : n) || []
                } catch (e) {}
                var r = e.url;
                return r ? i.filter((function(e) {
                    var t = e.url;
                    e = e.reg;
                    return t ? t === r : e ? new RegExp(e).test(r) : void 0
                })) : []
            },
            handleProfileRightClick: function(e, t, i) {
                var n = this;
                return r()(l.a.mark((function r() {
                    var o;
                    return l.a.wrap((function(r) {
                        for (;;) switch (r.prev = r.next) {
                            case 0:
                                if (3 === e.which) return o = "" === (o = t.url), r.next = 5, n.$menu([{
                                    icon: "编辑",
                                    text: "编辑"
                                }, {
                                    icon: "update",
                                    text: "更新",
                                    hide: o
                                }, {
                                    text: "显示文件夹",
                                    icon: "folder"
                                }, {
                                    icon: "diff",
                                    text: "Diff",
                                    hide: o
                                }, {
                                    icon: "proxy",
                                    text: "代理"
                                }, {
                                    icon: "rule",
                                    text: "规则"
                                }, {
                                    icon: "copy",
                                    text: "复制"
                                }, {
                                    icon: "qrcode",
                                    text: "二维码",
                                    hide: o
                                }, {
                                    icon: "parser",
                                    text: "配置文件预处理",
                                    hide: o
                                }, {
                                    icon: "js",
                                    text: "运行脚本"
                                }, {
                                    icon: "setting",
                                    text: "设置"
                                }, {
                                    icon: "delete",
                                    text: "删除"
                                }], e);
                                r.next = 7;
                                break;
                            case 5:
                                -1 < (o = r.sent) && (o < 10 && [n.openProfile, n.refreshProfile, n.openProfileInFolder, n.makeDiff, n.editProfile, n.editProfileRule, n.handleCopyProfile, n.handleQrcodeOpen, n.handleParserInfoShow, n.handleRunScirpt][o](t), 10 === o && n.handleEditItem(i), 11 === o && n.handleDeleteProfile(i));
                            case 7:
                            case "end":
                                return r.stop()
                        }
                    }), r)
                })))()
            },
            openProfileInFolder: function(e) {
                T.shell.showItemInFolder(B.join(this.profilesPath, e.time))
            },
            handleUpdateAllProfiles: function() {
                var e, t = P(this.profiles);
                try {
                    for (t.s(); !(e = t.n()).done;) {
                        var i = e.value;
                        this.refreshProfile(i, {
                            ignoreSelectAfterUpdated: !0
                        })
                    }
                } catch (e) {
                    t.e(e)
                } finally {
                    t.f()
                }
            },
            handleParserInfoShow: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n, r;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return n = t.matchingParserCount(e), r = n.map((function(e, i) {
                                    return "".concat(i + 1, ". ").concat(t.parserHint(e))
                                })).join("<br />"), i.next = 4, t.$select({
                                    title: "找到 ".concat(n.length, " 个匹配解析器"),
                                    message: "".concat(r),
                                    items: ["编辑解析器", "确认"]
                                });
                            case 4:
                                0 === i.sent && t.$router.replace({
                                    path: "/home/setting",
                                    query: {
                                        action: "edit-parsers"
                                    }
                                });
                            case 6:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            handleRunScirpt: function(e) {
                return r()(l.a.mark((function t() {
                    return l.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                Object(M.c)(Object(g.d)(e), M.a);
                            case 1:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleQrcodeOpen: function(e) {
                (e = e.url) && (this.qrcodeURL = e)
            },
            handleDragStart: function() {
                var e = this.pfs.index;
                (void 0 === e ? -1 : e) < 0 || (this.dragSelectedName = this.pfs.files[this.pfs.index].time)
            },
            handleDragEnd: function() {
                var e, t = this;
                "" !== this.dragSelectedName && (e = this.pfs.files.findIndex((function(e) {
                    return e.time === t.dragSelectedName
                })), this.changeProfilesIndex({
                    index: e
                }))
            },
            handleCopyProfile: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return n = [{
                                    name: "名字",
                                    key: "filename",
                                    placeholder: "输入一个新的文件名",
                                    required: !0
                                }], i.prev = 1, i.next = 4, t.$input({
                                    title: "复制配置文件",
                                    data: n
                                });
                            case 4:
                                n = void 0 === (n = (n = i.sent).filename) ? "" : n, t.localCopy(n, B.join(t.profilesPath, e.time)), i.next = 12;
                                break;
                            case 10:
                                i.prev = 10, i.t0 = i.catch(1);
                            case 12:
                            case "end":
                                return i.stop()
                        }
                    }), i, null, [
                        [1, 10]
                    ])
                })))()
            },
            handleEditItem: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n, r, o, s, a;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return n = F({}, t.pfs.files[e]), s = n.interval, o = void 0 === s ? 0 : s, a = n.cron, r = void 0 === a ? "" : a, s = [{
                                    key: "name",
                                    name: "名字",
                                    required: !0,
                                    value: n.name
                                }, {
                                    key: "url",
                                    name: "URL",
                                    value: n.url
                                }, {
                                    key: "interval",
                                    name: "更新间隔(小时)",
                                    validate: function(e) {
                                        return /^\d+$/.test(e) ? "" : "更新间隔必须是整数"
                                    },
                                    value: o
                                }, {
                                    key: "cron",
                                    name: "更新 Cron (UNIX)",
                                    value: r
                                }], i.prev = 4, i.next = 7, t.$input({
                                    title: "编辑配置信息",
                                    data: s
                                });
                            case 7:
                                a = i.sent, o = a.name, r = void 0 === o ? "" : o, s = a.url, o = void 0 === s ? "" : s, s = void 0 === (s = a.interval) ? 0 : s, a = void 0 === (a = a.cron) ? "" : a, n.name = r, n.url = o, n.interval = +s, n.cron = a, t.changeProfile({
                                    index: e,
                                    profile: n
                                }), i.next = 25;
                                break;
                            case 23:
                                i.prev = 23, i.t0 = i.catch(4);
                            case 25:
                            case "end":
                                return i.stop()
                        }
                    }), i, null, [
                        [4, 23]
                    ])
                })))()
            },
            listItemClassNames: function(e) {
                var t = ["list-item-".concat(this.theme)];
                "" === this.pfs.files[e].url && t.push("item-local");
                var i = this.pfs.index;
                return e === (void 0 === i ? -1 : i) && t.push("item-cur-".concat(this.theme)), t
            },
            handleURLConfirm: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                if (13 === e.keyCode) return i.next = 3, t.handleDownload();
                                i.next = 3;
                                break;
                            case 3:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            handleDownload: function() {
                var e = this;
                return r()(l.a.mark((function t() {
                    return l.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if ("" === e.subUrl) return t.abrupt("return");
                                t.next = 2;
                                break;
                            case 2:
                                if (3 === e.btnType) return t.abrupt("return");
                                t.next = 4;
                                break;
                            case 4:
                                return t.prev = 4, e.btnType = 3, t.next = 8, e.updateConfig({
                                    url: e.subUrl,
                                    selectAfterUpdated: !0
                                });
                            case 8:
                                t.sent ? (e.subUrl = "", e.btnType = 2) : e.btnType = 1, t.next = 15;
                                break;
                            case 12:
                                t.prev = 12, t.t0 = t.catch(4), e.btnType = 1;
                            case 15:
                                setTimeout((function() {
                                    e.btnType = 0
                                }), 3e3);
                            case 16:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [4, 12]
                    ])
                })))()
            },
            handleImport: function() {
                var e = this;
                return r()(l.a.mark((function t() {
                    var i;
                    return l.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, T.ipcRenderer.invoke("dialog", "showOpenDialogSync", {
                                    properties: ["openFile"]
                                });
                            case 2:
                                (i = t.sent) && 0 < i.length && (i = i[0], e.localCopy(B.basename(i), B.resolve(i)));
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            dropProfile: function(e) {
                e.preventDefault(), e.stopPropagation();
                var t, i = P(e.dataTransfer.files);
                try {
                    for (i.s(); !(t = i.n()).done;) {
                        var n = t.value;
                        this.localCopy(B.basename(n.path), B.resolve(n.path))
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
            },
            dragOverProfile: function(e) {
                e.preventDefault(), e.stopPropagation()
            },
            editDone: function() {
                var e = this,
                    t = this.pfs.files.findIndex((function(t) {
                        return t.time === e.editProfileName
                    }));
                t === this.pfs.index && this.switchProfile(t), this.editProfileName = "", this.editProfileType = -1
            },
            localCopy: function(e) {
                var t, i, n, r, o = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "";
                "" !== e && (t = (new Date).getTime() + ".yml", -1 < (n = (r = F({}, this.pfs)).files.findIndex((function(t) {
                    return t.name === e && "" === t.url
                }))) && n < r.files.length ? this.$alert({
                    content: "本地文件已存在.",
                    title: "错误"
                }) : (this.appendProfile({
                    profile: {
                        url: "",
                        time: t,
                        name: e,
                        selected: []
                    }
                }), i = B.join(this.clashPath, "config.yaml"), n = r.files, 0 <= (r = void 0 === (r = r.index) ? -1 : r) && r < n.length && (r = B.join(this.profilesPath, n[r].time), j.existsSync(r) && (i = r)), j.copyFileSync(i = "" !== o ? o : i, B.join(this.profilesPath, t))))
            },
            handleDeleteProfile: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n, r, o, s, a, d, c, h, u, p;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return n = t.pfs.files[e], p = n.name, n.url, i.next = 3, Object(g.g)({
                                    type: "warning",
                                    message: '您确定要删除吗 "'.concat(p, '"?'),
                                    buttons: ["是", "否"]
                                });
                            case 3:
                                if (0 === (p = i.sent).response) {
                                    try {
                                        for (r = t.pfs.files, o = (void 0 === r ? [] : r)[e].time, s = o.slice(0, -4) + ".base.yml", a = o.slice(0, -4) + ".change.yml", d = 0, c = [o, s, a]; d < c.length; d++) h = c[d], u = B.join(t.profilesPath, h), j.existsSync(u) && j.unlinkSync(u)
                                    } catch (i) {}
                                    t.deleteProfile({
                                        index: e
                                    }), p = t.pfs.index, e === (p = void 0 === p ? -1 : p) ? t.changeProfilesIndex({
                                        index: -1
                                    }) : e < p && t.changeProfilesIndex({
                                        index: p - 1
                                    })
                                }
                                case 6:
                                case "end":
                                    return i.stop()
                        }
                    }), i)
                })))()
            },
            openProfile: function(e) {
                T.shell.openPath(B.join(this.profilesPath, e.time))
            },
            switchProfile: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n, r, o;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                if (-1 === e) return i.abrupt("return");
                                i.next = 2;
                                break;
                            case 2:
                                return t.changeProfilesIndex({
                                    index: e
                                }), i.next = 5, t.$parent.refreshProfile();
                            case 5:
                                if (r = i.sent, n = r.success, r = r.message, n) {
                                    i.next = 17;
                                    break
                                }
                                return i.next = 11, Object(g.g)({
                                    type: "error",
                                    message: "无法切换到此配置文件!",
                                    detail: r || "",
                                    buttons: ["OK", "Edit in Text Mode"]
                                });
                            case 11:
                                1 === (o = i.sent).response && t.openProfile(t.pfs.files[e]), t.changeProfilesIndex({
                                    index: -1
                                }), i.next = 21;
                                break;
                            case 17:
                                if (void 0 !== (o = t.settings.connProfile) && o) return i.next = 21, t.clashAxiosClient.delete("connections");
                                i.next = 21;
                                break;
                            case 21:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            refreshProfile: function(e) {
                var t = arguments,
                    i = this;
                return r()(l.a.mark((function n() {
                    var r, o, a, d;
                    return l.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                if (a = (1 < t.length && void 0 !== t[1] ? t[1] : {}).ignoreSelectAfterUpdated, r = void 0 !== a && a, a = e.url, "" === (o = void 0 === a ? "" : a)) return n.abrupt("return");
                                n.next = 4;
                                break;
                            case 4:
                                if (d = i.downlodingUrls[o]) return d(z), i.$delete(i.downlodingUrls, o), n.abrupt("return");
                                n.next = 9;
                                break;
                            case 9:
                                return n.prev = 9, a = new W((function(e) {
                                    i.downlodingUrls = F(F({}, i.downlodingUrls), {}, s()({}, o, e))
                                })), d = void 0 !== (d = i.settings.selectAfterUpdated) && d, n.next = 14, i.updateConfig({
                                    url: o,
                                    cancelToken: a,
                                    selectAfterUpdated: !r && d
                                });
                            case 14:
                                n.next = 18;
                                break;
                            case 16:
                                n.prev = 16, n.t0 = n.catch(9);
                            case 18:
                                return n.prev = 18, i.$delete(i.downlodingUrls, o), n.finish(18);
                            case 21:
                            case "end":
                                return n.stop()
                        }
                    }), n, null, [
                        [9, 16, 18, 21]
                    ])
                })))()
            },
            editProfile: function(e) {
                this.editProfileName = e.time, this.editProfileType = 0
            },
            editProfileRule: function(e) {
                this.editProfileName = e.time, this.editProfileType = 1
            },
            parseDomain: function(e) {
                var t = "local file";
                try {
                    var i = new URL(e),
                        n = i.host;
                    return "file:" === i.protocol ? t : n || "empty host"
                } catch (e) {}
                return t
            },
            parseTime: function(e) {
                e = e.time;
                try {
                    var t = j.statSync(B.join(this.profilesPath, e)).mtime;
                    return c()(t).locale('zh-cn').from(this.now)
                } catch (e) {
                    return "missing file"
                }
            },
            updateConfig: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n, r, o, s, a;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return n = e.url, r = e.cancelToken, a = void 0 === r ? null : r, r = void 0 !== (r = e.selectAfterUpdated) && r, i.next = 3, Object(p.a)({
                                    url: n,
                                    cancelToken: a
                                }).catch((function(e) {}));
                            case 3:
                                if (a = i.sent, o = a.success, s = a.message, a = a.targetIndex, !o) {
                                    i.next = 13;
                                    break
                                }
                                if (r) return i.next = 11, t.switchProfile(a).catch((function(e) {}));
                                i.next = 11;
                                break;
                            case 11:
                                i.next = 14;
                                break;
                            case 13:
                                s.endsWith(z) || t.$alert({
                                    content: s
                                });
                            case 14:
                                return i.abrupt("return", o);
                            case 15:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            subInfoArr: function(e) {
                var t = void 0 === (i = e.upload) ? 0 : i,
                    i = void 0 === (n = e.download) ? 0 : n,
                    n = void 0 === (n = e.total) ? 0 : n;
                e = void 0 === (e = e.expire) ? 0 : e;
                return 0 <= t && 0 <= i && 0 < n ? (n = [Object(g.i)(t + i, 1, !1), Object(g.i)(n, 1, !1)], e ? [].concat(n, [c()(1e3 * e).format("YYYY-MM-DD")]) : n) : ""
            },
            subInfoPercent: function(e) {
                var t = void 0 === (i = e.upload) ? 0 : i,
                    i = void 0 === (i = e.download) ? 0 : i;
                e = void 0 === (e = e.total) ? 0 : e;
                return 0 <= t && 0 <= i && 0 < e ? {
                    "clip-path": "inset(0 ".concat((e = (t + i) / e * 100) <= 100 ? 100 - e : 0, "% 0 0)")
                } : {
                    "clip-path": "inset(0 100% 0 0)"
                }
            },
            pasteURL: function() {
                this.inputFocus = !1, this.subUrl = T.clipboard.readText(), this.inputFocus = !0
            },
            makeDiff: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    var n, r, o, s, a;
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return a = e.time, n = j.readFileSync(B.join(t.profilesPath, a), "utf8").toString(), r = B.join(t.profilesPath, a.slice(0, -4) + ".base.yml"), o = B.join(t.profilesPath, a.slice(0, -4) + ".change.yml"), s = j.existsSync(r) && j.existsSync(o), a = s ? ["删除 diff 文件", "修改文件"] : ["初始化 diff 文件"], i.next = 8, t.$select({
                                    title: "Diff",
                                    message: "你可以对配置文件进行一些更改，然后会在你更新配置文件时为你合并它们.",
                                    items: a
                                });
                            case 8:
                                0 === i.sent ? s ? (j.unlinkSync(r), j.unlinkSync(o)) : (j.writeFileSync(r, n), j.writeFileSync(o, n), T.shell.openPath(o)) : T.shell.openPath(o);
                            case 10:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            setupWatcher: function() {
                var e = this,
                    t = V.debounce((function(t, i) {
                        var n;
                        !/^\d+(?:\.yml)$/.test(i) || -1 < (n = e.pfs.files.findIndex((function(e) {
                            return e.time === i
                        }))) && n === e.pfs.index && e.switchProfile(n)
                    }), 2e3);
                this.fileWatcher = j.watch(B.join(this.profilesPath), {}, t)
            },
            removeWatcher: function() {
                this.fileWatcher && this.fileWatcher.close()
            }
        }),
        beforeRouteEnter: function(e, t, i) {
            var n;
            i((n = r()(l.a.mark((function e(t) {
                var i;
                return l.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            if (t.now = c()(), t.intervalID = setInterval((function() {
                                    t.isWindowShow && (t.now = c()())
                                }), 6e4), t.setupWatcher(), 0 === (null === (i = t.pfs.files) || void 0 === i ? void 0 : i.length)) return t.localCopy("config.yaml"), e.next = 7, t.switchProfile(0);
                            e.next = 7;
                            break;
                        case 7:
                        case "end":
                            return e.stop()
                    }
                }), e)
            }))), function(e) {
                return n.apply(this, arguments)
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            for (var n in this.intervalID && clearInterval(this.intervalID), this.removeWatcher(), this.downlodingUrls)(0, this.downlodingUrls[n])(z);
            i()
        }
    }, i(344), i(346), f = Object(o.a)(f, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            attrs: {
                id: "main-server-view"
            },
            on: {
                drop: e.dropProfile,
                dragover: e.dragOverProfile
            }
        }, [e.editProfileName && 0 === e.editProfileType ? i("config-view", {
            attrs: {
                "clash-path": e.clashPath,
                "profile-name": e.editProfileName
            },
            on: {
                cancel: function(t) {
                    e.editProfileName = "", e.editProfileType = -1
                },
                done: e.editDone,
                error: function(t) {
                    e.editProfileName = "", e.editProfileType = -1
                }
            }
        }) : e.editProfileName && 1 === e.editProfileType ? i("rule-view", {
            attrs: {
                "clash-path": e.clashPath,
                "profile-name": e.editProfileName
            },
            on: {
                cancel: function(t) {
                    e.editProfileName = "", e.editProfileType = -1
                },
                done: e.editDone,
                error: function(t) {
                    e.editProfileName = "", e.editProfileType = -1
                }
            }
        }) : i("div", {
            staticClass: "main"
        }, [i("div", {
            class: ["card-" + e.theme, "remote-view"]
        }, [i("div", {
            staticClass: "input-container"
        }, [i("input", {
            directives: [{
                name: "focus",
                rawName: "v-focus",
                value: e.inputFocus,
                expression: "inputFocus"
            }, {
                name: "model",
                rawName: "v-model",
                value: e.subUrl,
                expression: "subUrl"
            }],
            attrs: {
                spellcheck: "false",
                type: "text",
                placeholder: "从URL下载"
            },
            domProps: {
                value: e.subUrl
            },
            on: {
                keydown: e.handleURLConfirm,
                input: function(t) {
                    t.target.composing || (e.subUrl = t.target.value)
                }
            }
        }), e._v(" "), "" !== e.subUrl ? i("svg", {
            staticClass: "clear-icon clickable",
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                height: "24px",
                viewBox: "0 0 24 24",
                width: "24px",
                fill: "#2C313C"
            },
            on: {
                click: function(t) {
                    e.subUrl = ""
                }
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M22 3H7c-.69 0-1.23.35-1.59.88L.37 11.45c-.22.34-.22.77 0 1.11l5.04 7.56c.36.52.9.88 1.59.88h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-3.7 13.3c-.39.39-1.02.39-1.41 0L14 13.41l-2.89 2.89c-.39.39-1.02.39-1.41 0-.39-.39-.39-1.02 0-1.41L12.59 12 9.7 9.11c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L14 10.59l2.89-2.89c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41L15.41 12l2.89 2.89c.38.38.38 1.02 0 1.41z"
            }
        })]) : e._e(), e._v(" "), i("svg", {
            staticClass: "copy-icon",
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: "white"
            },
            on: {
                click: e.pasteURL
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M15 1H4c-1.1 0-2 .9-2 2v13c0 .55.45 1 1 1s1-.45 1-1V4c0-.55.45-1 1-1h10c.55 0 1-.45 1-1s-.45-1-1-1zm.59 4.59l4.83 4.83c.37.37.58.88.58 1.41V21c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h6.17c.53 0 1.04.21 1.42.59zM15 12h4.5L14 6.5V11c0 .55.45 1 1 1z"
            }
        })])]), e._v(" "), i("div", {
            staticClass: "btns-container"
        }, [i("div", {
            class: e.getBtnClass,
            on: {
                click: e.handleDownload
            }
        }, [e._v("\n          " + e._s(e.getBtnText) + "\n        ")]), e._v(" "), i("div", {
            staticClass: "confirm confirm-right update-all-btn",
            on: {
                click: e.handleUpdateAllProfiles
            }
        }, [e._v("\n          更新全部\n        ")]), e._v(" "), i("div", {
            staticClass: "confirm confirm-right",
            on: {
                click: e.handleImport
            }
        }, [e._v("导入")])])]), e._v(" "), i("draggable", {
            ref: "mixin-scroll-content",
            class: ["list-view-" + e.theme],
            attrs: {
                delay: 300,
                animation: 200,
                "delay-on-touch-only": !0
            },
            on: {
                start: e.handleDragStart,
                end: e.handleDragEnd
            },
            model: {
                value: e.profiles,
                callback: function(t) {
                    e.profiles = t
                },
                expression: "profiles"
            }
        }, [e._l(e.profiles, (function(t, n) {
            return i("div", {
                key: n,
                class: ["list-item-" + e.theme, n === e.pfs.index ? "item-cur-" + e.theme : ""],
                on: {
                    click: function(t) {
                        return e.switchProfile(n)
                    },
                    contextmenu: function(i) {
                        return e.handleProfileRightClick(i, t, n)
                    }
                }
            }, [i("div", {
                staticClass: "indicator"
            }), e._v(" "), i("div", {
                staticClass: "item-info"
            }, [i("div", {
                staticClass: "item-name"
            }, [i("div", {
                staticClass: "item-name-top"
            }, [i("div", [e._v(e._s(t.name))])]), e._v(" "), i("div", {
                staticClass: "item-name-bottom",
                attrs: {
                    title: t.url
                }
            }, [e._v("\n              " + e._s(e.parseDomain(t.url)) + "\n              "), i("span", {
                class: {
                    "item-time": !0, "item-expired": e.isProifleExpired(t)
                }
            }, [e._v("\n                (" + e._s(e.parseTime(t)) + ")\n              ")])]), e._v(" "), e.subInfoArr(t.subInfo || {}) ? i("div", {
                staticClass: "item-subinfo"
            }, [i("div", {
                staticClass: "item-subinfo-texts"
            }, e._l(e.subInfoArr(t.subInfo || {}), (function(t, n) {
                return i("div", {
                    key: n
                }, [e._v("\n                  " + e._s(t) + "\n                ")])
            })), 0), e._v(" "), i("div", {
                staticClass: "progress"
            }, [i("div", {
                staticClass: "percent",
                style: e.subInfoPercent(t.subInfo || {})
            })])]) : e._e()]), e._v(" "), "" !== t.url ? i("Hint", {
                staticClass: "item-icon",
                attrs: {
                    hint: "更新"
                },
                on: {
                    click: function(i) {
                        return i.stopPropagation(), e.refreshProfile(t)
                    }
                }
            }, [t.url in e.downlodingUrls ? i("svg", {
                staticClass: "rotating",
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M14.83 4.83L12.7 2.7c-.62-.62-1.7-.18-1.7.71v.66C7.06 4.56 4 7.92 4 12c0 3.64 2.43 6.71 5.77 7.68.62.18 1.23-.32 1.23-.96v-.03c0-.43-.27-.82-.68-.94C7.82 17.03 6 14.73 6 12c0-2.97 2.16-5.43 5-5.91v1.53c0 .89 1.07 1.33 1.7.71l2.13-2.08c.4-.38.4-1.02 0-1.42zm4.84 4.93c-.16-.55-.38-1.08-.66-1.59-.31-.57-1.1-.66-1.56-.2l-.01.01c-.31.31-.38.78-.17 1.16.2.37.36.76.48 1.16.12.42.51.7.94.7h.02c.65 0 1.15-.62.96-1.24zM13 18.68v.02c0 .65.62 1.14 1.24.96.55-.16 1.08-.38 1.59-.66.57-.31.66-1.1.2-1.56l-.02-.02c-.31-.31-.78-.38-1.16-.17-.37.21-.76.37-1.16.49-.41.12-.69.51-.69.94zm4.44-2.65c.46.46 1.25.37 1.56-.2.28-.51.5-1.04.67-1.59.18-.62-.31-1.24-.96-1.24h-.02c-.44 0-.82.28-.94.7-.12.4-.28.79-.48 1.17-.21.38-.13.86.17 1.16z"
                }
            })]) : i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    height: "24px",
                    viewBox: "0 0 24 24",
                    width: "24px"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M17.65 6.35c-1.63-1.63-3.94-2.57-6.48-2.31-3.67.37-6.69 3.35-7.1 7.02C3.52 15.91 7.27 20 12 20c3.19 0 5.93-1.87 7.21-4.56.32-.67-.16-1.44-.9-1.44-.37 0-.72.2-.88.53-1.13 2.43-3.84 3.97-6.8 3.31-2.22-.49-4.01-2.3-4.48-4.52C5.31 9.44 8.26 6 12 6c1.66 0 3.14.69 4.22 1.78l-1.51 1.51c-.63.63-.19 1.71.7 1.71H19c.55 0 1-.45 1-1V6.41c0-.89-1.08-1.34-1.71-.71l-.64.65z"
                }
            })])]) : i("Hint", {
                staticClass: "item-icon",
                attrs: {
                    hint: "Edit"
                },
                on: {
                    click: function(i) {
                        return i.stopPropagation(), e.openProfile(t)
                    }
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M8.7 15.9L4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4-.39-.39-1.01-.39-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0 .39-.39.39-1.01 0-1.4zm6.6 0l3.9-3.9-3.9-3.9c-.39-.39-.39-1.01 0-1.4.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0-.39-.39-.39-1.01 0-1.4z"
                }
            })])])], 1)])
        })), e._v(" "), e._l(new Array(20), (function(e, t) {
            return i("i", {
                key: "hidden" + t
            })
        }))], 2)], 1), e._v(" "), e.qrcodeURL ? i("QRCodeView", {
            attrs: {
                url: e.qrcodeURL
            },
            on: {
                hide: function(t) {
                    e.qrcodeURL = ""
                }
            }
        }) : e._e()], 1)
    }), [], !1, null, "4d08ae52", null);
    t.default = f.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(18),
        r = i.n(n),
        o = i(52),
        s = i.n(o),
        a = i(10),
        l = i.n(a),
        d = i(3),
        c = i.n(d),
        h = i(27),
        u = (n = (i(82), i(131)), o = i.n(n), i(35)),
        p = i(48),
        g = i(19),
        f = i(22);

    function m(e, t) {
        var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!i) {
            if (Array.isArray(e) || (i = function(e, t) {
                    if (e) {
                        if ("string" == typeof e) return v(e, t);
                        var i = Object.prototype.toString.call(e).slice(8, -1);
                        return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? v(e, t) : void 0
                    }
                }(e)) || t && e && "number" == typeof e.length) {
                i && (e = i);
                var n = 0;
                return {
                    s: t = function() {},
                    n: function() {
                        return n >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[n++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: t
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var r, o = !0,
            s = !1;
        return {
            s: function() {
                i = i.call(e)
            },
            n: function() {
                var e = i.next();
                return o = e.done, e
            },
            e: function(e) {
                s = !0, r = e
            },
            f: function() {
                try {
                    o || null == i.return || i.return()
                } finally {
                    if (s) throw r
                }
            }
        }
    }

    function v(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }

    function b(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function _(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? b(Object(i), !0).forEach((function(t) {
                r()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : b(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    var w = i(143),
        y = i(12),
        C = i(16),
        x = (a = {
            props: [],
            data: function() {
                return {
                    speed: {
                        up: 0,
                        down: 0
                    },
                    client: null,
                    scriptResult: "",
                    intervalID: null
                }
            },
            watch: {
                clashStatus: function(e) {
                    e === p.a.CONNECTED && (this.setupRequest(), this.updateInterval())
                },
                isWindowShow: function(e) {
                    e && this.setupRequest()
                },
                isAppSuspend: function(e) {
                    e || this.setupRequest()
                },
                "settings.trayText": function() {
                    this.updateInterval()
                },
                "settings.trayScriptPath": function() {
                    this.updateInterval()
                },
                "settings.trayScriptInterval": function() {
                    this.updateInterval()
                },
                "settings.trayScriptManualRunTime": function() {
                    this.updateInterval()
                }
            },
            computed: _(_(_({}, Object(h.mapState)(r()({
                confData: function(e) {
                    return e.app.confData
                },
                clashStatus: function(e) {
                    return e.app.clashStatus
                },
                status: function(e) {
                    return e.app.status
                },
                shouldUseDarkTheme: function(e) {
                    return e.app.shouldUseDarkTheme
                },
                isWindowShow: function(e) {
                    return e.app.isWindowShow
                },
                isAppSuspend: function(e) {
                    return e.app.isAppSuspend
                },
                isSystemProxyOn: function(e) {
                    return e.app.isSystemProxyOn
                },
                mode: function(e) {
                    return e.app.mode
                }
            }, "clashStatus", (function(e) {
                return e.app.clashStatus
            })))), Object(h.mapGetters)(["resourcesPath", "clashWSClient"])), {}, {
                finalText: function() {
                    var e = this.settings.trayText;
                    return (void 0 === e ? "" : e) || this.scriptResult
                },
                colors: function() {
                    return {
                        light: ["#fff", "#000"],
                        dark: ["#2c2a38", "rgb(255, 255, 255)"],
                        red: ["#f8b74f", "#d33928"],
                        2077: ["#136377", "#fcec0c"]
                    } [this.theme]
                }
            }),
            methods: {
                iconImage: function(e) {
                    var t = new Image(69, 69);
                    return t.src = e, t
                },
                withUnit: function(e) {
                    for (var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 2, i = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], n = ["B/s", "KB/s", "MB/s", "GB/s", "TB/s"], r = 0; ~~(e / 1024) && r < n.length;) e /= 1024, r++;
                    return i && 999 < e && (r++, e /= 1024), {
                        speed: 0 === r ? e : e.toFixed(t),
                        unit: n[r]
                    }
                },
                setupRequest: function() {
                    var e = this;
                    this.client && this.client.readyState !== WebSocket.CLOSED && this.client.readyState !== WebSocket.CONNECTING && this.client.terminate();
                    var t = this.clashWSClient("traffic"),
                        i = this.iconImage(y.join(this.resourcesPath, "static/imgs/logo_64_eyes.png"));
                    t ? (t.on("message", (function(t) {
                        e.speed = JSON.parse(t);
                        var n, r = 0,
                            o = void 0 === (n = (s = e.settings).trayOrders) ? [
                                [],
                                []
                            ] : n,
                            s = (t = s.trayColorTransparent, void 0 === (n = s.trayColorForeground) ? "#fff" : n),
                            a = e.withUnit(e.speed.up, 0, !0),
                            l = e.withUnit(e.speed.down, 0, !0);

                        function d(e) {
                            w.drawImage(i, e, 0, 69, 69), r += 69
                        }(n = document.createElement("canvas")).width = 2500;
                        var c, h, u, p, g, v, b, _, w = n.getContext("2d"),
                            y = t ? s : e.colors[1],
                            C = m(o[0]);
                        try {
                            for (C.s(); !(c = C.n()).done;) {
                                var x = c.value;
                                "icon" === x ? d(r) : "traffic" === x ? (_ = r, w.textAlign = "right", w.fillStyle = y, w.font = "26px sans-serif", w.lineWidth = 2, w.strokeStyle = y, w.fillText("".concat(a.speed, " ").concat(a.unit), _ + 145, 30), w.fillText("".concat(l.speed, " ").concat(l.unit), _ + 145, 58), w.textAlign = "left", w.beginPath(), w.moveTo(_ + 5, 31), w.lineTo(_ + 12, 22), w.lineTo(_ + 19, 31), e.speed.up > e.speed.down && w.fill(), w.stroke(), w.beginPath(), w.moveTo(_ + 19, 38), w.lineTo(_ + 12, 47), w.lineTo(_ + 5, 38), e.speed.up < e.speed.down && w.fill(), w.stroke(), r += 150) : "status" === x ? (b = r, w.font = "26px sans-serif", w.textAlign = "left", w.fillText(e.mode[0].toUpperCase(), b + 5, 58), e.isSystemProxyOn && w.fillText("S", b + 5, 30), r += 30) : "text" === x && (v = u = void 0, p = (h = r) + 10, g = e.finalText, v = 0, Array.isArray(g) && 2 <= g.length ? (w.font = "26px sans-serif", u = w.measureText(g[0]).width, v = (h = w.measureText(g[1]).width) < u ? u : h, w.fillText(g[0], p, 30), w.fillText(g[1], p, 58)) : (w.font = "40px sans-serif", v = w.measureText(g).width, w.fillText(g, p, 50)), r += parseInt(v) + 20)
                            }
                        } catch (t) {
                            C.e(t)
                        } finally {
                            C.f()
                        }
                        0 === o[0].length && d(r), o = 0 === o[0].length || 1 === o[0].length && "icon" === o[0][0], f.ipcRenderer.send("speed-update", n.toDataURL(), o ? 60 : r, t ? "" : e.colors[0])
                    })), this.client = t) : setTimeout((function() {
                        e.setupRequest()
                    }), 2e3)
                },
                updateInterval: function() {
                    var e = this;
                    this.intervalID && (clearInterval(this.intervalID), this.scriptResult = "");
                    var t, i = this.settings,
                        n = i.trayText,
                        r = i.trayScriptInterval,
                        o = i.trayScriptPath;
                    return "" === (void 0 === n ? "" : n) && o && (t = l()(c.a.mark((function t() {
                        var i;
                        return c.a.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return i = C.readFileSync(o, "utf8"), i = w("'use strict';\n".concat(i), o), t.next = 4, i.run();
                                case 4:
                                    e.scriptResult = t.sent;
                                case 5:
                                case "end":
                                    return t.stop()
                            }
                        }), t)
                    }))), (n = function() {
                        return t.apply(this, arguments)
                    })(), 0 < r && (this.intervalID = setInterval(n, 1e3 * r))), null
                }
            },
            mounted: function() {
                this.setupRequest(), this.updateInterval()
            }
        }, d = (i(262), i(264), i(30)), n = Object(d.a)(a, (function() {
            var e = this,
                t = e.$createElement;
            return (t = e._self._c || t)("div", {
                class: ["main-clash-traffic-view-" + e.theme]
            }, [t("div", {
                class: ["grid-" + e.theme]
            }, [t("span", {
                staticClass: "bold-icon"
            }, [e._v("↑")]), e._v("\n    " + e._s(e.withUnit(e.speed.up).speed) + "\n    "), t("span", {
                staticClass: "bold-icon"
            }, [e._v(e._s(e.withUnit(e.speed.up).unit))])]), e._v(" "), t("div", {
                class: ["grid-" + e.theme]
            }, [t("span", {
                staticClass: "bold-icon"
            }, [e._v("↓")]), e._v("\n    " + e._s(e.withUnit(e.speed.down).speed) + "\n    "), t("span", {
                staticClass: "bold-icon"
            }, [e._v("\n      " + e._s(e.withUnit(e.speed.down).unit) + "\n    ")])])])
        }), [], !1, null, "019ad1fb", null).exports, a = i(61), i.n(a));

    function S(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    a = {
        props: ["startTime"],
        data: function() {
            return {
                runningTime: "00 : 00 : 00",
                intervalId: null
            }
        },
        watch: {
            isWindowShow: function(e) {
                this.refreshTimeTicking(e)
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? S(Object(i), !0).forEach((function(t) {
                    r()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : S(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(h.mapState)({
            isWindowShow: function(e) {
                return e.app.isWindowShow
            }
        })),
        methods: {
            calcRunTime: function() {
                var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "hh : mm : ss",
                    t = e.includes("hh"),
                    i = e.includes("mm"),
                    n = (new Date).getTime(),
                    r = Math.floor((n - this.startTime) / 1e3);
                n = t || i ? r % 60 : r, i = t ? Math.floor(r / 60) % 60 : Math.floor(r / 60), t = Math.floor(r / 3600), r = function(e) {
                    return (e < 10 ? "0" : "").concat(e)
                };
                return e.replace("hh", r(t)).replace("mm", r(i)).replace("ss", r(n))
            },
            refreshTimeTicking: function() {
                var e = this,
                    t = !(0 < arguments.length && void 0 !== arguments[0]) || arguments[0];
                this.intervalId && clearInterval(this.intervalId), t && (this.intervalId = setInterval((function() {
                    var t = e.settings.runTimeFormat;
                    e.runningTime = e.calcRunTime(void 0 === t ? "hh : mm : ss" : t)
                }), 1e3))
            }
        },
        mounted: function() {
            this.refreshTimeTicking(!0)
        }
    }, i(266), a = Object(d.a)(a, (function() {
        var e = this.$createElement;
        return (e = this._self._c || e)("div", {
            attrs: {
                id: "main-run-time-view"
            }
        }, [e("div", {
            staticClass: "timer-text"
        }, [this._v(this._s(this.runningTime))])])
    }), [], !1, null, "d7fc9bf6", null).exports;
    var k = i(38);

    function L(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function O(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? L(Object(i), !0).forEach((function(t) {
                r()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : L(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function E(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function N(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? E(Object(i), !0).forEach((function(t) {
                r()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : E(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    n = {
        props: ["startTime"],
        data: function() {
            return {
                isAllowSort: !1
            }
        },
        components: {
            ClashTrafficView: n,
            RunTimeView: a,
            draggable: o.a
        },
        watch: {},
        computed: O(O({}, Object(h.mapGetters)(["menuItemsWithOrder", "clashGotClient"])), {}, {
            menuTheme: function() {
                return "menu-".concat(this.theme)
            },
            selectedIdx: function() {
                var e = this;
                return this.tabs.findIndex((function(t) {
                    return t.path === e.$route.path
                }))
            },
            tabs: {
                get: function() {
                    return this.menuItemsWithOrder
                },
                set: function(e) {
                    u.a.put(k.a.MENU_ITEM_ORDER, e.map((function(e) {
                        return e.title
                    }))), this.setMenuItems({
                        items: e
                    })
                }
            }
        }),
        methods: O(O({}, Object(h.mapMutations)({
            setMenuItems: "SET_MENU_ITEMS"
        })), {}, {
            handleRightClick: function(e) {
                var t = this;
                return l()(c.a.mark((function i() {
                    return c.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return i.next = 2, t.$menu([{
                                    text: "重新排序",
                                    icon: "reorder"
                                }], e);
                            case 2:
                                0 === i.sent && (t.isAllowSort = !0);
                            case 4:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            itemStyle: function(e) {
                var t = [];
                return this.isAllowSort && t.push("shaking".concat(e % 3 + 1)), this.selectedIdx === e && t.push("selected"), this.selectedIdx !== e && (t.push("selected-none"), t.push("item-none-".concat(this.theme))), this.selectedIdx === e + 1 && t.push("selected-top"), this.selectedIdx === e - 1 && t.push("selected-bottom"), t
            },
            itemClick: function(e) {
                e = e.path, this.$router.replace({
                    path: e
                }).catch((function() {}))
            }
        }),
        mounted: function() {}
    }, i(268), i(270), a = Object(d.a)(n, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-main-menu", "item-none-" + e.theme, e.isAllowSort ? "item-draggable" : ""],
            on: {
                contextmenu: function(t) {
                    return e.handleRightClick.apply(null, arguments)
                }
            }
        }, [i("clash-traffic-view", {
            class: ["traffic-" + e.theme]
        }), e._v(" "), i("draggable", {
            ref: "list",
            class: e.menuTheme,
            attrs: {
                animation: 200,
                "delay-on-touch-only": !0,
                disabled: !e.isAllowSort,
                "drag-class": "drag-item",
                "ghost-class": "ghost-item"
            },
            model: {
                value: e.tabs,
                callback: function(t) {
                    e.tabs = t
                },
                expression: "tabs"
            }
        }, e._l(e.tabs, (function(t, n) {
            return i("li", {
                key: n,
                staticClass: "item",
                class: e.itemStyle(n),
                on: {
                    click: function(i) {
                        return e.itemClick(t)
                    }
                }
            }, [i("div", {
                staticClass: "clickable"
            }, [e._v(e._s(t.title))])])
        })), 0), e._v(" "), i("run-time-view", {
            class: ["running-time-" + e.theme],
            attrs: {
                "start-time": e.startTime
            }
        }), e._v(" "), e.isAllowSort ? i("div", {
            staticClass: "stop-btn",
            on: {
                click: function(t) {
                    e.isAllowSort = !1
                }
            }
        }, [e._v("\n    停止排序\n  ")]) : e._e()], 1)
    }), [], !1, null, "2e582972", null).exports;
    o = {
        props: [],
        data: function() {
            return {
                isWinMax: !1,
                isPinned: !1
            }
        },
        computed: N(N({}, Object(h.mapState)({
            updateDownloadProgress: function(e) {
                return e.app.updateDownloadProgress
            }
        })), {}, {
            percent: function() {
                return this.updateDownloadProgress ? 100 * this.updateDownloadProgress : 0
            }
        }),
        methods: {
            closeApp: function() {
                f.ipcRenderer.invoke("app", "quit")
            },
            miniApp: function() {
                f.ipcRenderer.invoke("window", "minimize")
            },
            maxApp: function() {
                var e = this.isWinMax ? "unmaximize" : "maximize";
                f.ipcRenderer.invoke("window", e)
            },
            pinApp: function() {
                this.isPinned = !this.isPinned, f.ipcRenderer.invoke("window", "setAlwaysOnTop", this.isPinned), u.a.put(k.a.IS_PIN_ENABLED, this.isPinned)
            }
        },
        mounted: function() {
            var e = this;
            f.ipcRenderer.on("window-event", (function(t, i) {
                "maximize" === i ? e.isWinMax = !0 : "unmaximize" === i && (e.isWinMax = !1)
            })), this.isPinned = u.a.get(k.a.IS_PIN_ENABLED) || !1, f.ipcRenderer.invoke("window", "setAlwaysOnTop", this.isPinned)
        }
    }, i(272), n = Object(d.a)(o, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            class: ["main-" + e.theme]
        }, [t("div", {
            staticClass: "empty"
        }, [t("div", {
            staticClass: "top"
        }, [t("div", {
            staticClass: "left",
            style: {
                width: e.percent + "%"
            }
        }), e._v(" "), t("div", {
            staticClass: "right"
        })]), e._v(" "), t("div", {
            staticClass: "bottom"
        })]), e._v(" "), e.isWindows || e.isLinux ? t("div", {
            class: ["close-" + e.theme],
            on: {
                click: e.pinApp
            }
        }, [t("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                "enable-background": "new 0 0 24 24",
                viewBox: "0 0 24 24",
                fill: e.isPinned ? [].includes(e.theme) ? "#d8bc66" : "#0C7D9D" : ["dark"].includes(e.theme) ? "white" : "black",
                width: "14px",
                height: "14px"
            }
        }, [t("g", [t("rect", {
            attrs: {
                fill: "none",
                height: "24",
                width: "24"
            }
        }), e._v(" "), t("rect", {
            attrs: {
                fill: "none",
                height: "24",
                width: "24"
            }
        })]), e._v(" "), t("g", [t("path", {
            attrs: {
                d: "M19,12.87c0-0.47-0.34-0.85-0.8-0.98C16.93,11.54,16,10.38,16,9V4l1,0 c0.55,0,1-0.45,1-1c0-0.55-0.45-1-1-1H7C6.45,2,6,2.45,6,3c0,0.55,0.45,1,1,1l1,0v5c0,1.38-0.93,2.54-2.2,2.89 C5.34,12.02,5,12.4,5,12.87V13c0,0.55,0.45,1,1,1h4.98L11,21c0,0.55,0.45,1,1,1c0.55,0,1-0.45,1-1l-0.02-7H18c0.55,0,1-0.45,1-1 V12.87z",
                "fill-rule": "evenodd"
            }
        })])])]) : e._e(), e._v(" "), e.isWindows || e.isLinux ? t("div", {
            class: ["close-" + e.theme],
            on: {
                click: e.miniApp
            }
        }, [t("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: ["dark"].includes(e.theme) ? "white" : "black",
                width: "18px",
                height: "18px"
            }
        }, [t("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), t("path", {
            attrs: {
                d: "M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z"
            }
        })])]) : e._e(), e._v(" "), e.isWindows || e.isLinux ? t("div", {
            class: ["close-" + e.theme],
            on: {
                click: e.maxApp
            }
        }, [e.isWinMax ? t("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: ["dark"].includes(e.theme) ? "white" : "black",
                width: "18px",
                height: "18px"
            }
        }, [t("path", {
            attrs: {
                d: "M24 0v24H0V0h24z",
                fill: "none",
                opacity: ".87"
            }
        }), e._v(" "), t("path", {
            attrs: {
                d: "M8.12 19.3c.39.39 1.02.39 1.41 0L12 16.83l2.47 2.47c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41l-3.17-3.17c-.39-.39-1.02-.39-1.41 0l-3.17 3.17c-.4.38-.4 1.02-.01 1.41zm7.76-14.6c-.39-.39-1.02-.39-1.41 0L12 7.17 9.53 4.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.03 0 1.42l3.17 3.17c.39.39 1.02.39 1.41 0l3.17-3.17c.4-.39.4-1.03.01-1.42z"
            }
        })]) : t("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: ["dark"].includes(e.theme) ? "white" : "black",
                width: "14px",
                height: "14px"
            }
        }, [t("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), t("path", {
            attrs: {
                d: "M18 19H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm1-16H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
            }
        })])]) : e._e(), e._v(" "), e.isWindows || e.isLinux ? t("div", {
            class: ["close-" + e.theme],
            on: {
                click: e.closeApp
            }
        }, [t("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: ["dark"].includes(e.theme) ? "white" : "black",
                width: "18px",
                height: "18px"
            }
        }, [t("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), t("path", {
            attrs: {
                d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
            }
        })])]) : e._e()])
    }), [], !1, null, "cb3c6880", null).exports, o = i(77);
    var D = i.n(o),
        I = i(60),
        T = (o = (i(146), i(16)), i.n(o)),
        M = i(12),
        P = i.n(M),
        A = (o = i(69), i.n(o)),
        R = (o = (i(147), i(45)), i.n(o)),
        F = (i(274), i(124)),
        j = i(40),
        B = i(127),
        V = i(42),
        W = i(166),
        z = i(279),
        H = i(189);

    function U() {
        return (U = l()(c.a.mark((function e() {
            var t, i;
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return e.next = 2, H();
                    case 2:
                        t = e.sent, (i = new z).use(function() {
                            var e = l()(c.a.mark((function e(t) {
                                var i, n;
                                return c.a.wrap((function(e) {
                                    for (;;) switch (e.prev = e.next) {
                                        case 0:
                                            /\/pac$/.test(t.path) ? (n = V.a.state.app.settings.pacContentText, i = void 0 === n ? W.a : n, (n = V.a.getters.mixedPort) && (t.set("content-type", "application/x-ns-proxy-autoconfig"), t.body = i.replace(/%mixed-port%/g, n))) : t.res.statusCode = 404;
                                        case 1:
                                        case "end":
                                            return e.stop()
                                    }
                                }), e)
                            })));
                            return function(t) {
                                return e.apply(this, arguments)
                            }
                        }()), i.listen(t, "127.0.0.1"), V.a.commit("SET_INNER_SERVER_PORT", {
                            port: t
                        });
                    case 7:
                    case "end":
                        return e.stop()
                }
            }), e)
        })))).apply(this, arguments)
    }
    var K, $, q = i(163),
        G = (o = i(157), i.n(o)),
        Y = i(153),
        Z = (K = l()(c.a.mark((function e(t) {
            var i;
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return i = ["-dns", 0 < t.length ? t.join(",") : "reset"], e.next = 3, Object(Y.a)(i);
                    case 3:
                        return i = (i = e.sent).success, e.abrupt("return", i);
                    case 6:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function(e) {
            return K.apply(this, arguments)
        }),
        X = ($ = l()(c.a.mark((function e() {
            var t, i;
            return c.a.wrap((function(e) {
                for (;;) switch (e.prev = e.next) {
                    case 0:
                        return t = ["-dns", "query"], e.next = 3, Object(Y.a)(t);
                    case 3:
                        if (i = e.sent, t = i.success, i = i.output, !t) {
                            e.next = 9;
                            break
                        }
                        if (/.+?=(.+?);/.test(i)) return e.abrupt("return", RegExp.$1.split(",").filter((function(e) {
                            return G.a.isIP(e)
                        })));
                        e.next = 9;
                        break;
                    case 9:
                        return e.abrupt("return", []);
                    case 10:
                    case "end":
                        return e.stop()
                }
            }), e)
        }))), function() {
            return $.apply(this, arguments)
        }),
        Q = i(168);

    function J(e, t) {
        var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!i) {
            if (Array.isArray(e) || (i = function(e, t) {
                    if (e) {
                        if ("string" == typeof e) return ee(e, t);
                        var i = Object.prototype.toString.call(e).slice(8, -1);
                        return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? ee(e, t) : void 0
                    }
                }(e)) || t && e && "number" == typeof e.length) {
                i && (e = i);
                var n = 0;
                return {
                    s: t = function() {},
                    n: function() {
                        return n >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[n++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: t
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var r, o = !0,
            s = !1;
        return {
            s: function() {
                i = i.call(e)
            },
            n: function() {
                var e = i.next();
                return o = e.done, e
            },
            e: function(e) {
                s = !0, r = e
            },
            f: function() {
                try {
                    o || null == i.return || i.return()
                } finally {
                    if (s) throw r
                }
            }
        }
    }

    function ee(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }

    function te(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function ie(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? te(Object(i), !0).forEach((function(t) {
                r()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : te(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    i(82), i(175);
    var ne = i(143),
        re = i(280),
        oe = i(189),
        se = i(281),
        ae = (o = i(190)("./service_".concat(process.platform))).statusService,
        le = o.status;
    I.transports.console.format = function(e) {
        return e.data
    }, I.transports.file.format = function(e) {
        return 'time="'.concat(e.date, '" level=').concat(e.level, ' msg="').concat(e.data, '"')
    };
    var de, ce;
    h = {
        name: "landing-page",
        components: {
            MainMenu: a,
            StatusBar: n
        },
        data: function() {
            return {
                clash: null,
                userPath: "",
                clashRestfulPort: null,
                clashRestfulSecret: "",
                newVersionInfo: {},
                shwoError: !1,
                showStartup: !1,
                portableMode: !1,
                startTime: null,
                tun2socks: null,
                pkgDownloadProgress: 0,
                networkInterfaces: [],
                configFileWatcher: null,
                profileUpdateFailed: {},
                userDNS: null,
                shortcuts: {}
            }
        },
        watch: {
            $route: function(e) {
                void 0 !== (e = e.path) && this.setCurrentRoutePath({
                    path: e
                })
            },
            mixedPort: function() {
                I.info("mixed-port changed"), this.resetSystemProxySettings()
            },
            controllerPort: function() {
                I.info("external controller port changed")
            },
            finalInterfaceName: function(e) {
                I.info("new outbound interface: ".concat(e)), this.refreshProfile()
            },
            clashStatus: (ce = l()(c.a.mark((function e(t) {
                return c.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            if (I.info("clash status change to [".concat(t === p.a.CONNECTED ? "connected" : "disconnected", "]")), f.ipcRenderer.send("clash-core-status-change", t === p.a.CONNECTED ? 0 : 1), t === p.a.CONNECTED) return this.setIsLaunching({
                                isLaunching: !1
                            }), e.next = 6, this.refreshProfile().catch((function(e) {}));
                            e.next = 7;
                            break;
                        case 6:
                            this.addProfileRefreshTimes({
                                times: 1
                            });
                        case 7:
                        case "end":
                            return e.stop()
                    }
                }), e, this)
            }))), function(e) {
                return ce.apply(this, arguments)
            }),
            clashAxiosClient: function(e) {
                var t = this;
                I.info("clash axios client changed"), e.interceptors.request.use((function(e) {
                    return t.addClashAxiosFlyingRequestCount({
                        count: 1
                    }), e
                }), (function(e) {
                    return Promise.reject(e)
                })), e.interceptors.response.use((function(e) {
                    return t.addClashAxiosFlyingRequestCount({
                        count: -1
                    }), e
                }), (function(e) {
                    return t.addClashAxiosFlyingRequestCount({
                        count: -1
                    }), Promise.reject(e)
                }))
            },
            status: {
                immediate: !0,
                handler: function(e) {
                    this.updateTrayIcon(), f.ipcRenderer.send("system-proxy-changed", e === p.b.SYSTEM_PROXY)
                }
            },
            "settings.hideTrayIcon": {
                immediate: !0,
                handler: function(e) {
                    var t = this;
                    return l()(c.a.mark((function i() {
                        return c.a.wrap((function(i) {
                            for (;;) switch (i.prev = i.next) {
                                case 0:
                                    return i.next = 2, f.ipcRenderer.invoke("tray-create-destroy", e ? "destroy" : "create");
                                case 2:
                                    t.updateTrayIcon();
                                case 3:
                                case "end":
                                    return i.stop()
                            }
                        }), i)
                    })))()
                }
            },
            "settings.iconDefault": function(e) {
                this.updateTrayIcon()
            },
            "settings.iconSystemProxy": function(e) {
                this.updateTrayIcon()
            },
            "settings.fontFamily": function(e) {
                this.setFont(e)
            },
            "settings.shortcutSystemProxy": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, l()(c.a.mark((function e() {
                    var t;
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return t = !i.isSystemProxyOn, e.next = 3, i.$setSystemProxy(t, i.confData);
                            case 3:
                                if (!e.sent) {
                                    e.next = 5;
                                    break
                                }
                                i.setIsSystemProxyOn({
                                    isOn: t
                                });
                            case 5:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))))
            },
            "settings.shortcutTun": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, l()(c.a.mark((function e() {
                    var t;
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                t = !i.isTunEnable, i.chagneIsTunEnable({
                                    isTun: t
                                }), i.refreshProfile(), Object(j.h)("Shortcut", "TUN Mode: ".concat(t ? "On" : "Off"));
                            case 4:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))))
            },
            "settings.shortcutMixin": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, (function() {
                    var e = !i.isMixinEnable;
                    i.changeIsMixinEnable({
                        isMixin: e
                    }), i.refreshProfile(), Object(j.h)("Shortcut", "Mixin: ".concat(e ? "On" : "Off"))
                }))
            },
            "settings.shortcutGlobalMode": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, l()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, i.switchMode("global");
                            case 2:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))))
            },
            "settings.shortcutRuleMode": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, l()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, i.switchMode("rule");
                            case 2:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))))
            },
            "settings.shortcutDirectMode": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, l()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, i.switchMode("direct");
                            case 2:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))))
            },
            "settings.shortcutScriptMode": function(e, t) {
                var i = this;
                this.rebindShortcut(e, t, l()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, i.switchMode("script");
                            case 2:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))))
            },
            "settings.shortcutRunTrayScript": function(e, t) {
                this.rebindShortcut(e, t, this.runTrayScript)
            },
            "settings.shortcutShowHideDashboard": function(e, t) {
                this.rebindShortcut(e, t, (function() {
                    f.ipcRenderer.invoke("window-control", "show-or-hide")
                }))
            },
            "settings.systemProxyTypeIndex": function() {
                this.resetSystemProxySettings()
            },
            "settings.pacContentText": function() {
                this.resetSystemProxySettings()
            },
            "settings.bypassText": function() {
                this.resetSystemProxySettings()
            },
            "settings.specifyHttpProxyProtocol": function() {
                this.resetSystemProxySettings()
            },
            "settings.staticSystemProxyHost": function() {
                this.resetSystemProxySettings()
            },
            "settings.enableDHCPServer": function(e) {
                e ? this.setMenuItems({
                    items: [].concat(s()(this.menuItems), [{
                        title: "Router",
                        path: "/home/router"
                    }])
                }) : this.setMenuItems({
                    items: this.menuItems.filter((function(e) {
                        return "Router" !== e.title
                    }))
                })
            },
            isMixinEnable: function(e) {
                this.refreshProfile(), f.ipcRenderer.send("mixin-changed", e)
            },
            isTunEnable: function(e) {
                this.refreshProfile(), f.ipcRenderer.send("tun-changed", e)
            },
            tunSettings: function(e) {
                this.refreshProfile()
            },
            isAppSuspend: function(e) {
                e || (this.tun2socks && (I.info("system resume, restart tun2socks"), this.killSpawned(this.tun2socks), this.tun2socks = null, this.spawnTun2socks()), this.refreshProfile().then((function(e) {})).catch((function(e) {})))
            },
            innerServerPort: function(e) {
                console.log("inner port:", e), this.resetSystemProxySettings()
            },
            mode: {
                handler: (de = l()(c.a.mark((function e(t) {
                    var i, n;
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                if (f.ipcRenderer.send("mode-changed", t), void 0 !== (i = this.settings.connMode) && i) return e.next = 5, this.clashAxiosClient.delete("connections");
                                e.next = 5;
                                break;
                            case 5:
                                n = this.profiles, i = void 0 === (i = n.files) ? [] : i, 0 <= (n = void 0 === (n = n.index) ? -1 : n) && i.length > n && this.changeProfile({
                                    index: n,
                                    profile: ie(ie({}, i[n]), {}, {
                                        mode: t
                                    })
                                });
                            case 7:
                            case "end":
                                return e.stop()
                        }
                    }), e, this)
                }))), function(e) {
                    return de.apply(this, arguments)
                }),
                immediate: !0
            }
        },
        computed: ie(ie(ie({}, Object(h.mapState)({
            devMode: function(e) {
                return e.app.isDevMode
            },
            profiles: function(e) {
                return e.app.profiles
            },
            clashPath: function(e) {
                return e.app.clashPath
            },
            clashStatus: function(e) {
                return e.app.clashStatus
            },
            confData: function(e) {
                return e.app.confData
            },
            profilesPath: function(e) {
                return e.app.profilesPath
            },
            isMixinEnable: function(e) {
                return e.app.isMixinEnable
            },
            isTunEnable: function(e) {
                return e.app.isTunEnable
            },
            status: function(e) {
                return e.app.status
            },
            clashAxiosFlyingRequestCount: function(e) {
                return e.app.clashAxiosFlyingRequestCount
            },
            logFilePath: function(e) {
                return e.app.logFilePath
            },
            shouldUseDarkTheme: function(e) {
                return e.app.shouldUseDarkTheme
            },
            detectedInterfaceName: function(e) {
                return e.app.detectedInterfaceName
            },
            isAppSuspend: function(e) {
                return e.app.isAppSuspend
            },
            innerServerPort: function(e) {
                return e.app.innerServerPort
            },
            isLocalMode: function(e) {
                return e.app.isLocalMode
            },
            isWindowShow: function(e) {
                return e.app.isWindowShow
            },
            menuItems: function(e) {
                return e.app.menuItems
            },
            isSystemProxyOn: function(e) {
                return e.app.isSystemProxyOn
            },
            isSubViewShow: function(e) {
                return e.app.isSubViewShow
            },
            currentRoutePath: function(e) {
                return e.app.currentRoutePath
            },
            mode: function(e) {
                return e.app.mode
            },
            isSilentUpgraded: function(e) {
                return e.app.isSilentUpgraded
            },
            tunSettings: function(e) {
                return e.app.tunSettings
            }
        })), Object(h.mapGetters)(["resourcesPath", "filesPath", "mixedPort", "controllerPort", "secret", "clashAxiosClient", "clashGotClient"])), {}, {
            themeClass: function() {
                return "theme-".concat(this.theme)
            },
            finalInterfaceName: function() {
                var e = this.settings.interfaceName;
                return (void 0 === e ? "" : e) || this.detectedInterfaceName
            },
            statusHint: function() {
                return 0 < this.pkgDownloadProgress && this.pkgDownloadProgress < 1 ? "Download progress: ".concat((100 * this.pkgDownloadProgress).toFixed(2), "%") : this.clashStatus === p.a.CONNECTED ? "已连接" : this.clashStatus === p.a.DISCONNECTED ? "未连接" : void 0
            },
            statusIcon: function() {
                return {
                    "clash-status-icon": !0,
                    "clash-running": this.clashStatus === p.a.CONNECTED,
                    "clash-stopped": this.clashStatus === p.a.DISCONNECTED
                }
            }
        }),
        methods: ie(ie(ie({}, Object(h.mapMutations)({
            setIsDevMode: "SET_IS_DEV_MODE",
            setConfData: "SET_CONF_DATA",
            changeProfile: "CHANGE_PROFILE",
            changeProfileIndex: "CHANGE_PROFILES_INDEX",
            setClashPath: "SET_CLASH_PATH",
            setClashStatus: "SET_CLASH_STATUS",
            loadProfiles: "LOAD_PROFILES",
            setProfilesPath: "SET_PROFILES_PATH",
            setLogFilePath: "SET_LOG_FILE_PATH",
            changeIsMixinEnable: "CHANGE_IS_MIXIN_ENABLE",
            chagneIsTunEnable: "CHANGE_IS_TUN_ENABLE",
            setExePath: "SET_EXE_PATH",
            appendError: "APPEND_ERROR",
            addClashAxiosFlyingRequestCount: "ADD_AXIOS_FLYING_REQUEST_COUNT",
            setSettingsObject: "SET_SETTINGS_OBJECT",
            setShouldUseDarkTheme: "SET_SHOULD_USE_DARK_THEME",
            setDetectedInterfaceName: "SET_DETECTED_INTERFACE_NAME",
            setIsWindowShow: "SET_IS_WINDOW_SHOW",
            setIsAppSuspend: "SET_IS_APP_SUSPEND",
            setIsLocalMode: "SET_IS_LOCAL_MODE",
            setIsLaunching: "SET_IS_LAUNCHING",
            setMenuItems: "SET_MENU_ITEMS",
            setIsSystemProxyOn: "SET_IS_SYSTEM_PROXY_ON",
            setCurrentRoutePath: "SET_CURRENT_ROUTE_PATH",
            addProfileRefreshTimes: "ADD_PROFILE_REFRESH_TIMES",
            setCurrentProfilePayload: "SET_CURRENT_PROFILE_PAYLOAD",
            setIsSilentUpgraded: "SET_IS_SILENT_UPGRADED"
        })), Object(h.mapActions)(["setMode"])), {}, {
            runTrayScript: function() {
                this.settings.trayScriptManualRunTime = (new Date).getTime()
            },
            resetSystemProxySettings: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (e.isSystemProxyOn) return t.next = 3, e.$setSystemProxy(!0, e.confData);
                                t.next = 3;
                                break;
                            case 3:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            updateTrayIcon: function() {
                Object(g.j)() && f.ipcRenderer.send("status-changed", this.$getTrayIcon(this.status === p.b.SYSTEM_PROXY ? 1 : 0))
            },
            setFont: function(e) {
                document.body.style.fontFamily = e || '"Microsoft Yahei", "PingFang SC", "system-ui", 微软雅黑'
            },
            refreshProfile: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var n, r, o, a, d, h, u, p, f, m, v, b, _, w, y, C, x, S, k, L, O, E, N, M, A, F, B, V, W, z, H, U, K, $, q;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (n = !1, r = null, a = e.profiles.index, d = !1, !(-1 < (a = void 0 === a ? -1 : a))) {
                                    t.next = 86;
                                    break
                                }
                                if (I.info("restore at index: ".concat(a)), h = e.profiles.files[a], o = P.a.join(e.profilesPath, h.time), t.prev = 9, null === (u = R.a.parse(T.a.readFileSync(o, "utf8"), {
                                        prettyErrors: !0
                                    }))) throw new Error("this profile could not be parsed!");
                                t.next = 13;
                                break;
                            case 13:
                                if (y = e.settings, _ = y.mixinType, w = void 0 === _ ? 0 : _, p = y.mixinText, f = y.mixinCode, m = u, e.isTunEnable && (m = ie(ie({}, m), Object(j.e)(e.tunSettings))), !e.isMixinEnable) {
                                    t.next = 29;
                                    break
                                }
                                t.t0 = w, t.next = 0 === t.t0 ? 20 : 1 === t.t0 ? 22 : 29;
                                break;
                            case 20:
                                if (p) try {
                                    v = R.a.parse(p), b = v.mixin, m = ie(ie({}, m), b)
                                } catch (t) {}
                                return t.abrupt("break", 29);
                            case 22:
                                if (f) return _ = ne(f), y = h.url, w = void 0 === y ? "" : y, y = h.name, t.next = 27, _.parse({
                                    content: m,
                                    url: w,
                                    name: y
                                }, {
                                    axios: i(69),
                                    yaml: i(45),
                                    notify: function(e) {
                                        var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "",
                                            i = !(2 < arguments.length && void 0 !== arguments[2]) || arguments[2];
                                        Object(j.h)(e, t, i)
                                    }
                                });
                                t.next = 28;
                                break;
                            case 27:
                                m = t.sent;
                            case 28:
                                return t.abrupt("break", 29);
                            case 29:
                                if (E = (L = m).dns, C = void 0 === E ? {} : E, x = L["interface-name"], O = L.tun, N = void 0 === O ? {} : O, M = C.enable, S = void 0 !== M && M, k = C.listen, E = N.enable, L = void 0 !== E && E, O = N["macOS-auto-detect-interface"], M = void 0 !== O && O, E = N["auto-detect-interface"], O = void 0 !== E && E, E = void 0 === (E = N["dns-hijack"]) ? [] : E, N = N.stack, Object(g.h)() || !L || O || M) {
                                    t.next = 40;
                                    break
                                }
                                if (x) {
                                    t.next = 40;
                                    break
                                }
                                if (e.detectInterfaceName(), "" === e.finalInterfaceName) {
                                    t.next = 39;
                                    break
                                }
                                m = ie(ie({}, m), {}, {
                                    "interface-name": e.finalInterfaceName
                                }), t.next = 40;
                                break;
                            case 39:
                                return t.abrupt("return", {
                                    success: !1,
                                    message: "启用 TUN 模式但此 YAML 中没有接口名称"
                                });
                            case 40:
                                if (!Object(g.j)()) {
                                    t.next = 57;
                                    break
                                }
                                if (L) {
                                    t.next = 57;
                                    break
                                }
                                M = !0;
                                try {
                                    M = D.a.execSync("netsh 界面 显示界面", {
                                        windowsHide: !0
                                    }).toString().includes("cfw-tap")
                                } catch (t) {}
                                if (!(M && C && S && k)) {
                                    t.next = 57;
                                    break
                                }
                                if (B = k.split(":")[0].trim(), F = k.split(":")[1].trim(), !["", "0.0.0.0"].includes(B) || "53" !== F) {
                                    t.next = 57;
                                    break
                                }
                                if (d = !0, x || O) {
                                    t.next = 57;
                                    break
                                }
                                if (e.detectInterfaceName(), "" === e.finalInterfaceName) {
                                    t.next = 56;
                                    break
                                }
                                m = ie(ie({}, m), {}, {
                                    "interface-name": e.finalInterfaceName
                                }), t.next = 57;
                                break;
                            case 56:
                                return t.abrupt("return", {
                                    success: !1,
                                    message: "TAP mode enable but no interface-name in this YAML"
                                });
                            case 57:
                                return B = (A = m)["proxy-providers"], F = A["rule-providers"], A = 0 < Object.keys(null != B ? B : {}).length || 0 < Object.keys(null != F ? F : {}).length, B = e.confData, F = B["log-level"], B = B.ipv6, t.next = 62, e.clashAxiosClient.put("/configs", {
                                    payload: R.a.stringify(ie(ie({}, m), {}, {
                                        ipv6: B,
                                        "log-level": F
                                    }))
                                }, {
                                    validateStatus: function() {
                                        return !0
                                    },
                                    timeout: A ? 0 : 1e4
                                });
                            case 62:
                                if (K = t.sent, U = K.status, z = K.data, n = 204 === U, K = z.message, r = K || "Switching profile failed with status: ".concat(U), n ? (e.setCurrentProfilePayload({
                                        payload: m
                                    }), A ? e.menuItems.find((function(e) {
                                        return "提供" === e.title
                                    })) || e.setMenuItems({
                                        items: [].concat(s()(e.menuItems), [{
                                            title: "提供",
                                            path: "/home/provider"
                                        }])
                                    }) : e.setMenuItems({
                                        items: e.menuItems.filter((function(e) {
                                            return "提供" !== e.title
                                        }))
                                    })) : e.setCurrentProfilePayload({
                                        payload: {}
                                    }), n)
                                    if (L) {
                                        if (0 < E.length) try {
                                            Z(E)
                                        } catch (t) {}
                                        Object(g.j)() && "system" === N && (V = 0, W = setInterval(l()(c.a.mark((function e() {
                                            return c.a.wrap((function(e) {
                                                for (;;) switch (e.prev = e.next) {
                                                    case 0:
                                                        return e.next = 2, oe({
                                                            port: 7777
                                                        });
                                                    case 2:
                                                        7777 !== e.sent && D.a.exec("ipconfig /renew", {
                                                            windowsHide: !0
                                                        }), 4 === V && clearInterval(W), V += 1;
                                                    case 6:
                                                    case "end":
                                                        return e.stop()
                                                }
                                            }), e)
                                        }))), 2e3))
                                    } else if (null !== e.userDNS) try {
                                    Z(e.userDNS)
                                } catch (t) {}
                                t.next = 79;
                                break;
                            case 72:
                                t.prev = 72, t.t1 = t.catch(9), I.warn("fail to restore last profile with error: ".concat(t.t1)), z = "", (K = t.t1.linePos) && (H = K.start) && (U = H.line, K = H.col, z = ", on line: ".concat(U, ", at column: ").concat(K)), r = "Error: ".concat(t.t1.message).concat(z);
                            case 79:
                                if ($ = h.selected, q = h.mode, n && $) return I.info("restore proxy settings"), t.next = 84, Promise.allSettled($.map((function(t) {
                                    var i = t.name;
                                    t = t.now;
                                    return e.clashAxiosClient.put("/proxies/" + encodeURIComponent(i), {
                                        name: t
                                    })
                                })));
                                t.next = 85;
                                break;
                            case 84:
                                t.sent.forEach((function(e, t) {
                                    var i = e.status;
                                    e = e.reason;
                                    "rejected" === i && I.info("恢复代理组 ".concat($[t].name, " to ").concat($[t].now, " failed with reason: ").concat(e))
                                }));
                            case 85:
                                n && q && e.switchMode(q, !1);
                            case 86:
                                return d ? e.spawnTun2socks() : (e.killSpawned(e.tun2socks), e.tun2socks = null), t.abrupt("return", {
                                    success: n,
                                    message: r
                                });
                            case 88:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [9, 72]
                    ])
                })))()
            },
            switchMode: function(e) {
                var t = this;
                return l()(c.a.mark((function i() {
                    return c.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return i.next = 2, t.setMode({
                                    mode: e
                                });
                            case 2:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            showLogsFolder: function() {
                var e = 0 < arguments.length && void 0 !== arguments[0] && arguments[0];
                this.clashPath && /\.log$/.test(this.logFilePath) && (e ? f.shell.openPath(P.a.join(this.logFilePath, "..")) : f.shell.showItemInFolder(this.logFilePath))
            },
            open: function(e) {
                f.shell.openExternal(e)
            },
            killClashCore: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (e.killSpawned(e.clash), e.clash = null, u.a.get(k.a.IS_LIGHTWEIGHT_MODE_CLOSE)) {
                                    t.next = 6;
                                    break
                                }
                                return t.next = 6, A.a.get("http://127.0.0.1:53000/stop", {
                                    timeout: 1e3
                                }).catch((function(e) {}));
                            case 6:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handlerRestartClash: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, e.killClashCore().catch((function(e) {}));
                            case 2:
                                return e.setClashStatus({
                                    status: p.a.DISCONNECTED
                                }), e.shwoError = !1, t.next = 6, e.spawnClash().catch((function(e) {}));
                            case 6:
                                Object(g.j)() && e.clashAxiosClient.put("/configs", {
                                    payload: R.a.stringify({
                                        tun: {
                                            enable: !0,
                                            stack: "gvisor",
                                            "auto-route": !1,
                                            "auto-detect-interface": !1
                                        }
                                    })
                                });
                            case 7:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            spawnClash: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i, n, o, s, a, d, h;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (I.info("restarting clash core..."), i = P.a.join(e.clashPath, "logs", "".concat(x()().format("YYYY-MM-DD-HHmmss"), ".log")), T.a.readdir(P.a.join(e.clashPath, "logs"), (function(t, i) {
                                        !t && 0 < i.length && i.forEach((function(t) {
                                            /^(.*?)\.log$/.test(t) && x()(RegExp.$1, "YYYY-MM-DD-HHmmss").isBefore(x()().subtract(7, "days")) && T.a.unlink(P.a.join(e.clashPath, "logs", t), (function(e) {}))
                                        }))
                                    })), n = u.a.get(k.a.IS_LIGHTWEIGHT_MODE_CLOSE) || !1, t.t0 = n, t.t0) return t.next = 8, e.getClashStatus();
                                t.next = 11;
                                break;
                            case 8:
                                t.t1 = t.sent, t.t2 = p.a.CONNECTED, t.t0 = t.t1 === t.t2;
                            case 11:
                                if (t.t0) return t.abrupt("return");
                                t.next = 13;
                                break;
                            case 13:
                                if (s = {}, r()(s, g.d, P.a.join(e.filesPath, "win", "ia32")), r()(s, g.e, P.a.join(e.filesPath, "win", "x64")), r()(s, g.c, P.a.join(e.filesPath, "darwin", "x64")), r()(s, g.b, P.a.join(e.filesPath, "darwin", "arm64")), r()(s, g.a, P.a.join(e.filesPath, "linux", "x64")), o = s[Object(g.f)()], a = {}, r()(a, g.d, "clash-win32.exe"), r()(a, g.e, "clash-win64.exe"), r()(a, g.c, "./clash-darwin"), r()(a, g.b, "./clash-darwin"), r()(a, g.a, "./clash-linux"), s = a[Object(g.f)()], a = e.confData["log-level"], e.isLocalMode) {
                                    t.next = 25;
                                    break
                                }
                                return t.next = 19, A.a.post("http://127.0.0.1:53000/start", {
                                    path: e.devMode ? Object(M.join)(process.cwd(), o, s) : Object(M.join)(o, s),
                                    cwd: e.clashPath,
                                    silent: "silent" === a
                                }, {
                                    validateStatus: function(e) {
                                        return !0
                                    }
                                });
                            case 19:
                                h = t.sent, d = h.data, 200 === h.status && e.setLogFilePath({
                                    path: d
                                }), t.next = 33;
                                break;
                            case 25:
                                h = [], e.portableMode && (h = ["-d", e.clashPath]), (d = D.a.spawn(s, h, {
                                    cwd: o,
                                    windowsHide: !0
                                })).stdout.on("data", function() {
                                    var t = l()(c.a.mark((function t(i) {
                                        return c.a.wrap((function(t) {
                                            for (;;) switch (t.prev = t.next) {
                                                case 0:
                                                    if (/level=info msg="RESTful API listening at:/.test(i.toString())) return I.info("clash core startup success!"), t.t0 = e, t.next = 5, e.getClashStatus();
                                                    t.next = 8;
                                                    break;
                                                case 5:
                                                    t.t1 = t.sent, t.t2 = {
                                                        status: t.t1
                                                    }, t.t0.setClashStatus.call(t.t0, t.t2);
                                                case 8:
                                                    /level=fatal/.test(i.toString()) && I.error("clash核心启动失败!!!");
                                                case 9:
                                                case "end":
                                                    return t.stop()
                                            }
                                        }), t)
                                    })));
                                    return function(e) {
                                        return t.apply(this, arguments)
                                    }
                                }()), d.on("exit", (function() {})), "silent" !== a && (h = T.a.createWriteStream(i, {
                                    flags: "a"
                                }), d.stdout.pipe(h), d.stderr.pipe(h), e.setLogFilePath({
                                    path: i
                                })), e.clash = d, u.a.put(k.a.LAST_CLASH_PID, e.clash.pid);
                            case 33:
                                return t.abrupt("return");
                            case 34:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            sudoRunBAT: function(e) {
                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
                return new Promise((function(i, n) {
                    ! function() {
                        try {
                            return D.a.execSync("net session", {
                                windowsHide: !0
                            }), !0
                        } catch (e) {}
                        return !1
                    }() ? Object(F.exec)(e, {
                        name: "Clash for Windows"
                    }, (function(e, n, r) {
                        t && t(void 0 === e), i(void 0 === e)
                    })): D.a.exec(e, {
                        windowsHide: !0
                    }, (function(e, n, r) {
                        t && t(void 0 === e), i(void 0 === e)
                    }))
                }))
            },
            setupTapDevice: function() {
                var e = !(0 < arguments.length && void 0 !== arguments[0]) || arguments[0],
                    t = P.a.join(this.filesPath, "win", "common", "tun2socks"),
                    i = (o = {}, r()(o, g.e, "amd64"), r()(o, g.d, "i386"), o[Object(g.f)()]),
                    n = void 0 === (o = (s = null !== (n = u.a.get(k.a.TAP_INFO)) && void 0 !== n ? n : {}).ip) ? "10.0.0.1" : o,
                    o = void 0 === (o = s.subnet) ? "255.255.255.0" : o,
                    s = void 0 === (s = s.gateway) ? "10.0.0.0" : s;
                e = P.a.join(t, "".concat(e ? "add" : "remove", "_tap_device.bat")), s = '"'.concat(e, '" ').concat(i, " ").concat(n, " ").concat(o, " ").concat(s);
                return this.sudoRunBAT(s)
            },
            spawnTun2socks: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i, n, o, s, a, l, d;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (Object(g.i)() || Object(g.h)()) return t.abrupt("return");
                                t.next = 2;
                                break;
                            case 2:
                                if (I.info("Spawn go-tun2socks"), e.tun2socks && (e.killSpawned(e.tun2socks), e.tun2socks = null), i = e.mixedPort) {
                                    t.next = 7;
                                    break
                                }
                                return t.abrupt("return");
                            case 7:
                                a = null !== (d = u.a.get(k.a.TAP_INFO)) && void 0 !== d ? d : {}, s = a.ip, n = void 0 === s ? "10.0.0.1" : s, l = a.subnet, o = void 0 === l ? "255.255.255.0" : l, d = a.gateway, l = ["-tunName", "cfw-tap", "-tunDns", n, "-tunAddr", n, "-tunMask", o, "-tunGw", s = void 0 === d ? "10.0.0.0" : d, "-proxyServer", "127.0.0.1:" + i, "-loglevel", "none"], a = {}, r()(a, g.e, P.a.join(e.filesPath, "win", "x64")), r()(a, g.d, P.a.join(e.filesPath, "win", "ia32")), d = a[Object(g.f)()], e.tun2socks = D.a.spawn("go-tun2socks.exe", l, {
                                    cwd: d,
                                    windowsHide: !0
                                }), a = 10;
                            case 12:
                                if (!a--) {
                                    t.next = 27;
                                    break
                                }
                                if (t.prev = 13, l = D.a.execSync("route print ".concat(s, " mask ").concat(o), {
                                        windowsHide: !0
                                    }).toString(), d = function(e) {
                                        return e.replace(/\./g, "\\.")
                                    }, new RegExp("".concat(d(s), "\\s+?").concat(d(o), "[\\s\\S]+").concat(d(n))).test(l)) return D.a.execSync("route add 0.0.0.0 mask 0.0.0.0 ".concat(s, " metric 1"), {
                                    windowsHide: !0
                                }), t.abrupt("break", 27);
                                t.next = 19;
                                break;
                            case 19:
                                t.next = 23;
                                break;
                            case 21:
                                t.prev = 21, t.t0 = t.catch(13);
                            case 23:
                                return t.next = 25, Object(j.k)(1e3);
                            case 25:
                                t.next = 12;
                                break;
                            case 27:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [13, 21]
                    ])
                })))()
            },
            killSpawned: function(e) {
                if (e && (e = e.pid)) try {
                    D.a.execSync((Object(g.i)() || Object(g.h)() ? "kill -9 " : "taskkill /F /PID ").concat(e), {
                        windowsHide: !0
                    })
                } catch (e) {}
            },
            setRoutes: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = P.a.join(e.filesPath, "tun2socks"), i = P.a.join(i, "set_routes.bat"), t.abrupt("return", e.sudoRunBAT('"'.concat(i, '"')));
                            case 3:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            getClashStatus: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.prev = 0, t.next = 3, e.clashAxiosClient.get("script", {
                                    validateStatus: function(e) {
                                        return !0
                                    },
                                    timeout: 1e3
                                });
                            case 3:
                                return i = (i = t.sent).status, t.abrupt("return", 405 === i ? p.a.CONNECTED : p.a.DISCONNECTED);
                            case 8:
                                return t.prev = 8, t.t0 = t.catch(0), t.abrupt("return", p.a.DISCONNECTED);
                            case 11:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [0, 8]
                    ])
                })))()
            },
            checkForUpdate: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i, n, o, s, a, l, d, h, u, p, m, v, b, _;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (e.isSilentUpgraded) return I.info("silent upgrade done, stop checking"), t.abrupt("return");
                                t.next = 3;
                                break;
                            case 3:
                                return t.next = 5, f.ipcRenderer.invoke("app", "getVersion");
                            case 5:
                                return i = t.sent, I.info("check for app update, current: ".concat(i)), t.next = 9, A.a.get("https://api.github.com/repos/Fndroid/clash_for_windows_pkg/releases/latest");
                            case 9:
                                if (200 === (n = t.sent).status && (o = n.data.tag_name, (_ = function(e) {
                                        var t = 1;
                                        return e.split(".").reverse().reduce((function(e, i) {
                                            return i = +e + i * t, t *= 1e3, i
                                        }), 0)
                                    })(o) > _(i))) {
                                    a = Symbol(), l = Symbol(), d = Symbol(), h = Symbol(), _ = {}, r()(_, a, {}), r()(_, l, {}), r()(_, d, {}), r()(_, h, {}), u = _, p = J(n.data.assets);
                                    try {
                                        for (p.s(); !(m = p.n()).done;) v = m.value, (b = v.name) && (/\d+?\.\d+?\.\d+?-win\.7z/.test(b) ? u[a][g.e] = v : /\d+?\.\d+?\.\d+?-ia32\-win\.7z/.test(b) ? u[a][g.d] = v : /\d+?\.\d+?\.\d+?-arm64-mac\.7z/.test(b) ? u[a][g.b] = v : /\d+?\.\d+?\.\d+?-mac\.7z/.test(b) ? u[a][g.c] = v : /\d+?\.\d+?\.\d+?\.ia32\.exe/.test(b) ? u[l][g.d] = v : /\d+?\.\d+?\.\d+?\.exe/.test(b) ? u[l][g.e] = v : /arm64\.dmg/.test(b) ? u[d][g.b] = v : /\.dmg/.test(b) ? u[d][g.c] = v : /x64\-linux\.tar\.gz/.test(b) && (u[h][g.a] = v))
                                    } catch (t) {
                                        p.e(t)
                                    } finally {
                                        p.f()
                                    }
                                    _ = function(e) {
                                        var t, i;
                                        return null == u || null === (t = u[e]) || void 0 === t || null === (i = t[Object(g.f)()]) || void 0 === i ? void 0 : i.browser_download_url
                                    }, e.portableMode ? s = _(a) : (Object(g.i)() && (s = _(d)), Object(g.j)() && (s = _(l)), Object(g.h)() && (s = _(h))), e.newVersionInfo = {
                                        version: o,
                                        log: n.data.body,
                                        url: s || "https://github.com/Fndroid/clash_for_windows_pkg/releases",
                                        isPortable: e.portableMode
                                    }, Object(g.i)() && e.settings.silentUpdate && s && Object(Q.a)(s, o).then((function(t) {
                                        I.info("upgrade to ".concat(o, " success, path: ").concat(t)), e.setIsSilentUpgraded({
                                            isUpgraded: !0
                                        }), e.newVersionInfo = {}
                                    })).catch((function(e) {
                                        I.info("auto upgrade failed with error: ".concat(e))
                                    }))
                                }
                                case 11:
                                case "end":
                                    return t.stop()
                        }
                    }), t)
                })))()
            },
            loadConfData: function() {
                I.info("从一般加载数据 config.yaml");
                var e = P.a.join(this.clashPath, "config.yaml");
                try {
                    var t = T.a.readFileSync(e, "utf8").toString(),
                        i = R.a.parse(t, {
                            prettyErrors: !0
                        });
                    this.setConfData({
                        data: i
                    })
                } catch (n) {
                    e = "", !(t = n.linePos) || (i = t.start) && (t = i.line, i = i.col, e = ", on line: ".concat(t, ", at column: ").concat(i)), this.appendError({
                        error: "Error: ".concat(n).concat(e)
                    }), I.warn("无法加载常规 config.yaml 并出现错误: ".concat(n))
                }
            },
            mkdirPathSync: function(e) {
                return e !== P.a.dirname(e) && (!!T.a.existsSync(e) || (this.mkdirPathSync(P.a.dirname(e)) ? (T.a.mkdirSync(e), !0) : void 0))
            },
            initConfigFolder: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i, n, o, s, a, l, d, h, u, p;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (e.mkdirPathSync(e.clashPath), l = P.a.join(e.filesPath, "default/config.yaml"), d = P.a.join(e.clashPath, "config.yaml"), i = P.a.join(e.clashPath, "config.yml"), T.a.existsSync(i)) {
                                    try {
                                        T.a.unlinkSync(d)
                                    } catch (t) {}
                                    T.a.renameSync(i, d)
                                }
                                if (T.a.existsSync(d) && "" !== T.a.readFileSync(d, {
                                        encoding: "utf8"
                                    })) try {
                                    (n = R.a.parseDocument(T.a.readFileSync(d, "utf8"))).get("mixed-port") || (o = n.get("port"), s = n.get("socks-port"), a = o || s || 7890, n.delete("port"), n.delete("socks-port"), T.a.writeFileSync(d, "mixed-port: ".concat(a, "\n").concat(n.toString())))
                                } catch (t) {} else I.info("首次发布, 创建 config.yaml..."), T.a.copyFileSync(l, d);
                                if (l = P.a.join(e.filesPath, "default/Country.mmdb"), d = P.a.join(e.clashPath, "Country.mmdb"), T.a.existsSync(d) || T.a.copyFileSync(l, d), Object(g.j)()) return u = {}, r()(u, g.d, "ia32"), r()(u, g.e, "x64"), p = u[Object(g.f)()], h = P.a.join(e.filesPath, "win/".concat(p, "/wintun.dll")), u = P.a.join(e.clashPath, "wintun.dll"), t.next = 15, Object(j.b)();
                                t.next = 21;
                                break;
                            case 15:
                                if (t.t0 = t.sent, !t.t0) {
                                    t.next = 18;
                                    break
                                }
                                t.t0 = T.a.existsSync(u);
                            case 18:
                                if (!t.t0) {
                                    t.next = 20;
                                    break
                                }
                                T.a.unlinkSync(u);
                            case 20:
                                T.a.existsSync(u) || T.a.copyFileSync(h, u);
                            case 21:
                                p = P.a.join(e.clashPath, "logs"), T.a.existsSync(p) || T.a.mkdirSync(p);
                            case 23:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            initProfilesFolder: function() {
                var e = this.profilesPath;
                T.a.existsSync(e) || T.a.mkdirSync(e), e = P.a.join(this.profilesPath, "list.yml"), T.a.existsSync(e) || T.a.writeFileSync(e, "files: []\nindex: -1", {
                    flag: "ax"
                })
            },
            startChild: function(e) {
                if (!e || !e.hasOwnProperty("command")) return null;
                var t = e.args,
                    i = e.options;
                return D.a.spawn(e.command, void 0 === t ? [] : t, ie(ie({}, void 0 === i ? {} : i), {}, {
                    windowsHide: !0
                }))
            },
            spawnUserDefindExes: function() {
                if (this.confData) {
                    var e = [],
                        t = void 0 === (t = this.settings.childProcessText) ? "" : t;
                    try {
                        e = R.a.parse(t).processes || []
                    } catch (e) {}
                    var i, n = [];
                    for (i in e) {
                        var r = (s = e[i]).log,
                            o = (a = void 0 === (a = s.options) ? {} : a).cwd,
                            s = (l = this.startChild(e[i])).pid,
                            a = l.stderr,
                            l = l.stdout;
                        r && o && (a && a.pipe(T.a.createWriteStream(P.a.join(o, "cfw-child-process-err.log"), {
                            flags: "a"
                        })), l && l.pipe(T.a.createWriteStream(P.a.join(o, "cfw-child-process-out.log"), {
                            flags: "a"
                        }))), n.push(s)
                    }
                    u.a.put(k.a.LAST_USER_EXE_PIDS, n)
                }
            },
            preDownloadAds: function() {
                return l()(c.a.mark((function e() {
                    var t, i, n;
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, A.a.get("https://raw.githubusercontent.com/Fndroid/ads/master/ads_v2.json?t=" + (new Date).getTime());
                            case 2:
                                i = e.sent, t = i.status, i = i.data, 200 === t && (n = i.feedback) && u.a.put(k.a.AD_IMAGES, n);
                            case 5:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                })))()
            },
            profileUpdater: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    var i, n, r, o, s, a, l, d, h;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (!e.profiles || e.isAppSuspend) return t.abrupt("return");
                                t.next = 2;
                                break;
                            case 2:
                                return i = function() {
                                    return (new Date).getTime()
                                }, s = e.profiles.files, n = (void 0 === s ? [] : s).filter((function(t) {
                                    var i = t.interval,
                                        n = t.url,
                                        r = t.time;
                                    t = void 0 === (t = t.cron) ? "" : t;
                                    if (!n) return !1;
                                    try {
                                        var o = x()();
                                        if (0 < i) {
                                            var s = T.a.statSync(P.a.join(e.profilesPath, r)).mtime;
                                            if (s) {
                                                var a = e.profileUpdateFailed[n];
                                                if (void 0 !== a) {
                                                    if (!x()(a).add(i, "hours").isBefore(o)) return !1;
                                                    delete e.profileUpdateFailed[n]
                                                }
                                                return x()(s).add(i, "hours").isBefore(o)
                                            }
                                        }
                                        if (t) return new se(t).isMatchDate(o)
                                    } catch (t) {}
                                    return !1
                                })), t.next = 7, Promise.allSettled(n.map((function(e) {
                                    return e = e.url, Object(q.a)({
                                        url: e
                                    })
                                })));
                            case 7:
                                r = t.sent, o = 0;
                            case 9:
                                if (!(o < r.length)) {
                                    t.next = 19;
                                    break
                                }
                                if (l = r[o].value, s = l.success, a = l.message, d = l.targetIndex, l = n[o].url, s && d === e.profiles.index) return t.next = 15, e.refreshProfile();
                                t.next = 15;
                                break;
                            case 15:
                                a && (I.warn("无法使用 url 更新配置资料: ".concat(l)), Object(j.h)("配置资料更新失败", l), e.profileUpdateFailed.hasOwnProperty(l) || (e.profileUpdateFailed[l] = i()));
                            case 16:
                                o++, t.next = 9;
                                break;
                            case 19:
                                d = e.profiles.files, h = (void 0 === d ? [] : d).map((function(e) {
                                    return e.time
                                })), T.a.readdir(P.a.join(e.profilesPath), (function(t, i) {
                                    !t && 0 < i.length && i.forEach((function(t) {
                                        var i, n;
                                        /^\d+\.yml$/.test(t) && (i = !1, (i = (n = T.a.statSync(P.a.join(e.profilesPath, t)).mtimeMs) ? x()(n).isBefore(x()().subtract(1, "month")) : i) && !h.includes(t) && T.a.unlinkSync(P.a.join(e.profilesPath, t)))
                                    }))
                                }));
                            case 22:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            rebindShortcut: function(e, t, i) {
                var n = this;
                return l()(c.a.mark((function r() {
                    var o;
                    return c.a.wrap((function(r) {
                        for (;;) switch (r.prev = r.next) {
                            case 0:
                                if (t) return r.prev = 1, r.next = 4, f.ipcRenderer.invoke("globalShortcut", "unregister", t);
                                r.next = 9;
                                break;
                            case 4:
                                delete n.shortcuts[t], r.next = 9;
                                break;
                            case 7:
                                r.prev = 7, r.t0 = r.catch(1);
                            case 9:
                                if (e) return r.prev = 10, r.next = 13, f.ipcRenderer.invoke("globalShortcut", "register", e);
                                r.next = 23;
                                break;
                            case 13:
                                return r.next = 15, f.ipcRenderer.invoke("globalShortcut", "isRegistered", e);
                            case 15:
                                return (o = r.sent) && (n.shortcuts[e] = i), r.abrupt("return", o);
                            case 20:
                                r.prev = 20, r.t1 = r.catch(10), console.error(r.t1);
                            case 23:
                                return r.abrupt("return", !1);
                            case 24:
                            case "end":
                                return r.stop()
                        }
                    }), r, null, [
                        [1, 7],
                        [10, 20]
                    ])
                })))()
            },
            detectInterfaceName: function() {
                var e = Object(B.a)();
                e && e !== this.detectedInterfaceName && this.setDetectedInterfaceName({
                    interfaceName: e
                })
            },
            quit: function() {
                var e = this;
                return l()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return I.info("应用退出, 关闭系统代理"), t.next = 3, e.killClashCore();
                            case 3:
                                if (null !== e.userDNS) try {
                                    Z(e.userDNS)
                                } catch (t) {}
                                if (t.prev = 4, e.isSystemProxyOn) return t.next = 8, e.$setSystemProxy(!1);
                                t.next = 8;
                                break;
                            case 8:
                                t.next = 12;
                                break;
                            case 10:
                                t.prev = 10, t.t0 = t.catch(4);
                            case 12:
                                return t.prev = 12, f.ipcRenderer.send("cleanup-done"), t.finish(12);
                            case 15:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [4, 10, 12, 15]
                    ])
                })))()
            }
        }),
        mounted: function() {
            window.addEventListener("online", this.detectInterfaceName)
        },
        beforeDestroy: function() {},
        beforeMount: function() {
            var e = this;
            return l()(c.a.mark((function t() {
                var i, n, o, a, d, h, m, v, b, _, w, y, C, x, S, L, O, E;
                return c.a.wrap((function(t) {
                    for (;;) switch (t.prev = t.next) {
                        case 0:
                            return e.startTime = (new Date).getTime(), t.t0 = e, t.next = 4, f.ipcRenderer.invoke("app", "isPackaged");
                        case 4:
                            if (t.t1 = !t.sent, t.t2 = {
                                    isDevMode: t.t1
                                }, t.t0.setIsDevMode.call(t.t0, t.t2), I.info("应用程序以模式开始: ".concat(e.devMode ? "dev" : "production")), e.$router.replace({
                                    path: e.currentRoutePath
                                }).catch((function(e) {})), Object(g.j)() && function() {
                                    return U.apply(this, arguments)
                                }().then((function(t) {
                                    I.info("http服务器开始于: ".concat(e.innerServerPort))
                                })).catch((function(e) {
                                    I.info("http 服务器因错误而无法启动: ".concat(e))
                                })), !e.devMode) {
                                t.next = 14;
                                break
                            }
                            t.t3 = "", t.next = 17;
                            break;
                        case 14:
                            return t.next = 16, f.ipcRenderer.invoke("app", "getPath", "exe");
                        case 16:
                            t.t3 = t.sent;
                        case 17:
                            i = t.t3, e.setExePath({
                                path: i
                            }), (b = u.a.get(k.a.LAST_CLASH_PID)) && e.killSpawned({
                                pid: b
                            }), v = u.a.get(k.a.LAST_USER_EXE_PIDS) || [], n = J(v);
                            try {
                                for (n.s(); !(o = n.n()).done;) a = o.value, e.killSpawned({
                                    pid: a
                                })
                            } catch (t) {
                                n.e(t)
                            } finally {
                                n.f()
                            }
                            return t.t4 = e, t.next = 27, f.ipcRenderer.invoke("nativeTheme", "shouldUseDarkColors");
                        case 27:
                            return t.t5 = t.sent, t.t6 = {
                                shouldUseDarkTheme: t.t5
                            }, t.t4.setShouldUseDarkTheme.call(t.t4, t.t6), f.ipcRenderer.on("native-theme-updated", (function(t, i) {
                                e.setShouldUseDarkTheme({
                                    shouldUseDarkTheme: i
                                })
                            })), f.ipcRenderer.on("shortcut-pressed", function() {
                                var t = l()(c.a.mark((function t(i, n) {
                                    var r;
                                    return c.a.wrap((function(t) {
                                        for (;;) switch (t.prev = t.next) {
                                            case 0:
                                                return r = e.shortcuts[n], t.next = 3, r();
                                            case 3:
                                            case "end":
                                                return t.stop()
                                        }
                                    }), t)
                                })));
                                return function(e, i) {
                                    return t.apply(this, arguments)
                                }
                            }()), f.ipcRenderer.send("clash-core-status-change", 0), f.ipcRenderer.on("app-exit", e.quit), f.ipcRenderer.on("power-event", (function(t, i) {
                                e.setIsAppSuspend({
                                    isSuspend: "suspend" === i
                                })
                            })), f.ipcRenderer.on("system-proxy-changed", function() {
                                var t = l()(c.a.mark((function t(i, n) {
                                    return c.a.wrap((function(t) {
                                        for (;;) switch (t.prev = t.next) {
                                            case 0:
                                                return t.next = 2, e.$setSystemProxy(n, e.confData);
                                            case 2:
                                                if (!t.sent) {
                                                    t.next = 4;
                                                    break
                                                }
                                                e.setIsSystemProxyOn({
                                                    isOn: n
                                                });
                                            case 4:
                                            case "end":
                                                return t.stop()
                                        }
                                    }), t)
                                })));
                                return function(e, i) {
                                    return t.apply(this, arguments)
                                }
                            }()), f.ipcRenderer.send("mixin-changed", e.isMixinEnable), f.ipcRenderer.on("mixin-changed", (function(t, i) {
                                e.changeIsMixinEnable({
                                    isMixin: i
                                }), e.refreshProfile()
                            })), f.ipcRenderer.send("tun-changed", e.isTunEnable), f.ipcRenderer.on("tun-changed", (function(t, i) {
                                e.chagneIsTunEnable({
                                    isTun: i
                                }), e.refreshProfile()
                            })), f.ipcRenderer.on("run-tray-script", e.runTrayScript), f.ipcRenderer.on("mode-changed", (function(t, i) {
                                e.switchMode(i)
                            })), f.ipcRenderer.on("app-open", function() {
                                var t = l()(c.a.mark((function t(i, n) {
                                    var r, o, s;
                                    return c.a.wrap((function(t) {
                                        for (;;) switch (t.prev = t.next) {
                                            case 0:
                                                if (!n.find((function(e) {
                                                        return /clash:\/\/install-config\/?\?url=(.+?)(?=$|&)/.test(e)
                                                    }))) {
                                                    t.next = 11;
                                                    break
                                                }
                                                if (o = decodeURIComponent(RegExp.$1.trim()), /^https?:\/\//.test(o)) return t.next = 5, Object(q.a)({
                                                    url: o
                                                });
                                                t.next = 11;
                                                break;
                                            case 5:
                                                s = t.sent, r = s.success, o = s.message, s = s.targetIndex, Object(j.h)("Profile", r ? "配置资料已成功下载." : o), r && (e.changeProfileIndex({
                                                    index: s
                                                }), e.refreshProfile());
                                            case 11:
                                                if (n.find((function(e) {
                                                        return /clash:\/\/quit/.test(e)
                                                    }))) return t.next = 14, e.quit();
                                                t.next = 14;
                                                break;
                                            case 14:
                                            case "end":
                                                return t.stop()
                                        }
                                    }), t)
                                })));
                                return function(e, i) {
                                    return t.apply(this, arguments)
                                }
                            }()), f.ipcRenderer.on("menu-item-change", (function(t, i) {
                                e.$router.replace({
                                    path: "/home/".concat(i)
                                })
                            })), f.ipcRenderer.on("window-event", (function(t, i) {
                                ["show", "hide"].includes(i) ? e.setIsWindowShow({
                                    isShow: "show" === i
                                }) : "close" !== i || void 0 !== (i = e.settings.lightweightMode) && i && !e.isLocalMode && (u.a.put(k.a.IS_LIGHTWEIGHT_MODE_CLOSE, !0), f.ipcRenderer.send("cleanup-done"))
                            })), t.next = 47, f.ipcRenderer.invoke("app", "getPath", "home");
                        case 47:
                            return C = t.sent, w = P.a.join(i, "../data"), _ = P.a.join(C, "/.config/clash"), T.a.existsSync(w) && (_ = w, e.portableMode = !0), e.userPath = C, e.setClashPath({
                                path: _
                            }), t.next = 55, e.initConfigFolder();
                        case 55:
                            e.loadConfData(), Object(g.i)() && X().then((function(t) {
                                e.userDNS = t
                            })).catch((function(e) {
                                I.info("faile to get user dns setting with error: ".concat(e))
                            })), d = u.a.get(k.a.IS_LIGHTWEIGHT_MODE_CLOSE) || !1, h = {};
                            try {
                                m = T.a.readFileSync(P.a.join(e.clashPath, "cfw-settings.yaml")).toString(), h = R.a.parse(m)
                            } catch (t) {}
                            if (b = (y = h).showNewVersionIcon, v = void 0 === b || b, w = y.hideAfterStartup, C = void 0 !== w && w, _ = y.randomControllerPort, b = void 0 === _ || _, w = y.runTimeFormat, _ = void 0 === w ? "hh : mm : ss" : w, w = void 0 === (w = y.trayOrders) ? [
                                    ["icon"],
                                    ["status", "traffic", "text"]
                                ] : w, y = void 0 !== (y = y.hideTrayIcon) && y, e.setSettingsObject({
                                    obj: ie(ie({}, h), {}, {
                                        showNewVersionIcon: v,
                                        hideAfterStartup: C,
                                        randomControllerPort: b,
                                        runTimeFormat: _,
                                        trayOrders: w,
                                        hideTrayIcon: y
                                    })
                                }), !y && !d && C || f.ipcRenderer.invoke("window-control", "show"), C = e.settings.fontFamily, e.setFont(C), C = e.settings.profilePath, e.setProfilesPath({
                                    path: C || P.a.join(e.clashPath, "profiles")
                                }), e.initProfilesFolder(), e.loadProfiles(), C = void 0 === (C = e.settings.randomControllerPort) || C, e.devMode || d || !C) {
                                t.next = 84;
                                break
                            }
                            return t.prev = 71, t.next = 74, oe();
                        case 74:
                            return L = t.sent, x = "external-controller", S = "127.0.0.1:".concat(L), t.next = 79, Object(j.j)(P.a.join(e.clashPath, "config.yaml"), x, S);
                        case 79:
                            e.setConfData({
                                data: ie(ie({}, e.confData), {}, r()({}, x, S))
                            }), t.next = 84;
                            break;
                        case 82:
                            t.prev = 82, t.t7 = t.catch(71);
                        case 84:
                            return t.next = 86, ae();
                        case 86:
                            return L = t.sent, e.setIsLocalMode({
                                isLocal: L !== le.Active
                            }), O = 0, (E = function() {
                                var t = l()(c.a.mark((function t() {
                                    var i;
                                    return c.a.wrap((function(t) {
                                        for (;;) switch (t.prev = t.next) {
                                            case 0:
                                                if ((e.clashStatus !== p.a.CONNECTED || e.isWindowShow) && e.clashAxiosFlyingRequestCount < 5) return t.next = 3, e.getClashStatus();
                                                t.next = 12;
                                                break;
                                            case 3:
                                                i = t.sent, t.t0 = i, t.next = t.t0 === p.a.CONNECTED ? 7 : t.t0 === p.a.DISCONNECTED ? 9 : 11;
                                                break;
                                            case 7:
                                                return O = 0, t.abrupt("break", 11);
                                            case 9:
                                                return O += 1, t.abrupt("break", 11);
                                            case 11:
                                                O >= (i === p.a.CONNECTED ? 0 : 5) && (O = 0, e.setClashStatus({
                                                    status: i
                                                }));
                                            case 12:
                                            case "end":
                                                return t.stop()
                                        }
                                    }), t)
                                })));
                                return function() {
                                    return t.apply(this, arguments)
                                }
                            }())(), s()(Array(5)).forEach((function(e, t) {
                                setTimeout(E, 500 + 500 * t)
                            })), setInterval(E, 3e3), t.next = 95, e.handlerRestartClash();
                        case 95:
                            u.a.put(k.a.IS_LIGHTWEIGHT_MODE_CLOSE, !1), e.showStartup || (e.showStartup = !0, Object(j.h)("Clash 正在后台运行", "享受您的自由时间!")), e.detectInterfaceName(), e.spawnUserDefindExes(), e.checkForUpdate().then((function(e) {})).catch((function(e) {
                                return console.error(e)
                            })), setInterval(e.checkForUpdate, 216e5), e.preDownloadAds().then((function(e) {})).catch((function(e) {
                                return console.error(e)
                            })), setInterval(e.profileUpdater, 6e4), e.profileUpdater(), re.bind(["command+f12", "ctrl+f12"], (function() {
                                return f.ipcRenderer.invoke("webContent", "toggleDevTools"), !1
                            })), re.bind("esc", (function(e) {
                                if (!e.target.className.split(" ").includes("no-esc")) return f.ipcRenderer.invoke("window", "close"), !1
                            }), "keydown");
                        case 106:
                        case "end":
                            return t.stop()
                    }
                }), t, null, [
                    [71, 82]
                ])
            })))()
        }
    }, i(282), i(284), i(286), h = Object(d.a)(h, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            staticClass: "wrapper",
            class: e.themeClass
        }, ["2077" === e.theme ? t("img", {
            staticClass: "cloud opacicy",
            attrs: {
                src: "static/imgs/2077.png"
            }
        }) : e._e(), e._v(" "), "red" === e.theme ? t("img", {
            staticClass: "cloud opacicy",
            attrs: {
                src: "static/imgs/national_day.png"
            }
        }) : e._e(), e._v(" "), t("StatusBar"), e._v(" "), t("main", [t("div", {
            staticClass: "left-side"
        }, [t("main-menu", {
            attrs: {
                "download-progress": e.pkgDownloadProgress,
                "start-time": e.startTime
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "right-side"
        }, [t("keep-alive", [e.$route.meta.keepAlive ? t("router-view", {
            on: {
                refreshProfile: e.refreshProfile
            }
        }) : e._e()], 1), e._v(" "), e.$route.meta.keepAlive ? e._e() : t("router-view", {
            on: {
                refreshProfile: e.refreshProfile
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "clash-status-main"
        }, [t("div", {
            class: e.statusIcon
        }), e._v(" "), t("div", {
            staticClass: "clash-status-hint",
            on: {
                click: function() {
                    return e.showLogsFolder()
                }
            }
        }, [e._v("\n        " + e._s(e.statusHint) + "\n      ")])])])], 1)
    }), [], !1, null, "5f14473a", null);
    t.default = h.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(105),
        r = i.n(n),
        o = i(10),
        s = i.n(o),
        a = i(18),
        l = i.n(a),
        d = i(3),
        c = i.n(d),
        h = i(27),
        u = i(12),
        p = i.n(u),
        g = i(16),
        f = i.n(g),
        m = i(61),
        v = i.n(m),
        b = i(147),
        _ = i.n(b),
        w = i(168),
        y = i(60),
        C = i.n(y),
        x = (n = i(251), i.n(n)),
        S = (o = i(252), i.n(o)),
        k = i(77),
        L = i(48),
        O = i(38),
        E = i(35),
        N = i(127),
        D = i(19),
        I = i(22),
        T = i(40);

    function M(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    a = {
        props: [],
        data: function() {
            return {
                logs: "",
                intervalID: null
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? M(Object(i), !0).forEach((function(t) {
                    l()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : M(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(h.mapState)({
            clashPath: function(e) {
                return e.app.clashPath
            },
            logFilePath: function(e) {
                return e.app.logFilePath
            },
            errors: function(e) {
                return e.app.errors
            }
        })),
        methods: {
            openLogsFolder: function(e) {
                this.$parent.$parent.showLogsFolder(!0)
            },
            openHomeDir: function() {
                this.clashPath && I.shell.openPath(this.clashPath)
            },
            autoFix: function(e) {
                var t = this;
                return s()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return e.next = 2, Object(T.g)({
                                    title: "Clash for Windows",
                                    type: "warning",
                                    message: "Please confirm",
                                    detail: "config.yaml and country.mmdb will be removed.",
                                    buttons: ["是", "否"]
                                });
                            case 2:
                                0 === e.sent.response && t.$parent.autoFix();
                            case 5:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                })))()
            }
        },
        mounted: function() {
            function e() {
                if (t.clashPath && t.logFilePath) try {
                    var e = Object(g.readFileSync)(t.logFilePath).toString().split("\n").filter((function(e) {
                        return /level=fatal/.test(e)
                    })).join("<br /><br />");
                    e ? t.logs = e : 0 < t.errors.length && (t.logs = t.errors.join("<br /><br />"))
                } catch (e) {}
            }
            var t = this;
            this.intervalID = setInterval(e, 2e3), e()
        },
        beforeDestroy: function() {
            this.intervalID && (clearInterval(this.intervalID), this.intervalID = null)
        }
    }, i(288), i(290), d = i(30), u = Object(d.a)(a, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            attrs: {
                id: "error-view-main"
            }
        }, [e.logs ? t("div", {
            staticClass: "error-hints"
        }, [t("div", {
            attrs: {
                id: "error-title"
            }
        }, [e._v("错误")]), e._v(" "), t("div", {
            class: ["error-content-" + e.theme],
            domProps: {
                innerHTML: e._s(e.logs)
            }
        }, [e._v("{{}}")]), e._v(" "), t("div", {
            staticClass: "error-btns"
        }, [t("div", {
            class: ["error-hint-" + e.theme],
            on: {
                click: e.openHomeDir
            }
        }, [e._v("\n        主目录\n      ")]), e._v(" "), t("div", {
            class: ["error-hint-" + e.theme],
            on: {
                click: e.openLogsFolder
            }
        }, [e._v("\n        日志文件夹\n      ")]), e._v(" "), t("div", {
            class: ["error-hint-" + e.theme],
            on: {
                click: e.autoFix
            }
        }, [e._v("\n        尝试修复\n      ")])])]) : t("div", {
            staticClass: "loading-hint"
        }, [e._v("正在加载...")])])
    }), [], !1, null, "09aa3bae", null).exports, m = i(150), b = i(151), y = i(173), n = i(52);
    var P = i.n(n),
        A = (o = {
            name: "EditListView",
            model: {
                prop: "list",
                event: "changed"
            },
            props: {
                list: {
                    type: Array,
                    default: function() {
                        return []
                    }
                }
            },
            data: function() {
                return {}
            },
            methods: {
                handleAddItem: function() {
                    this.$emit("changed", [].concat(P()(this.list), [""]))
                },
                handleRemoveItem: function(e) {
                    this.$emit("changed", [].concat(P()(this.list.slice(0, e)), P()(this.list.slice(e + 1))))
                },
                handleChangeItem: function(e, t) {
                    this.$emit("changed", [].concat(P()(this.list.slice(0, t)), [e.target.value], P()(this.list.slice(t + 1))))
                }
            }
        }, a = (i(298), Object(d.a)(o, (function() {
            var e = this,
                t = e.$createElement,
                i = e._self._c || t;
            return i("div", {
                staticClass: "main-edit-list-view"
            }, [e._l(e.list, (function(t, n) {
                return i("div", {
                    key: n,
                    staticClass: "item"
                }, [i("input", {
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: t
                    },
                    on: {
                        input: function(t) {
                            return e.handleChangeItem(t, n)
                        }
                    }
                }), e._v(" "), i("div", {
                    staticClass: "btn btn-remove clickable",
                    on: {
                        click: function(t) {
                            return e.handleRemoveItem(n)
                        }
                    }
                }, [i("svg", {
                    attrs: {
                        xmlns: "http://www.w3.org/2000/svg",
                        viewBox: "0 0 24 24",
                        fill: "white"
                    }
                }, [i("path", {
                    attrs: {
                        d: "M0 0h24v24H0V0z",
                        fill: "none"
                    }
                }), e._v(" "), i("path", {
                    attrs: {
                        d: "M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z"
                    }
                })])])])
            })), e._v(" "), i("div", {
                staticClass: "btn btn-add clickable",
                on: {
                    click: e.handleAddItem
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24",
                    fill: "white"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M18 13h-5v5c0 .55-.45 1-1 1s-1-.45-1-1v-5H6c-.55 0-1-.45-1-1s.45-1 1-1h5V6c0-.55.45-1 1-1s1 .45 1 1v5h5c.55 0 1 .45 1 1s-.45 1-1 1z"
                }
            })])])], 2)
        }), [], !1, null, "13e718af", null).exports), n = i(45), i.n(n));
    o = i(121);

    function R(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function F(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? R(Object(i), !0).forEach((function(t) {
                l()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : R(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }

    function j(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function B(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function V(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? B(Object(i), !0).forEach((function(t) {
                l()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : B(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    n = {
        name: "TunSettingsView",
        components: {
            SelectView: m.a,
            SwitchView: b.a,
            SimpleInput: y.a,
            EditList: a,
            EscCapture: o.a
        },
        data: function() {
            return {
                stackType: 0,
                nameServers: ["114.114.114.114", "223.5.5.5", "8.8.8.8"],
                fallbackServers: [],
                fakeIPFilters: Object(D.j)() ? ["dns.msftncsi.com", "www.msftncsi.com", "www.msftconnecttest.com"] : Object(D.i)() ? ["apps.apple.com"] : [],
                isAutoDetectInterface: !0,
                interfaceName: ""
            }
        },
        computed: F(F({}, Object(h.mapState)({
            tunSettings: function(e) {
                return e.app.tunSettings
            }
        })), {}, {
            obj: function() {
                return Object(T.e)(this.$data)
            },
            text: function() {
                return A.a.stringify(this.obj)
            }
        }),
        watch: {},
        methods: F(F({}, Object(h.mapMutations)({
            setTunSettings: "SET_TUN_SETTINGS"
        })), {}, {
            handleSave: function() {
                this.setTunSettings({
                    settings: this.$data
                }), this.$emit("close")
            }
        }),
        mounted: function() {
            var e = (o = this.tunSettings || {}).nameServers,
                t = o.fallbackServers,
                i = o.fakeIPFilters,
                n = o.stackType,
                r = o.isAutoDetectInterface,
                o = o.interfaceName;
            [0, 1].includes(n) && (this.stackType = n), e && (this.nameServers = e), t && (this.fallbackServers = t), i && (this.fakeIPFilters = i), void 0 !== r && (this.isAutoDetectInterface = r), o && (this.interfaceName = o)
        },
        beforeDestroy: function() {}
    }, i(300), y = Object(d.a)(n, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("EscCapture", {
            staticClass: "main-tun-settings-view",
            on: {
                keydown: function(t) {
                    return e.$emit("close")
                },
                click: function(t) {
                    return e.$emit("close")
                }
            }
        }, [t("div", {
            staticClass: "content",
            on: {
                click: function(e) {
                    e.stopPropagation()
                }
            }
        }, [t("div", {
            staticClass: "title"
        }, [e._v("TUN 模式设置")]), e._v(" "), t("div", {
            staticClass: "pannel"
        }, [t("div", {
            staticClass: "left"
        }, [t("div", [t("div", [e._v("DNS 服务器")]), e._v(" "), t("EditList", {
            model: {
                value: e.nameServers,
                callback: function(t) {
                    e.nameServers = t
                },
                expression: "nameServers"
            }
        })], 1), e._v(" "), t("div", [t("div", [e._v("后备 DNS 服务器")]), e._v(" "), t("EditList", {
            model: {
                value: e.fallbackServers,
                callback: function(t) {
                    e.fallbackServers = t
                },
                expression: "fallbackServers"
            }
        })], 1), e._v(" "), t("div", [t("div", [e._v("Fake IP过滤器")]), e._v(" "), t("EditList", {
            model: {
                value: e.fakeIPFilters,
                callback: function(t) {
                    e.fakeIPFilters = t
                },
                expression: "fakeIPFilters"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "flex"
        }, [t("div", [e._v("TUN 码(TUN Stack)")]), e._v(" "), t("SelectView", {
            attrs: {
                items: ["gvisor", "system"]
            },
            model: {
                value: e.stackType,
                callback: function(t) {
                    e.stackType = t
                },
                expression: "stackType"
            }
        })], 1), e._v(" "), t("div", {
            staticClass: "flex"
        }, [t("div", [e._v("自动检测接口")]), e._v(" "), t("SwitchView", {
            model: {
                value: e.isAutoDetectInterface,
                callback: function(t) {
                    e.isAutoDetectInterface = t
                },
                expression: "isAutoDetectInterface"
            }
        })], 1), e._v(" "), e.isAutoDetectInterface ? e._e() : t("div", {
            staticClass: "flex"
        }, [t("div", [e._v("接口名称")]), e._v(" "), t("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.interfaceName,
                expression: "interfaceName"
            }],
            attrs: {
                type: "text"
            },
            domProps: {
                value: e.interfaceName
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.interfaceName = t.target.value)
                }
            }
        })])]), e._v(" "), t("div", {
            staticClass: "right"
        }, [t("pre", [e._v(e._s(e.text))])])]), e._v(" "), t("div", {
            staticClass: "btn clickable",
            on: {
                click: e.handleSave
            }
        }, [e._v("保存")])])])
    }), [], !1, null, "6f9eeaba", null).exports, a = {
        name: "info-icon",
        data: function() {
            return {
                isShowContent: !1
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? j(Object(i), !0).forEach((function(t) {
                    l()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : j(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(h.mapState)({})),
        methods: {
            handleContentClick: function(e) {
                !(e = e.target) || (e = e.href) && I.shell.openExternal(e)
            }
        }
    }, i(302), o = Object(d.a)(a, (function() {
        var e = this,
            t = e.$createElement;
        return (t = e._self._c || t)("div", {
            staticClass: "info-icon-main",
            on: {
                mouseenter: function(t) {
                    e.isShowContent = !0
                },
                mouseleave: function(t) {
                    e.isShowContent = !1
                }
            }
        }, [e.isShowContent ? t("div", {
            class: ["content-" + e.theme],
            on: {
                click: e.handleContentClick
            }
        }, [e._t("default")], 2) : e._e(), e._v(" "), t("svg", {
            class: ["svg-" + e.theme],
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                width: "16px",
                height: "16px"
            }
        }, [t("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), t("path", {
            attrs: {
                d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1zm1-8h-2V7h2v2z"
            }
        })])])
    }), [], !1, null, "6b34dc98", null).exports, n = i(134), i(146);
    var W = ((a = i(190)("./service_".concat(process.platform))).status, a.statusService, a.needUpdate),
        z = a.updateService,
        H = a.installService,
        U = a.uninstallService;
    h = {
        components: {
            ErrorView: u,
            TunSettingsView: y,
            SwitchView: b.a,
            SelectView: m.a,
            InfoIcon: o,
            Hint: n.a
        },
        props: [],
        data: function() {
            return {
                iconPath: "static/imgs/logo2.png",
                title: "Clash for Windows",
                isAllowLan: !1,
                port: 0,
                logLevel: "unknow",
                isIPV6: !1,
                geoipUpdateTime: "",
                systemProxyLoading: !0,
                autoLaunch: E.a.get(O.a.AUTO_LAUNCH) || !1,
                autoLaunchLoading: !0,
                protableMode: !1,
                version: "",
                showInterfaces: !1,
                networkInterfaces: [],
                clashCoreVersion: "",
                serviceNeedUpdate: !1,
                isTunSettingsVisible: !1
            }
        },
        watch: {
            status: function() {
                this.setupSwitches()
            },
            isWindowShow: function(e) {
                e && (this.setupComponent(), this.setupSwitches())
            },
            isLaunching: function(e) {
                e || this.setupComponent()
            },
            clashStatus: function(e) {
                e === L.a.CONNECTED && this.setupComponent()
            }
        },
        computed: V(V(V({}, Object(h.mapState)({
            clashPath: function(e) {
                return e.app.clashPath
            },
            clashStatus: function(e) {
                return e.app.clashStatus
            },
            confData: function(e) {
                return e.app.confData
            },
            isMixinEnable: function(e) {
                return e.app.isMixinEnable
            },
            isTunEnable: function(e) {
                return e.app.isTunEnable
            },
            status: function(e) {
                return e.app.status
            },
            isWindowShow: function(e) {
                return e.app.isWindowShow
            },
            isLocalMode: function(e) {
                return e.app.isLocalMode
            },
            isLaunching: function(e) {
                return e.app.isLaunching
            },
            isSystemProxyOn: function(e) {
                return e.app.isSystemProxyOn
            },
            isSilentUpgraded: function(e) {
                return e.app.isSilentUpgraded
            },
            updateDownloadProgress: function(e) {
                return e.app.updateDownloadProgress
            }
        })), Object(h.mapGetters)(["resourcesPath", "filesPath", "mixedPort", "clashAxiosClient", "controllerPort"])), {}, {
            autoLaunchHint: function() {
                return Object(D.i)() ? "Start with macOS" : Object(D.j)() ? "开机时运行" : Object(D.h)() ? "Start with Linux" : void 0
            },
            isShowNewIcon: function() {
                var e = this.settings.showNewVersionIcon,
                    t = this.$parent.newVersionInfo.url;
                return (void 0 === e || e) && t
            }
        }),
        methods: V(V({}, Object(h.mapMutations)({
            changeIsMixinEnable: "CHANGE_IS_MIXIN_ENABLE",
            changeIsTunEnable: "CHANGE_IS_TUN_ENABLE",
            setIsLocalMode: "SET_IS_LOCAL_MODE",
            setConfData: "SET_CONF_DATA",
            setIsSystemProxyOn: "SET_IS_SYSTEM_PROXY_ON"
        })), {}, {
            handleEditMixin: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n, r, o;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return r = e.settings, n = r.mixinText, i = void 0 === n ? "mixin: # object\n" : n, o = r.mixinType, n = void 0 === o ? 0 : o, o = r.mixinCode, r = void 0 === o ? "module.exports.parse = ({ content, name, url }, { yaml, axios, notify }) => {\n  return content\n}" : o, t.next = 3, e.$code({
                                    code: 0 === n ? i : r,
                                    language: 0 === n ? "yaml" : "javascript"
                                });
                            case 3:
                                (o = void 0 === (o = (o = t.sent).code) ? "" : o) !== (0 === n ? i : r) && (0 === n ? e.settings.mixinText = o : e.settings.mixinCode = o, e.$parent.refreshProfile());
                            case 7:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            installService: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n, r;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.prev = 0, i = ["安装", "卸载"], e.serviceNeedUpdate && i.push("Update"), n = Object(D.h)() ? "<br/><br/><strong>nftables</strong> and <strong>iproute2</strong> are required, please install them first!!!" : "", t.next = 6, e.$select({
                                    title: "服务管理",
                                    message: "这可能需要一段时间.<br/>该APP将自动重新启动.".concat(n, "<br/><br/>当前状态: ").concat(e.isLocalMode ? "未安装" : "已安装"),
                                    items: i
                                });
                            case 6:
                                if (0 === (r = t.sent)) return t.next = 10, H();
                                t.next = 12;
                                break;
                            case 10:
                                if (!t.sent) {
                                    t.next = 12;
                                    break
                                }
                                e.$parent.devMode || e.reloadElectron();
                            case 12:
                                if (1 === r) return t.next = 15, U();
                                t.next = 17;
                                break;
                            case 15:
                                if (!t.sent) {
                                    t.next = 17;
                                    break
                                }
                                e.$parent.devMode || e.reloadElectron();
                            case 17:
                                if (2 === r) return t.next = 20, z();
                                t.next = 22;
                                break;
                            case 20:
                                if (!t.sent) {
                                    t.next = 22;
                                    break
                                }
                                e.$parent.devMode || e.reloadElectron();
                            case 22:
                                console.log("service done"), t.next = 27;
                                break;
                            case 25:
                                t.prev = 25, t.t0 = t.catch(0);
                            case 27:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [0, 25]
                    ])
                })))()
            },
            handleAllowLANChange: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = !e.isAllowLan, t.next = 3, e.clashAxiosClient.patch("/configs", {
                                    "allow-lan": i
                                });
                            case 3:
                                if (204 === t.sent.status) return e.isAllowLan = i, t.next = 8, Object(T.j)(p.a.join(e.clashPath, "config.yaml"), "allow-lan", i);
                                t.next = 9;
                                break;
                            case 8:
                                e.setConfData({
                                    data: V(V({}, e.confData), {}, {
                                        "allow-lan": i
                                    })
                                });
                            case 9:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleIPV6Change: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = !e.isIPV6, t.next = 3, e.clashAxiosClient.patch("/configs", {
                                    ipv6: i
                                });
                            case 3:
                                if (204 === t.sent.status) return e.isIPV6 = i, t.next = 9, Object(T.j)(p.a.join(e.clashPath, "config.yaml"), "ipv6", i);
                                t.next = 10;
                                break;
                            case 9:
                                e.setConfData({
                                    data: V(V({}, e.confData), {}, {
                                        ipv6: i
                                    })
                                });
                            case 10:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleEditLogLevel: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n, r;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.prev = 0, i = ["silent", "error", "warning", "info", "debug"], t.next = 4, e.$select({
                                    title: "更改日志级别",
                                    message: "静默:&nbsp;&nbsp;&nbsp;下次启动时不再生成.log文件<br/>错误:&nbsp;&nbsp;&nbsp;记录错误和异常信息到.log文件<br/>警告:&nbsp;&nbsp;&nbsp;记录错误，异常和警告信息到.log文件<br/>信息:&nbsp;&nbsp;&nbsp;记录运行时的信息到.log文件<br/>调试:&nbsp;&nbsp;&nbsp;记录一切运行时产生的信息(通常用于开发<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;者调试，诊断问题)",
                                    items: i
                                });
                            case 4:
                                return r = t.sent, n = i[r], t.next = 8, e.clashAxiosClient.patch("/configs", {
                                    "log-level": n
                                });
                            case 8:
                                if (204 === (r = t.sent).status) return e.logLevel = n, t.next = 14, Object(T.j)(p.a.join(e.clashPath, "config.yaml"), "log-level", n);
                                t.next = 15;
                                break;
                            case 14:
                                e.setConfData({
                                    data: V(V({}, e.confData), {}, {
                                        "log-level": n
                                    })
                                });
                            case 15:
                                t.next = 19;
                                break;
                            case 17:
                                t.prev = 17, t.t0 = t.catch(0);
                            case 19:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [0, 17]
                    ])
                })))()
            },
            handleMixinSwitchClick: function(e) {
                var t = this;
                return s()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                t.changeIsMixinEnable({
                                    isMixin: !t.isMixinEnable
                                });
                            case 1:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                })))()
            },
            handleTunSwitchClick: function(e) {
                var t = this;
                return s()(c.a.mark((function e() {
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                t.changeIsTunEnable({
                                    isTun: !t.isTunEnable
                                });
                            case 1:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                })))()
            },
            handleSystemProxySwitchClick: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (e.systemProxyLoading) return t.abrupt("return");
                                t.next = 2;
                                break;
                            case 2:
                                return e.systemProxyLoading = !0, i = !e.isSystemProxyOn, t.next = 6, e.$setSystemProxy(i, e.confData);
                            case 6:
                                if (!t.sent) {
                                    t.next = 11;
                                    break
                                }
                                e.setIsSystemProxyOn({
                                    isOn: i
                                }), t.next = 29;
                                break;
                            case 11:
                                if (Object(D.i)() && e.isLocalMode) return t.next = 14, Object(T.g)({
                                    type: "error",
                                    message: "Make sure you have ".concat(e.serviceNeedUpdate ? "已更新" : "已安装", " 用于控制系统代理的服务模式."),
                                    buttons: ["".concat(e.serviceNeedUpdate ? "更新" : "安装", " 现在"), "Later"]
                                });
                                t.next = 29;
                                break;
                            case 14:
                                if (0 !== t.sent.response) {
                                    t.next = 29;
                                    break
                                }
                                if (e.serviceNeedUpdate) return t.next = 20, z();
                                t.next = 24;
                                break;
                            case 20:
                                if (!t.sent) {
                                    t.next = 22;
                                    break
                                }
                                e.$parent.devMode || e.reloadElectron();
                            case 22:
                                t.next = 28;
                                break;
                            case 24:
                                return t.next = 26, H();
                            case 26:
                                if (!t.sent) {
                                    t.next = 28;
                                    break
                                }
                                e.$parent.devMode || e.reloadElectron();
                            case 28:
                                console.log("service done");
                            case 29:
                                e.systemProxyLoading = !1;
                            case 30:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleAutoLaunchSwitchClick: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (i = !e.autoLaunch, e.autoLaunchLoading) return t.abrupt("return");
                                t.next = 3;
                                break;
                            case 3:
                                e.autoLaunchLoading = !0, e.$setAutoLaunch(i), e.autoLaunch = i, E.a.put(O.a.AUTO_LAUNCH, i), e.autoLaunchLoading = !1;
                            case 8:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            installTapDevice: function(e) {
                var t = this;
                return s()(c.a.mark((function e() {
                    var i, n, r, o;
                    return c.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                if (Object(D.j)()) return e.prev = 1, e.next = 4, t.$select({
                                    title: "虚拟网卡设置管理",
                                    message: '名为 "cfw-tap" 的适配器会将您的数据路由到Clash中.<br /><br />如果弹出安装框, 请继续单击"下一步",  直到安装完成.',
                                    items: ["安装", "卸载", "定制"]
                                });
                                e.next = 47;
                                break;
                            case 4:
                                if (0 === (i = e.sent)) return e.prev = 6, e.next = 9, t.$parent.setupTapDevice(!0);
                                e.next = 18;
                                break;
                            case 9:
                                Object(T.h)("成功", "cfw-tap 已安装", !0), (t.isMixinEnable || t.isTunEnable) && t.$parent.refreshProfile(), e.next = 16;
                                break;
                            case 13:
                                e.prev = 13, e.t0 = e.catch(6), Object(T.h)("失败", "无法安装 cfw-tap.", !0);
                            case 16:
                                e.next = 43;
                                break;
                            case 18:
                                if (1 === i) return e.prev = 19, e.next = 22, t.$parent.setupTapDevice(!1);
                                e.next = 30;
                                break;
                            case 22:
                                Object(T.h)("成功", "cfw-tap 已被移除", !0), e.next = 28;
                                break;
                            case 25:
                                e.prev = 25, e.t1 = e.catch(19), Object(T.h)("失败", "无法移除 cfw-tap.", !0);
                            case 28:
                                e.next = 43;
                                break;
                            case 30:
                                if (2 === i) return o = null !== (r = E.a.get(O.a.TAP_INFO)) && void 0 !== r ? r : {}, n = o.ip, r = o.subnet, o = o.gateway, o = [{
                                    name: "IP地址",
                                    key: "ip",
                                    placeholder: "10.0.0.1",
                                    value: null != n ? n : ""
                                }, {
                                    name: "子网掩码",
                                    key: "subnet",
                                    placeholder: "255.255.255.0",
                                    value: null != r ? r : ""
                                }, {
                                    name: "默认网关",
                                    key: "gateway",
                                    placeholder: "10.0.0.0",
                                    value: null != o ? o : ""
                                }], e.prev = 33, e.next = 36, t.$input({
                                    title: "虚拟网卡安装",
                                    data: o,
                                    hint: "更改这些字段后，您需要重新安装虚拟网卡!"
                                });
                                e.next = 43;
                                break;
                            case 36:
                                o = e.sent, E.a.put(O.a.TAP_INFO, o), e.next = 42;
                                break;
                            case 40:
                                e.prev = 40, e.t2 = e.catch(33);
                            case 42:
                                t.installTapDevice();
                            case 43:
                                e.next = 47;
                                break;
                            case 45:
                                e.prev = 45, e.t3 = e.catch(1);
                            case 47:
                            case "end":
                                return e.stop()
                        }
                    }), e, null, [
                        [1, 45],
                        [6, 13],
                        [19, 25],
                        [33, 40]
                    ])
                })))()
            },
            openCmdWithProxy: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (t.prev = 0, !Object(D.i)() && !Object(D.h)()) {
                                    t.next = 5;
                                    break
                                }
                                e.handlePortClick(), t.next = 10;
                                break;
                            case 5:
                                if (Object(D.j)()) return t.next = 8, e.$select({
                                    title: "打开终端并设置代理",
                                    message: "选择一个终端",
                                    items: ["CMD", "Powershell", "Windows Terminal", "Copy Commands Only"]
                                });
                                t.next = 10;
                                break;
                            case 8:
                                3 === (i = t.sent) ? e.handlePortClick() : (n = ["cmd", "powershell", "wt"], Object(k.exec)("start ".concat(n[i]), {
                                    cwd: e.$parent.userPath,
                                    windowsHide: !0,
                                    env: {
                                        http_proxy: "http://127.0.0.1:".concat(e.port),
                                        https_proxy: "http://127.0.0.1:".concat(e.port)
                                    }
                                }));
                            case 10:
                                t.next = 14;
                                break;
                            case 12:
                                t.prev = 12, t.t0 = t.catch(0);
                            case 14:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [0, 12]
                    ])
                })))()
            },
            handleEditMixedPort: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = [{
                                    name: "新端口",
                                    key: "port",
                                    placeholder: e.port,
                                    value: "",
                                    validate: function(e) {
                                        return /^\d+$/.test(e) && 0 <= +e && +e <= 65353 ? "" : "Port must be an integer between 0 to 65353"
                                    }
                                }], t.prev = 1, t.next = 4, e.$input({
                                    title: "更改混合端口",
                                    data: i,
                                    hint: "mixed = http + socks"
                                });
                            case 4:
                                if (n = (n = t.sent).port) return t.next = 9, e.clashAxiosClient.patch("/configs", {
                                    "mixed-port": +n
                                });
                                t.next = 15;
                                break;
                            case 9:
                                if (204 === t.sent.status) return e.port = +n, t.next = 14, Object(T.j)(p.a.join(e.clashPath, "config.yaml"), "mixed-port", +n);
                                t.next = 15;
                                break;
                            case 14:
                                e.setConfData({
                                    data: V(V({}, e.confData), {}, {
                                        "mixed-port": +n
                                    })
                                });
                            case 15:
                                t.next = 19;
                                break;
                            case 17:
                                t.prev = 17, t.t0 = t.catch(1);
                            case 19:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [1, 17]
                    ])
                })))()
            },
            handleCopyControllerURL: function() {
                I.shell.openExternal("https://clash.razord.top/?host=127.0.0.1&port=".concat(this.controllerPort))
            },
            spawnLoopback: function(e) {
                var t;
                Object(D.j)() && (t = p.a.join(this.filesPath, "win", "common"), I.shell.openPath(p.a.join(t, "EnableLoopback.exe")))
            },
            openGithubRelease: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var n;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (Object(D.i)() && e.isSilentUpgraded) return t.next = 3, e.$select({
                                    title: "自动升级 completed!",
                                    message: "是否要重启APP?",
                                    items: ["重新启动", "取消"]
                                });
                                t.next = 8;
                                break;
                            case 3:
                                if (0 === t.sent) return t.next = 7, e.reloadElectron();
                                t.next = 7;
                                break;
                            case 7:
                                return t.abrupt("return");
                            case 8:
                                return n = function() {
                                    var t = s()(c.a.mark((function t(n) {
                                        var r, o, s, a, l, d, h, u;
                                        return c.a.wrap((function(t) {
                                            for (;;) switch (t.prev = t.next) {
                                                case 0:
                                                    return a = e.$parent.newVersionInfo, r = a.url, o = a.version, s = a.log, a = void 0 !== (a = a.isPortable) && a, t.next = 3, I.ipcRenderer.invoke("app", "getAppPath");
                                                case 3:
                                                    if (l = t.sent.startsWith("C:\\Program Files\\"), r) return t.next = 7, e.$select({
                                                        title: "".concat(o, " had been released"),
                                                        message: s.replace(/\n/g, "<br />"),
                                                        items: [a || Object(D.h)() ? "" : "更新(原版)", "下载(原版)", "复制URL(原版)", "取消"]
                                                    });
                                                    t.next = 34;
                                                    break;
                                                case 7:
                                                    if (0 !== (d = t.sent)) {
                                                        t.next = 31;
                                                        break
                                                    }
                                                    if (null !== e.updateDownloadProgress) return t.abrupt("return");
                                                    t.next = 11;
                                                    break;
                                                case 11:
                                                    return t.next = 13, Object(w.a)(r, o).catch((function(e) {
                                                        C.a.info("upgrade app failed with error: ".concat(e))
                                                    }));
                                                case 13:
                                                    if (h = t.sent, C.a.info("upgrade asset path: ".concat(h)), Object(D.i)()) return t.next = 18, Object(T.g)({
                                                        type: "info",
                                                        message: "更新安装成功，要重启APP吗?",
                                                        buttons: ["是", "否"]
                                                    });
                                                    t.next = 23;
                                                    break;
                                                case 18:
                                                    if (0 === (u = t.sent).response) return t.next = 23, e.reloadElectron();
                                                    t.next = 23;
                                                    break;
                                                case 23:
                                                    if (Object(D.j)()) return t.next = 26, Object(T.g)({
                                                        type: "info",
                                                        message: "原版包下载成功，要执行吗?",
                                                        buttons: ["是", "否"]
                                                    });
                                                    t.next = 29;
                                                    break;
                                                case 26:
                                                    0 === (u = t.sent).response && (l ? i(124).exec("".concat(h, " /S")) : ((u = function() {
                                                        try {
                                                            Object(k.spawnSync)(h, ["/S"], {
                                                                detached: !0,
                                                                windowsHide: !0
                                                            })
                                                        } catch (e) {}
                                                    })(), setInterval(u, 2e3)));
                                                case 29:
                                                    t.next = 32;
                                                    break;
                                                case 31:
                                                    1 === d ? I.shell.openExternal(r) : 2 === d && I.clipboard.writeText(r);
                                                case 32:
                                                    t.next = 35;
                                                    break;
                                                case 34:
                                                    e.$alert({
                                                        title: "当前版本是最新的",
                                                        content: "当前汉化版本也是最新的."
                                                    });
                                                case 35:
                                                case "end":
                                                    return t.stop()
                                            }
                                        }), t)
                                    })));
                                    return function(e) {
                                        return t.apply(this, arguments)
                                    }
                                }(), t.next = 11, e.$parent.checkForUpdate();
                            case 11:
                                return t.next = 13, n();
                            case 13:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleHomeDirectoryOpen: function() {
                I.shell.openPath(p.a.resolve(this.clashPath))
            },
            handleGeoipDatabaseUpdate: function() {
                this.updateGeoipDB()
            },
            handlePortClick: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n, r;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (n = function() {
                                        var t = s()(c.a.mark((function t(i) {
                                            var n;
                                            return c.a.wrap((function(t) {
                                                for (;;) switch (t.prev = t.next) {
                                                    case 0:
                                                        return n = [{
                                                            name: "",
                                                            key: "command",
                                                            placeholder: "",
                                                            value: (n = E.a.get(O.a.SYSTEM_PROXY_COMMAND)) || i
                                                        }], t.next = 4, e.$input({
                                                            title: "复制命令",
                                                            data: n,
                                                            hint: ""
                                                        }).catch((function(e) {}));
                                                    case 4:
                                                        return n = (n = t.sent).command, E.a.put(O.a.SYSTEM_PROXY_COMMAND, n || ""), t.abrupt("return", (n || "").replace(/%mixedPort%/g, e.port).replace(/%(.+?)%/g, (function(e) {
                                                            console.log(e.slice(1, -1));
                                                            var t = (Object(N.b)().find((function(t) {
                                                                return t.name === e.slice(1, -1)
                                                            })) || {}).address;
                                                            return void 0 === t ? "" : t
                                                        })));
                                                    case 8:
                                                    case "end":
                                                        return t.stop()
                                                }
                                            }), t)
                                        })));
                                        return function(e) {
                                            return t.apply(this, arguments)
                                        }
                                    }(), Object(D.i)() || Object(D.h)()) return t.next = 4, n("export https_proxy=http://127.0.0.1:%mixedPort%;export http_proxy=http://127.0.0.1:%mixedPort%;export all_proxy=socks5://127.0.0.1:%mixedPort%");
                                t.next = 7;
                                break;
                            case 4:
                                i = t.sent, t.next = 27;
                                break;
                            case 7:
                                if (Object(D.j)()) return t.prev = 8, t.next = 11, e.$select({
                                    title: "复制代理设置命令",
                                    message: "选择一个终端",
                                    items: ["CMD", "Powershell", "自定义"]
                                });
                                t.next = 27;
                                break;
                            case 11:
                                if (0 !== (r = t.sent)) {
                                    t.next = 16;
                                    break
                                }
                                i = "set http_proxy=http://127.0.0.1:".concat(e.port, " & set https_proxy=http://127.0.0.1:").concat(e.port), t.next = 23;
                                break;
                            case 16:
                                if (1 !== r) {
                                    t.next = 20;
                                    break
                                }
                                i = '$Env:http_proxy="http://127.0.0.1:'.concat(e.port, '";$Env:https_proxy="http://127.0.0.1:').concat(e.port, '"'), t.next = 23;
                                break;
                            case 20:
                                return t.next = 22, n("export https_proxy=http://127.0.0.1:%mixedPort%;export http_proxy=http://127.0.0.1:%mixedPort%;export all_proxy=socks5://127.0.0.1:%mixedPort%");
                            case 22:
                                i = t.sent;
                            case 23:
                                t.next = 27;
                                break;
                            case 25:
                                t.prev = 25, t.t0 = t.catch(8);
                            case 27:
                                i && (I.clipboard.writeText(i), Object(T.h)("命令已复制到剪贴板!", i, !0));
                            case 28:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [8, 25]
                    ])
                })))()
            },
            autoFix: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                try {
                                    f.a.unlinkSync(p.a.join(e.clashPath, "config.yaml"))
                                } catch (t) {}
                                try {
                                    f.a.unlinkSync(p.a.join(e.clashPath, "country.mmdb"))
                                } catch (t) {}
                                return t.next = 4, e.reloadElectron();
                            case 4:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            updateGeoipDB: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n, r, o, s, a, l, d, h, u, g;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (Object(D.j)()) return e.$alert({
                                    content: "CFW 不允许更新 GeoIP 数据库，请手动进行.",
                                    title: "Note"
                                }), t.abrupt("return");
                                t.next = 3;
                                break;
                            case 3:
                                if (i = e.geoipUpdateTime, /^Updating/.test(e.geoipUpdateTime)) return t.abrupt("return");
                                t.next = 6;
                                break;
                            case 6:
                                return n = [{
                                    name: "MaxMind User License Key",
                                    key: "token",
                                    placeholder: "",
                                    value: E.a.get(O.a.GEOIP_TOKEN) || ""
                                }, {
                                    name: "URL",
                                    key: "url",
                                    placeholder: "",
                                    value: E.a.get(O.a.GEOIP_URL) || "https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb"
                                }], t.prev = 7, t.next = 10, e.$input({
                                    title: "更新 GeoIP 数据库",
                                    data: n,
                                    hint: "输入字段是替代的"
                                });
                            case 10:
                                if (o = t.sent, r = void 0 === (r = o.url) ? "" : r, o = void 0 === (o = o.token) ? "" : o, E.a.put(O.a.GEOIP_TOKEN, o), E.a.put(O.a.GEOIP_URL, r), e.clashPath) {
                                    t.next = 19;
                                    break
                                }
                                return t.abrupt("return");
                            case 19:
                                if (s = function(t, i) {
                                        f.a.ftruncateSync(f.a.openSync(t, "r+"), i), e.$parent.handlerRestartClash()
                                    }, o) return e.geoipUpdateTime = "更新中... (0%)", t.t0 = p.a, t.next = 25, I.ipcRenderer.invoke("app", "getPath", "temp");
                                t.next = 39;
                                break;
                            case 25:
                                t.t1 = t.sent, g = t.t0.join.call(t.t0, t.t1), p.a.join(g, "cfw_geoip.tag.gz"), (d = _.a.stream("https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=".concat(o, "&suffix=tar.gz"))).on("downloadProgress", (function(t) {
                                    var i = 1 === t.percent ? "重新启动核心..." : "更新中... (".concat(Math.round(100 * t.percent), "%)");
                                    e.geoipUpdateTime = i
                                })), d.on("error", (function(t) {
                                    e.$alert({
                                        content: "下载 GeoIP 数据库 failed with error: ".concat(t.name)
                                    }), e.geoipUpdateTime = i
                                })), a = p.a.join(e.clashPath, "Country.mmdb"), g = S.a.extract(), l = 0, g.on("entry", (function(e, t, i) {
                                    t.on("end", (function() {
                                        i()
                                    })), /GeoLite2-Country\.mmdb$/.test(e.name) ? (l = e.size, t.pipe(f.a.createWriteStream(a, {
                                        flags: "r+"
                                    }))) : t.resume()
                                })), g.on("finish", (function() {
                                    s(a, l)
                                })), d.pipe(x.a.createGunzip()).pipe(g), t.next = 40;
                                break;
                            case 39:
                                r && (e.geoipUpdateTime = "更新中... (0%)", d = _.a.stream(r), h = 0, d.on("downloadProgress", (function(t) {
                                    var i = t.percent,
                                        n = t.total,
                                        r = 1 === i ? (h = n, "重新启动核心...") : "Updating... (".concat(Math.round(100 * t.percent), "%)");
                                    e.geoipUpdateTime = r
                                })), d.on("error", (function(t) {
                                    e.$alert({
                                        content: "下载 GeoIP 数据库 failed with error: ".concat(t.name)
                                    }), e.geoipUpdateTime = i
                                })), u = p.a.join(e.clashPath, "Country.mmdb"), (g = f.a.createWriteStream(u, {
                                    flags: "r+"
                                })).on("finish", (function() {
                                    s(u, h)
                                })), d.pipe(g));
                            case 40:
                                t.next = 44;
                                break;
                            case 42:
                                t.prev = 42, t.t2 = t.catch(7);
                            case 44:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [7, 42]
                    ])
                })))()
            },
            setupSwitches: function() {
                this.autoLaunchLoading = !1, this.systemProxyLoading = !1
            },
            setupComponent: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n, o, s;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if ((o = e).clashAxiosClient) return t.prev = 2, t.next = 5, Promise.all([o.clashAxiosClient.get("/configs"), o.fetchCoreVersion()]);
                                t.next = 18;
                                break;
                            case 5:
                                s = t.sent, i = r()(s, 1), n = i[0], o = n.status, s = n.data, 200 === o && (i = s["mixed-port"], n = s["allow-lan"], o = s["log-level"], s = s.ipv6, e.port = i, e.isAllowLan = n, e.logLevel = o, e.isIPV6 = s, e.geoipUpdateTime = v()(f.a.statSync(p.a.join(e.clashPath, "Country.mmdb")).mtimeMs).format("YYYY-MM-DD HH:mm")), t.next = 16;
                                break;
                            case 13:
                                t.prev = 13, t.t0 = t.catch(2), console.error(t.t0.stack);
                            case 16:
                                t.next = 18;
                                break;
                            case 18:
                            case "end":
                                return t.stop()
                        }
                    }), t, null, [
                        [2, 13]
                    ])
                })))()
            },
            fetchCoreVersion: function() {
                var e = this;
                return s()(c.a.mark((function t() {
                    var i, n;
                    return c.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (e.clashAxiosClient) return t.next = 3, e.clashAxiosClient.get("/version");
                                t.next = 6;
                                break;
                            case 3:
                                i = t.sent, (n = i.data) ? (i = n.premium, n = n.version, e.clashCoreVersion = void 0 !== i && void 0 !== n ? "".concat(n, " ").concat(i ? "Premium" : "") : "Unknown") : e.clashCoreVersion = "Unknown";
                            case 6:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            }
        }),
        mounted: function() {
            return s()(c.a.mark((function e() {
                return c.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                        case "end":
                            return e.stop()
                    }
                }), e)
            })))()
        },
        beforeRouteEnter: function(e, t, i) {
            var n;
            i((n = s()(c.a.mark((function e(t) {
                return c.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            return e.t0 = "v ", e.next = 3, I.ipcRenderer.invoke("app", "getVersion");
                        case 3:
                            e.t1 = e.sent, t.version = e.t0.concat.call(e.t0, e.t1), t.networkInterfaces = Object(N.b)(), t.serviceNeedUpdate = W(), t.setupComponent(), setTimeout(t.setupSwitches, 1);
                        case 9:
                        case "end":
                            return e.stop()
                    }
                }), e)
            }))), function(e) {
                return n.apply(this, arguments)
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            i()
        }
    }, i(306), i(308), h = Object(d.a)(h, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-general-view-" + e.theme]
        }, [i("div", {
            staticClass: "header"
        }, [i("img", {
            staticClass: "icon",
            attrs: {
                src: e.iconPath
            }
        }), e._v(" "), i("div", {
            class: ["title-" + e.theme]
        }, [i("div", {
            staticClass: "title-name",
            on: {
                click: e.reloadElectron
            }
        }, [e._v("Clash for Windows")]), e._v(" "), i("div", {
            staticClass: "version",
            on: {
                click: e.openGithubRelease
            }
        }, [e._v("\n        " + e._s(e.version) + "\n        "), e.isShowNewIcon ? i("div", {
            staticClass: "new-version-tag"
        }, [e._v("New")]) : e._e()])])]), e._v(" "), e.isLaunching ? e._e() : i("div", {
            staticClass: "content"
        }, [i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("端口")]), e._v(" "), i("div", {
            staticClass: "item-right"
        }, [i("img", {
            staticClass: "control-icon",
            attrs: {
                title: "终端和代理",
                src: "static/imgs/terminal.svg",
                alt: ""
            },
            on: {
                click: function(t) {
                    return t.stopPropagation(), e.openCmdWithProxy()
                }
            }
        }), e._v(" "), i("div", {
            class: "clickable-" + e.theme,
            on: {
                click: e.handleEditMixedPort
            }
        }, [e._v("\n          " + e._s(e.port) + "\n        ")])])]), e._v(" "), i("div", {
            class: ["item-" + e.theme],
            on: {
                mouseenter: function(t) {
                    e.showInterfaces = !0
                },
                mouseleave: function(t) {
                    e.showInterfaces = !1
                }
            }
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("允许局域网")]), e._v(" "), i("div", {
            staticClass: "item-right"
        }, [i("switch-view", {
            attrs: {
                on: e.isAllowLan
            },
            on: {
                change: function(t) {
                    return e.handleAllowLANChange(e.isAllowLan)
                }
            }
        })], 1)]), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("日志级别")]), e._v(" "), i("div", {
            staticClass: "item-right"
        }, [i("div", {
            class: "clickable-" + e.theme,
            on: {
                click: e.handleEditLogLevel
            }
        }, [e._v("\n          " + ("silent" == e._s(e.logLevel) ? "静默" : "error" == e._s(e.logLevel) ? "错误" : "warning" == e._s(e.logLevel) ? "警告" : "info" == e._s(e.logLevel) ? "信息" : "debug" == e._s(e.logLevel) ? "调试" : e._s(e.logLevel)) + "\n        ")])])]), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("IPv6")]), e._v(" "), i("div", {
            staticClass: "item-right"
        }, [i("switch-view", {
            attrs: {
                on: e.isIPV6
            },
            on: {
                change: function(t) {
                    return e.handleIPV6Change(e.isIPV6)
                }
            }
        })], 1)]), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("Clash 核心版本")]), e._v(" "), i("div", {
            staticClass: "item-right",
            class: "clickable-" + e.theme,
            on: {
                click: e.handleCopyControllerURL
            }
        }, [e._v("\n        " + e._s(e.clashCoreVersion) + " (" + e._s(e.controllerPort) + ")\n      ")])]), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("主目录")]), e._v(" "), i("div", {
            staticClass: "item-right",
            class: "clickable-" + e.theme,
            on: {
                click: e.handleHomeDirectoryOpen
            }
        }, [e._v("\n        打开文件夹\n      ")])]), e._v(" "), e.isWindows ? e._e() : i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("GeoIP Database")]), e._v(" "), i("div", {
            staticClass: "item-right",
            class: "clickable-" + e.theme,
            on: {
                click: e.handleGeoipDatabaseUpdate
            }
        }, [e._v("\n        " + e._s(e.geoipUpdateTime) + "\n      ")])]), e._v(" "), e.showInterfaces && e.isAllowLan ? i("div", {
            class: ["interfaces-card-" + e.theme]
        }, e._l(e.networkInterfaces, (function(t, n) {
            return i("div", {
                key: n,
                class: ["interfaces-content-" + e.theme]
            }, [i("div", {
                staticClass: "interface-address"
            }, [e._v(e._s(t.address))]), e._v(" "), i("div", {
                staticClass: "interface-name"
            }, [e._v(e._s(t.name))])])
        })), 0) : e._e(), e._v(" "), e.isWindows ? i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("UWP 应用联网限制解除工具")]), e._v(" "), i("div", {
            class: ["item-right", "clickable-" + e.theme],
            on: {
                click: function(t) {
                    return e.spawnLoopback(t)
                }
            }
        }, [e._v("\n        启动助手\n      ")])]) : e._e(), e._v(" "), e.isWindows ? i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("虚拟网卡安装")]), e._v(" "), i("div", {
            class: ["item-right", "clickable-" + e.theme],
            on: {
                click: function(t) {
                    return e.installTapDevice(t)
                }
            }
        }, [e._v("\n        管理\n      ")])]) : e._e(), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("服务模式")]), e._v(" "), i("svg", {
            staticStyle: {
                "margin-left": "5px",
                "margin-top": "2px"
            },
            attrs: {
                fill: e.isLocalMode ? "#b3b3b3" : e.serviceNeedUpdate ? "#DE5034" : "#41b883",
                xmlns: "http://www.w3.org/2000/svg",
                height: "18",
                viewBox: "0 0 24 24",
                width: "18"
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"
            }
        })]), e._v(" "), i("div", {
            staticStyle: {
                "flex-grow": "1"
            }
        }), e._v(" "), i("div", {
            class: ["item-right", "clickable-" + e.theme],
            on: {
                click: e.installService
            }
        }, [e._v("\n        管理\n      ")])]), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [i("div", [e._v("TUN 模式")]), e._v(" "), i("info-icon", [e._v("\n          要启用此模式，请先安装服务模式!\n        ")]), e._v(" "), i("Hint", {
            staticClass: "tun-settings-icon clickable",
            attrs: {
                hint: "设置",
                position: "right"
            },
            on: {
                click: function(t) {
                    t.stopPropagation(), e.isTunSettingsVisible = !e.isTunSettingsVisible
                }
            }
        }, [i("svg", {
            staticClass: "setting-icon",
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                "enable-background": "new 0 0 24 24",
                viewBox: "0 0 24 24"
            }
        }, [i("rect", {
            attrs: {
                fill: "none",
                height: "24",
                width: "24"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M19.5,12c0-0.23-0.01-0.45-0.03-0.68l1.86-1.41c0.4-0.3,0.51-0.86,0.26-1.3l-1.87-3.23c-0.25-0.44-0.79-0.62-1.25-0.42 l-2.15,0.91c-0.37-0.26-0.76-0.49-1.17-0.68l-0.29-2.31C14.8,2.38,14.37,2,13.87,2h-3.73C9.63,2,9.2,2.38,9.14,2.88L8.85,5.19 c-0.41,0.19-0.8,0.42-1.17,0.68L5.53,4.96c-0.46-0.2-1-0.02-1.25,0.42L2.41,8.62c-0.25,0.44-0.14,0.99,0.26,1.3l1.86,1.41 C4.51,11.55,4.5,11.77,4.5,12s0.01,0.45,0.03,0.68l-1.86,1.41c-0.4,0.3-0.51,0.86-0.26,1.3l1.87,3.23c0.25,0.44,0.79,0.62,1.25,0.42 l2.15-0.91c0.37,0.26,0.76,0.49,1.17,0.68l0.29,2.31C9.2,21.62,9.63,22,10.13,22h3.73c0.5,0,0.93-0.38,0.99-0.88l0.29-2.31 c0.41-0.19,0.8-0.42,1.17-0.68l2.15,0.91c0.46,0.2,1,0.02,1.25-0.42l1.87-3.23c0.25-0.44,0.14-0.99-0.26-1.3l-1.86-1.41 C19.49,12.45,19.5,12.23,19.5,12z M12.04,15.5c-1.93,0-3.5-1.57-3.5-3.5s1.57-3.5,3.5-3.5s3.5,1.57,3.5,3.5S13.97,15.5,12.04,15.5z"
            }
        })])])], 1), e._v(" "), i("switch-view", {
            attrs: {
                on: e.isTunEnable
            },
            on: {
                change: e.handleTunSwitchClick
            }
        })], 1), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [i("div", [e._v("混淆")]), e._v(" "), i("info-icon", [e._v("\n          Mixin允许您覆盖原始配置文件.\n          "), i("a", {
            attrs: {
                href: "https://docs.cfw.lbyczf.com/contents/mixin.html"
            }
        }, [e._v("文件")])]), e._v(" "), i("Hint", {
            staticClass: "tun-settings-icon clickable",
            attrs: {
                hint: "编辑 Mixin 内容",
                position: "right"
            },
            on: {
                click: function(t) {
                    return t.stopPropagation(), e.handleEditMixin.apply(null, arguments)
                }
            }
        }, [i("svg", {
            staticClass: "setting-icon",
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                "enable-background": "new 0 0 24 24",
                viewBox: "0 0 24 24"
            }
        }, [i("rect", {
            attrs: {
                fill: "none",
                height: "24",
                width: "24"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M19.5,12c0-0.23-0.01-0.45-0.03-0.68l1.86-1.41c0.4-0.3,0.51-0.86,0.26-1.3l-1.87-3.23c-0.25-0.44-0.79-0.62-1.25-0.42 l-2.15,0.91c-0.37-0.26-0.76-0.49-1.17-0.68l-0.29-2.31C14.8,2.38,14.37,2,13.87,2h-3.73C9.63,2,9.2,2.38,9.14,2.88L8.85,5.19 c-0.41,0.19-0.8,0.42-1.17,0.68L5.53,4.96c-0.46-0.2-1-0.02-1.25,0.42L2.41,8.62c-0.25,0.44-0.14,0.99,0.26,1.3l1.86,1.41 C4.51,11.55,4.5,11.77,4.5,12s0.01,0.45,0.03,0.68l-1.86,1.41c-0.4,0.3-0.51,0.86-0.26,1.3l1.87,3.23c0.25,0.44,0.79,0.62,1.25,0.42 l2.15-0.91c0.37,0.26,0.76,0.49,1.17,0.68l0.29,2.31C9.2,21.62,9.63,22,10.13,22h3.73c0.5,0,0.93-0.38,0.99-0.88l0.29-2.31 c0.41-0.19,0.8-0.42,1.17-0.68l2.15,0.91c0.46,0.2,1,0.02,1.25-0.42l1.87-3.23c0.25-0.44,0.14-0.99-0.26-1.3l-1.86-1.41 C19.49,12.45,19.5,12.23,19.5,12z M12.04,15.5c-1.93,0-3.5-1.57-3.5-3.5s1.57-3.5,3.5-3.5s3.5,1.57,3.5,3.5S13.97,15.5,12.04,15.5z"
            }
        })])])], 1), e._v(" "), i("switch-view", {
            attrs: {
                on: e.isMixinEnable
            },
            on: {
                change: e.handleMixinSwitchClick
            }
        })], 1), e._v(" "), e.isLinux ? e._e() : i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v("系统代理")]), e._v(" "), i("switch-view", {
            attrs: {
                on: e.isSystemProxyOn
            },
            on: {
                change: e.handleSystemProxySwitchClick
            }
        })], 1), e._v(" "), i("div", {
            class: ["item-" + e.theme]
        }, [i("div", {
            staticClass: "item-left"
        }, [e._v(e._s(e.autoLaunchHint))]), e._v(" "), i("switch-view", {
            attrs: {
                on: e.autoLaunch
            },
            on: {
                change: e.handleAutoLaunchSwitchClick
            }
        })], 1)]), e._v(" "), e.isLaunching ? i("error-view") : e._e(), e._v(" "), e.isTunSettingsVisible ? i("tun-settings-view", {
            on: {
                close: function(t) {
                    e.isTunSettingsVisible = !1
                }
            }
        }) : e._e(), e._v(" "), i("div", {
            staticClass: "empty-div"
        })], 1)
    }), [], !1, null, "6e447f5a", null);
    t.default = h.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(10),
        r = i.n(n),
        o = i(52),
        s = i.n(o),
        a = i(18),
        l = i.n(a),
        d = (n = i(3), i.n(n)),
        c = i(22),
        h = (o = i(27), i(35)),
        u = (a = i(254), i.n(a)),
        p = i(42),
        g = i(38),
        f = i(127);
    n = {
        name: "RouterConfigView",
        data: function() {
            return {
                interfaces: [],
                selectedName: "",
                localAddress: "",
                rangeFrom: "",
                rangeTo: "",
                netmask: "255.255.255.0",
                defaultRouter: "",
                primaryDns: "223.5.5.5",
                secondlyDns: "114.114.114.114",
                broadAddress: ""
            }
        },
        computed: {
            selectedInterface: function() {
                var e = this;
                return this.interfaces.find((function(t) {
                    return t.name === e.selectedName
                }))
            }
        },
        watch: {
            selectedInterface: function(e) {
                e = e.address, this.localAddress = e, this.computeFromLocalAddress(e)
            }
        },
        methods: {
            computeFromLocalAddress: function(e) {
                4 === (e = e.split(".")).length && (this.rangeFrom = [].concat(s()(e.slice(0, 3)), ["100"]).join("."), this.rangeTo = [].concat(s()(e.slice(0, 3)), ["200"]).join("."), this.defaultRouter = [].concat(s()(e.slice(0, 3)), ["1"]).join("."), this.broadAddress = [].concat(s()(e.slice(0, 3)), ["255"]).join("."))
            },
            handleInterfaceSelect: function() {
                var e = this;
                return r()(d.a.mark((function t() {
                    var i, n;
                    return d.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return i = e.interfaces.map((function(e) {
                                    return e.name
                                })), t.next = 3, e.$select({
                                    title: "Select a interface",
                                    message: "",
                                    items: i
                                });
                            case 3:
                                n = t.sent, e.selectedName = i[n];
                            case 5:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleContinueClick: function() {
                this.$emit("confirm", {
                    localAddress: this.localAddress,
                    rangeFrom: this.rangeFrom,
                    rangeTo: this.rangeTo,
                    netmask: this.netmask,
                    defaultRouter: this.defaultRouter,
                    primaryDns: this.primaryDns,
                    secondlyDns: this.secondlyDns,
                    broadAddress: this.broadAddress
                })
            }
        },
        mounted: function() {
            this.interfaces = Object(f.b)() || [], 0 < this.interfaces.length && (this.selectedName = this.interfaces[0].name)
        }
    }, i(350), a = i(30);

    function m(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function v(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? m(Object(i), !0).forEach((function(t) {
                l()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : m(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    o = {
        name: "RouterView",
        components: {
            ConfigView: Object(a.a)(n, (function() {
                var e = this,
                    t = e.$createElement;
                return (t = e._self._c || t)("div", {
                    staticClass: "main-router-config-view",
                    on: {
                        click: function(t) {
                            return e.$emit("close")
                        }
                    }
                }, [t("div", {
                    staticClass: "content",
                    on: {
                        click: function(e) {
                            e.stopPropagation()
                        }
                    }
                }, [t("div", {
                    staticClass: "title"
                }, [e._v("配置")]), e._v(" "), t("div", {
                    staticClass: "sec"
                }, [t("span", [e._v("Interface")]), e._v(" "), t("input", {
                    staticClass: "clickable",
                    attrs: {
                        readonly: ""
                    },
                    domProps: {
                        value: e.selectedName
                    },
                    on: {
                        click: e.handleInterfaceSelect
                    }
                })]), e._v(" "), t("div", {
                    staticClass: "sec"
                }, [t("span", [e._v("本地 IP 地址")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.localAddress,
                        expression: "localAddress"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.localAddress
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.localAddress = t.target.value)
                        }
                    }
                })]), e._v(" "), t("div", {
                    staticClass: "sec"
                }, [t("span", [e._v("DHCP IP Range")]), e._v(" "), t("div", {
                    staticClass: "flex"
                }, [t("div", [t("span", [e._v("From")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.rangeFrom,
                        expression: "rangeFrom"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.rangeFrom
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.rangeFrom = t.target.value)
                        }
                    }
                })]), e._v(" "), t("div", [t("span", [e._v("To")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.rangeTo,
                        expression: "rangeTo"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.rangeTo
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.rangeTo = t.target.value)
                        }
                    }
                })])])]), e._v(" "), t("div", {
                    staticClass: "sec"
                }, [t("span", [e._v("Netmask")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.netmask,
                        expression: "netmask"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.netmask
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.netmask = t.target.value)
                        }
                    }
                })]), e._v(" "), t("div", {
                    staticClass: "sec"
                }, [t("span", [e._v("Default Router")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.defaultRouter,
                        expression: "defaultRouter"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.defaultRouter
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.defaultRouter = t.target.value)
                        }
                    }
                })]), e._v(" "), t("div", {
                    staticClass: "sec"
                }, [t("span", [e._v("DNS 服务器")]), e._v(" "), t("div", {
                    staticClass: "flex"
                }, [t("div", [t("span", [e._v("Primary")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.primaryDns,
                        expression: "primaryDns"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.primaryDns
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.primaryDns = t.target.value)
                        }
                    }
                })]), e._v(" "), t("div", [t("span", [e._v("Alternative")]), e._v(" "), t("input", {
                    directives: [{
                        name: "model",
                        rawName: "v-model",
                        value: e.secondlyDns,
                        expression: "secondlyDns"
                    }],
                    attrs: {
                        type: "text"
                    },
                    domProps: {
                        value: e.secondlyDns
                    },
                    on: {
                        input: function(t) {
                            t.target.composing || (e.secondlyDns = t.target.value)
                        }
                    }
                })])])]), e._v(" "), t("div", {
                    staticClass: "btn clickable",
                    on: {
                        click: e.handleContinueClick
                    }
                }, [e._v("Continue")])])])
            }), [], !1, null, "510e6d90", null).exports
        },
        data: function() {
            return {
                server: null,
                clients: [],
                boundState: {},
                isShowConfigView: !1,
                powersaveBlockerID: 0,
                clientAlias: h.a.get(g.a.DHCP_MAC_ALIAS) || {}
            }
        },
        computed: v(v({}, Object(o.mapState)({
            routerHijackMacAddresses: function(e) {
                return e.app.routerHijackMacAddresses
            },
            currentProfilePayload: function(e) {
                return e.app.currentProfilePayload
            }
        })), {}, {
            serverRunning: function() {
                return null !== this.server
            },
            buttonText: function() {
                return this.serverRunning ? "暂停" : "开始"
            }
        }),
        methods: v(v({}, Object(o.mapMutations)({
            setRouterHijackMacAddresses: "SET_ROUTER_HIJACK_MAC_ADDRESSES"
        })), {}, {
            clientName: function(e) {
                return this.clientAlias[e.chaddr] || e.options[12] || "Unknown"
            },
            handleClientRename: function(e, t) {
                this.clientAlias = v(v({}, this.clientAlias), {}, l()({}, t, e.target.value)), h.a.put(g.a.DHCP_MAC_ALIAS, this.clientAlias)
            },
            handleGotoConnections: function(e) {
                (e = this.addressFromBound(e)) && this.$router.replace({
                    path: "/home/connection",
                    query: {
                        searchText: e
                    }
                }).catch((function() {}))
            },
            handleStartDHCPServer: function() {
                this.serverRunning ? (this.server && this.server.close(), this.server = null, this.clients = [], this.boundState = {}, c.ipcRenderer.invoke("powerSaveBlocker", "stop", this.powersaveBlockerID)) : this.isShowConfigView = !0
            },
            handleConfigConfirm: function(e) {
                var t = this;
                this.isShowConfigView = !1;
                var i, n, o, a, l, h, g, f, m, b = null === (n = this.currentProfilePayload) || void 0 === n || null === (o = n.tun) || void 0 === o ? void 0 : o["dns-hijack"],
                    _ = (n = (i = v(v({}, e), {}, {
                        hijackDns: b
                    })).rangeFrom, o = i.rangeTo, e = i.netmask, a = i.defaultRouter, b = i.broadcast, l = i.localAddress, h = i.primaryDns, g = i.secondlyDns, i = i.hijackDns, f = void 0 === i ? [] : i, (b = u.a.createServer({
                        range: [n, o],
                        forceOptions: ["hostname"],
                        randomIP: !0,
                        static: {},
                        netmask: e,
                        router: function(e) {
                            var t = p.a.state.app.routerHijackMacAddresses;
                            return (void 0 === t ? [] : t).includes(e.clientId) ? [l] : [a]
                        },
                        dns: function(e) {
                            var t = p.a.state.app.routerHijackMacAddresses;
                            return (void 0 === t ? [] : t).includes(e.clientId) ? f.slice(0, 2) : "" !== g ? [h, g] : [h]
                        },
                        broadcast: b,
                        server: l,
                        maxMessageSize: 1500,
                        leaseTime: 86400,
                        renewalTime: 60,
                        rebindingTime: 120,
                        bootFile: "",
                        hostname: "cfw"
                    })).on("error", (function(e, t) {
                        console.log(e, t)
                    })), b.listen(), b);
                _.on("message", (function(e) {
                    var i = e.chaddr;
                    void 0 !== t.clients.find((function(e) {
                        return e.chaddr === i
                    })) || (t.clients = [].concat(s()(t.clients), [e]))
                })), _.on("bound", (function(e) {
                    t.boundState = e
                })), _.on("listening", (m = r()(d.a.mark((function e(i) {
                    var n;
                    return d.a.wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                            case 0:
                                return n = i.address(), console.log("dhcp server listen at ".concat(n.address, ":").concat(n.port)), t.server = _, e.next = 5, c.ipcRenderer.invoke("powerSaveBlocker", "start", "prevent-app-suspension");
                            case 5:
                                t.powersaveBlockerID = e.sent;
                            case 6:
                            case "end":
                                return e.stop()
                        }
                    }), e)
                }))), function(e) {
                    return m.apply(this, arguments)
                }))
            },
            handleMacToHijack: function(e) {
                this.routerHijackMacAddresses.includes(e) ? this.setRouterHijackMacAddresses({
                    addresses: this.routerHijackMacAddresses.filter((function(t) {
                        return t !== e
                    }))
                }) : this.setRouterHijackMacAddresses({
                    addresses: [].concat(s()(this.routerHijackMacAddresses), [e])
                })
            },
            addressFromBound: function(e) {
                return (e = this.boundState[e]) ? e.address : ""
            }
        })
    }, i(352), o = Object(a.a)(o, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-router-view-" + e.theme]
        }, [i("div", {
            staticClass: "header"
        }, [i("div", [e._v("DHCP 服务器")]), e._v(" "), i("div", {
            staticClass: "btn",
            class: [e.serverRunning ? "btn-stop" : "btn-start"],
            on: {
                click: e.handleStartDHCPServer
            }
        }, [e._v("\n      " + e._s(e.buttonText) + "\n    ")])]), e._v(" "), i("div", {
            staticClass: "list"
        }, e._l(e.clients, (function(t) {
            return i("div", {
                key: t.chaddr,
                staticClass: "item",
                attrs: {
                    title: t.chaddr
                }
            }, [i("div", {
                staticClass: "left"
            }, [i("div", {
                staticClass: "name clickable"
            }, [i("input", {
                attrs: {
                    type: "text"
                },
                domProps: {
                    value: e.clientName(t)
                },
                on: {
                    change: function(i) {
                        return e.handleClientRename(i, t.chaddr)
                    }
                }
            })]), e._v(" "), i("div", {
                staticClass: "ip"
            }, [e._v(e._s(e.addressFromBound(t.chaddr) || "--"))])]), e._v(" "), i("div", {
                staticClass: "right"
            }, [e.routerHijackMacAddresses.includes(t.options[61]) ? i("div", {
                staticClass: "btn",
                on: {
                    click: function(i) {
                        return e.handleGotoConnections(t.chaddr)
                    }
                }
            }, [e._v("\n          连接\n        ")]) : e._e(), e._v(" "), i("div", {
                staticClass: "btn hijack-button",
                on: {
                    click: function(i) {
                        return e.handleMacToHijack(t.options[61])
                    }
                }
            }, [e._v("\n          " + e._s(e.routerHijackMacAddresses.includes(t.options[61]) ? "Clash TUN" : "默认网关") + "\n        ")])])])
        })), 0), e._v(" "), e.isShowConfigView ? i("config-view", {
            on: {
                close: function(t) {
                    e.isShowConfigView = !1
                },
                confirm: e.handleConfigConfirm
            }
        }) : e._e()], 1)
    }), [], !1, null, "e70fadb0", null), t.default = o.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(105),
        r = i.n(n),
        o = i(10),
        s = i.n(o),
        a = i(52),
        l = i.n(a),
        d = i(18),
        c = i.n(d),
        h = i(3),
        u = i.n(h),
        p = i(27);

    function g(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    var f = {
            props: ["mode"],
            data: function() {
                return {
                    modes: ["全局", "规则", "直连", "脚本"]
                }
            },
            computed: function(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var i = null != arguments[t] ? arguments[t] : {};
                    t % 2 ? g(Object(i), !0).forEach((function(t) {
                        c()(e, t, i[t])
                    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : g(Object(i)).forEach((function(t) {
                        Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                    }))
                }
                return e
            }({}, Object(p.mapState)({})),
            methods: {
                upperCaseFirstLetter: function(e) {
                    return e[0].toUpperCase() + e.slice(1)
                },
                btnTheme: function(e) {
                    var t = ["btn"];
                    "全局" == e ? e = "global" : "规则" == e ? e = "rule" : "直连" == e ? e = "direct" : "脚本" == e && (e = "script");
                    return this.mode === e.toLowerCase() ? t.push("selected-".concat(this.theme)) : t.push("normal-".concat(this.theme)), t
                },
                switchMode: function(e) {
                    var t = this;
                    return s()(u.a.mark((function i() {
                        return u.a.wrap((function(i) {
                            for (;;) switch (i.prev = i.next) {
                                case 0:
                                    t.$parent.cancelLatencyTest(), t.$emit("switch", e);
                                case 2:
                                case "end":
                                    return i.stop()
                            }
                        }), i)
                    })))()
                }
            }
        },
        m = (i(310), i(30)),
        v = (n = Object(m.a)(f, (function() {
            var e = this,
                t = e.$createElement,
                i = e._self._c || t;
            return i("div", {
                class: ["main-" + e.theme],
                attrs: {
                    id: "main-mode-switcher"
                }
            }, [i("div", {
                staticClass: "btns"
            }, e._l(e.modes, (function(t, n) {
                return i("div", {
                    key: n,
                    class: e.btnTheme(t),
                    on: {
                        click: function(i) {
                            return e.switchMode(t)
                        }
                    }
                }, [e._v("\n      " + e._s(e.upperCaseFirstLetter(t)) + "\n    ")])
            })), 0)])
        }), [], !1, null, "38001dee", null).exports, o = i(162), a = i(134), d = i(69), h = i.n(d), i(35)),
        b = i(38),
        _ = (f = i(82), d = i.n(f), i(154)),
        w = i(40),
        y = i(48),
        C = (f = i(179), i.n(f));

    function x(e, t) {
        var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!i) {
            if (Array.isArray(e) || (i = function(e, t) {
                    if (e) {
                        if ("string" == typeof e) return S(e, t);
                        var i = Object.prototype.toString.call(e).slice(8, -1);
                        return "Map" === (i = "Object" === i && e.constructor ? e.constructor.name : i) || "Set" === i ? Array.from(e) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? S(e, t) : void 0
                    }
                }(e)) || t && e && "number" == typeof e.length) {
                i && (e = i);
                var n = 0;
                return {
                    s: t = function() {},
                    n: function() {
                        return n >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[n++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: t
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var r, o = !0,
            s = !1;
        return {
            s: function() {
                i = i.call(e)
            },
            n: function() {
                var e = i.next();
                return o = e.done, e
            },
            e: function(e) {
                s = !0, r = e
            },
            f: function() {
                try {
                    o || null == i.return || i.return()
                } finally {
                    if (s) throw r
                }
            }
        }
    }

    function S(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
        return n
    }

    function k(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function L(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? k(Object(i), !0).forEach((function(t) {
                c()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : k(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    var O = h.a.CancelToken;
    d = {
        props: [],
        data: function() {
            return {
                proxies: [],
                axiosCancelTokens: [],
                showSecIdxs: [],
                infoItemName: "",
                intervalID: null,
                filterKeyword: "",
                isShowFilter: !1,
                isScrolling: !1,
                topItemIndex: -1,
                proxyBlinkIndex: -1,
                groupBlinkIndex: -1
            }
        },
        components: {
            ProxyModeSwitcher: n,
            Navigator: o.a,
            Hint: a.a
        },
        watch: {
            clashStatus: function(e) {
                e === y.a.CONNECTED && this.fetchData()
            },
            profileRefreshTimes: function() {
                this.fetchData()
            },
            proxyBlinkIndex: function() {
                var e = this;
                setTimeout((function() {
                    e.proxyBlinkIndex = -1
                }), 300)
            },
            groupBlinkIndex: function() {
                var e = this;
                setTimeout((function() {
                    e.groupBlinkIndex = -1
                }), 300)
            }
        },
        computed: L(L(L({}, Object(p.mapState)({
            clashPath: function(e) {
                return e.app.clashPath
            },
            pfs: function(e) {
                return e.app.profiles
            },
            clashStatus: function(e) {
                return e.app.clashStatus
            },
            confData: function(e) {
                return e.app.confData
            },
            isWindowShow: function(e) {
                return e.app.isWindowShow
            },
            clashAxiosFlyingRequestCount: function(e) {
                return e.app.clashAxiosFlyingRequestCount
            },
            profileRefreshTimes: function(e) {
                return e.app.profileRefreshTimes
            },
            currentMode: function(e) {
                return e.app.mode
            },
            currentProfilePayload: function(e) {
                return e.app.currentProfilePayload
            }
        })), Object(p.mapGetters)(["clashAxiosClient"])), {}, {
            navigatorWidth: function() {
                return this.settings.proxyMiniListWidth
            },
            proxyItemWidth: function() {
                var e = this.settings.proxyItemWidth;
                return 150 <= parseInt(e) ? "".concat(e, "px") : "290px"
            },
            proxyInMode: function() {
                if ("global" === (e = this.currentMode)) return this.proxies.filter((function(e) {
                    return "GLOBAL" === e.name
                }));
                if ("direct" === e) return [];
                var e, t = void 0 !== (e = this.settings.hideUnselectableGroup) && e ? ["Selector"] : ["Selector", "Fallback", "URLTest", "LoadBalance", "Relay"];
                return this.proxies.filter((function(e) {
                    return "GLOBAL" !== e.name && t.includes(e.data.type)
                }))
            },
            isShowNavigator: function() {
                return 0 !== parseInt(this.settings.proxyMiniListWidth)
            }
        }),
        methods: L(L(L({}, Object(p.mapMutations)({
            changeProfile: "CHANGE_PROFILE"
        })), Object(p.mapActions)(["getMode", "setMode"])), {}, {
            debounceScroll: d.a.debounce((function() {
                this.isScrolling = !1
            }), 1e3),
            handleListScroll: function() {
                this.isScrolling = !0;
                var e = this.$refs["mixin-scroll-content"],
                    t = this.$refs.list;
                return this.topItemIndex = [].concat(l()(t), [{
                    offsetTop: 1 / 0
                }]).findIndex((function(t) {
                    return t.offsetTop - 120 > e.scrollTop
                })) - 1, this.debounceScroll()
            },
            handleProxyRightClick: function(e, t) {
                var i = this;
                return s()(u.a.mark((function n() {
                    var r;
                    return u.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                return n.next = 2, i.$menu([{
                                    text: "显示连接",
                                    icon: "list"
                                }, {
                                    text: "运行脚本",
                                    icon: "js"
                                }], e);
                            case 2:
                                0 === (r = n.sent) ? i.$router.replace({
                                    path: "/home/connection",
                                    query: {
                                        searchText: t
                                    }
                                }).catch((function() {})) : 1 === r && (r = (void 0 === (r = i.currentProfilePayload.proxies) ? [] : r).find((function(e) {
                                    return e.name === t
                                })) || {
                                    name: t
                                }, Object(_.c)(Object(w.d)(r), _.b));
                            case 4:
                            case "end":
                                return n.stop()
                        }
                    }), n)
                })))()
            },
            handleFilterIconClick: function() {
                var e = this;
                this.isShowFilter = !this.isShowFilter, this.isShowFilter || (this.filterKeyword = ""), this.$nextTick((function() {
                    var t = e.$refs.filterKeyword;
                    t && t.focus()
                }))
            },
            checkBtnText: function(e) {
                var t = e.provider;
                e = e.latency;
                return t ? e || "" : e || "测试"
            },
            handleSingleSpeedtest: function(e, t) {
                var i = this;
                return s()(u.a.mark((function n() {
                    var r, o, s, a, l, d;
                    return u.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                if (r = e.name, o = t.name, null !== t.provider) return n.abrupt("return");
                                n.next = 4;
                                break;
                            case 4:
                                return i.cancelLatencyTest(), s = "", n.prev = 6, l = i.settings, a = l.latencyTimeout, l = l.latencyUrl, n.next = 10, i.speedtest(o, a || 3e3, l || "http://www.gstatic.com/generate_204");
                            case 10:
                                s = n.sent, n.next = 15;
                                break;
                            case 13:
                                n.prev = 13, n.t0 = n.catch(6);
                            case 15:
                                (l = i.proxyInMode.find((function(e) {
                                    return e.name === r
                                }))) && (d = l.data.all.find((function(e) {
                                    return e.name === o
                                }))) && (d.latency = s + (/\d/.test(s) ? " ms" : "超时"));
                            case 17:
                            case "end":
                                return n.stop()
                        }
                    }), n, null, [
                        [6, 13]
                    ])
                })))()
            },
            proxyItemsBeforeAnimate: function(e) {
                e.style.opacity = 0
            },
            animateDone: function(e) {},
            proxyItemsShowAnimate: function(e, t) {
                C()(e, {
                    opacity: 1
                }, {
                    duration: 150,
                    easing: "ease-in",
                    complete: t
                })
            },
            proxyItemsHideAnimate: function(e, t) {
                C()(e, {
                    opacity: 0,
                    height: 0
                }, {
                    complete: t,
                    easing: "ease-out",
                    duration: 100
                })
            },
            saveShowSecIdxs: function() {
                v.a.put(b.a.PROXY_SHOW_SEC_IDXS, this.showSecIdxs)
            },
            handleNavigatToGroup: function(e) {
                this.groupBlinkIndex = e;
                var t = this.$refs["mixin-scroll-content"],
                    i = this.$refs.list;
                this.$nextTick((function() {
                    t.scrollTop = i[e].offsetTop - 120
                }))
            },
            scrollToSelected: function(e) {
                this.proxyBlinkIndex = e;
                var t = this.$refs["selected".concat(e)][0],
                    i = this.$refs["mixin-scroll-content"];
                ((e = t.offsetTop - 160) < i.scrollTop || e > i.scrollTop + i.clientHeight - 200) && this.$nextTick((function() {
                    i.scrollTop = t.offsetTop - 160
                }))
            },
            switchVisiable: function(e) {
                var t = this;
                return s()(u.a.mark((function i() {
                    var n, r, o, s, a;
                    return u.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                n = t.$refs.list, r = t.$refs["mixin-scroll-content"], o = null === (n = n[e]) || void 0 === n ? void 0 : n.childNodes[0], s = null == o ? void 0 : o.childNodes[0], a = null == o ? void 0 : o.childNodes[2], t.showSecIdxs.includes(e) ? (t.showSecIdxs = t.showSecIdxs.filter((function(t) {
                                    return t !== e
                                })), t.$nextTick((function() {
                                    s.offsetTop > a.offsetTop && (r.scrollTop = o.offsetTop - 112)
                                }))) : t.showSecIdxs.push(e), t.saveShowSecIdxs();
                            case 7:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            nodeHint: function(e) {
                var t = this.proxies.find((function(t) {
                    return t.name === e.name
                }));
                if (!t) return "";
                var i = t.data.type;
                return "Selector" === i || "Fallback" === i || "URLTest" === i ? this.$parseEmoji("".concat(i, " - ").concat(t.data.now)) : "LoadBalance" === i ? "".concat(i, " - ").concat(t.data.all.length, " server").concat(1 < t.data.all.length ? "s" : "") : i
            },
            cancelLatencyTest: function() {
                0 < this.axiosCancelTokens.length && (this.axiosCancelTokens.forEach((function(e) {
                    e()
                })), this.axiosCancelTokens = [])
            },
            switchProxy: function(e, t) {
                var i = arguments,
                    n = this;
                return s()(u.a.mark((function r() {
                    var o, s, a, d, c;
                    return u.a.wrap((function(r) {
                        for (;;) switch (r.prev = r.next) {
                            case 0:
                                if (2 < i.length && void 0 !== i[2] && i[2]) return r.abrupt("return");
                                r.next = 3;
                                break;
                            case 3:
                                return n.cancelLatencyTest(), r.next = 6, n.clashAxiosClient.put("/proxies/".concat(encodeURIComponent(e)), {
                                    name: t
                                });
                            case 6:
                                if (204 !== r.sent.status) {
                                    r.next = 45;
                                    break
                                }
                                if ((o = l()(n.proxies)).find((function(t) {
                                        return t.name === e
                                    })).data.now = t, n.proxies = 500 < o.length ? Object.freeze(o) : o, o = n.proxies.filter((function(e) {
                                        return "Selector" === e.data.type
                                    })).map((function(e) {
                                        return {
                                            name: e.name,
                                            now: e.data.now
                                        }
                                    })), -1 < n.pfs.index && (s = n.pfs.files[n.pfs.index], n.changeProfile({
                                        index: n.pfs.index,
                                        profile: L(L({}, s), {}, {
                                            selected: o
                                        })
                                    })), s = n.settings.connProxy, 1 === (o = void 0 === s ? 0 : s)) return r.next = 17, n.clashAxiosClient.get("connections");
                                r.next = 42;
                                break;
                            case 17:
                                if (c = r.sent, s = c.status, c = c.data, 200 !== s) {
                                    r.next = 40;
                                    break
                                }
                                d = c.connections, a = x(void 0 === d ? [] : d), r.prev = 23, a.s();
                            case 25:
                                if ((c = a.n()).done) {
                                    r.next = 32;
                                    break
                                }
                                if (d = c.value, c = d.id, d.chains.includes(e)) return r.next = 30, n.clashAxiosClient.delete("connections/".concat(c));
                                r.next = 30;
                                break;
                            case 30:
                                r.next = 25;
                                break;
                            case 32:
                                r.next = 37;
                                break;
                            case 34:
                                r.prev = 34, r.t0 = r.catch(23), a.e(r.t0);
                            case 37:
                                return r.prev = 37, a.f(), r.finish(37);
                            case 40:
                                r.next = 45;
                                break;
                            case 42:
                                if (2 === o) return r.next = 45, n.clashAxiosClient.delete("connections");
                                r.next = 45;
                                break;
                            case 45:
                            case "end":
                                return r.stop()
                        }
                    }), r, null, [
                        [23, 34, 37, 40]
                    ])
                })))()
            },
            startLatencyTest: function(e, t) {
                var i = this;
                return s()(u.a.mark((function n() {
                    var r, o, a, l, d;
                    return u.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                i.cancelLatencyTest(), i.showSecIdxs.find((function(e) {
                                    return e === t
                                })) || i.showSecIdxs.push(t), r = i.proxies.find((function(t) {
                                    return t.name === e
                                })), o = i.settings, a = o.latencyTimeout, l = o.latencyUrl, d = [], r.data.all.forEach(function() {
                                    var e = s()(u.a.mark((function e(t, n) {
                                        var r;
                                        return u.a.wrap((function(e) {
                                            for (;;) switch (e.prev = e.next) {
                                                case 0:
                                                    if (t.provider) return d.find((function(e) {
                                                        return e.name === t.provider.name
                                                    })) || d.push(t.provider), e.abrupt("return");
                                                    e.next = 3;
                                                    break;
                                                case 3:
                                                    return t.latency = null, e.prev = 4, e.next = 7, i.speedtest(t.name, a || 3e3, l || "http://www.gstatic.com/generate_204");
                                                case 7:
                                                    r = e.sent, t.latency = 0 < r ? r + " ms" : "超时", e.next = 14;
                                                    break;
                                                case 11:
                                                    e.prev = 11, e.t0 = e.catch(4), t.latency = "超时";
                                                case 14:
                                                case "end":
                                                    return e.stop()
                                            }
                                        }), e, null, [
                                            [4, 11]
                                        ])
                                    })));
                                    return function(t, i) {
                                        return e.apply(this, arguments)
                                    }
                                }()), d.forEach(function() {
                                    var e = s()(u.a.mark((function e(t) {
                                        return u.a.wrap((function(e) {
                                            for (;;) switch (e.prev = e.next) {
                                                case 0:
                                                    return e.next = 2, i.clashAxiosClient.get("/providers/proxies/".concat(encodeURIComponent(t.name), "/healthcheck"), {
                                                        timeout: 0,
                                                        cancelToken: new O((function(e) {
                                                            i.axiosCancelTokens.push(e)
                                                        }))
                                                    });
                                                case 2:
                                                case "end":
                                                    return e.stop()
                                            }
                                        }), e)
                                    })));
                                    return function(t) {
                                        return e.apply(this, arguments)
                                    }
                                }());
                            case 7:
                            case "end":
                                return n.stop()
                        }
                    }), n)
                })))()
            },
            speedtest: function(e) {
                var t = arguments,
                    i = this;
                return s()(u.a.mark((function n() {
                    var r, o;
                    return u.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                return r = 1 < t.length && void 0 !== t[1] ? t[1] : 1e3, o = 2 < t.length && void 0 !== t[2] ? t[2] : "http://www.gstatic.com/generate_204", n.next = 4, i.clashAxiosClient("/proxies/".concat(encodeURIComponent(e), "/delay?timeout=").concat(r, "&url=").concat(encodeURIComponent(o)), {
                                    cancelToken: new O((function(e) {
                                        i.axiosCancelTokens.push(e)
                                    })),
                                    timeout: 0
                                });
                            case 4:
                                if (o = (o = n.sent).data) return o = o.delay, n.abrupt("return", o || 0);
                                n.next = 9;
                                break;
                            case 9:
                                return n.abrupt("return", 0);
                            case 10:
                            case "end":
                                return n.stop()
                        }
                    }), n)
                })))()
            },
            handleModeSwitch: function(e) {
                var t = this;
                return s()(u.a.mark((function i() {
                    return u.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return i.next = 2, t.setMode({
                                    mode: e
                                });
                            case 2:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            findProvider: function(e, t) {
                for (var i in e) {
                    var n = e[i];
                    if (i = (void 0 === (i = n.proxies) ? [] : i).find((function(e) {
                            return e.name === t
                        }))) return [n, i]
                }
                return [null, {}]
            },
            fetchData: function() {
                var e = this;
                return s()(u.a.mark((function t() {
                    var i, n, o, s, a, l;
                    return u.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (i = Number.MAX_SAFE_INTEGER, e.clashAxiosClient) {
                                    t.next = 3;
                                    break
                                }
                                return t.abrupt("return");
                            case 3:
                                return t.next = 5, Promise.all([e.clashAxiosClient.get("/proxies"), e.clashAxiosClient.get("/providers/proxies", {
                                    validateStatus: function(e) {
                                        return !0
                                    }
                                })]);
                            case 5:
                                l = t.sent, n = r()(l, 2), l = n[0], n = (void 0 === (n = (n = n[1]).data) ? {} : n).providers, o = void 0 === n ? {} : n, s = l.data.proxies, a = s.GLOBAL.all, e.viewData = s, l = Object.keys(s).map((function(t) {
                                    return s[t].hasOwnProperty("all") || (s[t].all = [s[t].now]), s[t].type, s[t].all = s[t].all.map((function(t) {
                                        var n = null,
                                            a = s[t];
                                        if (void 0 === a) {
                                            var l = e.findProvider(o, t),
                                                d = (c = r()(l, 2))[0],
                                                c = (l = 0, void 0 === (c = (h = c[1]).history) ? [] : c),
                                                h = void 0 !== (h = h.udp) && h;
                                            return {
                                                name: t,
                                                provider: d,
                                                latency: n = 0 < c.length ? 0 === (l = c[c.length - 1].delay) ? "超时" : "".concat(l, " ms") : "",
                                                delay: l || i,
                                                udp: h
                                            }
                                        }
                                        return h = 0, {
                                            name: t,
                                            provider: null,
                                            latency: n = a && 0 < a.history.length ? 0 === (h = a.history[a.history.length - 1].delay) ? "超时" : "".concat(h, " ms") : n,
                                            delay: h || i,
                                            udp: (null == a ? void 0 : a.udp) || !1
                                        }
                                    })).filter((function(t) {
                                        return "" === e.filterKeyword || new RegExp(e.filterKeyword, "i").test(t.name)
                                    })).sort((function(t, n) {
                                        var r, o, s = void 0 === (r = e.settings.proxyOrder) ? 0 : r;
                                        return 1 === s ? (r = void 0 === (o = t.delay) ? i : o) - (void 0 === (o = n.delay) ? i : o) : 2 !== s || (t = t.name, n = n.name, t.localeCompare(n))
                                    })), {
                                        name: t,
                                        data: s[t]
                                    }
                                })).sort((function(e, t) {
                                    return a.indexOf(e.name) - a.indexOf(t.name)
                                })), e.proxies = 500 < l.length ? Object.freeze(l) : l;
                            case 16:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            }
        }),
        beforeRouteEnter: function(e, t, i) {
            var n;
            i((n = s()(u.a.mark((function e(t) {
                return u.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            return t.getMode(), t.showSecIdxs = v.a.get(b.a.PROXY_SHOW_SEC_IDXS) || [], t.intervalID = setInterval(s()(u.a.mark((function e() {
                                return u.a.wrap((function(e) {
                                    for (;;) switch (e.prev = e.next) {
                                        case 0:
                                            if (t.isWindowShow && !t.isScrolling && t.clashAxiosFlyingRequestCount < 5) return e.next = 3, Promise.allSettled([t.getMode(), t.fetchData()]).catch((function(e) {}));
                                            e.next = 3;
                                            break;
                                        case 3:
                                        case "end":
                                            return e.stop()
                                    }
                                }), e)
                            }))), 5e3), e.next = 5, t.fetchData().catch((function(e) {}));
                        case 5:
                        case "end":
                            return e.stop()
                    }
                }), e)
            }))), function(e) {
                return n.apply(this, arguments)
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            this.intervalID && clearInterval(this.intervalID), this.cancelLatencyTest(), i()
        }
    }, i(314), i(316), d = Object(m.a)(d, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            attrs: {
                id: "main-proxy-view"
            }
        }, [i("proxy-mode-switcher", {
            attrs: {
                mode: e.currentMode
            },
            on: {
                switch: e.handleModeSwitch
            }
        }), e._v(" "), i("div", {
            ref: "mixin-scroll-content",
            class: ["scroll-view-" + e.theme],
            on: {
                scroll: function(t) {
                    return e.handleListScroll()
                }
            }
        }, [e._l(e.proxyInMode, (function(t, n) {
            return i("div", {
                key: t.name,
                ref: "list",
                refInFor: !0
            }, [i("div", {
                staticClass: "proxy-list"
            }, [i("div", {
                class: ["proxy-section-" + e.theme, e.groupBlinkIndex === n ? "outline" : ""],
                on: {
                    click: function(t) {
                        return e.switchVisiable(n)
                    }
                }
            }, [i("div", {
                staticClass: "proxy-section-name"
            }, [i("div", {
                staticClass: "proxy-section-name-left",
                domProps: {
                    innerHTML: e._s(e.$parseEmoji(t.name))
                }
            }), e._v(" "), i("div", {
                staticClass: "proxy-hint-type",
                class: ["Selector" === t.data.type ? "proxy-hint-type-selector" : ""]
            }, [e._v("\n              " + e._s(t.data.type[0]) + "\n            ")]), e._v(" "), t.data.now ? i("div", {
                staticClass: "proxy-hint-line"
            }) : e._e(), e._v(" "), t.data.now ? i("div", {
                staticClass: "proxy-hint",
                domProps: {
                    innerHTML: e._s(e.$parseEmoji("" + t.data.now))
                }
            }) : e._e()]), e._v(" "), i("div", {
                staticClass: "proxy-section-right"
            }, [e.showSecIdxs.includes(n) ? i("Hint", {
                staticClass: "icon clickable",
                attrs: {
                    hint: "移动到选定的代理",
                    position: "top"
                },
                on: {
                    click: function(t) {
                        return t.stopPropagation(), e.scrollToSelected(n)
                    }
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V2c0-.55-.45-1-1-1s-1 .45-1 1v1.06C6.83 3.52 3.52 6.83 3.06 11H2c-.55 0-1 .45-1 1s.45 1 1 1h1.06c.46 4.17 3.77 7.48 7.94 7.94V22c0 .55.45 1 1 1s1-.45 1-1v-1.06c4.17-.46 7.48-3.77 7.94-7.94H22c.55 0 1-.45 1-1s-.45-1-1-1h-1.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"
                }
            })])]) : e._e(), e._v(" "), i("Hint", {
                staticClass: "icon clickable",
                attrs: {
                    hint: "测试延迟",
                    position: "top"
                },
                on: {
                    click: function(i) {
                        return i.stopPropagation(), e.startLatencyTest(t.name, n)
                    }
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M15.9 5c-.17 0-.32.09-.41.23l-.07.15-5.18 11.65c-.16.29-.26.61-.26.96 0 1.11.9 2.01 2.01 2.01.96 0 1.77-.68 1.96-1.59l.01-.03L16.4 5.5c0-.28-.22-.5-.5-.5zM2.06 10.06c.51.51 1.33.55 1.89.09 2.76-2.26 6.24-3.18 9.58-2.76l1.19-2.68c-4.35-.78-8.96.3-12.57 3.25-.64.53-.68 1.51-.09 2.1zm19.88 0c.59-.59.55-1.57-.1-2.1-1.36-1.11-2.86-1.95-4.44-2.53l-.53 2.82c1.13.47 2.19 1.09 3.17 1.89.58.46 1.39.43 1.9-.08zm-4.03 4.03c.6-.6.56-1.63-.14-2.12-.46-.33-.94-.61-1.44-.86l-.55 2.92c.11.07.22.14.32.22.57.4 1.33.32 1.81-.16zm-11.83-.01c.5.5 1.27.54 1.85.13.94-.66 2.01-1.06 3.1-1.22l1.28-2.88c-2.13-.06-4.28.54-6.09 1.84-.69.51-.74 1.53-.14 2.13z"
                }
            })])]), e._v(" "), ["rule", "script"].includes(e.currentMode) ? i("Hint", {
                staticClass: "icon clickable",
                attrs: {
                    hint: "显示或隐藏代理",
                    position: "left"
                },
                on: {
                    click: function(t) {
                        return t.stopPropagation(), e.switchVisiable(n)
                    }
                }
            }, [e.showSecIdxs.includes(n) ? i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0zm0 0h24v24H0V0zm0 0h24v24H0V0zm0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M12 6.5c2.76 0 5 2.24 5 5 0 .51-.1 1-.24 1.46l3.06 3.06c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l2.17 2.17c.47-.14.96-.24 1.47-.24zM2.71 3.16c-.39.39-.39 1.02 0 1.41l1.97 1.97C3.06 7.83 1.77 9.53 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.97-.3 4.31-.82l2.72 2.72c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L4.13 3.16c-.39-.39-1.03-.39-1.42 0zM12 16.5c-2.76 0-5-2.24-5-5 0-.77.18-1.5.49-2.14l1.57 1.57c-.03.18-.06.37-.06.57 0 1.66 1.34 3 3 3 .2 0 .38-.03.57-.07L14.14 16c-.65.32-1.37.5-2.14.5zm2.97-5.33c-.15-1.4-1.25-2.49-2.64-2.64l2.64 2.64z"
                }
            })]) : i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M12 4C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 12.5c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"
                }
            })])]) : e._e()], 1)]), e._v(" "), i("transition", {
                attrs: {
                    name: "fall-fade"
                }
            }, [!["rule", "script"].includes(e.currentMode) || e.showSecIdxs.includes(n) ? i("div", {
                staticClass: "proxy-items"
            }, [e._l(t.data.all, (function(r, o) {
                return i("div", {
                    key: r.name + t.name + o,
                    ref: r.name === t.data.now ? "selected" + n : "",
                    refInFor: !0,
                    staticClass: "proxy-item",
                    class: {
                        selected: r.name === t.data.now, clickable: "Selector" === t.data.type, outline: r.name === t.data.now && n === e.proxyBlinkIndex
                    },
                    style: [{
                        width: e.proxyItemWidth
                    }],
                    on: {
                        click: function(i) {
                            return e.switchProxy(t.name, r.name, "Selector" !== t.data.type)
                        },
                        contextmenu: function(t) {
                            return e.handleProxyRightClick(t, r.name)
                        }
                    }
                }, [i("div", {
                    staticClass: "indicator"
                }), e._v(" "), i("div", {
                    staticClass: "info"
                }, [i("div", {
                    staticClass: "left"
                }, [i("div", {
                    staticClass: "item-name",
                    domProps: {
                        innerHTML: e._s(e.$parseEmoji(r.name))
                    }
                }), e._v(" "), i("div", {
                    staticClass: "item-bottom"
                }, [i("div", {
                    staticClass: "item-hint",
                    domProps: {
                        innerHTML: e._s(r.provider ? "Provider: " + r.provider.name : e.nodeHint(r))
                    }
                }), e._v(" "), r.udp ? i("div", {
                    staticClass: "item-udp"
                }, [e._v("UDP")]) : e._e()])]), e._v(" "), i("div", {
                    class: {
                        offline: "超时" === r.latency, online: !["超时", null, void 0, ""].includes(r.latency), time: !0
                    },
                    on: {
                        click: [function(i) {
                            return e.handleSingleSpeedtest(t, r)
                        }, function(e) {
                            e.stopPropagation()
                        }]
                    }
                }, [e._v("\n                  " + e._s(e.checkBtnText(r)) + "\n                ")])])])
            })), e._v(" "), e._l(new Array(20), (function(t, n) {
                return i("i", {
                    key: n,
                    style: {
                        width: e.proxyItemWidth
                    }
                })
            }))], 2) : e._e()])], 1)])
        })), e._v(" "), e.isShowNavigator ? i("navigator", {
            attrs: {
                list: e.proxyInMode.map((function(e) {
                    return e.name
                })),
                index: e.topItemIndex,
                width: e.navigatorWidth
            },
            on: {
                select: e.handleNavigatToGroup
            }
        }) : e._e(), e._v(" "), null === e.proxyInMode && "direct" !== this.currentMode ? i("div", [i("div", {
            class: ["fake-section-" + e.theme]
        }), e._v(" "), i("div", {
            staticClass: "proxy-items proxy-list"
        }, e._l(new Array(12), (function(t, n) {
            return i("div", {
                key: n,
                class: ["fake-item-" + e.theme]
            }, [i("div")])
        })), 0)]) : e._e(), e._v(" "), 0 === e.proxyInMode.length && "direct" !== this.currentMode ? i("div", {
            staticClass: "empty-hint"
        }, [i("div", [e._v("此配置文件中没有代理组")]), e._v(" "), i("div", [e._v("\n        前往\n        "), i("span", {
            on: {
                click: function(t) {
                    return e.$router.replace({
                        path: "/home/server"
                    })
                }
            }
        }, [e._v("配置")]), e._v("\n        导入/切换配置文件\n      ")])]) : e._e()], 2), e._v(" "), e.settings.showProxyFilter ? i("div", {
            staticClass: "filter-keyword"
        }, [i("transition", {
            attrs: {
                name: "move-right"
            }
        }, [e.isShowFilter ? i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.filterKeyword,
                expression: "filterKeyword"
            }],
            ref: "filterKeyword",
            attrs: {
                spellcheck: "false",
                type: "text"
            },
            domProps: {
                value: e.filterKeyword
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.filterKeyword = t.target.value)
                }
            }
        }) : e._e()]), e._v(" "), i("div", {
            on: {
                click: e.handleFilterIconClick
            }
        }, [e.isShowFilter ? i("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: "white",
                width: "20px",
                height: "20px"
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
            }
        })]) : i("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: "white",
                width: "20px",
                height: "20px"
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M11 18h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1zM3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1zm4 6h10c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1z"
            }
        })])])], 1) : e._e()], 1)
    }), [], !1, null, "4fa0a583", null);
    t.default = d.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(105),
        r = i.n(n),
        o = i(10),
        s = i.n(o),
        a = i(18),
        l = i.n(a),
        d = (n = i(3), i.n(n)),
        c = (o = i(27), a = i(61), i.n(a)),
        h = i(48),
        u = i(12),
        p = (n = {
            props: {
                text: String,
                size: String,
                isLoading: Boolean
            },
            methods: {
                handleClick: function() {
                    this.isLoading || this.$emit("click")
                }
            }
        }, a = (i(318), i(30)), n = Object(a.a)(n, (function() {
            var e = this,
                t = e.$createElement;
            return (t = e._self._c || t)("div", {
                staticClass: "main-button-view",
                on: {
                    click: e.handleClick
                }
            }, [e.isLoading ? t("div", {
                staticClass: "line"
            }, [t("div", {
                class: ["box", "animation-delay1", "large" === e.size ? "large" : "small"]
            }), e._v(" "), t("div", {
                class: ["box", "animation-delay2", "large" === e.size ? "large" : "small"]
            }), e._v(" "), t("div", {
                class: ["box", "animation-delay3", "large" === e.size ? "large" : "small"]
            }), e._v(" "), t("div", {
                class: ["box", "animation-delay4", "large" === e.size ? "large" : "small"]
            }), e._v(" "), t("div", {
                class: ["box", "animation-delay5", "large" === e.size ? "large" : "small"]
            })]) : t("div", [e._v(e._s(e.text))])])
        }), [], !1, null, "f3b3ccf8", null).exports, i(22));

    function g(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function f(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? g(Object(i), !0).forEach((function(t) {
                l()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : g(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    o = {
        components: {
            Button: n
        },
        props: [],
        data: function() {
            return {
                providers: [],
                ruleProviders: []
            }
        },
        watch: {
            clashStatus: function(e) {
                e === h.a.CONNECTED && this.fetchData()
            },
            profileRefreshTimes: function() {
                this.fetchData()
            }
        },
        computed: f(f({}, Object(o.mapState)({
            clashPath: function(e) {
                return e.app.clashPath
            },
            clashStatus: function(e) {
                return e.app.clashStatus
            },
            profileRefreshTimes: function(e) {
                return e.app.profileRefreshTimes
            },
            currentProfilePayload: function(e) {
                return e.app.currentProfilePayload
            }
        })), Object(o.mapGetters)(["clashAxiosClient"])),
        methods: {
            fromNowString: function(e) {
                return c()(e).locale('zh-cn').fromNow()
            },
            handleAllProvidersUpdate: function() {
                for (var e in this.providers) this.handleProviderUpdate(e);
                for (var t in this.ruleProviders) this.handleRuleProviderUpdate(t)
            },
            handleAllProvidersHealthCheck: function() {
                for (var e in this.providers) this.handleHealthCheck(e)
            },
            handleHealthCheck: function(e) {
                var t = this;
                return s()(d.a.mark((function i() {
                    var n, r;
                    return d.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                if (n = t.providers[e], r = n.name) return t.$set(t.providers, e, f(f({}, n), {}, {
                                    isChecking: !0
                                })), i.prev = 4, i.next = 7, t.clashAxiosClient.get("/providers/proxies/".concat(encodeURIComponent(r), "/healthcheck"), {
                                    timeout: 0
                                });
                                i.next = 12;
                                break;
                            case 7:
                                i.next = 11;
                                break;
                            case 9:
                                i.prev = 9, i.t0 = i.catch(4);
                            case 11:
                                t.$set(t.providers, e, f(f({}, n), {}, {
                                    isChecking: !1
                                }));
                            case 12:
                            case "end":
                                return i.stop()
                        }
                    }), i, null, [
                        [4, 9]
                    ])
                })))()
            },
            handleProviderUpdate: function(e) {
                var t = this;
                return s()(d.a.mark((function i() {
                    var n, r, o, s, a, l;
                    return d.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                if (n = t.providers[e], r = n.name, o = n.vehicleType, ["File", "HTTP"].includes(o) && r) return t.$set(t.providers, e, f(f({}, n), {}, {
                                    isUpdating: !0,
                                    message: ""
                                })), i.prev = 4, i.next = 7, t.clashAxiosClient.put("/providers/proxies/".concat(encodeURIComponent(r)), {}, {
                                    validateStatus: function(e) {
                                        return !0
                                    },
                                    timeout: 0
                                });
                                i.next = 33;
                                break;
                            case 7:
                                if (s = i.sent, o = s.status, s = s.data, 204 === o) return i.next = 13, t.fetchSingleData("proxies", r);
                                i.next = 26;
                                break;
                            case 13:
                                if (i.t1 = a = i.sent, i.t0 = null !== i.t1, !i.t0) {
                                    i.next = 17;
                                    break
                                }
                                i.t0 = void 0 !== a;
                            case 17:
                                if (!i.t0) {
                                    i.next = 21;
                                    break
                                }
                                i.t2 = a, i.next = 22;
                                break;
                            case 21:
                                i.t2 = n;
                            case 22:
                                l = i.t2, t.$set(t.providers, e, f(f({}, l), {}, {
                                    isUpdating: !1,
                                    message: ""
                                })), i.next = 28;
                                break;
                            case 26:
                                l = void 0 === (l = s.message) ? "无法更新提供者" : l, t.$set(t.providers, e, f(f({}, n), {}, {
                                    isUpdating: !1,
                                    message: l
                                }));
                            case 28:
                                i.next = 33;
                                break;
                            case 30:
                                i.prev = 30, i.t3 = i.catch(4), t.$set(t.providers, e, f(f({}, n), {}, {
                                    isUpdating: !1,
                                    message: i.t3
                                }));
                            case 33:
                            case "end":
                                return i.stop()
                        }
                    }), i, null, [
                        [4, 30]
                    ])
                })))()
            },
            handleRuleProviderUpdate: function(e) {
                var t = this;
                return s()(d.a.mark((function i() {
                    var n, r, o, s, a, l;
                    return d.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                if (n = t.ruleProviders[e], r = n.name, o = n.vehicleType, ["File", "HTTP"].includes(o) && r) return t.$set(t.ruleProviders, e, f(f({}, n), {}, {
                                    isUpdating: !0,
                                    message: ""
                                })), i.prev = 4, i.next = 7, t.clashAxiosClient.put("/providers/rules/".concat(encodeURIComponent(r)), {}, {
                                    validateStatus: function(e) {
                                        return !0
                                    },
                                    timeout: 0
                                });
                                i.next = 33;
                                break;
                            case 7:
                                if (s = i.sent, o = s.status, s = s.data, 204 === o) return i.next = 13, t.fetchSingleData("rules", r);
                                i.next = 26;
                                break;
                            case 13:
                                if (i.t1 = a = i.sent, i.t0 = null !== i.t1, !i.t0) {
                                    i.next = 17;
                                    break
                                }
                                i.t0 = void 0 !== a;
                            case 17:
                                if (!i.t0) {
                                    i.next = 21;
                                    break
                                }
                                i.t2 = a, i.next = 22;
                                break;
                            case 21:
                                i.t2 = n;
                            case 22:
                                l = i.t2, t.$set(t.ruleProviders, e, f(f({}, l), {}, {
                                    isUpdating: !1,
                                    message: ""
                                })), i.next = 28;
                                break;
                            case 26:
                                l = void 0 === (l = s.message) ? "无法更新提供者" : l, t.$set(t.ruleProviders, e, f(f({}, n), {}, {
                                    isUpdating: !1,
                                    message: l
                                }));
                            case 28:
                                i.next = 33;
                                break;
                            case 30:
                                i.prev = 30, i.t3 = i.catch(4), t.$set(t.ruleProviders, e, f(f({}, n), {}, {
                                    isUpdating: !1,
                                    message: i.t3
                                }));
                            case 33:
                            case "end":
                                return i.stop()
                        }
                    }), i, null, [
                        [4, 30]
                    ])
                })))()
            },
            handleEditProviderFile: function(e, t) {
                var i, n = t.name;
                n = (e = void 0 === (e = {
                    rule: void 0 === (t = (i = this.currentProfilePayload)["rule-providers"]) ? {} : t,
                    proxy: void 0 === (i = i["proxy-providers"]) ? {} : i
                } [e][n]) ? {} : e).path, e = function(e) {
                    p.shell.openPath(e)
                };
                n && (Object(u.isAbsolute)(n) ? e(n) : e(Object(u.join)(this.clashPath, n)))
            },
            fetchSingleData: function(e, t) {
                var i = this;
                return s()(d.a.mark((function n() {
                    var r, o;
                    return d.a.wrap((function(n) {
                        for (;;) switch (n.prev = n.next) {
                            case 0:
                                return r = "/providers/".concat(e, "/").concat(encodeURIComponent(t)), n.next = 3, i.clashAxiosClient.get(r, {
                                    validateStatus: function() {
                                        return !0
                                    }
                                });
                            case 3:
                                return o = n.sent, r = o.status, o = o.data, n.abrupt("return", 200 === r ? o : null);
                            case 7:
                            case "end":
                                return n.stop()
                        }
                    }), n)
                })))()
            },
            fetchData: function() {
                var e = this;
                return s()(d.a.mark((function t() {
                    var i, n, o, s, a, l, c, h, u, p, g, m;
                    return d.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, Promise.all([e.clashAxiosClient.get("/providers/proxies"), e.clashAxiosClient.get("/providers/rules")]);
                            case 2:
                                if (h = t.sent, n = r()(h, 2), o = n[0], i = o.status, h = o.data, o = void 0 === h ? {} : h, h = n[1], n = h.status, h = h.data, 200 === i) {
                                    for (o = void 0 === (o = o.providers) ? {} : o, s = [], a = 0, l = Object.entries(o); a < l.length; a++)(c = r()(l[a], 2))[0], c = c[1], s.push(f(f({}, c), {}, {
                                        isChecking: !1,
                                        isUpdating: !1,
                                        message: ""
                                    }));
                                    e.providers = s.filter((function(e) {
                                        return ["HTTP", "File"].includes(e.vehicleType)
                                    }))
                                } else e.providers = [];
                                if (200 === n) {
                                    for (h = void 0 === (h = h.providers) ? {} : h, u = [], p = 0, g = Object.entries(h); p < g.length; p++)(m = r()(g[p], 2))[0], m = m[1], u.push(f(f({}, m), {}, {
                                        isUpdating: !1,
                                        message: ""
                                    }));
                                    e.ruleProviders = u.filter((function(e) {
                                        return ["HTTP", "File"].includes(e.vehicleType)
                                    }))
                                } else e.ruleProviders = [];
                            case 13:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            }
        },
        beforeRouteEnter: function(e, t, i) {
            i((function(e) {
                e.fetchData()
            }))
        }
    }, i(320), o = Object(a.a)(o, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-provider-view-" + e.theme]
        }, [i("div", {
            class: ["card"]
        }, [i("div", {
            staticClass: "header"
        }, [i("div", {
            staticClass: "buttons"
        }, [i("Button", {
            staticClass: "btn",
            attrs: {
                text: "更新全部",
                isLoading: !1
            },
            on: {
                click: e.handleAllProvidersUpdate
            }
        }), e._v(" "), i("Button", {
            staticClass: "btn",
            attrs: {
                text: "检查全部连接",
                isLoading: !1
            },
            on: {
                click: e.handleAllProvidersHealthCheck
            }
        })], 1)]), e._v(" "), i("div", {
            ref: "mixin-scroll-content",
            staticClass: "content"
        }, [0 < e.providers.length ? [i("div", {
            staticClass: "title"
        }, [e._v("代理提供者")]), e._v(" "), i("div", {
            staticClass: "items"
        }, e._l(e.providers, (function(t, n) {
            return i("div", {
                key: t.name,
                staticClass: "provider-item"
            }, [i("div", {
                staticClass: "provider-item-main"
            }, [i("div", [i("div", {
                staticClass: "name-type"
            }, [i("div", {
                staticClass: "name"
            }, [e._v(e._s(t.name))])]), e._v(" "), i("div", {
                staticClass: "update-hint"
            }, [i("div", {
                staticClass: "type"
            }, [e._v("\n                    " + e._s(t.vehicleType) + " (" + e._s(t.proxies.length) + "\n                    Proxies) (" + e._s(e.fromNowString(t.updatedAt)) + ")\n                  ")])]), e._v(" "), i("div", {
                staticClass: "error-hint"
            }, [e._v(e._s(t.message))])]), e._v(" "), i("div", {
                staticClass: "empty"
            }), e._v(" "), i("div", {
                staticClass: "icon-btn",
                on: {
                    click: function(t) {
                        return e.handleHealthCheck(n)
                    }
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M15.9 5c-.17 0-.32.09-.41.23l-.07.15-5.18 11.65c-.16.29-.26.61-.26.96 0 1.11.9 2.01 2.01 2.01.96 0 1.77-.68 1.96-1.59l.01-.03L16.4 5.5c0-.28-.22-.5-.5-.5zM2.06 10.06c.51.51 1.33.55 1.89.09 2.76-2.26 6.24-3.18 9.58-2.76l1.19-2.68c-4.35-.78-8.96.3-12.57 3.25-.64.53-.68 1.51-.09 2.1zm19.88 0c.59-.59.55-1.57-.1-2.1-1.36-1.11-2.86-1.95-4.44-2.53l-.53 2.82c1.13.47 2.19 1.09 3.17 1.89.58.46 1.39.43 1.9-.08zm-4.03 4.03c.6-.6.56-1.63-.14-2.12-.46-.33-.94-.61-1.44-.86l-.55 2.92c.11.07.22.14.32.22.57.4 1.33.32 1.81-.16zm-11.83-.01c.5.5 1.27.54 1.85.13.94-.66 2.01-1.06 3.1-1.22l1.28-2.88c-2.13-.06-4.28.54-6.09 1.84-.69.51-.74 1.53-.14 2.13z"
                }
            })])]), e._v(" "), i("div", {
                staticClass: "icon-btn",
                on: {
                    click: function(i) {
                        return e.handleEditProviderFile("proxy", t)
                    }
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("title", [e._v("Edit file")]), e._v(" "), i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M8.7 15.9L4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4-.39-.39-1.01-.39-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0 .39-.39.39-1.01 0-1.4zm6.6 0l3.9-3.9-3.9-3.9c-.39-.39-.39-1.01 0-1.4.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0-.39-.39-.39-1.01 0-1.4z"
                }
            })])]), e._v(" "), "HTTP" === t.vehicleType ? i("div", {
                staticClass: "icon-btn",
                on: {
                    click: function(t) {
                        return e.handleProviderUpdate(n)
                    }
                }
            }, [i("svg", {
                class: {
                    rotating: t.isUpdating
                },
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("title", [e._v("更新提供者")]), e._v(" "), i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M17.65 6.35c-1.63-1.63-3.94-2.57-6.48-2.31-3.67.37-6.69 3.35-7.1 7.02C3.52 15.91 7.27 20 12 20c3.19 0 5.93-1.87 7.21-4.56.32-.67-.16-1.44-.9-1.44-.37 0-.72.2-.88.53-1.13 2.43-3.84 3.97-6.8 3.31-2.22-.49-4.01-2.3-4.48-4.52C5.31 9.44 8.26 6 12 6c1.66 0 3.14.69 4.22 1.78l-1.51 1.51c-.63.63-.19 1.71.7 1.71H19c.55 0 1-.45 1-1V6.41c0-.89-1.08-1.34-1.71-.71l-.64.65z"
                }
            })])]) : e._e()])])
        })), 0)] : e._e(), e._v(" "), 0 < e.ruleProviders.length ? [i("div", {
            staticClass: "title"
        }, [e._v("Rule Providers")]), e._v(" "), i("div", {
            staticClass: "items"
        }, e._l(e.ruleProviders, (function(t, n) {
            return i("div", {
                key: t.name,
                staticClass: "provider-item"
            }, [i("div", {
                staticClass: "provider-item-main"
            }, [i("div", [i("div", {
                staticClass: "name-type"
            }, [i("div", {
                staticClass: "name"
            }, [e._v("\n                    " + e._s(t.name) + "\n                  ")])]), e._v(" "), i("div", {
                staticClass: "update-hint"
            }, [i("div", {
                staticClass: "type"
            }, [e._v("\n                    " + e._s(t.vehicleType) + "\n                    " + e._s(t.behavior) + " (" + e._s(t.ruleCount) + " Rules)\n                    (" + e._s(e.fromNowString(t.updatedAt)) + ")\n                  ")])]), e._v(" "), i("div", {
                staticClass: "error-hint"
            }, [e._v(e._s(t.message))])]), e._v(" "), i("div", {
                staticClass: "empty"
            }), e._v(" "), i("div", {
                staticClass: "icon-btn",
                on: {
                    click: function(i) {
                        return e.handleEditProviderFile("rule", t)
                    }
                }
            }, [i("svg", {
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("title", [e._v("Edit file")]), e._v(" "), i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M8.7 15.9L4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4-.39-.39-1.01-.39-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0 .39-.39.39-1.01 0-1.4zm6.6 0l3.9-3.9-3.9-3.9c-.39-.39-.39-1.01 0-1.4.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0-.39-.39-.39-1.01 0-1.4z"
                }
            })])]), e._v(" "), i("div", {
                staticClass: "icon-btn",
                on: {
                    click: function(t) {
                        return e.handleRuleProviderUpdate(n)
                    }
                }
            }, [i("svg", {
                class: {
                    rotating: t.isUpdating
                },
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24"
                }
            }, [i("title", [e._v("更新提供者")]), e._v(" "), i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M17.65 6.35c-1.63-1.63-3.94-2.57-6.48-2.31-3.67.37-6.69 3.35-7.1 7.02C3.52 15.91 7.27 20 12 20c3.19 0 5.93-1.87 7.21-4.56.32-.67-.16-1.44-.9-1.44-.37 0-.72.2-.88.53-1.13 2.43-3.84 3.97-6.8 3.31-2.22-.49-4.01-2.3-4.48-4.52C5.31 9.44 8.26 6 12 6c1.66 0 3.14.69 4.22 1.78l-1.51 1.51c-.63.63-.19 1.71.7 1.71H19c.55 0 1-.45 1-1V6.41c0-.89-1.08-1.34-1.71-.71l-.64.65z"
                }
            })])])])])
        })), 0)] : e._e()], 2)])])
    }), [], !1, null, "5a14fd42", null), t.default = o.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(10),
        r = i.n(n),
        o = i(18),
        s = i.n(o),
        a = i(3),
        l = i.n(a),
        d = i(35),
        c = i(38),
        h = (n = i(69), i.n(n)),
        u = Symbol(),
        p = Symbol(),
        g = Symbol(),
        f = (o = {
            props: ["src", "clickalbe"],
            data: function() {
                return {
                    status: u
                }
            },
            computed: {
                isDefault: function() {
                    return this.status === u
                },
                isLoaded: function() {
                    return this.status === p
                },
                isFailed: function() {
                    return this.status === g
                }
            },
            methods: {
                imgLoaded: function() {
                    this.status = p
                },
                imgFailed: function() {
                    this.status = g
                }
            }
        }, a = (i(366), i(30)), n = Object(a.a)(o, (function() {
            var e = this,
                t = e.$createElement;
            return (t = e._self._c || t)("div", {
                attrs: {
                    id: "lazy-image-view"
                }
            }, [t("div", {
                directives: [{
                    name: "show",
                    rawName: "v-show",
                    value: e.isDefault,
                    expression: "isDefault"
                }],
                staticClass: "placeholder ad-img twinkling"
            }, [t("div", [e._v("图片正在加载")])]), e._v(" "), t("img", {
                directives: [{
                    name: "show",
                    rawName: "v-show",
                    value: e.isLoaded,
                    expression: "isLoaded"
                }],
                class: {
                    "ad-img": !0, clickable: e.clickalbe
                },
                attrs: {
                    src: e.src
                },
                on: {
                    load: e.imgLoaded,
                    error: e.imgFailed,
                    click: function(t) {
                        return e.$emit("click")
                    }
                }
            }), e._v(" "), t("div", {
                directives: [{
                    name: "show",
                    rawName: "v-show",
                    value: e.isFailed,
                    expression: "isFailed"
                }],
                staticClass: "ad-img error-img"
            }, [t("div", [e._v("找不到图片.但希望你能给汉化clash的我捐赠!")]), e._v(" "), t("img", {
                attrs: {
                    src: "static/svg/1f996.svg",
                    alt: ""
                }
            })])])
        }), [], !1, null, "65724216", null).exports, o = i(27), i(22));

    function m(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }
    o = {
        props: [],
        components: {
            LazyImageView: n
        },
        data: function() {
            return {
                adImages: []
            }
        },
        computed: function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var i = null != arguments[t] ? arguments[t] : {};
                t % 2 ? m(Object(i), !0).forEach((function(t) {
                    s()(e, t, i[t])
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : m(Object(i)).forEach((function(t) {
                    Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
                }))
            }
            return e
        }({}, Object(o.mapState)({})),
        methods: {
            select: function(e) {
                f.shell.openExternal(["https://t.me/Rules_lhie1", "https://t.me/Fndroids", "https://github.com/ender-zhao/Clash-for-Windows_Chinese-Attached", "https://github.com/Dreamacro/clash", "https://github.com/yichengchen/clashX", "https://docs.cfw.lbyczf.com/", "https://fndroid.github.io/clash-config-builder/", "https://github.com/tiagonmas/Windows-Loopback-Exemption-Manager", "https://github.com/Noisyfox/sysproxy", "https://github.com/eycorsican/go-tun2socks", "https://dev.maxmind.com/geoip/geoip2/geolite2/", "https://github.com/twitter/twemoji", "https://github.com/Jigsaw-Code/outline-client", "https://github.com/microsoft/terminal/", "https://www.wintun.net/", "https://github.com/winsw/winsw", "https://apps.apple.com/us/app-bundle/quantumult-x-upgrade/id1482985563", "https://github.com/Kr328/clash-premium-installer"][e])
            },
            adClick: function(e) {
                f.shell.openExternal(this.adImages[e].click)
            }
        },
        beforeRouteEnter: function(e, t, i) {
            var n;
            i((n = r()(l.a.mark((function e(t) {
                var i, n, r;
                return l.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            return t.adImages = d.a.get(c.a.AD_IMAGES) || [], e.next = 3, h.a.get("https://raw.githubusercontent.com/Fndroid/ads/master/ads_v2.json?t=" + (new Date).getTime());
                        case 3:
                            r = e.sent, i = r.status, r = r.data, 200 === i && (n = r.feedback) && (r = n, d.a.put(c.a.AD_IMAGES, r), t.adImages = r);
                        case 6:
                        case "end":
                            return e.stop()
                    }
                }), e)
            }))), function(e) {
                return n.apply(this, arguments)
            }))
        }
    }, i(368), i(370), o = Object(a.a)(o, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            attrs: {
                id: "main-about-view"
            }
        }, [e._m(0), e._v(" "), i("div", {
            staticClass: "section"
        }, [i("div", {
            staticClass: "title"
        }, [e._v("关于")]), e._v(" "), i("div", {
            staticClass: "chat-list"
        }, [i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(2)
                }
            }
        }, [e._v("Github")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(5)
                }
            }
        }, [e._v("帮助文档")])])]), e._v(" "), i("div", {
            staticClass: "section"
        }, [i("div", {
            staticClass: "title"
        }, [e._v("鸣谢")]), e._v(" "), i("div", {
            staticClass: "chat-list"
        }, [i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(3)
                }
            }
        }, [e._v("Clash")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(4)
                }
            }
        }, [e._v("ClashX")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(16)
                }
            }
        }, [e._v("\n        Quantumult(X)\n      ")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(10)
                }
            }
        }, [e._v("GeoLite2")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(11)
                }
            }
        }, [e._v("twemoji")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(7)
                }
            }
        }, [e._v("\n        EnableLoopback\n      ")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(8)
                }
            }
        }, [e._v("sysproxy")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(9)
                }
            }
        }, [e._v("\n        go-tun2socks\n      ")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(12)
                }
            }
        }, [e._v("\n        outline-client\n      ")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(13)
                }
            }
        }, [e._v("terminal")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(14)
                }
            }
        }, [e._v("Wintun")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(15)
                }
            }
        }, [e._v("winsw")]), e._v(" "), i("div", {
            class: ["chat-item-" + e.theme],
            on: {
                click: function(t) {
                    return e.select(17)
                }
            }
        }, [e._v("\n        clash-premium-installer\n      ")])])]), e._v(" "), i("div", {
            staticClass: "section ad-section"
        }, [i("div", {
            staticClass: "title"
        }, [e._v("广告")]), e._v(" "), i("div", {
            staticClass: "ad-img-list"
        }, e._l(e.adImages, (function(t, n) {
            return i("div", {
                key: n,
                staticClass: "ad-img"
            }, [i("lazy-image-view", {
                attrs: {
                    clickalbe: t.click,
                    src: t.img
                },
                on: {
                    click: function(t) {
                        return e.adClick(n)
                    }
                }
            })], 1)
        })), 0)])])
    }), [function() {
        var e = this.$createElement;
        return (e = this._self._c || e)("div", {
            staticClass: "section"
        }, [e("div", {
            staticClass: "title"
        }, [this._v("作者")]), this._v(" "), e("div", {
            staticClass: "content"
        }, [this._v("404 Frror")])])
    }], !1, null, "787e70b2", null), t.default = o.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(10),
        r = i.n(n),
        o = (n = i(18), i.n(n)),
        s = (n = i(3), i.n(n)),
        a = (n = i(61), i.n(n)),
        l = i(40),
        d = (n = i(27), i(82)),
        c = i(48),
        h = i(22);

    function u(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function p(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? u(Object(i), !0).forEach((function(t) {
                o()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : u(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    n = {
        props: [],
        data: function() {
            return {
                listData: [],
                randomColor: [],
                client: null,
                isAutoScroll: !0,
                dnsRecords: {}
            }
        },
        watch: {
            isWindowShow: function(e) {
                this.handleWindwEvent(e)
            },
            clashStatus: function(e) {
                this.closeLogStream(), e === c.a.CONNECTED && this.openLogStream()
            }
        },
        computed: p(p(p({}, Object(n.mapState)({
            isWindowShow: function(e) {
                return e.app.isWindowShow
            },
            clashStatus: function(e) {
                return e.app.clashStatus
            },
            mode: function(e) {
                return e.app.mode
            }
        })), Object(n.mapGetters)(["clashWSClient"])), {}, {
            buttonText: function() {
                return this.client && 1 === this.client.readyState ? "暂停" : "开始"
            },
            buttonStyle: function() {
                var e = ["button"];
                return this.client && 1 === this.client.readyState ? e.push("button-off") : e.push("button-on"), e
            }
        }),
        methods: p(p({}, Object(n.mapActions)(["getMode"])), {}, {
            copyPayload: function(e) {
                h.clipboard.writeText(e.url), Object(l.h)("Copied to Clipboad!", e.url)
            },
            randomBGC: function(e) {
                if ("light" === this.theme) {
                    if (n = this.randomColor.find((function(t) {
                            return t.type === e
                        }))) return {
                        color: "rgb(".concat(n.r, ",").concat(n.g, ",").concat(n.b, ")")
                    };
                    var t = Math.floor(150 * Math.random() + 10),
                        i = Math.floor(150 * Math.random() + 10),
                        n = Math.floor(150 * Math.random() + 10);
                    return this.randomColor.push({
                        type: e,
                        r: t,
                        g: i,
                        b: n
                    }), {
                        color: "rgb(".concat(t, ",").concat(i, ",").concat(n, ")")
                    }
                }
            },
            openLogStream: function() {
                var e = this,
                    t = this.clashWSClient("logs", ["level=debug"]);
                t && (t.on("message", (function(t) {
                    var i = JSON.parse(t),
                        n = null;
                    t = Object(d.uniqueId)();
                    /^\[(.+?)\](.*?)-->(.*?) doesn't match any rule using (.*)$/.test(i.payload) ? n = {
                        type: i.type,
                        protocol: RegExp.$1.trim(),
                        url: RegExp.$3.trim(),
                        rule: "NoMatch",
                        proxy: "DIRECT",
                        from: RegExp.$2.trim(),
                        time: a()(),
                        id: t
                    } : /^\[(.+?)\](.*?)-->(.*?) match (.*?) using (.*)$/.test(i.payload) ? n = {
                        type: i.type,
                        protocol: RegExp.$1.trim(),
                        url: RegExp.$3.trim(),
                        rule: RegExp.$4.trim(),
                        from: RegExp.$2.trim(),
                        proxy: RegExp.$5.trim(),
                        time: a()(),
                        id: t
                    } : /^\[(.+?)\](.+?)-->(.+?) using (.+?) by Script$/.test(i.payload) ? n = {
                        type: i.type,
                        protocol: RegExp.$1.trim(),
                        url: RegExp.$3.trim(),
                        rule: "Script",
                        from: RegExp.$2.trim(),
                        proxy: RegExp.$4.trim(),
                        time: a()(),
                        id: t
                    } : /^\[(.+?)\](.+?)-->(.+?) using (.+?)$/.test(i.payload) ? n = {
                        type: i.type,
                        protocol: RegExp.$1.trim(),
                        url: RegExp.$3.trim(),
                        rule: RegExp.$4.trim(),
                        from: RegExp.$2.trim(),
                        proxy: RegExp.$4.trim(),
                        time: a()()
                    } : /dial (.+?) to (.+?) error: (.+)/.test(i.payload) ? n = {
                        type: i.type,
                        url: RegExp.$2.trim(),
                        rule: "",
                        from: "".concat(RegExp.$3.trim()),
                        proxy: RegExp.$1.trim(),
                        time: a()(),
                        id: t
                    } : /\[DNS\] (.+?) --> (.+?)$/.test(i.payload) && (e.dnsRecords[RegExp.$1.trim()] = RegExp.$2.trim()), n && ("info" === n.type && n.url in e.dnsRecords && (n = p(p({}, n), {}, {
                        ip: e.dnsRecords[n.url]
                    }), delete e.dnsRecords[n.url]), e.listData.push(n))
                })), this.client = t)
            },
            closeLogStream: function() {
                this.client && this.client.terminate(), this.client = null
            },
            handleBtnClick: function() {
                this.client ? this.closeLogStream() : this.openLogStream()
            },
            handleClear: function() {
                this.listData = []
            },
            handleWindwEvent: function(e) {
                e ? this.openLogStream() : this.closeLogStream()
            },
            handleScroll: function(e) {
                var t, i = e.target;
                i && (t = i.scrollTop, e = i.scrollHeight, i = i.clientHeight, this.isAutoScroll = Math.abs(e - t - i) < 1)
            }
        }),
        beforeRouteEnter: function(e, t, i) {
            var n;
            i((n = r()(s.a.mark((function e(t) {
                return s.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            t.getMode(), t.openLogStream(), t.$refs.list.addEventListener("scroll", t.handleScroll);
                        case 3:
                        case "end":
                            return e.stop()
                    }
                }), e)
            }))), function(e) {
                return n.apply(this, arguments)
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            this.closeLogStream(), this.$refs.list.removeEventListener("scroll", this.handleScroll), i()
        },
        updated: function() {
            this.$nextTick((function() {
                var e = this.$refs.list;
                e && this.isAutoScroll && (e.scrollTop = e.scrollHeight)
            }))
        }
    }, i(322), i(324), i = i(30), n = Object(i.a)(n, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-log-view-" + e.theme]
        }, [i("div", {
            staticClass: "title"
        }, [i("div", {
            staticClass: "text"
        }, [i("div", [e._v("请求日志")]), e._v(" "), i("div", {
            staticClass: "hint"
        }, [e._v("模式: " + ("global" == e._s(e.mode) ? "全局" : "rule" == e._s(e.mode) ? "规则" : "direct" == e._s(e.mode) ? "直连" : "script" == e._s(e.mode) ? "脚本" : e._s(e.mode)))])]), e._v(" "), i("div", {
            staticClass: "btns"
        }, [i("div", {
            staticClass: "button button-clear",
            on: {
                click: e.handleClear
            }
        }, [e._v("清除")]), e._v(" "), i("div", {
            class: e.buttonStyle,
            on: {
                click: e.handleBtnClick
            }
        }, [e._v(e._s(e.buttonText))])])]), e._v(" "), i("div", {
            ref: "list",
            class: ["log-list-" + e.theme]
        }, [0 === e.listData.length ? i("div", {
            staticClass: "empty-list"
        }, [i("div", [e._v("空日志列表")]), e._v(" "), i("div", [e._v("刷新浏览器以发出请求.")])]) : e._l(e.listData.slice(-200), (function(t) {
            return i("div", {
                key: t.id,
                class: ["log-item-" + e.theme],
                on: {
                    click: function(i) {
                        return e.copyPayload(t)
                    }
                }
            }, [i("div", {
                class: {
                    left: !0, warning: "warning" === t.type
                }
            }, [i("div", {
                staticClass: "url"
            }, [i("div", {
                staticClass: "name"
            }, [e._v(e._s(t.url))]), e._v(" "), i("div", {
                class: ["rule-" + e.theme]
            }, [t.protocol ? i("div", [e._v(e._s(t.protocol))]) : e._e(), e._v(" "), t.ip ? i("div", [e._v(e._s(t.ip))]) : e._e(), e._v(" "), t.rule ? i("div", {
                staticClass: "payload"
            }, [e._v(e._s(t.rule))]) : e._e(), e._v(" "), t.from ? i("div", [e._v(e._s(t.from))]) : e._e(), e._v(" "), i("div", [e._v(e._s(t.time.format("HH:mm:ss.SSS")))])])]), e._v(" "), t.proxy ? i("div", {
                staticClass: "proxy-name",
                style: e.randomBGC(t.proxy),
                domProps: {
                    innerHTML: e._s(e.$parseEmoji(t.proxy))
                }
            }) : e._e()])])
        }))], 2)])
    }), [], !1, null, "2b002dd2", null), t.default = n.exports
}, function(e, t, i) {
    "use strict";
    i.r(t);
    var n = i(10),
        r = i.n(n),
        o = i(52),
        s = i.n(o),
        a = (n = i(18), i.n(n)),
        l = (o = i(3), i.n(o)),
        d = (n = i(134), i(35)),
        c = i(38),
        h = (o = i(61), i.n(o)),
        u = (o = i(27), i(48));

    function p(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function g(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? p(Object(i), !0).forEach((function(t) {
                a()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : p(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    o = {
        components: {
            Hint: n.a
        },
        props: [],
        data: function() {
            return {
                isPause: !1,
                searchText: "",
                client: null,
                lastData: {
                    uploadTotal: 0,
                    downloadTotal: 0,
                    connections: []
                },
                data: {
                    uploadTotal: 0,
                    downloadTotal: 0,
                    connections: []
                },
                labels: ["上传速度", "下载速度", "上传流量", "下载流量", "时间"],
                labelSelected: 4,
                isReverse: !1
            }
        },
        watch: {
            clashStatus: function(e) {
                this.client && this.client.terminate(), e === u.a.CONNECTED && this.setupComponent()
            }
        },
        computed: g(g(g({}, Object(o.mapState)({
            clashStatus: function(e) {
                return e.app.clashStatus
            }
        })), Object(o.mapGetters)(["clashAxiosClient", "clashWSClient"])), {}, {
            searchTextReg: function() {
                try {
                    return new RegExp(this.searchText, "i")
                } catch (e) {}
                return null
            },
            orderedConnections: function() {
                var e = this;
                if (!this.data) return [];

                function t(e) {
                    return new Date(e).getTime()
                }
                var i = s()(this.data.connections).map((function(t) {
                    var i = t.id,
                        n = e.lastData.connections.find((function(e) {
                            return e.id === i
                        }));
                    return t.speed = n ? {
                        upload: t.upload - n.upload,
                        download: t.download - n.download
                    } : {
                        upload: 0,
                        download: 0
                    }, t
                })).sort((function(i, n) {
                    return 4 === e.labelSelected ? t(i.start) - t(n.start) : 3 === e.labelSelected ? n.download - i.download : 2 === e.labelSelected ? n.upload - i.upload : 1 === e.labelSelected ? n.speed.download - i.speed.download : 0 === e.labelSelected ? n.speed.upload - i.speed.upload : 0
                }));
                i = this.isReverse ? i.reverse() : i;
                return "" === this.searchText ? i : i.filter((function(t) {
                    return !e.searchTextReg || e.searchTextReg.test(JSON.stringify(Object.values(t)))
                }))
            }
        }),
        methods: {
            connectionEndpoint: function(e) {
                var t = void 0 === (i = e.chains) ? [] : i,
                    i = (e = this.settings.connChainType, t.length);
                return [0, 2].includes(void 0 === e ? 0 : e) && 1 <= i ? this.$parseEmoji(t[0]) : ""
            },
            connectionGroup: function(e) {
                var t = void 0 === (i = e.chains) ? [] : i,
                    i = void 0 === (e = this.settings.connChainType) ? 0 : e;
                e = t.length;
                return (2 !== i || 1 !== e) && [1, 2].includes(i) && 1 <= e ? this.$parseEmoji(t[e - 1]) : ""
            },
            handleReverseChange: function() {
                this.isReverse = !this.isReverse, d.a.put(c.a.CONNECTION_ORDER_REVERSE, this.isReverse)
            },
            handleLableSelect: function(e) {
                this.labelSelected = e, d.a.put(c.a.CONNECTION_ORDER_INDEX, e)
            },
            calcLabelClasses: function(e) {
                var t = ["label"];
                return this.labelSelected === e && t.push("label-selected"), t
            },
            calcSpeedText: function(e) {
                var t = [];
                if (!e.speed) return "";
                e = void 0 === (e = (i = e.speed).upload) ? 0 : e;
                var i = void 0 === (i = i.download) ? 0 : i;
                return 0 !== e && t.push("↑".concat(this.traffic(e), "/s")), 0 !== i && t.push("↓".concat(this.traffic(i), "/s")), t.join(" ")
            },
            fromNow: function(e) {
                return h()(e).locale('zh-cn').fromNow()
            },
            traffic: function(e) {
                for (var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 2, i = ["B", "KB", "MB", "GB", "TB"], n = 0; ~~(e / 1024) && n < i.length;) e /= 1024, n++;
                return "".concat(0 === n ? e : e.toFixed(t), " ").concat(i[n])
            },
            upperCaseFirst: function(e) {
                return e.charAt(0).toUpperCase() + e.slice(1)
            },
            handleCloseConnection: function(e) {
                var t = this;
                return r()(l.a.mark((function i() {
                    return l.a.wrap((function(i) {
                        for (;;) switch (i.prev = i.next) {
                            case 0:
                                return i.next = 2, t.clashAxiosClient.delete("connections/".concat(e));
                            case 2:
                            case "end":
                                return i.stop()
                        }
                    }), i)
                })))()
            },
            handleCloseAllConnections: function() {
                var e = this;
                return r()(l.a.mark((function t() {
                    return l.a.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.next = 2, Promise.allSettled(e.orderedConnections.map((function(t) {
                                    return t = t.id, e.clashAxiosClient.delete("connections/".concat(t))
                                })));
                            case 2:
                            case "end":
                                return t.stop()
                        }
                    }), t)
                })))()
            },
            handleItemSelected: function(e) {
                var t = e.metadata,
                    i = "DIRECT" === e.chains[0];
                this.$preview({
                    data: {
                        主机: t.host,
                        网络: e.metadata.network.toUpperCase(),
                        流量: "↑".concat(this.traffic(e.upload), " ↓").concat(this.traffic(e.download)),
                        来源: "".concat(t.sourceIP, ":").concat(t.sourcePort, " (").concat(e.metadata.type, ")"),
                        目的地: (!i && t.host || t.destinationIP) + ":" + t.destinationPort,
                        规则: "".concat(e.rule, " (").concat(e.rulePayload, ")"),
                        模式: e.chains.slice().reverse().join(" - "),
                        "开始时间": h()(e.start).format("MM-DD HH:mm:ss")
                    },
                    title: "连接信息"
                })
            },
            handleSwitchPauseStatus: function() {
                this.isPause = !this.isPause, this.isPause ? this.closeStream() : this.openStream()
            },
            closeStream: function() {
                this.client && this.client.terminate(), this.client = null
            },
            openStream: function() {
                var e = this,
                    t = this.clashWSClient("connections");
                t && (t.on("message", (function(t) {
                    t = JSON.parse(t), e.lastData = e.data, e.data = t
                })), this.client = t)
            },
            setupComponent: function() {
                var e;
                this.labelSelected = null !== (e = d.a.get(c.a.CONNECTION_ORDER_INDEX)) && void 0 !== e ? e : 4, this.isReverse = null !== (e = d.a.get(c.a.CONNECTION_ORDER_REVERSE)) && void 0 !== e && e, this.isPause || this.openStream()
            }
        },
        beforeRouteEnter: function(e, t, i) {
            var n;
            i((n = r()(l.a.mark((function t(i) {
                var n;
                return l.a.wrap((function(t) {
                    for (;;) switch (t.prev = t.next) {
                        case 0:
                            i.setupComponent(), (n = void 0 === (n = e.query.searchText) ? "" : n) && (i.searchText = n);
                        case 3:
                        case "end":
                            return t.stop()
                    }
                }), t)
            }))), function(e) {
                return n.apply(this, arguments)
            }))
        },
        beforeRouteLeave: function(e, t, i) {
            this.closeStream(), i()
        }
    }, i(348), i = i(30), o = Object(i.a)(o, (function() {
        var e = this,
            t = e.$createElement,
            i = e._self._c || t;
        return i("div", {
            class: ["main-connection-view-" + e.theme]
        }, [i("div", {
            staticClass: "header"
        }, [i("div", {
            staticClass: "title"
        }, [i("div", [e._v("\n        连接\n        "), i("span", [e._v("(" + e._s(e.orderedConnections.length) + ")")])]), e._v(" "), i("Hint", {
            attrs: {
                position: "top",
                hint: "Reverse"
            },
            on: {
                click: e.handleReverseChange
            }
        }, [i("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: "light" === e.theme ? "black" : "white",
                width: "18px",
                height: "18px"
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M16 17.01V11c0-.55-.45-1-1-1s-1 .45-1 1v6.01h-1.79c-.45 0-.67.54-.35.85l2.79 2.78c.2.19.51.19.71 0l2.79-2.78c.32-.31.09-.85-.35-.85H16zM8.65 3.35L5.86 6.14c-.32.31-.1.85.35.85H8V13c0 .55.45 1 1 1s1-.45 1-1V6.99h1.79c.45 0 .67-.54.35-.85L9.35 3.35c-.19-.19-.51-.19-.7 0z"
            }
        })])])], 1), e._v(" "), i("div", {
            staticClass: "search-area"
        }, [i("input", {
            directives: [{
                name: "model",
                rawName: "v-model",
                value: e.searchText,
                expression: "searchText"
            }],
            ref: "search-text-input",
            staticClass: "search-box",
            attrs: {
                type: "文本",
                placeholder: "搜索"
            },
            domProps: {
                value: e.searchText
            },
            on: {
                input: function(t) {
                    t.target.composing || (e.searchText = t.target.value)
                }
            }
        }), e._v(" "), i("svg", {
            attrs: {
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 24 24",
                fill: ["dark"].includes(e.theme) ? "white" : "black",
                width: "18px",
                height: "18px"
            },
            on: {
                click: function(t) {
                    e.searchText = "", e.$refs["search-text-input"].focus()
                }
            }
        }, [i("path", {
            attrs: {
                d: "M0 0h24v24H0V0z",
                fill: "none"
            }
        }), e._v(" "), i("path", {
            attrs: {
                d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
            }
        })])]), e._v(" "), i("div", {
            staticClass: "header-right"
        }, [i("div", {
            class: ["button-control", e.isPause ? "button-resume" : "button-pause"],
            on: {
                click: e.handleSwitchPauseStatus
            }
        }, [e._v("\n        " + e._s(e.isPause ? "恢复" : "暂停") + "\n      ")]), e._v(" "), i("div", {
            staticClass: "total-hint"
        }, [e._v("\n        " + e._s("总共: ↑" + e.traffic(e.data.uploadTotal, 1) + " ↓" + e.traffic(e.data.downloadTotal, 1)) + "\n      ")])])]), e._v(" "), i("div", {
            staticClass: "control-view"
        }, [i("div", {
            staticClass: "labels"
        }, e._l(e.labels, (function(t, n) {
            return i("div", {
                key: t,
                class: e.calcLabelClasses(n),
                on: {
                    click: function(t) {
                        return e.handleLableSelect(n)
                    }
                }
            }, [e._v("\n        " + e._s(t) + "\n      ")])
        })), 0), e._v(" "), i("div", {
            staticClass: "close-all-btn",
            on: {
                click: e.handleCloseAllConnections
            }
        }, [e._v("\n      全部关闭\n    ")])]), e._v(" "), i("div", {
            class: ["scroll-view-" + e.theme]
        }, e._l(e.orderedConnections, (function(t) {
            return i("div", {
                key: t.id,
                class: ["conn-item-" + e.theme, t.closed ? "conn-item-closed" : ""],
                on: {
                    click: function(i) {
                        return e.handleItemSelected(t)
                    }
                }
            }, [i("div", [i("div", {
                staticClass: "conn-item-top"
            }, [i("div", {
                staticClass: "conn-host"
            }, [e._v("\n            " + e._s(t.metadata.host || t.metadata.destinationIP) + ":" + e._s(t.metadata.destinationPort) + "\n          ")])]), e._v(" "), i("div", {
                staticClass: "conn-labels"
            }, [i("div", {
                staticClass: "conn1"
            }, [e._v("\n            " + e._s(t.metadata.network.toUpperCase()) + "\n          ")]), e._v(" "), i("div", {
                staticClass: "conn2"
            }, [e._v(e._s(t.metadata.type))]), e._v(" "), e.connectionGroup(t) ? i("div", {
                staticClass: "conn3",
                domProps: {
                    innerHTML: e._s(e.connectionGroup(t))
                }
            }) : e._e(), e._v(" "), e.connectionEndpoint(t) ? i("div", {
                staticClass: "conn4",
                domProps: {
                    innerHTML: e._s(e.connectionEndpoint(t))
                }
            }) : e._e(), e._v(" "), i("div", {
                staticClass: "conn5"
            }, [e._v("\n            " + e._s(e.upperCaseFirst(e.fromNow(t.start))) + "\n          ")]), e._v(" "), t.speed.upload || t.speed.download ? i("div", {
                staticClass: "conn6"
            }, [e._v("\n            " + e._s(e.calcSpeedText(t)) + "\n          ")]) : e._e()])]), e._v(" "), t.closed || e.isPause ? e._e() : i("div", {
                staticClass: "close-btn",
                on: {
                    click: function(i) {
                        return i.stopPropagation(), e.handleCloseConnection(t.id)
                    }
                }
            }, [i("svg", {
                staticClass: "item-icon",
                attrs: {
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 24 24",
                    fill: "white"
                }
            }, [i("path", {
                attrs: {
                    d: "M0 0h24v24H0V0z",
                    fill: "none"
                }
            }), e._v(" "), i("path", {
                attrs: {
                    d: "M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"
                }
            })])])])
        })), 0)])
    }), [], !1, null, "34dd3e44", null), t.default = o.exports
}, function(e, t, i) {
    "use strict";

    function n(e, t) {
        var i = null !== (n = b.a.get(_.a.MENU_ITEM_ORDER)) && void 0 !== n ? n : [],
            n = i.findIndex((function(t) {
                return t === e.title
            }));
        return -1 === n ? 1 : n - i.findIndex((function(e) {
            return e === t.title
        }))
    }
    i.r(t);
    var r = i(10),
        o = i.n(r),
        s = i(18),
        a = i.n(s),
        l = (r = i(52), i.n(r)),
        d = (s = i(105), i.n(s)),
        c = (r = i(3), i.n(r)),
        h = (s = i(16), i.n(s)),
        u = (r = i(45), i.n(r)),
        p = (s = i(12), i.n(s)),
        g = (r = i(69), i.n(r)),
        f = (s = i(147), i.n(s)),
        m = i(175),
        v = i(48),
        b = i(35),
        _ = i(38),
        w = i(19),
        y = i(22);

    function C(e, t) {
        var i, n = Object.keys(e);
        return Object.getOwnPropertySymbols && (i = Object.getOwnPropertySymbols(e), t && (i = i.filter((function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
        }))), n.push.apply(n, i)), n
    }

    function x(e) {
        for (var t = 1; t < arguments.length; t++) {
            var i = null != arguments[t] ? arguments[t] : {};
            t % 2 ? C(Object(i), !0).forEach((function(t) {
                a()(e, t, i[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : C(Object(i)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
            }))
        }
        return e
    }
    r = {
        isDevMode: !1,
        clashPath: "",
        clashStatus: v.a.DISCONNECTED,
        profilesPath: "",
        profiles: {},
        confData: {},
        logFilePath: b.a.get(_.a.LAST_LOG_FILE_PATH) || "",
        isMixinEnable: b.a.get(_.a.IS_MIXIN) || !1,
        exePath: "",
        errors: [],
        status: v.b.INIT,
        clashAxiosFlyingRequestCount: 0,
        settings: {},
        shouldUseDarkTheme: !1,
        detectedInterfaceName: b.a.get(_.a.DETECTED_INTERFACE_NAME) || "",
        isWindowShow: !1,
        isAppSuspend: !1,
        innerServerPort: 0,
        isLocalMode: !0,
        isLaunching: !0,
        menuItems: [{
            title: "主页",
            path: "/home/general"
        }, {
            title: "代理",
            path: "/home/proxy"
        }, {
            title: "配置",
            path: "/home/server"
        }, {
            title: "日志",
            path: "/home/log"
        }, {
            title: "连接",
            path: "/home/connection"
        }, {
            title: "设置",
            path: "/home/setting"
        }, {
            title: "关于",
            path: "/home/about"
        }],
        updateDownloadProgress: null,
        isSystemProxyOn: b.a.get(_.a.SYSTEM_PROXY) || !1,
        isSubViewShow: !1,
        currentRoutePath: b.a.get(_.a.CURRENT_ROUTE_PATH) || "/home/general",
        profileRefreshTimes: 0,
        mode: "rule",
        routerHijackMacAddresses: b.a.get(_.a.ROUTER_HIJACK_MAC_ADDRESSES) || [],
        currentProfilePayload: {},
        isSilentUpgraded: !1,
        tunSettings: b.a.get(_.a.TUN_SETTINGS),
        isTunEnable: b.a.get(_.a.IS_TUN) || !1
    }, s = {
        mixedPort: function(e) {
            return e.confData["mixed-port"] || 0
        },
        controllerPort: function(e) {
            return (e = e.confData["external-controller"]) ? (e = e.split(":"), (e = d()(e, 2))[0], e = e[1], parseInt(e.trim()) || 0) : 0
        },
        secret: function(e) {
            return void 0 === (e = e.confData.secret) ? "" : e
        },
        clashAxiosClient: function(e, t) {
            var i = t.controllerPort;
            t = t.secret;
            return 0 < i ? g.a.create({
                baseURL: "http://127.0.0.1:".concat(i, "/"),
                timeout: 5e3,
                headers: {
                    Authorization: "Bearer ".concat(t)
                }
            }) : null
        },
        clashGotClient: function(e, t) {
            var i = t.controllerPort;
            t = t.secret;
            return 0 < i ? f.a.extend({
                baseUrl: "http://127.0.0.1:".concat(i),
                headers: {
                    Authorization: "Bearer ".concat(t)
                }
            }) : null
        },
        clashWSClient: function(e, t) {
            return function(e) {
                var i = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : [],
                    n = t.controllerPort,
                    r = t.secret;
                return 0 < n ? (/^\//.test(e) || (e = "/" + e), i = "ws://127.0.0.1:".concat(n).concat(e, "?token=").concat(r).concat(0 < i.length ? "&".concat(i.join("&")) : ""), new m(i)) : null
            }
        },
        resourcesPath: function(e) {
            return e.isDevMode || "" === e.exePath ? "" : p.a.join(p.a.dirname(e.exePath), Object(w.i)() ? "../Resources" : "./resources")
        },
        filesPath: function(e, t) {
            return "" !== t.resourcesPath ? p.a.join(t.resourcesPath, "static/files") : "static/files"
        },
        theme: function(e) {
            if (e.settings) {
                var t, i = (t = e.settings).theme;
                return void 0 !== (t = t.systemTheme) && t ? e.shouldUseDarkTheme ? "dark" : "light" : ["light", "dark", "red", "2077"][void 0 === i ? 0 : i]
            }
            return "light"
        },
        menuItemsWithOrder: function(e) {
            return l()(e.menuItems).sort(n)
        }
    }, i = {
        getMode: function(e) {
            return o()(c.a.mark((function t() {
                var i, n, r;
                return c.a.wrap((function(t) {
                    for (;;) switch (t.prev = t.next) {
                        case 0:
                            if (i = e.commit, r = e.getters, n = r.clashAxiosClient) return t.next = 5, n.get("/configs").catch((function(e) {}));
                            t.next = 9;
                            break;
                        case 5:
                            r = t.sent, n = r.status, r = r.data, 200 === n && (r = r.mode, i("CHANGE_MODE", {
                                mode: r
                            }));
                        case 9:
                        case "end":
                            return t.stop()
                    }
                }), t)
            })))()
        },
        setMode: function(e, t) {
            return o()(c.a.mark((function i() {
                var n, r, o;
                return c.a.wrap((function(i) {
                    for (;;) switch (i.prev = i.next) {
                        case 0:
                            if (n = e.commit, o = e.getters, r = t.mode, o = o.clashAxiosClient) return i.next = 6, o.patch("/configs", {
                                mode: r
                            }).catch((function(e) {}));
                            i.next = 9;
                            break;
                        case 6:
                            204 === (o = i.sent).status && n("CHANGE_MODE", {
                                mode: r
                            });
                        case 9:
                        case "end":
                            return i.stop()
                    }
                }), i)
            })))()
        },
        getParserLogPath: function() {
            return o()(c.a.mark((function e() {
                var t;
                return c.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            return e.next = 2, y.ipcRenderer.invoke("app", "getPath", "temp");
                        case 2:
                            return t = e.sent, e.abrupt("return", p.a.join(t, "cfw-parser.log"));
                        case 4:
                        case "end":
                            return e.stop()
                    }
                }), e)
            })))()
        },
        getScriptLogPath: function() {
            return o()(c.a.mark((function e() {
                var t;
                return c.a.wrap((function(e) {
                    for (;;) switch (e.prev = e.next) {
                        case 0:
                            return e.next = 2, y.ipcRenderer.invoke("app", "getPath", "temp");
                        case 2:
                            return t = e.sent, e.abrupt("return", p.a.join(t, "cfw-script.log"));
                        case 4:
                        case "end":
                            return e.stop()
                    }
                }), e)
            })))()
        }
    }, t.default = {
        state: r,
        getters: s,
        mutations: {
            SET_IS_DEV_MODE: function(e, t) {
                t = t.isDevMode, (e.isDevMode = t) && (e.isWindowShow = !0)
            },
            CHANGE_IS_MIXIN_ENABLE: function(e, t) {
                t = t.isMixin, e.isMixinEnable = t, b.a.put(_.a.IS_MIXIN, t)
            },
            SET_CLASH_PATH: function(e, t) {
                t = t.path, e.clashPath = p.a.normalize(t)
            },
            SET_CLASH_STATUS: function(e, t) {
                (t = t.status) !== v.a.CONNECTED && t !== v.a.DISCONNECTED || (e.clashStatus = t)
            },
            SET_PROFILES_PATH: function(e, t) {
                t = t.path, e.profilesPath = p.a.normalize(t)
            },
            SET_CONF_DATA: function(e, t) {
                t = t.data, e.confData = t
            },
            LOAD_PROFILES: function(e) {
                var t = h.a.readFileSync(p.a.join(e.profilesPath, "list.yml"), "utf8"),
                    i = (t = (i = u.a.parse(t, {
                        merge: !0,
                        schema: "yaml-1.1"
                    })).files, i.index);
                e.profiles = {
                    files: t,
                    index: i
                }
            },
            SAVE_PROFILES: function(e) {
                h.a.writeFileSync(p.a.join(e.profilesPath, "list.yml"), u.a.stringify(e.profiles))
            },
            CHANGE_PROFILES: function(e, t) {
                t = t.profiles, e.profiles = x(x({}, e.profiles), {}, {
                    files: t
                })
            },
            CHANGE_PROFILES_INDEX: function(e, t) {
                t = t.index, e.profiles = x(x({}, e.profiles), {}, {
                    index: t
                })
            },
            CHANGE_PROFILE: function(e, t) {
                var i = t.index,
                    n = t.profile;
                n && ((t = e.profiles.files.slice())[i] = n, e.profiles = x(x({}, e.profiles), {}, {
                    files: t
                }))
            },
            DELETE_PROFILE: function(e, t) {
                var i = t.index;
                (t = e.profiles.files.slice()).splice(i, 1), e.profiles = x(x({}, e.profiles), {}, {
                    files: t
                })
            },
            APPEND_PROFILE: function(e, t) {
                var i = t.profile;
                t = void 0 === (t = e.profiles.files) ? [] : t;
                i && (e.profiles = x(x({}, e.profiles), {}, {
                    files: [].concat(l()(t), [i])
                }))
            },
            SET_LOG_FILE_PATH: function(e, t) {
                t = t.path, e.logFilePath = p.a.normalize(t), b.a.put(_.a.LAST_LOG_FILE_PATH, p.a)
            },
            SET_EXE_PATH: function(e, t) {
                t = t.path, e.exePath = p.a.normalize(t)
            },
            APPEND_ERROR: function(e, t) {
                t = t.error, e.errors = [].concat(l()(e.errors), [t])
            },
            CHANGE_STATUS: function(e, t) {
                t = t.status, e.status = t
            },
            ADD_AXIOS_FLYING_REQUEST_COUNT: function(e, t) {
                t = t.count, e.clashAxiosFlyingRequestCount += t
            },
            SET_SETTINGS_OBJECT: function(e, t) {
                t = t.obj, e.settings = t
            },
            SAVE_SETTINGS_OBJECT: function(e, t) {
                t = t.obj, e.settings = t, h.a.writeFileSync(p.a.join(e.clashPath, "cfw-settings.yaml"), u.a.stringify(t))
            },
            SET_SHOULD_USE_DARK_THEME: function(e, t) {
                t = t.shouldUseDarkTheme, e.shouldUseDarkTheme = t
            },
            SET_DETECTED_INTERFACE_NAME: function(e, t) {
                t = t.interfaceName, e.detectedInterfaceName = t, b.a.put(_.a.DETECTED_INTERFACE_NAME, t)
            },
            SET_IS_WINDOW_SHOW: function(e, t) {
                t = t.isShow, e.isWindowShow = t
            },
            SET_IS_APP_SUSPEND: function(e, t) {
                t = t.isSuspend, e.isAppSuspend = t
            },
            SET_INNER_SERVER_PORT: function(e, t) {
                t = t.port, e.innerServerPort = t
            },
            SET_IS_LOCAL_MODE: function(e, t) {
                t = t.isLocal, e.isLocalMode = t
            },
            SET_IS_LAUNCHING: function(e, t) {
                t = t.isLaunching, e.isLaunching = t
            },
            SET_MENU_ITEMS: function(e, t) {
                t = t.items, e.menuItems = t
            },
            SET_UPDATE_DOWNLOAD_PROGRESS: function(e, t) {
                t = t.progress, e.updateDownloadProgress = t
            },
            SET_IS_SYSTEM_PROXY_ON: function(e, t) {
                t = t.isOn, e.isSystemProxyOn = t, b.a.put(_.a.SYSTEM_PROXY, t)
            },
            SET_IS_SUB_VIEW_SHOW: function(e, t) {
                t.isShow ? e.isSubViewShow = !0 : setTimeout((function() {
                    e.isSubViewShow = !1
                }), 50)
            },
            SET_CURRENT_ROUTE_PATH: function(e, t) {
                t = t.path, e.currentRoutePath = t, b.a.put(_.a.CURRENT_ROUTE_PATH, t)
            },
            ADD_PROFILE_REFRESH_TIMES: function(e, t) {
                t = t.times, e.profileRefreshTimes += void 0 === t ? 1 : t
            },
            CHANGE_MODE: function(e, t) {
                t = t.mode, ["direct", "rule", "global", "script"].includes(t) && (e.mode = t)
            },
            SET_ROUTER_HIJACK_MAC_ADDRESSES: function(e, t) {
                t = t.addresses, e.routerHijackMacAddresses = t, b.a.put(_.a.ROUTER_HIJACK_MAC_ADDRESSES, t)
            },
            SET_CURRENT_PROFILE_PAYLOAD: function(e, t) {
                t = t.payload, e.currentProfilePayload = t
            },
            SET_IS_SILENT_UPGRADED: function(e, t) {
                t = t.isUpgraded, e.isSilentUpgraded = t
            },
            SET_TUN_SETTINGS: function(e, t) {
                t = t.settings, e.tunSettings = t, b.a.put(_.a.TUN_SETTINGS, t)
            },
            CHANGE_IS_TUN_ENABLE: function(e, t) {
                t = t.isTun, e.isTunEnable = t, b.a.put(_.a.IS_TUN, t)
            }
        },
        actions: i
    }
}]);
