! function(t, e) {
    "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.mermaid = e() : t.mermaid = e()
}(window, (function() {
    return function(t) {
        var e = {};

        function n(r) {
            if (e[r]) return e[r].exports;
            var i = e[r] = {
                i: r,
                l: !1,
                exports: {}
            };
            return t[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports
        }
        return n.m = t, n.c = e, n.d = function(t, e, r) {
            n.o(t, e) || Object.defineProperty(t, e, {
                enumerable: !0,
                get: r
            })
        }, n.r = function(t) {
            "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
                value: "Module"
            }), Object.defineProperty(t, "__esModule", {
                value: !0
            })
        }, n.t = function(t, e) {
            if (1 & e && (t = n(t)), 8 & e) return t;
            if (4 & e && "object" == typeof t && t && t.__esModule) return t;
            var r = Object.create(null);
            if (n.r(r), Object.defineProperty(r, "default", {
                    enumerable: !0,
                    value: t
                }), 2 & e && "string" != typeof t)
                for (var i in t) n.d(r, i, function(e) {
                    return t[e]
                }.bind(null, i));
            return r
        }, n.n = function(t) {
            var e = t && t.__esModule ? function() {
                return t.default
            } : function() {
                return t
            };
            return n.d(e, "a", e), e
        }, n.o = function(t, e) {
            return Object.prototype.hasOwnProperty.call(t, e)
        }, n.p = "", n(n.s = 509)
    }([function(t, e, n) {
        "use strict";
        n.r(e);
        var r = function(t, e) {
                return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
            },
            i = function(t) {
                var e;
                return 1 === t.length && (e = t, t = function(t, n) {
                    return r(e(t), n)
                }), {
                    left: function(e, n, r, i) {
                        for (null == r && (r = 0), null == i && (i = e.length); r < i;) {
                            var a = r + i >>> 1;
                            t(e[a], n) < 0 ? r = a + 1 : i = a
                        }
                        return r
                    },
                    right: function(e, n, r, i) {
                        for (null == r && (r = 0), null == i && (i = e.length); r < i;) {
                            var a = r + i >>> 1;
                            t(e[a], n) > 0 ? i = a : r = a + 1
                        }
                        return r
                    }
                }
            };
        var a = i(r),
            o = a.right,
            s = a.left,
            u = o,
            c = function(t, e) {
                null == e && (e = f);
                for (var n = 0, r = t.length - 1, i = t[0], a = new Array(r < 0 ? 0 : r); n < r;) a[n] = e(i, i = t[++n]);
                return a
            };

        function f(t, e) {
            return [t, e]
        }
        var l = function(t, e, n) {
                var r, i, a, o, s = t.length,
                    u = e.length,
                    c = new Array(s * u);
                for (null == n && (n = f), r = a = 0; r < s; ++r)
                    for (o = t[r], i = 0; i < u; ++i, ++a) c[a] = n(o, e[i]);
                return c
            },
            h = function(t, e) {
                return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN
            },
            d = function(t) {
                return null === t ? NaN : +t
            },
            p = function(t, e) {
                var n, r, i = t.length,
                    a = 0,
                    o = -1,
                    s = 0,
                    u = 0;
                if (null == e)
                    for (; ++o < i;) isNaN(n = d(t[o])) || (u += (r = n - s) * (n - (s += r / ++a)));
                else
                    for (; ++o < i;) isNaN(n = d(e(t[o], o, t))) || (u += (r = n - s) * (n - (s += r / ++a)));
                if (a > 1) return u / (a - 1)
            },
            g = function(t, e) {
                var n = p(t, e);
                return n ? Math.sqrt(n) : n
            },
            y = function(t, e) {
                var n, r, i, a = t.length,
                    o = -1;
                if (null == e) {
                    for (; ++o < a;)
                        if (null != (n = t[o]) && n >= n)
                            for (r = i = n; ++o < a;) null != (n = t[o]) && (r > n && (r = n), i < n && (i = n))
                } else
                    for (; ++o < a;)
                        if (null != (n = e(t[o], o, t)) && n >= n)
                            for (r = i = n; ++o < a;) null != (n = e(t[o], o, t)) && (r > n && (r = n), i < n && (i = n));
                return [r, i]
            },
            b = Array.prototype,
            v = b.slice,
            m = b.map,
            _ = function(t) {
                return function() {
                    return t
                }
            },
            w = function(t) {
                return t
            },
            x = function(t, e, n) {
                t = +t, e = +e, n = (i = arguments.length) < 2 ? (e = t, t = 0, 1) : i < 3 ? 1 : +n;
                for (var r = -1, i = 0 | Math.max(0, Math.ceil((e - t) / n)), a = new Array(i); ++r < i;) a[r] = t + r * n;
                return a
            },
            k = Math.sqrt(50),
            E = Math.sqrt(10),
            A = Math.sqrt(2),
            S = function(t, e, n) {
                var r, i, a, o, s = -1;
                if (n = +n, (t = +t) === (e = +e) && n > 0) return [t];
                if ((r = e < t) && (i = t, t = e, e = i), 0 === (o = M(t, e, n)) || !isFinite(o)) return [];
                if (o > 0)
                    for (t = Math.ceil(t / o), e = Math.floor(e / o), a = new Array(i = Math.ceil(e - t + 1)); ++s < i;) a[s] = (t + s) * o;
                else
                    for (t = Math.floor(t * o), e = Math.ceil(e * o), a = new Array(i = Math.ceil(t - e + 1)); ++s < i;) a[s] = (t - s) / o;
                return r && a.reverse(), a
            };

        function M(t, e, n) {
            var r = (e - t) / Math.max(0, n),
                i = Math.floor(Math.log(r) / Math.LN10),
                a = r / Math.pow(10, i);
            return i >= 0 ? (a >= k ? 10 : a >= E ? 5 : a >= A ? 2 : 1) * Math.pow(10, i) : -Math.pow(10, -i) / (a >= k ? 10 : a >= E ? 5 : a >= A ? 2 : 1)
        }

        function T(t, e, n) {
            var r = Math.abs(e - t) / Math.max(0, n),
                i = Math.pow(10, Math.floor(Math.log(r) / Math.LN10)),
                a = r / i;
            return a >= k ? i *= 10 : a >= E ? i *= 5 : a >= A && (i *= 2), e < t ? -i : i
        }
        var D = function(t) {
                return Math.ceil(Math.log(t.length) / Math.LN2) + 1
            },
            C = function() {
                var t = w,
                    e = y,
                    n = D;

                function r(r) {
                    var i, a, o = r.length,
                        s = new Array(o);
                    for (i = 0; i < o; ++i) s[i] = t(r[i], i, r);
                    var c = e(s),
                        f = c[0],
                        l = c[1],
                        h = n(s, f, l);
                    Array.isArray(h) || (h = T(f, l, h), h = x(Math.ceil(f / h) * h, l, h));
                    for (var d = h.length; h[0] <= f;) h.shift(), --d;
                    for (; h[d - 1] > l;) h.pop(), --d;
                    var p, g = new Array(d + 1);
                    for (i = 0; i <= d; ++i)(p = g[i] = []).x0 = i > 0 ? h[i - 1] : f, p.x1 = i < d ? h[i] : l;
                    for (i = 0; i < o; ++i) f <= (a = s[i]) && a <= l && g[u(h, a, 0, d)].push(r[i]);
                    return g
                }
                return r.value = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : _(e), r) : t
                }, r.domain = function(t) {
                    return arguments.length ? (e = "function" == typeof t ? t : _([t[0], t[1]]), r) : e
                }, r.thresholds = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : Array.isArray(t) ? _(v.call(t)) : _(t), r) : n
                }, r
            },
            N = function(t, e, n) {
                if (null == n && (n = d), r = t.length) {
                    if ((e = +e) <= 0 || r < 2) return +n(t[0], 0, t);
                    if (e >= 1) return +n(t[r - 1], r - 1, t);
                    var r, i = (r - 1) * e,
                        a = Math.floor(i),
                        o = +n(t[a], a, t);
                    return o + (+n(t[a + 1], a + 1, t) - o) * (i - a)
                }
            },
            I = function(t, e, n) {
                return t = m.call(t, d).sort(r), Math.ceil((n - e) / (2 * (N(t, .75) - N(t, .25)) * Math.pow(t.length, -1 / 3)))
            },
            L = function(t, e, n) {
                return Math.ceil((n - e) / (3.5 * g(t) * Math.pow(t.length, -1 / 3)))
            },
            B = function(t, e) {
                var n, r, i = t.length,
                    a = -1;
                if (null == e) {
                    for (; ++a < i;)
                        if (null != (n = t[a]) && n >= n)
                            for (r = n; ++a < i;) null != (n = t[a]) && n > r && (r = n)
                } else
                    for (; ++a < i;)
                        if (null != (n = e(t[a], a, t)) && n >= n)
                            for (r = n; ++a < i;) null != (n = e(t[a], a, t)) && n > r && (r = n);
                return r
            },
            O = function(t, e) {
                var n, r = t.length,
                    i = r,
                    a = -1,
                    o = 0;
                if (null == e)
                    for (; ++a < r;) isNaN(n = d(t[a])) ? --i : o += n;
                else
                    for (; ++a < r;) isNaN(n = d(e(t[a], a, t))) ? --i : o += n;
                if (i) return o / i
            },
            R = function(t, e) {
                var n, i = t.length,
                    a = -1,
                    o = [];
                if (null == e)
                    for (; ++a < i;) isNaN(n = d(t[a])) || o.push(n);
                else
                    for (; ++a < i;) isNaN(n = d(e(t[a], a, t))) || o.push(n);
                return N(o.sort(r), .5)
            },
            P = function(t) {
                for (var e, n, r, i = t.length, a = -1, o = 0; ++a < i;) o += t[a].length;
                for (n = new Array(o); --i >= 0;)
                    for (e = (r = t[i]).length; --e >= 0;) n[--o] = r[e];
                return n
            },
            F = function(t, e) {
                var n, r, i = t.length,
                    a = -1;
                if (null == e) {
                    for (; ++a < i;)
                        if (null != (n = t[a]) && n >= n)
                            for (r = n; ++a < i;) null != (n = t[a]) && r > n && (r = n)
                } else
                    for (; ++a < i;)
                        if (null != (n = e(t[a], a, t)) && n >= n)
                            for (r = n; ++a < i;) null != (n = e(t[a], a, t)) && r > n && (r = n);
                return r
            },
            q = function(t, e) {
                for (var n = e.length, r = new Array(n); n--;) r[n] = t[e[n]];
                return r
            },
            j = function(t, e) {
                if (n = t.length) {
                    var n, i, a = 0,
                        o = 0,
                        s = t[o];
                    for (null == e && (e = r); ++a < n;)(e(i = t[a], s) < 0 || 0 !== e(s, s)) && (s = i, o = a);
                    return 0 === e(s, s) ? o : void 0
                }
            },
            U = function(t, e, n) {
                for (var r, i, a = (null == n ? t.length : n) - (e = null == e ? 0 : +e); a;) i = Math.random() * a-- | 0, r = t[a + e], t[a + e] = t[i + e], t[i + e] = r;
                return t
            },
            z = function(t, e) {
                var n, r = t.length,
                    i = -1,
                    a = 0;
                if (null == e)
                    for (; ++i < r;)(n = +t[i]) && (a += n);
                else
                    for (; ++i < r;)(n = +e(t[i], i, t)) && (a += n);
                return a
            },
            Y = function(t) {
                if (!(i = t.length)) return [];
                for (var e = -1, n = F(t, V), r = new Array(n); ++e < n;)
                    for (var i, a = -1, o = r[e] = new Array(i); ++a < i;) o[a] = t[a][e];
                return r
            };

        function V(t) {
            return t.length
        }
        var H = function() {
                return Y(arguments)
            },
            G = Array.prototype.slice,
            $ = function(t) {
                return t
            },
            W = 1,
            K = 2,
            X = 3,
            Z = 4,
            J = 1e-6;

        function Q(t) {
            return "translate(" + (t + .5) + ",0)"
        }

        function tt(t) {
            return "translate(0," + (t + .5) + ")"
        }

        function et(t) {
            return function(e) {
                return +t(e)
            }
        }

        function nt(t) {
            var e = Math.max(0, t.bandwidth() - 1) / 2;
            return t.round() && (e = Math.round(e)),
                function(n) {
                    return +t(n) + e
                }
        }

        function rt() {
            return !this.__axis
        }

        function it(t, e) {
            var n = [],
                r = null,
                i = null,
                a = 6,
                o = 6,
                s = 3,
                u = t === W || t === Z ? -1 : 1,
                c = t === Z || t === K ? "x" : "y",
                f = t === W || t === X ? Q : tt;

            function l(l) {
                var h = null == r ? e.ticks ? e.ticks.apply(e, n) : e.domain() : r,
                    d = null == i ? e.tickFormat ? e.tickFormat.apply(e, n) : $ : i,
                    p = Math.max(a, 0) + s,
                    g = e.range(),
                    y = +g[0] + .5,
                    b = +g[g.length - 1] + .5,
                    v = (e.bandwidth ? nt : et)(e.copy()),
                    m = l.selection ? l.selection() : l,
                    _ = m.selectAll(".domain").data([null]),
                    w = m.selectAll(".tick").data(h, e).order(),
                    x = w.exit(),
                    k = w.enter().append("g").attr("class", "tick"),
                    E = w.select("line"),
                    A = w.select("text");
                _ = _.merge(_.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor")), w = w.merge(k), E = E.merge(k.append("line").attr("stroke", "currentColor").attr(c + "2", u * a)), A = A.merge(k.append("text").attr("fill", "currentColor").attr(c, u * p).attr("dy", t === W ? "0em" : t === X ? "0.71em" : "0.32em")), l !== m && (_ = _.transition(l), w = w.transition(l), E = E.transition(l), A = A.transition(l), x = x.transition(l).attr("opacity", J).attr("transform", (function(t) {
                    return isFinite(t = v(t)) ? f(t) : this.getAttribute("transform")
                })), k.attr("opacity", J).attr("transform", (function(t) {
                    var e = this.parentNode.__axis;
                    return f(e && isFinite(e = e(t)) ? e : v(t))
                }))), x.remove(), _.attr("d", t === Z || t == K ? o ? "M" + u * o + "," + y + "H0.5V" + b + "H" + u * o : "M0.5," + y + "V" + b : o ? "M" + y + "," + u * o + "V0.5H" + b + "V" + u * o : "M" + y + ",0.5H" + b), w.attr("opacity", 1).attr("transform", (function(t) {
                    return f(v(t))
                })), E.attr(c + "2", u * a), A.attr(c, u * p).text(d), m.filter(rt).attr("fill", "none").attr("font-size", 10).attr("font-family", "sans-serif").attr("text-anchor", t === K ? "start" : t === Z ? "end" : "middle"), m.each((function() {
                    this.__axis = v
                }))
            }
            return l.scale = function(t) {
                return arguments.length ? (e = t, l) : e
            }, l.ticks = function() {
                return n = G.call(arguments), l
            }, l.tickArguments = function(t) {
                return arguments.length ? (n = null == t ? [] : G.call(t), l) : n.slice()
            }, l.tickValues = function(t) {
                return arguments.length ? (r = null == t ? null : G.call(t), l) : r && r.slice()
            }, l.tickFormat = function(t) {
                return arguments.length ? (i = t, l) : i
            }, l.tickSize = function(t) {
                return arguments.length ? (a = o = +t, l) : a
            }, l.tickSizeInner = function(t) {
                return arguments.length ? (a = +t, l) : a
            }, l.tickSizeOuter = function(t) {
                return arguments.length ? (o = +t, l) : o
            }, l.tickPadding = function(t) {
                return arguments.length ? (s = +t, l) : s
            }, l
        }

        function at(t) {
            return it(W, t)
        }

        function ot(t) {
            return it(K, t)
        }

        function st(t) {
            return it(X, t)
        }

        function ut(t) {
            return it(Z, t)
        }
        var ct = {
            value: function() {}
        };

        function ft() {
            for (var t, e = 0, n = arguments.length, r = {}; e < n; ++e) {
                if (!(t = arguments[e] + "") || t in r || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
                r[t] = []
            }
            return new lt(r)
        }

        function lt(t) {
            this._ = t
        }

        function ht(t, e) {
            return t.trim().split(/^|\s+/).map((function(t) {
                var n = "",
                    r = t.indexOf(".");
                if (r >= 0 && (n = t.slice(r + 1), t = t.slice(0, r)), t && !e.hasOwnProperty(t)) throw new Error("unknown type: " + t);
                return {
                    type: t,
                    name: n
                }
            }))
        }

        function dt(t, e) {
            for (var n, r = 0, i = t.length; r < i; ++r)
                if ((n = t[r]).name === e) return n.value
        }

        function pt(t, e, n) {
            for (var r = 0, i = t.length; r < i; ++r)
                if (t[r].name === e) {
                    t[r] = ct, t = t.slice(0, r).concat(t.slice(r + 1));
                    break
                } return null != n && t.push({
                name: e,
                value: n
            }), t
        }
        lt.prototype = ft.prototype = {
            constructor: lt,
            on: function(t, e) {
                var n, r = this._,
                    i = ht(t + "", r),
                    a = -1,
                    o = i.length;
                if (!(arguments.length < 2)) {
                    if (null != e && "function" != typeof e) throw new Error("invalid callback: " + e);
                    for (; ++a < o;)
                        if (n = (t = i[a]).type) r[n] = pt(r[n], t.name, e);
                        else if (null == e)
                        for (n in r) r[n] = pt(r[n], t.name, null);
                    return this
                }
                for (; ++a < o;)
                    if ((n = (t = i[a]).type) && (n = dt(r[n], t.name))) return n
            },
            copy: function() {
                var t = {},
                    e = this._;
                for (var n in e) t[n] = e[n].slice();
                return new lt(t)
            },
            call: function(t, e) {
                if ((n = arguments.length - 2) > 0)
                    for (var n, r, i = new Array(n), a = 0; a < n; ++a) i[a] = arguments[a + 2];
                if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t);
                for (a = 0, n = (r = this._[t]).length; a < n; ++a) r[a].value.apply(e, i)
            },
            apply: function(t, e, n) {
                if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t);
                for (var r = this._[t], i = 0, a = r.length; i < a; ++i) r[i].value.apply(e, n)
            }
        };
        var gt = ft;

        function yt() {}
        var bt = function(t) {
            return null == t ? yt : function() {
                return this.querySelector(t)
            }
        };

        function vt() {
            return []
        }
        var mt = function(t) {
                return null == t ? vt : function() {
                    return this.querySelectorAll(t)
                }
            },
            _t = function(t) {
                return function() {
                    return this.matches(t)
                }
            },
            wt = function(t) {
                return new Array(t.length)
            };

        function xt(t, e) {
            this.ownerDocument = t.ownerDocument, this.namespaceURI = t.namespaceURI, this._next = null, this._parent = t, this.__data__ = e
        }
        xt.prototype = {
            constructor: xt,
            appendChild: function(t) {
                return this._parent.insertBefore(t, this._next)
            },
            insertBefore: function(t, e) {
                return this._parent.insertBefore(t, e)
            },
            querySelector: function(t) {
                return this._parent.querySelector(t)
            },
            querySelectorAll: function(t) {
                return this._parent.querySelectorAll(t)
            }
        };
        var kt = "$";

        function Et(t, e, n, r, i, a) {
            for (var o, s = 0, u = e.length, c = a.length; s < c; ++s)(o = e[s]) ? (o.__data__ = a[s], r[s] = o) : n[s] = new xt(t, a[s]);
            for (; s < u; ++s)(o = e[s]) && (i[s] = o)
        }

        function At(t, e, n, r, i, a, o) {
            var s, u, c, f = {},
                l = e.length,
                h = a.length,
                d = new Array(l);
            for (s = 0; s < l; ++s)(u = e[s]) && (d[s] = c = kt + o.call(u, u.__data__, s, e), c in f ? i[s] = u : f[c] = u);
            for (s = 0; s < h; ++s)(u = f[c = kt + o.call(t, a[s], s, a)]) ? (r[s] = u, u.__data__ = a[s], f[c] = null) : n[s] = new xt(t, a[s]);
            for (s = 0; s < l; ++s)(u = e[s]) && f[d[s]] === u && (i[s] = u)
        }

        function St(t, e) {
            return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
        }
        var Mt = "http://www.w3.org/1999/xhtml",
            Tt = {
                svg: "http://www.w3.org/2000/svg",
                xhtml: Mt,
                xlink: "http://www.w3.org/1999/xlink",
                xml: "http://www.w3.org/XML/1998/namespace",
                xmlns: "http://www.w3.org/2000/xmlns/"
            },
            Dt = function(t) {
                var e = t += "",
                    n = e.indexOf(":");
                return n >= 0 && "xmlns" !== (e = t.slice(0, n)) && (t = t.slice(n + 1)), Tt.hasOwnProperty(e) ? {
                    space: Tt[e],
                    local: t
                } : t
            };

        function Ct(t) {
            return function() {
                this.removeAttribute(t)
            }
        }

        function Nt(t) {
            return function() {
                this.removeAttributeNS(t.space, t.local)
            }
        }

        function It(t, e) {
            return function() {
                this.setAttribute(t, e)
            }
        }

        function Lt(t, e) {
            return function() {
                this.setAttributeNS(t.space, t.local, e)
            }
        }

        function Bt(t, e) {
            return function() {
                var n = e.apply(this, arguments);
                null == n ? this.removeAttribute(t) : this.setAttribute(t, n)
            }
        }

        function Ot(t, e) {
            return function() {
                var n = e.apply(this, arguments);
                null == n ? this.removeAttributeNS(t.space, t.local) : this.setAttributeNS(t.space, t.local, n)
            }
        }
        var Rt = function(t) {
            return t.ownerDocument && t.ownerDocument.defaultView || t.document && t || t.defaultView
        };

        function Pt(t) {
            return function() {
                this.style.removeProperty(t)
            }
        }

        function Ft(t, e, n) {
            return function() {
                this.style.setProperty(t, e, n)
            }
        }

        function qt(t, e, n) {
            return function() {
                var r = e.apply(this, arguments);
                null == r ? this.style.removeProperty(t) : this.style.setProperty(t, r, n)
            }
        }

        function jt(t, e) {
            return t.style.getPropertyValue(e) || Rt(t).getComputedStyle(t, null).getPropertyValue(e)
        }

        function Ut(t) {
            return function() {
                delete this[t]
            }
        }

        function zt(t, e) {
            return function() {
                this[t] = e
            }
        }

        function Yt(t, e) {
            return function() {
                var n = e.apply(this, arguments);
                null == n ? delete this[t] : this[t] = n
            }
        }

        function Vt(t) {
            return t.trim().split(/^|\s+/)
        }

        function Ht(t) {
            return t.classList || new Gt(t)
        }

        function Gt(t) {
            this._node = t, this._names = Vt(t.getAttribute("class") || "")
        }

        function $t(t, e) {
            for (var n = Ht(t), r = -1, i = e.length; ++r < i;) n.add(e[r])
        }

        function Wt(t, e) {
            for (var n = Ht(t), r = -1, i = e.length; ++r < i;) n.remove(e[r])
        }

        function Kt(t) {
            return function() {
                $t(this, t)
            }
        }

        function Xt(t) {
            return function() {
                Wt(this, t)
            }
        }

        function Zt(t, e) {
            return function() {
                (e.apply(this, arguments) ? $t : Wt)(this, t)
            }
        }
        Gt.prototype = {
            add: function(t) {
                this._names.indexOf(t) < 0 && (this._names.push(t), this._node.setAttribute("class", this._names.join(" ")))
            },
            remove: function(t) {
                var e = this._names.indexOf(t);
                e >= 0 && (this._names.splice(e, 1), this._node.setAttribute("class", this._names.join(" ")))
            },
            contains: function(t) {
                return this._names.indexOf(t) >= 0
            }
        };

        function Jt() {
            this.textContent = ""
        }

        function Qt(t) {
            return function() {
                this.textContent = t
            }
        }

        function te(t) {
            return function() {
                var e = t.apply(this, arguments);
                this.textContent = null == e ? "" : e
            }
        }

        function ee() {
            this.innerHTML = ""
        }

        function ne(t) {
            return function() {
                this.innerHTML = t
            }
        }

        function re(t) {
            return function() {
                var e = t.apply(this, arguments);
                this.innerHTML = null == e ? "" : e
            }
        }

        function ie() {
            this.nextSibling && this.parentNode.appendChild(this)
        }

        function ae() {
            this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild)
        }

        function oe(t) {
            return function() {
                var e = this.ownerDocument,
                    n = this.namespaceURI;
                return n === Mt && e.documentElement.namespaceURI === Mt ? e.createElement(t) : e.createElementNS(n, t)
            }
        }

        function se(t) {
            return function() {
                return this.ownerDocument.createElementNS(t.space, t.local)
            }
        }
        var ue = function(t) {
            var e = Dt(t);
            return (e.local ? se : oe)(e)
        };

        function ce() {
            return null
        }

        function fe() {
            var t = this.parentNode;
            t && t.removeChild(this)
        }

        function le() {
            var t = this.cloneNode(!1),
                e = this.parentNode;
            return e ? e.insertBefore(t, this.nextSibling) : t
        }

        function he() {
            var t = this.cloneNode(!0),
                e = this.parentNode;
            return e ? e.insertBefore(t, this.nextSibling) : t
        }
        var de = {},
            pe = null;
        "undefined" != typeof document && ("onmouseenter" in document.documentElement || (de = {
            mouseenter: "mouseover",
            mouseleave: "mouseout"
        }));

        function ge(t, e, n) {
            return t = ye(t, e, n),
                function(e) {
                    var n = e.relatedTarget;
                    n && (n === this || 8 & n.compareDocumentPosition(this)) || t.call(this, e)
                }
        }

        function ye(t, e, n) {
            return function(r) {
                var i = pe;
                pe = r;
                try {
                    t.call(this, this.__data__, e, n)
                } finally {
                    pe = i
                }
            }
        }

        function be(t) {
            return t.trim().split(/^|\s+/).map((function(t) {
                var e = "",
                    n = t.indexOf(".");
                return n >= 0 && (e = t.slice(n + 1), t = t.slice(0, n)), {
                    type: t,
                    name: e
                }
            }))
        }

        function ve(t) {
            return function() {
                var e = this.__on;
                if (e) {
                    for (var n, r = 0, i = -1, a = e.length; r < a; ++r) n = e[r], t.type && n.type !== t.type || n.name !== t.name ? e[++i] = n : this.removeEventListener(n.type, n.listener, n.capture);
                    ++i ? e.length = i : delete this.__on
                }
            }
        }

        function me(t, e, n) {
            var r = de.hasOwnProperty(t.type) ? ge : ye;
            return function(i, a, o) {
                var s, u = this.__on,
                    c = r(e, a, o);
                if (u)
                    for (var f = 0, l = u.length; f < l; ++f)
                        if ((s = u[f]).type === t.type && s.name === t.name) return this.removeEventListener(s.type, s.listener, s.capture), this.addEventListener(s.type, s.listener = c, s.capture = n), void(s.value = e);
                this.addEventListener(t.type, c, n), s = {
                    type: t.type,
                    name: t.name,
                    value: e,
                    listener: c,
                    capture: n
                }, u ? u.push(s) : this.__on = [s]
            }
        }

        function _e(t, e, n, r) {
            var i = pe;
            t.sourceEvent = pe, pe = t;
            try {
                return e.apply(n, r)
            } finally {
                pe = i
            }
        }

        function we(t, e, n) {
            var r = Rt(t),
                i = r.CustomEvent;
            "function" == typeof i ? i = new i(e, n) : (i = r.document.createEvent("Event"), n ? (i.initEvent(e, n.bubbles, n.cancelable), i.detail = n.detail) : i.initEvent(e, !1, !1)), t.dispatchEvent(i)
        }

        function xe(t, e) {
            return function() {
                return we(this, t, e)
            }
        }

        function ke(t, e) {
            return function() {
                return we(this, t, e.apply(this, arguments))
            }
        }
        var Ee = [null];

        function Ae(t, e) {
            this._groups = t, this._parents = e
        }

        function Se() {
            return new Ae([
                [document.documentElement]
            ], Ee)
        }
        Ae.prototype = Se.prototype = {
            constructor: Ae,
            select: function(t) {
                "function" != typeof t && (t = bt(t));
                for (var e = this._groups, n = e.length, r = new Array(n), i = 0; i < n; ++i)
                    for (var a, o, s = e[i], u = s.length, c = r[i] = new Array(u), f = 0; f < u; ++f)(a = s[f]) && (o = t.call(a, a.__data__, f, s)) && ("__data__" in a && (o.__data__ = a.__data__), c[f] = o);
                return new Ae(r, this._parents)
            },
            selectAll: function(t) {
                "function" != typeof t && (t = mt(t));
                for (var e = this._groups, n = e.length, r = [], i = [], a = 0; a < n; ++a)
                    for (var o, s = e[a], u = s.length, c = 0; c < u; ++c)(o = s[c]) && (r.push(t.call(o, o.__data__, c, s)), i.push(o));
                return new Ae(r, i)
            },
            filter: function(t) {
                "function" != typeof t && (t = _t(t));
                for (var e = this._groups, n = e.length, r = new Array(n), i = 0; i < n; ++i)
                    for (var a, o = e[i], s = o.length, u = r[i] = [], c = 0; c < s; ++c)(a = o[c]) && t.call(a, a.__data__, c, o) && u.push(a);
                return new Ae(r, this._parents)
            },
            data: function(t, e) {
                if (!t) return p = new Array(this.size()), f = -1, this.each((function(t) {
                    p[++f] = t
                })), p;
                var n, r = e ? At : Et,
                    i = this._parents,
                    a = this._groups;
                "function" != typeof t && (n = t, t = function() {
                    return n
                });
                for (var o = a.length, s = new Array(o), u = new Array(o), c = new Array(o), f = 0; f < o; ++f) {
                    var l = i[f],
                        h = a[f],
                        d = h.length,
                        p = t.call(l, l && l.__data__, f, i),
                        g = p.length,
                        y = u[f] = new Array(g),
                        b = s[f] = new Array(g);
                    r(l, h, y, b, c[f] = new Array(d), p, e);
                    for (var v, m, _ = 0, w = 0; _ < g; ++_)
                        if (v = y[_]) {
                            for (_ >= w && (w = _ + 1); !(m = b[w]) && ++w < g;);
                            v._next = m || null
                        }
                }
                return (s = new Ae(s, i))._enter = u, s._exit = c, s
            },
            enter: function() {
                return new Ae(this._enter || this._groups.map(wt), this._parents)
            },
            exit: function() {
                return new Ae(this._exit || this._groups.map(wt), this._parents)
            },
            join: function(t, e, n) {
                var r = this.enter(),
                    i = this,
                    a = this.exit();
                return r = "function" == typeof t ? t(r) : r.append(t + ""), null != e && (i = e(i)), null == n ? a.remove() : n(a), r && i ? r.merge(i).order() : i
            },
            merge: function(t) {
                for (var e = this._groups, n = t._groups, r = e.length, i = n.length, a = Math.min(r, i), o = new Array(r), s = 0; s < a; ++s)
                    for (var u, c = e[s], f = n[s], l = c.length, h = o[s] = new Array(l), d = 0; d < l; ++d)(u = c[d] || f[d]) && (h[d] = u);
                for (; s < r; ++s) o[s] = e[s];
                return new Ae(o, this._parents)
            },
            order: function() {
                for (var t = this._groups, e = -1, n = t.length; ++e < n;)
                    for (var r, i = t[e], a = i.length - 1, o = i[a]; --a >= 0;)(r = i[a]) && (o && 4 ^ r.compareDocumentPosition(o) && o.parentNode.insertBefore(r, o), o = r);
                return this
            },
            sort: function(t) {
                function e(e, n) {
                    return e && n ? t(e.__data__, n.__data__) : !e - !n
                }
                t || (t = St);
                for (var n = this._groups, r = n.length, i = new Array(r), a = 0; a < r; ++a) {
                    for (var o, s = n[a], u = s.length, c = i[a] = new Array(u), f = 0; f < u; ++f)(o = s[f]) && (c[f] = o);
                    c.sort(e)
                }
                return new Ae(i, this._parents).order()
            },
            call: function() {
                var t = arguments[0];
                return arguments[0] = this, t.apply(null, arguments), this
            },
            nodes: function() {
                var t = new Array(this.size()),
                    e = -1;
                return this.each((function() {
                    t[++e] = this
                })), t
            },
            node: function() {
                for (var t = this._groups, e = 0, n = t.length; e < n; ++e)
                    for (var r = t[e], i = 0, a = r.length; i < a; ++i) {
                        var o = r[i];
                        if (o) return o
                    }
                return null
            },
            size: function() {
                var t = 0;
                return this.each((function() {
                    ++t
                })), t
            },
            empty: function() {
                return !this.node()
            },
            each: function(t) {
                for (var e = this._groups, n = 0, r = e.length; n < r; ++n)
                    for (var i, a = e[n], o = 0, s = a.length; o < s; ++o)(i = a[o]) && t.call(i, i.__data__, o, a);
                return this
            },
            attr: function(t, e) {
                var n = Dt(t);
                if (arguments.length < 2) {
                    var r = this.node();
                    return n.local ? r.getAttributeNS(n.space, n.local) : r.getAttribute(n)
                }
                return this.each((null == e ? n.local ? Nt : Ct : "function" == typeof e ? n.local ? Ot : Bt : n.local ? Lt : It)(n, e))
            },
            style: function(t, e, n) {
                return arguments.length > 1 ? this.each((null == e ? Pt : "function" == typeof e ? qt : Ft)(t, e, null == n ? "" : n)) : jt(this.node(), t)
            },
            property: function(t, e) {
                return arguments.length > 1 ? this.each((null == e ? Ut : "function" == typeof e ? Yt : zt)(t, e)) : this.node()[t]
            },
            classed: function(t, e) {
                var n = Vt(t + "");
                if (arguments.length < 2) {
                    for (var r = Ht(this.node()), i = -1, a = n.length; ++i < a;)
                        if (!r.contains(n[i])) return !1;
                    return !0
                }
                return this.each(("function" == typeof e ? Zt : e ? Kt : Xt)(n, e))
            },
            text: function(t) {
                return arguments.length ? this.each(null == t ? Jt : ("function" == typeof t ? te : Qt)(t)) : this.node().textContent
            },
            html: function(t) {
                return arguments.length ? this.each(null == t ? ee : ("function" == typeof t ? re : ne)(t)) : this.node().innerHTML
            },
            raise: function() {
                return this.each(ie)
            },
            lower: function() {
                return this.each(ae)
            },
            append: function(t) {
                var e = "function" == typeof t ? t : ue(t);
                return this.select((function() {
                    return this.appendChild(e.apply(this, arguments))
                }))
            },
            insert: function(t, e) {
                var n = "function" == typeof t ? t : ue(t),
                    r = null == e ? ce : "function" == typeof e ? e : bt(e);
                return this.select((function() {
                    return this.insertBefore(n.apply(this, arguments), r.apply(this, arguments) || null)
                }))
            },
            remove: function() {
                return this.each(fe)
            },
            clone: function(t) {
                return this.select(t ? he : le)
            },
            datum: function(t) {
                return arguments.length ? this.property("__data__", t) : this.node().__data__
            },
            on: function(t, e, n) {
                var r, i, a = be(t + ""),
                    o = a.length;
                if (!(arguments.length < 2)) {
                    for (s = e ? me : ve, null == n && (n = !1), r = 0; r < o; ++r) this.each(s(a[r], e, n));
                    return this
                }
                var s = this.node().__on;
                if (s)
                    for (var u, c = 0, f = s.length; c < f; ++c)
                        for (r = 0, u = s[c]; r < o; ++r)
                            if ((i = a[r]).type === u.type && i.name === u.name) return u.value
            },
            dispatch: function(t, e) {
                return this.each(("function" == typeof e ? ke : xe)(t, e))
            }
        };
        var Me = Se,
            Te = function(t) {
                return "string" == typeof t ? new Ae([
                    [document.querySelector(t)]
                ], [document.documentElement]) : new Ae([
                    [t]
                ], Ee)
            };

        function De() {
            pe.stopImmediatePropagation()
        }
        var Ce = function() {
                pe.preventDefault(), pe.stopImmediatePropagation()
            },
            Ne = function(t) {
                var e = t.document.documentElement,
                    n = Te(t).on("dragstart.drag", Ce, !0);
                "onselectstart" in e ? n.on("selectstart.drag", Ce, !0) : (e.__noselect = e.style.MozUserSelect, e.style.MozUserSelect = "none")
            };

        function Ie(t, e) {
            var n = t.document.documentElement,
                r = Te(t).on("dragstart.drag", null);
            e && (r.on("click.drag", Ce, !0), setTimeout((function() {
                r.on("click.drag", null)
            }), 0)), "onselectstart" in n ? r.on("selectstart.drag", null) : (n.style.MozUserSelect = n.__noselect, delete n.__noselect)
        }
        var Le = function(t, e, n) {
            t.prototype = e.prototype = n, n.constructor = t
        };

        function Be(t, e) {
            var n = Object.create(t.prototype);
            for (var r in e) n[r] = e[r];
            return n
        }

        function Oe() {}
        var Re = "\\s*([+-]?\\d+)\\s*",
            Pe = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",
            Fe = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
            qe = /^#([0-9a-f]{3,8})$/,
            je = new RegExp("^rgb\\(" + [Re, Re, Re] + "\\)$"),
            Ue = new RegExp("^rgb\\(" + [Fe, Fe, Fe] + "\\)$"),
            ze = new RegExp("^rgba\\(" + [Re, Re, Re, Pe] + "\\)$"),
            Ye = new RegExp("^rgba\\(" + [Fe, Fe, Fe, Pe] + "\\)$"),
            Ve = new RegExp("^hsl\\(" + [Pe, Fe, Fe] + "\\)$"),
            He = new RegExp("^hsla\\(" + [Pe, Fe, Fe, Pe] + "\\)$"),
            Ge = {
                aliceblue: 15792383,
                antiquewhite: 16444375,
                aqua: 65535,
                aquamarine: 8388564,
                azure: 15794175,
                beige: 16119260,
                bisque: 16770244,
                black: 0,
                blanchedalmond: 16772045,
                blue: 255,
                blueviolet: 9055202,
                brown: 10824234,
                burlywood: 14596231,
                cadetblue: 6266528,
                chartreuse: 8388352,
                chocolate: 13789470,
                coral: 16744272,
                cornflowerblue: 6591981,
                cornsilk: 16775388,
                crimson: 14423100,
                cyan: 65535,
                darkblue: 139,
                darkcyan: 35723,
                darkgoldenrod: 12092939,
                darkgray: 11119017,
                darkgreen: 25600,
                darkgrey: 11119017,
                darkkhaki: 12433259,
                darkmagenta: 9109643,
                darkolivegreen: 5597999,
                darkorange: 16747520,
                darkorchid: 10040012,
                darkred: 9109504,
                darksalmon: 15308410,
                darkseagreen: 9419919,
                darkslateblue: 4734347,
                darkslategray: 3100495,
                darkslategrey: 3100495,
                darkturquoise: 52945,
                darkviolet: 9699539,
                deeppink: 16716947,
                deepskyblue: 49151,
                dimgray: 6908265,
                dimgrey: 6908265,
                dodgerblue: 2003199,
                firebrick: 11674146,
                floralwhite: 16775920,
                forestgreen: 2263842,
                fuchsia: 16711935,
                gainsboro: 14474460,
                ghostwhite: 16316671,
                gold: 16766720,
                goldenrod: 14329120,
                gray: 8421504,
                green: 32768,
                greenyellow: 11403055,
                grey: 8421504,
                honeydew: 15794160,
                hotpink: 16738740,
                indianred: 13458524,
                indigo: 4915330,
                ivory: 16777200,
                khaki: 15787660,
                lavender: 15132410,
                lavenderblush: 16773365,
                lawngreen: 8190976,
                lemonchiffon: 16775885,
                lightblue: 11393254,
                lightcoral: 15761536,
                lightcyan: 14745599,
                lightgoldenrodyellow: 16448210,
                lightgray: 13882323,
                lightgreen: 9498256,
                lightgrey: 13882323,
                lightpink: 16758465,
                lightsalmon: 16752762,
                lightseagreen: 2142890,
                lightskyblue: 8900346,
                lightslategray: 7833753,
                lightslategrey: 7833753,
                lightsteelblue: 11584734,
                lightyellow: 16777184,
                lime: 65280,
                limegreen: 3329330,
                linen: 16445670,
                magenta: 16711935,
                maroon: 8388608,
                mediumaquamarine: 6737322,
                mediumblue: 205,
                mediumorchid: 12211667,
                mediumpurple: 9662683,
                mediumseagreen: 3978097,
                mediumslateblue: 8087790,
                mediumspringgreen: 64154,
                mediumturquoise: 4772300,
                mediumvioletred: 13047173,
                midnightblue: 1644912,
                mintcream: 16121850,
                mistyrose: 16770273,
                moccasin: 16770229,
                navajowhite: 16768685,
                navy: 128,
                oldlace: 16643558,
                olive: 8421376,
                olivedrab: 7048739,
                orange: 16753920,
                orangered: 16729344,
                orchid: 14315734,
                palegoldenrod: 15657130,
                palegreen: 10025880,
                paleturquoise: 11529966,
                palevioletred: 14381203,
                papayawhip: 16773077,
                peachpuff: 16767673,
                peru: 13468991,
                pink: 16761035,
                plum: 14524637,
                powderblue: 11591910,
                purple: 8388736,
                rebeccapurple: 6697881,
                red: 16711680,
                rosybrown: 12357519,
                royalblue: 4286945,
                saddlebrown: 9127187,
                salmon: 16416882,
                sandybrown: 16032864,
                seagreen: 3050327,
                seashell: 16774638,
                sienna: 10506797,
                silver: 12632256,
                skyblue: 8900331,
                slateblue: 6970061,
                slategray: 7372944,
                slategrey: 7372944,
                snow: 16775930,
                springgreen: 65407,
                steelblue: 4620980,
                tan: 13808780,
                teal: 32896,
                thistle: 14204888,
                tomato: 16737095,
                turquoise: 4251856,
                violet: 15631086,
                wheat: 16113331,
                white: 16777215,
                whitesmoke: 16119285,
                yellow: 16776960,
                yellowgreen: 10145074
            };

        function $e() {
            return this.rgb().formatHex()
        }

        function We() {
            return this.rgb().formatRgb()
        }

        function Ke(t) {
            var e, n;
            return t = (t + "").trim().toLowerCase(), (e = qe.exec(t)) ? (n = e[1].length, e = parseInt(e[1], 16), 6 === n ? Xe(e) : 3 === n ? new tn(e >> 8 & 15 | e >> 4 & 240, e >> 4 & 15 | 240 & e, (15 & e) << 4 | 15 & e, 1) : 8 === n ? new tn(e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, (255 & e) / 255) : 4 === n ? new tn(e >> 12 & 15 | e >> 8 & 240, e >> 8 & 15 | e >> 4 & 240, e >> 4 & 15 | 240 & e, ((15 & e) << 4 | 15 & e) / 255) : null) : (e = je.exec(t)) ? new tn(e[1], e[2], e[3], 1) : (e = Ue.exec(t)) ? new tn(255 * e[1] / 100, 255 * e[2] / 100, 255 * e[3] / 100, 1) : (e = ze.exec(t)) ? Ze(e[1], e[2], e[3], e[4]) : (e = Ye.exec(t)) ? Ze(255 * e[1] / 100, 255 * e[2] / 100, 255 * e[3] / 100, e[4]) : (e = Ve.exec(t)) ? an(e[1], e[2] / 100, e[3] / 100, 1) : (e = He.exec(t)) ? an(e[1], e[2] / 100, e[3] / 100, e[4]) : Ge.hasOwnProperty(t) ? Xe(Ge[t]) : "transparent" === t ? new tn(NaN, NaN, NaN, 0) : null
        }

        function Xe(t) {
            return new tn(t >> 16 & 255, t >> 8 & 255, 255 & t, 1)
        }

        function Ze(t, e, n, r) {
            return r <= 0 && (t = e = n = NaN), new tn(t, e, n, r)
        }

        function Je(t) {
            return t instanceof Oe || (t = Ke(t)), t ? new tn((t = t.rgb()).r, t.g, t.b, t.opacity) : new tn
        }

        function Qe(t, e, n, r) {
            return 1 === arguments.length ? Je(t) : new tn(t, e, n, null == r ? 1 : r)
        }

        function tn(t, e, n, r) {
            this.r = +t, this.g = +e, this.b = +n, this.opacity = +r
        }

        function en() {
            return "#" + rn(this.r) + rn(this.g) + rn(this.b)
        }

        function nn() {
            var t = this.opacity;
            return (1 === (t = isNaN(t) ? 1 : Math.max(0, Math.min(1, t))) ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (1 === t ? ")" : ", " + t + ")")
        }

        function rn(t) {
            return ((t = Math.max(0, Math.min(255, Math.round(t) || 0))) < 16 ? "0" : "") + t.toString(16)
        }

        function an(t, e, n, r) {
            return r <= 0 ? t = e = n = NaN : n <= 0 || n >= 1 ? t = e = NaN : e <= 0 && (t = NaN), new un(t, e, n, r)
        }

        function on(t) {
            if (t instanceof un) return new un(t.h, t.s, t.l, t.opacity);
            if (t instanceof Oe || (t = Ke(t)), !t) return new un;
            if (t instanceof un) return t;
            var e = (t = t.rgb()).r / 255,
                n = t.g / 255,
                r = t.b / 255,
                i = Math.min(e, n, r),
                a = Math.max(e, n, r),
                o = NaN,
                s = a - i,
                u = (a + i) / 2;
            return s ? (o = e === a ? (n - r) / s + 6 * (n < r) : n === a ? (r - e) / s + 2 : (e - n) / s + 4, s /= u < .5 ? a + i : 2 - a - i, o *= 60) : s = u > 0 && u < 1 ? 0 : o, new un(o, s, u, t.opacity)
        }

        function sn(t, e, n, r) {
            return 1 === arguments.length ? on(t) : new un(t, e, n, null == r ? 1 : r)
        }

        function un(t, e, n, r) {
            this.h = +t, this.s = +e, this.l = +n, this.opacity = +r
        }

        function cn(t, e, n) {
            return 255 * (t < 60 ? e + (n - e) * t / 60 : t < 180 ? n : t < 240 ? e + (n - e) * (240 - t) / 60 : e)
        }

        function fn(t, e, n, r, i) {
            var a = t * t,
                o = a * t;
            return ((1 - 3 * t + 3 * a - o) * e + (4 - 6 * a + 3 * o) * n + (1 + 3 * t + 3 * a - 3 * o) * r + o * i) / 6
        }
        Le(Oe, Ke, {
            copy: function(t) {
                return Object.assign(new this.constructor, this, t)
            },
            displayable: function() {
                return this.rgb().displayable()
            },
            hex: $e,
            formatHex: $e,
            formatHsl: function() {
                return on(this).formatHsl()
            },
            formatRgb: We,
            toString: We
        }), Le(tn, Qe, Be(Oe, {
            brighter: function(t) {
                return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new tn(this.r * t, this.g * t, this.b * t, this.opacity)
            },
            darker: function(t) {
                return t = null == t ? .7 : Math.pow(.7, t), new tn(this.r * t, this.g * t, this.b * t, this.opacity)
            },
            rgb: function() {
                return this
            },
            displayable: function() {
                return -.5 <= this.r && this.r < 255.5 && -.5 <= this.g && this.g < 255.5 && -.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1
            },
            hex: en,
            formatHex: en,
            formatRgb: nn,
            toString: nn
        })), Le(un, sn, Be(Oe, {
            brighter: function(t) {
                return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new un(this.h, this.s, this.l * t, this.opacity)
            },
            darker: function(t) {
                return t = null == t ? .7 : Math.pow(.7, t), new un(this.h, this.s, this.l * t, this.opacity)
            },
            rgb: function() {
                var t = this.h % 360 + 360 * (this.h < 0),
                    e = isNaN(t) || isNaN(this.s) ? 0 : this.s,
                    n = this.l,
                    r = n + (n < .5 ? n : 1 - n) * e,
                    i = 2 * n - r;
                return new tn(cn(t >= 240 ? t - 240 : t + 120, i, r), cn(t, i, r), cn(t < 120 ? t + 240 : t - 120, i, r), this.opacity)
            },
            displayable: function() {
                return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1
            },
            formatHsl: function() {
                var t = this.opacity;
                return (1 === (t = isNaN(t) ? 1 : Math.max(0, Math.min(1, t))) ? "hsl(" : "hsla(") + (this.h || 0) + ", " + 100 * (this.s || 0) + "%, " + 100 * (this.l || 0) + "%" + (1 === t ? ")" : ", " + t + ")")
            }
        }));
        var ln = function(t) {
                var e = t.length - 1;
                return function(n) {
                    var r = n <= 0 ? n = 0 : n >= 1 ? (n = 1, e - 1) : Math.floor(n * e),
                        i = t[r],
                        a = t[r + 1],
                        o = r > 0 ? t[r - 1] : 2 * i - a,
                        s = r < e - 1 ? t[r + 2] : 2 * a - i;
                    return fn((n - r / e) * e, o, i, a, s)
                }
            },
            hn = function(t) {
                var e = t.length;
                return function(n) {
                    var r = Math.floor(((n %= 1) < 0 ? ++n : n) * e),
                        i = t[(r + e - 1) % e],
                        a = t[r % e],
                        o = t[(r + 1) % e],
                        s = t[(r + 2) % e];
                    return fn((n - r / e) * e, i, a, o, s)
                }
            },
            dn = function(t) {
                return function() {
                    return t
                }
            };

        function pn(t, e) {
            return function(n) {
                return t + n * e
            }
        }

        function gn(t, e) {
            var n = e - t;
            return n ? pn(t, n > 180 || n < -180 ? n - 360 * Math.round(n / 360) : n) : dn(isNaN(t) ? e : t)
        }

        function yn(t) {
            return 1 == (t = +t) ? bn : function(e, n) {
                return n - e ? function(t, e, n) {
                    return t = Math.pow(t, n), e = Math.pow(e, n) - t, n = 1 / n,
                        function(r) {
                            return Math.pow(t + r * e, n)
                        }
                }(e, n, t) : dn(isNaN(e) ? n : e)
            }
        }

        function bn(t, e) {
            var n = e - t;
            return n ? pn(t, n) : dn(isNaN(t) ? e : t)
        }
        var vn = function t(e) {
            var n = yn(e);

            function r(t, e) {
                var r = n((t = Qe(t)).r, (e = Qe(e)).r),
                    i = n(t.g, e.g),
                    a = n(t.b, e.b),
                    o = bn(t.opacity, e.opacity);
                return function(e) {
                    return t.r = r(e), t.g = i(e), t.b = a(e), t.opacity = o(e), t + ""
                }
            }
            return r.gamma = t, r
        }(1);

        function mn(t) {
            return function(e) {
                var n, r, i = e.length,
                    a = new Array(i),
                    o = new Array(i),
                    s = new Array(i);
                for (n = 0; n < i; ++n) r = Qe(e[n]), a[n] = r.r || 0, o[n] = r.g || 0, s[n] = r.b || 0;
                return a = t(a), o = t(o), s = t(s), r.opacity = 1,
                    function(t) {
                        return r.r = a(t), r.g = o(t), r.b = s(t), r + ""
                    }
            }
        }
        var _n = mn(ln),
            wn = mn(hn),
            xn = function(t, e) {
                e || (e = []);
                var n, r = t ? Math.min(e.length, t.length) : 0,
                    i = e.slice();
                return function(a) {
                    for (n = 0; n < r; ++n) i[n] = t[n] * (1 - a) + e[n] * a;
                    return i
                }
            };

        function kn(t) {
            return ArrayBuffer.isView(t) && !(t instanceof DataView)
        }
        var En = function(t, e) {
            return (kn(e) ? xn : An)(t, e)
        };

        function An(t, e) {
            var n, r = e ? e.length : 0,
                i = t ? Math.min(r, t.length) : 0,
                a = new Array(i),
                o = new Array(r);
            for (n = 0; n < i; ++n) a[n] = Bn(t[n], e[n]);
            for (; n < r; ++n) o[n] = e[n];
            return function(t) {
                for (n = 0; n < i; ++n) o[n] = a[n](t);
                return o
            }
        }
        var Sn = function(t, e) {
                var n = new Date;
                return t = +t, e = +e,
                    function(r) {
                        return n.setTime(t * (1 - r) + e * r), n
                    }
            },
            Mn = function(t, e) {
                return t = +t, e = +e,
                    function(n) {
                        return t * (1 - n) + e * n
                    }
            },
            Tn = function(t, e) {
                var n, r = {},
                    i = {};
                for (n in null !== t && "object" == typeof t || (t = {}), null !== e && "object" == typeof e || (e = {}), e) n in t ? r[n] = Bn(t[n], e[n]) : i[n] = e[n];
                return function(t) {
                    for (n in r) i[n] = r[n](t);
                    return i
                }
            },
            Dn = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
            Cn = new RegExp(Dn.source, "g");
        var Nn, In, Ln = function(t, e) {
                var n, r, i, a = Dn.lastIndex = Cn.lastIndex = 0,
                    o = -1,
                    s = [],
                    u = [];
                for (t += "", e += "";
                    (n = Dn.exec(t)) && (r = Cn.exec(e));)(i = r.index) > a && (i = e.slice(a, i), s[o] ? s[o] += i : s[++o] = i), (n = n[0]) === (r = r[0]) ? s[o] ? s[o] += r : s[++o] = r : (s[++o] = null, u.push({
                    i: o,
                    x: Mn(n, r)
                })), a = Cn.lastIndex;
                return a < e.length && (i = e.slice(a), s[o] ? s[o] += i : s[++o] = i), s.length < 2 ? u[0] ? function(t) {
                    return function(e) {
                        return t(e) + ""
                    }
                }(u[0].x) : function(t) {
                    return function() {
                        return t
                    }
                }(e) : (e = u.length, function(t) {
                    for (var n, r = 0; r < e; ++r) s[(n = u[r]).i] = n.x(t);
                    return s.join("")
                })
            },
            Bn = function(t, e) {
                var n, r = typeof e;
                return null == e || "boolean" === r ? dn(e) : ("number" === r ? Mn : "string" === r ? (n = Ke(e)) ? (e = n, vn) : Ln : e instanceof Ke ? vn : e instanceof Date ? Sn : kn(e) ? xn : Array.isArray(e) ? An : "function" != typeof e.valueOf && "function" != typeof e.toString || isNaN(e) ? Tn : Mn)(t, e)
            },
            On = function() {
                for (var t, e = pe; t = e.sourceEvent;) e = t;
                return e
            },
            Rn = function(t, e) {
                var n = t.ownerSVGElement || t;
                if (n.createSVGPoint) {
                    var r = n.createSVGPoint();
                    return r.x = e.clientX, r.y = e.clientY, [(r = r.matrixTransform(t.getScreenCTM().inverse())).x, r.y]
                }
                var i = t.getBoundingClientRect();
                return [e.clientX - i.left - t.clientLeft, e.clientY - i.top - t.clientTop]
            },
            Pn = function(t, e, n) {
                arguments.length < 3 && (n = e, e = On().changedTouches);
                for (var r, i = 0, a = e ? e.length : 0; i < a; ++i)
                    if ((r = e[i]).identifier === n) return Rn(t, r);
                return null
            },
            Fn = function(t) {
                var e = On();
                return e.changedTouches && (e = e.changedTouches[0]), Rn(t, e)
            },
            qn = 0,
            jn = 0,
            Un = 0,
            zn = 1e3,
            Yn = 0,
            Vn = 0,
            Hn = 0,
            Gn = "object" == typeof performance && performance.now ? performance : Date,
            $n = "object" == typeof window && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(t) {
                setTimeout(t, 17)
            };

        function Wn() {
            return Vn || ($n(Kn), Vn = Gn.now() + Hn)
        }

        function Kn() {
            Vn = 0
        }

        function Xn() {
            this._call = this._time = this._next = null
        }

        function Zn(t, e, n) {
            var r = new Xn;
            return r.restart(t, e, n), r
        }

        function Jn() {
            Wn(), ++qn;
            for (var t, e = Nn; e;)(t = Vn - e._time) >= 0 && e._call.call(null, t), e = e._next;
            --qn
        }

        function Qn() {
            Vn = (Yn = Gn.now()) + Hn, qn = jn = 0;
            try {
                Jn()
            } finally {
                qn = 0,
                    function() {
                        var t, e, n = Nn,
                            r = 1 / 0;
                        for (; n;) n._call ? (r > n._time && (r = n._time), t = n, n = n._next) : (e = n._next, n._next = null, n = t ? t._next = e : Nn = e);
                        In = t, er(r)
                    }(), Vn = 0
            }
        }

        function tr() {
            var t = Gn.now(),
                e = t - Yn;
            e > zn && (Hn -= e, Yn = t)
        }

        function er(t) {
            qn || (jn && (jn = clearTimeout(jn)), t - Vn > 24 ? (t < 1 / 0 && (jn = setTimeout(Qn, t - Gn.now() - Hn)), Un && (Un = clearInterval(Un))) : (Un || (Yn = Gn.now(), Un = setInterval(tr, zn)), qn = 1, $n(Qn)))
        }
        Xn.prototype = Zn.prototype = {
            constructor: Xn,
            restart: function(t, e, n) {
                if ("function" != typeof t) throw new TypeError("callback is not a function");
                n = (null == n ? Wn() : +n) + (null == e ? 0 : +e), this._next || In === this || (In ? In._next = this : Nn = this, In = this), this._call = t, this._time = n, er()
            },
            stop: function() {
                this._call && (this._call = null, this._time = 1 / 0, er())
            }
        };
        var nr = function(t, e, n) {
                var r = new Xn;
                return e = null == e ? 0 : +e, r.restart((function(n) {
                    r.stop(), t(n + e)
                }), e, n), r
            },
            rr = gt("start", "end", "cancel", "interrupt"),
            ir = [],
            ar = 0,
            or = 1,
            sr = 2,
            ur = 3,
            cr = 4,
            fr = 5,
            lr = 6,
            hr = function(t, e, n, r, i, a) {
                var o = t.__transition;
                if (o) {
                    if (n in o) return
                } else t.__transition = {};
                ! function(t, e, n) {
                    var r, i = t.__transition;

                    function a(u) {
                        var c, f, l, h;
                        if (n.state !== or) return s();
                        for (c in i)
                            if ((h = i[c]).name === n.name) {
                                if (h.state === ur) return nr(a);
                                h.state === cr ? (h.state = lr, h.timer.stop(), h.on.call("interrupt", t, t.__data__, h.index, h.group), delete i[c]) : +c < e && (h.state = lr, h.timer.stop(), h.on.call("cancel", t, t.__data__, h.index, h.group), delete i[c])
                            } if (nr((function() {
                                n.state === ur && (n.state = cr, n.timer.restart(o, n.delay, n.time), o(u))
                            })), n.state = sr, n.on.call("start", t, t.__data__, n.index, n.group), n.state === sr) {
                            for (n.state = ur, r = new Array(l = n.tween.length), c = 0, f = -1; c < l; ++c)(h = n.tween[c].value.call(t, t.__data__, n.index, n.group)) && (r[++f] = h);
                            r.length = f + 1
                        }
                    }

                    function o(e) {
                        for (var i = e < n.duration ? n.ease.call(null, e / n.duration) : (n.timer.restart(s), n.state = fr, 1), a = -1, o = r.length; ++a < o;) r[a].call(t, i);
                        n.state === fr && (n.on.call("end", t, t.__data__, n.index, n.group), s())
                    }

                    function s() {
                        for (var r in n.state = lr, n.timer.stop(), delete i[e], i) return;
                        delete t.__transition
                    }
                    i[e] = n, n.timer = Zn((function(t) {
                        n.state = or, n.timer.restart(a, n.delay, n.time), n.delay <= t && a(t - n.delay)
                    }), 0, n.time)
                }(t, n, {
                    name: e,
                    index: r,
                    group: i,
                    on: rr,
                    tween: ir,
                    time: a.time,
                    delay: a.delay,
                    duration: a.duration,
                    ease: a.ease,
                    timer: null,
                    state: ar
                })
            };

        function dr(t, e) {
            var n = gr(t, e);
            if (n.state > ar) throw new Error("too late; already scheduled");
            return n
        }

        function pr(t, e) {
            var n = gr(t, e);
            if (n.state > ur) throw new Error("too late; already running");
            return n
        }

        function gr(t, e) {
            var n = t.__transition;
            if (!n || !(n = n[e])) throw new Error("transition not found");
            return n
        }
        var yr, br, vr, mr, _r = function(t, e) {
                var n, r, i, a = t.__transition,
                    o = !0;
                if (a) {
                    for (i in e = null == e ? null : e + "", a)(n = a[i]).name === e ? (r = n.state > sr && n.state < fr, n.state = lr, n.timer.stop(), n.on.call(r ? "interrupt" : "cancel", t, t.__data__, n.index, n.group), delete a[i]) : o = !1;
                    o && delete t.__transition
                }
            },
            wr = 180 / Math.PI,
            xr = {
                translateX: 0,
                translateY: 0,
                rotate: 0,
                skewX: 0,
                scaleX: 1,
                scaleY: 1
            },
            kr = function(t, e, n, r, i, a) {
                var o, s, u;
                return (o = Math.sqrt(t * t + e * e)) && (t /= o, e /= o), (u = t * n + e * r) && (n -= t * u, r -= e * u), (s = Math.sqrt(n * n + r * r)) && (n /= s, r /= s, u /= s), t * r < e * n && (t = -t, e = -e, u = -u, o = -o), {
                    translateX: i,
                    translateY: a,
                    rotate: Math.atan2(e, t) * wr,
                    skewX: Math.atan(u) * wr,
                    scaleX: o,
                    scaleY: s
                }
            };

        function Er(t, e, n, r) {
            function i(t) {
                return t.length ? t.pop() + " " : ""
            }
            return function(a, o) {
                var s = [],
                    u = [];
                return a = t(a), o = t(o),
                    function(t, r, i, a, o, s) {
                        if (t !== i || r !== a) {
                            var u = o.push("translate(", null, e, null, n);
                            s.push({
                                i: u - 4,
                                x: Mn(t, i)
                            }, {
                                i: u - 2,
                                x: Mn(r, a)
                            })
                        } else(i || a) && o.push("translate(" + i + e + a + n)
                    }(a.translateX, a.translateY, o.translateX, o.translateY, s, u),
                    function(t, e, n, a) {
                        t !== e ? (t - e > 180 ? e += 360 : e - t > 180 && (t += 360), a.push({
                            i: n.push(i(n) + "rotate(", null, r) - 2,
                            x: Mn(t, e)
                        })) : e && n.push(i(n) + "rotate(" + e + r)
                    }(a.rotate, o.rotate, s, u),
                    function(t, e, n, a) {
                        t !== e ? a.push({
                            i: n.push(i(n) + "skewX(", null, r) - 2,
                            x: Mn(t, e)
                        }) : e && n.push(i(n) + "skewX(" + e + r)
                    }(a.skewX, o.skewX, s, u),
                    function(t, e, n, r, a, o) {
                        if (t !== n || e !== r) {
                            var s = a.push(i(a) + "scale(", null, ",", null, ")");
                            o.push({
                                i: s - 4,
                                x: Mn(t, n)
                            }, {
                                i: s - 2,
                                x: Mn(e, r)
                            })
                        } else 1 === n && 1 === r || a.push(i(a) + "scale(" + n + "," + r + ")")
                    }(a.scaleX, a.scaleY, o.scaleX, o.scaleY, s, u), a = o = null,
                    function(t) {
                        for (var e, n = -1, r = u.length; ++n < r;) s[(e = u[n]).i] = e.x(t);
                        return s.join("")
                    }
            }
        }
        var Ar = Er((function(t) {
                return "none" === t ? xr : (yr || (yr = document.createElement("DIV"), br = document.documentElement, vr = document.defaultView), yr.style.transform = t, t = vr.getComputedStyle(br.appendChild(yr), null).getPropertyValue("transform"), br.removeChild(yr), t = t.slice(7, -1).split(","), kr(+t[0], +t[1], +t[2], +t[3], +t[4], +t[5]))
            }), "px, ", "px)", "deg)"),
            Sr = Er((function(t) {
                return null == t ? xr : (mr || (mr = document.createElementNS("http://www.w3.org/2000/svg", "g")), mr.setAttribute("transform", t), (t = mr.transform.baseVal.consolidate()) ? (t = t.matrix, kr(t.a, t.b, t.c, t.d, t.e, t.f)) : xr)
            }), ", ", ")", ")");

        function Mr(t, e) {
            var n, r;
            return function() {
                var i = pr(this, t),
                    a = i.tween;
                if (a !== n)
                    for (var o = 0, s = (r = n = a).length; o < s; ++o)
                        if (r[o].name === e) {
                            (r = r.slice()).splice(o, 1);
                            break
                        } i.tween = r
            }
        }

        function Tr(t, e, n) {
            var r, i;
            if ("function" != typeof n) throw new Error;
            return function() {
                var a = pr(this, t),
                    o = a.tween;
                if (o !== r) {
                    i = (r = o).slice();
                    for (var s = {
                            name: e,
                            value: n
                        }, u = 0, c = i.length; u < c; ++u)
                        if (i[u].name === e) {
                            i[u] = s;
                            break
                        } u === c && i.push(s)
                }
                a.tween = i
            }
        }

        function Dr(t, e, n) {
            var r = t._id;
            return t.each((function() {
                    var t = pr(this, r);
                    (t.value || (t.value = {}))[e] = n.apply(this, arguments)
                })),
                function(t) {
                    return gr(t, r).value[e]
                }
        }
        var Cr = function(t, e) {
            var n;
            return ("number" == typeof e ? Mn : e instanceof Ke ? vn : (n = Ke(e)) ? (e = n, vn) : Ln)(t, e)
        };

        function Nr(t) {
            return function() {
                this.removeAttribute(t)
            }
        }

        function Ir(t) {
            return function() {
                this.removeAttributeNS(t.space, t.local)
            }
        }

        function Lr(t, e, n) {
            var r, i, a = n + "";
            return function() {
                var o = this.getAttribute(t);
                return o === a ? null : o === r ? i : i = e(r = o, n)
            }
        }

        function Br(t, e, n) {
            var r, i, a = n + "";
            return function() {
                var o = this.getAttributeNS(t.space, t.local);
                return o === a ? null : o === r ? i : i = e(r = o, n)
            }
        }

        function Or(t, e, n) {
            var r, i, a;
            return function() {
                var o, s, u = n(this);
                if (null != u) return (o = this.getAttribute(t)) === (s = u + "") ? null : o === r && s === i ? a : (i = s, a = e(r = o, u));
                this.removeAttribute(t)
            }
        }

        function Rr(t, e, n) {
            var r, i, a;
            return function() {
                var o, s, u = n(this);
                if (null != u) return (o = this.getAttributeNS(t.space, t.local)) === (s = u + "") ? null : o === r && s === i ? a : (i = s, a = e(r = o, u));
                this.removeAttributeNS(t.space, t.local)
            }
        }

        function Pr(t, e) {
            var n, r;

            function i() {
                var i = e.apply(this, arguments);
                return i !== r && (n = (r = i) && function(t, e) {
                    return function(n) {
                        this.setAttributeNS(t.space, t.local, e.call(this, n))
                    }
                }(t, i)), n
            }
            return i._value = e, i
        }

        function Fr(t, e) {
            var n, r;

            function i() {
                var i = e.apply(this, arguments);
                return i !== r && (n = (r = i) && function(t, e) {
                    return function(n) {
                        this.setAttribute(t, e.call(this, n))
                    }
                }(t, i)), n
            }
            return i._value = e, i
        }

        function qr(t, e) {
            return function() {
                dr(this, t).delay = +e.apply(this, arguments)
            }
        }

        function jr(t, e) {
            return e = +e,
                function() {
                    dr(this, t).delay = e
                }
        }

        function Ur(t, e) {
            return function() {
                pr(this, t).duration = +e.apply(this, arguments)
            }
        }

        function zr(t, e) {
            return e = +e,
                function() {
                    pr(this, t).duration = e
                }
        }

        function Yr(t, e) {
            if ("function" != typeof e) throw new Error;
            return function() {
                pr(this, t).ease = e
            }
        }

        function Vr(t, e, n) {
            var r, i, a = function(t) {
                return (t + "").trim().split(/^|\s+/).every((function(t) {
                    var e = t.indexOf(".");
                    return e >= 0 && (t = t.slice(0, e)), !t || "start" === t
                }))
            }(e) ? dr : pr;
            return function() {
                var o = a(this, t),
                    s = o.on;
                s !== r && (i = (r = s).copy()).on(e, n), o.on = i
            }
        }
        var Hr = Me.prototype.constructor;

        function Gr(t) {
            return function() {
                this.style.removeProperty(t)
            }
        }

        function $r(t, e, n) {
            var r, i;

            function a() {
                var a = e.apply(this, arguments);
                return a !== i && (r = (i = a) && function(t, e, n) {
                    return function(r) {
                        this.style.setProperty(t, e.call(this, r), n)
                    }
                }(t, a, n)), r
            }
            return a._value = e, a
        }

        function Wr(t) {
            var e, n;

            function r() {
                var r = t.apply(this, arguments);
                return r !== n && (e = (n = r) && function(t) {
                    return function(e) {
                        this.textContent = t.call(this, e)
                    }
                }(r)), e
            }
            return r._value = t, r
        }
        var Kr = 0;

        function Xr(t, e, n, r) {
            this._groups = t, this._parents = e, this._name = n, this._id = r
        }

        function Zr(t) {
            return Me().transition(t)
        }

        function Jr() {
            return ++Kr
        }
        var Qr = Me.prototype;

        function ti(t) {
            return t * t * t
        }

        function ei(t) {
            return --t * t * t + 1
        }

        function ni(t) {
            return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2
        }
        Xr.prototype = Zr.prototype = {
            constructor: Xr,
            select: function(t) {
                var e = this._name,
                    n = this._id;
                "function" != typeof t && (t = bt(t));
                for (var r = this._groups, i = r.length, a = new Array(i), o = 0; o < i; ++o)
                    for (var s, u, c = r[o], f = c.length, l = a[o] = new Array(f), h = 0; h < f; ++h)(s = c[h]) && (u = t.call(s, s.__data__, h, c)) && ("__data__" in s && (u.__data__ = s.__data__), l[h] = u, hr(l[h], e, n, h, l, gr(s, n)));
                return new Xr(a, this._parents, e, n)
            },
            selectAll: function(t) {
                var e = this._name,
                    n = this._id;
                "function" != typeof t && (t = mt(t));
                for (var r = this._groups, i = r.length, a = [], o = [], s = 0; s < i; ++s)
                    for (var u, c = r[s], f = c.length, l = 0; l < f; ++l)
                        if (u = c[l]) {
                            for (var h, d = t.call(u, u.__data__, l, c), p = gr(u, n), g = 0, y = d.length; g < y; ++g)(h = d[g]) && hr(h, e, n, g, d, p);
                            a.push(d), o.push(u)
                        } return new Xr(a, o, e, n)
            },
            filter: function(t) {
                "function" != typeof t && (t = _t(t));
                for (var e = this._groups, n = e.length, r = new Array(n), i = 0; i < n; ++i)
                    for (var a, o = e[i], s = o.length, u = r[i] = [], c = 0; c < s; ++c)(a = o[c]) && t.call(a, a.__data__, c, o) && u.push(a);
                return new Xr(r, this._parents, this._name, this._id)
            },
            merge: function(t) {
                if (t._id !== this._id) throw new Error;
                for (var e = this._groups, n = t._groups, r = e.length, i = n.length, a = Math.min(r, i), o = new Array(r), s = 0; s < a; ++s)
                    for (var u, c = e[s], f = n[s], l = c.length, h = o[s] = new Array(l), d = 0; d < l; ++d)(u = c[d] || f[d]) && (h[d] = u);
                for (; s < r; ++s) o[s] = e[s];
                return new Xr(o, this._parents, this._name, this._id)
            },
            selection: function() {
                return new Hr(this._groups, this._parents)
            },
            transition: function() {
                for (var t = this._name, e = this._id, n = Jr(), r = this._groups, i = r.length, a = 0; a < i; ++a)
                    for (var o, s = r[a], u = s.length, c = 0; c < u; ++c)
                        if (o = s[c]) {
                            var f = gr(o, e);
                            hr(o, t, n, c, s, {
                                time: f.time + f.delay + f.duration,
                                delay: 0,
                                duration: f.duration,
                                ease: f.ease
                            })
                        } return new Xr(r, this._parents, t, n)
            },
            call: Qr.call,
            nodes: Qr.nodes,
            node: Qr.node,
            size: Qr.size,
            empty: Qr.empty,
            each: Qr.each,
            on: function(t, e) {
                var n = this._id;
                return arguments.length < 2 ? gr(this.node(), n).on.on(t) : this.each(Vr(n, t, e))
            },
            attr: function(t, e) {
                var n = Dt(t),
                    r = "transform" === n ? Sr : Cr;
                return this.attrTween(t, "function" == typeof e ? (n.local ? Rr : Or)(n, r, Dr(this, "attr." + t, e)) : null == e ? (n.local ? Ir : Nr)(n) : (n.local ? Br : Lr)(n, r, e))
            },
            attrTween: function(t, e) {
                var n = "attr." + t;
                if (arguments.length < 2) return (n = this.tween(n)) && n._value;
                if (null == e) return this.tween(n, null);
                if ("function" != typeof e) throw new Error;
                var r = Dt(t);
                return this.tween(n, (r.local ? Pr : Fr)(r, e))
            },
            style: function(t, e, n) {
                var r = "transform" == (t += "") ? Ar : Cr;
                return null == e ? this.styleTween(t, function(t, e) {
                    var n, r, i;
                    return function() {
                        var a = jt(this, t),
                            o = (this.style.removeProperty(t), jt(this, t));
                        return a === o ? null : a === n && o === r ? i : i = e(n = a, r = o)
                    }
                }(t, r)).on("end.style." + t, Gr(t)) : "function" == typeof e ? this.styleTween(t, function(t, e, n) {
                    var r, i, a;
                    return function() {
                        var o = jt(this, t),
                            s = n(this),
                            u = s + "";
                        return null == s && (this.style.removeProperty(t), u = s = jt(this, t)), o === u ? null : o === r && u === i ? a : (i = u, a = e(r = o, s))
                    }
                }(t, r, Dr(this, "style." + t, e))).each(function(t, e) {
                    var n, r, i, a, o = "style." + e,
                        s = "end." + o;
                    return function() {
                        var u = pr(this, t),
                            c = u.on,
                            f = null == u.value[o] ? a || (a = Gr(e)) : void 0;
                        c === n && i === f || (r = (n = c).copy()).on(s, i = f), u.on = r
                    }
                }(this._id, t)) : this.styleTween(t, function(t, e, n) {
                    var r, i, a = n + "";
                    return function() {
                        var o = jt(this, t);
                        return o === a ? null : o === r ? i : i = e(r = o, n)
                    }
                }(t, r, e), n).on("end.style." + t, null)
            },
            styleTween: function(t, e, n) {
                var r = "style." + (t += "");
                if (arguments.length < 2) return (r = this.tween(r)) && r._value;
                if (null == e) return this.tween(r, null);
                if ("function" != typeof e) throw new Error;
                return this.tween(r, $r(t, e, null == n ? "" : n))
            },
            text: function(t) {
                return this.tween("text", "function" == typeof t ? function(t) {
                    return function() {
                        var e = t(this);
                        this.textContent = null == e ? "" : e
                    }
                }(Dr(this, "text", t)) : function(t) {
                    return function() {
                        this.textContent = t
                    }
                }(null == t ? "" : t + ""))
            },
            textTween: function(t) {
                var e = "text";
                if (arguments.length < 1) return (e = this.tween(e)) && e._value;
                if (null == t) return this.tween(e, null);
                if ("function" != typeof t) throw new Error;
                return this.tween(e, Wr(t))
            },
            remove: function() {
                return this.on("end.remove", (t = this._id, function() {
                    var e = this.parentNode;
                    for (var n in this.__transition)
                        if (+n !== t) return;
                    e && e.removeChild(this)
                }));
                var t
            },
            tween: function(t, e) {
                var n = this._id;
                if (t += "", arguments.length < 2) {
                    for (var r, i = gr(this.node(), n).tween, a = 0, o = i.length; a < o; ++a)
                        if ((r = i[a]).name === t) return r.value;
                    return null
                }
                return this.each((null == e ? Mr : Tr)(n, t, e))
            },
            delay: function(t) {
                var e = this._id;
                return arguments.length ? this.each(("function" == typeof t ? qr : jr)(e, t)) : gr(this.node(), e).delay
            },
            duration: function(t) {
                var e = this._id;
                return arguments.length ? this.each(("function" == typeof t ? Ur : zr)(e, t)) : gr(this.node(), e).duration
            },
            ease: function(t) {
                var e = this._id;
                return arguments.length ? this.each(Yr(e, t)) : gr(this.node(), e).ease
            },
            end: function() {
                var t, e, n = this,
                    r = n._id,
                    i = n.size();
                return new Promise((function(a, o) {
                    var s = {
                            value: o
                        },
                        u = {
                            value: function() {
                                0 == --i && a()
                            }
                        };
                    n.each((function() {
                        var n = pr(this, r),
                            i = n.on;
                        i !== t && ((e = (t = i).copy())._.cancel.push(s), e._.interrupt.push(s), e._.end.push(u)), n.on = e
                    }))
                }))
            }
        };
        var ri = {
            time: null,
            delay: 0,
            duration: 250,
            ease: ni
        };

        function ii(t, e) {
            for (var n; !(n = t.__transition) || !(n = n[e]);)
                if (!(t = t.parentNode)) return ri.time = Wn(), ri;
            return n
        }
        Me.prototype.interrupt = function(t) {
            return this.each((function() {
                _r(this, t)
            }))
        }, Me.prototype.transition = function(t) {
            var e, n;
            t instanceof Xr ? (e = t._id, t = t._name) : (e = Jr(), (n = ri).time = Wn(), t = null == t ? null : t + "");
            for (var r = this._groups, i = r.length, a = 0; a < i; ++a)
                for (var o, s = r[a], u = s.length, c = 0; c < u; ++c)(o = s[c]) && hr(o, t, e, c, s, n || ii(o, e));
            return new Xr(r, this._parents, t, e)
        };
        var ai = [null],
            oi = function(t, e) {
                var n, r, i = t.__transition;
                if (i)
                    for (r in e = null == e ? null : e + "", i)
                        if ((n = i[r]).state > or && n.name === e) return new Xr([
                            [t]
                        ], ai, e, +r);
                return null
            },
            si = function(t) {
                return function() {
                    return t
                }
            },
            ui = function(t, e, n) {
                this.target = t, this.type = e, this.selection = n
            };

        function ci() {
            pe.stopImmediatePropagation()
        }
        var fi = function() {
                pe.preventDefault(), pe.stopImmediatePropagation()
            },
            li = {
                name: "drag"
            },
            hi = {
                name: "space"
            },
            di = {
                name: "handle"
            },
            pi = {
                name: "center"
            };

        function gi(t) {
            return [+t[0], +t[1]]
        }

        function yi(t) {
            return [gi(t[0]), gi(t[1])]
        }
        var bi = {
                name: "x",
                handles: ["w", "e"].map(Ai),
                input: function(t, e) {
                    return null == t ? null : [
                        [+t[0], e[0][1]],
                        [+t[1], e[1][1]]
                    ]
                },
                output: function(t) {
                    return t && [t[0][0], t[1][0]]
                }
            },
            vi = {
                name: "y",
                handles: ["n", "s"].map(Ai),
                input: function(t, e) {
                    return null == t ? null : [
                        [e[0][0], +t[0]],
                        [e[1][0], +t[1]]
                    ]
                },
                output: function(t) {
                    return t && [t[0][1], t[1][1]]
                }
            },
            mi = {
                name: "xy",
                handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(Ai),
                input: function(t) {
                    return null == t ? null : yi(t)
                },
                output: function(t) {
                    return t
                }
            },
            _i = {
                overlay: "crosshair",
                selection: "move",
                n: "ns-resize",
                e: "ew-resize",
                s: "ns-resize",
                w: "ew-resize",
                nw: "nwse-resize",
                ne: "nesw-resize",
                se: "nwse-resize",
                sw: "nesw-resize"
            },
            wi = {
                e: "w",
                w: "e",
                nw: "ne",
                ne: "nw",
                se: "sw",
                sw: "se"
            },
            xi = {
                n: "s",
                s: "n",
                nw: "sw",
                ne: "se",
                se: "ne",
                sw: "nw"
            },
            ki = {
                overlay: 1,
                selection: 1,
                n: null,
                e: 1,
                s: null,
                w: -1,
                nw: -1,
                ne: 1,
                se: 1,
                sw: -1
            },
            Ei = {
                overlay: 1,
                selection: 1,
                n: -1,
                e: null,
                s: 1,
                w: null,
                nw: -1,
                ne: -1,
                se: 1,
                sw: 1
            };

        function Ai(t) {
            return {
                type: t
            }
        }

        function Si() {
            return !pe.ctrlKey && !pe.button
        }

        function Mi() {
            var t = this.ownerSVGElement || this;
            return t.hasAttribute("viewBox") ? [
                [(t = t.viewBox.baseVal).x, t.y],
                [t.x + t.width, t.y + t.height]
            ] : [
                [0, 0],
                [t.width.baseVal.value, t.height.baseVal.value]
            ]
        }

        function Ti() {
            return navigator.maxTouchPoints || "ontouchstart" in this
        }

        function Di(t) {
            for (; !t.__brush;)
                if (!(t = t.parentNode)) return;
            return t.__brush
        }

        function Ci(t) {
            var e = t.__brush;
            return e ? e.dim.output(e.selection) : null
        }

        function Ni() {
            return Bi(bi)
        }

        function Ii() {
            return Bi(vi)
        }
        var Li = function() {
            return Bi(mi)
        };

        function Bi(t) {
            var e, n = Mi,
                r = Si,
                i = Ti,
                a = !0,
                o = gt("start", "brush", "end"),
                s = 6;

            function u(e) {
                var n = e.property("__brush", g).selectAll(".overlay").data([Ai("overlay")]);
                n.enter().append("rect").attr("class", "overlay").attr("pointer-events", "all").attr("cursor", _i.overlay).merge(n).each((function() {
                    var t = Di(this).extent;
                    Te(this).attr("x", t[0][0]).attr("y", t[0][1]).attr("width", t[1][0] - t[0][0]).attr("height", t[1][1] - t[0][1])
                })), e.selectAll(".selection").data([Ai("selection")]).enter().append("rect").attr("class", "selection").attr("cursor", _i.selection).attr("fill", "#777").attr("fill-opacity", .3).attr("stroke", "#fff").attr("shape-rendering", "crispEdges");
                var r = e.selectAll(".handle").data(t.handles, (function(t) {
                    return t.type
                }));
                r.exit().remove(), r.enter().append("rect").attr("class", (function(t) {
                    return "handle handle--" + t.type
                })).attr("cursor", (function(t) {
                    return _i[t.type]
                })), e.each(c).attr("fill", "none").attr("pointer-events", "all").on("mousedown.brush", h).filter(i).on("touchstart.brush", h).on("touchmove.brush", d).on("touchend.brush touchcancel.brush", p).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
            }

            function c() {
                var t = Te(this),
                    e = Di(this).selection;
                e ? (t.selectAll(".selection").style("display", null).attr("x", e[0][0]).attr("y", e[0][1]).attr("width", e[1][0] - e[0][0]).attr("height", e[1][1] - e[0][1]), t.selectAll(".handle").style("display", null).attr("x", (function(t) {
                    return "e" === t.type[t.type.length - 1] ? e[1][0] - s / 2 : e[0][0] - s / 2
                })).attr("y", (function(t) {
                    return "s" === t.type[0] ? e[1][1] - s / 2 : e[0][1] - s / 2
                })).attr("width", (function(t) {
                    return "n" === t.type || "s" === t.type ? e[1][0] - e[0][0] + s : s
                })).attr("height", (function(t) {
                    return "e" === t.type || "w" === t.type ? e[1][1] - e[0][1] + s : s
                }))) : t.selectAll(".selection,.handle").style("display", "none").attr("x", null).attr("y", null).attr("width", null).attr("height", null)
            }

            function f(t, e, n) {
                return !n && t.__brush.emitter || new l(t, e)
            }

            function l(t, e) {
                this.that = t, this.args = e, this.state = t.__brush, this.active = 0
            }

            function h() {
                if ((!e || pe.touches) && r.apply(this, arguments)) {
                    var n, i, o, s, u, l, h, d, p, g, y, b, v = this,
                        m = pe.target.__data__.type,
                        _ = "selection" === (a && pe.metaKey ? m = "overlay" : m) ? li : a && pe.altKey ? pi : di,
                        w = t === vi ? null : ki[m],
                        x = t === bi ? null : Ei[m],
                        k = Di(v),
                        E = k.extent,
                        A = k.selection,
                        S = E[0][0],
                        M = E[0][1],
                        T = E[1][0],
                        D = E[1][1],
                        C = 0,
                        N = 0,
                        I = w && x && a && pe.shiftKey,
                        L = pe.touches ? (b = pe.changedTouches[0].identifier, function(t) {
                            return Pn(t, pe.touches, b)
                        }) : Fn,
                        B = L(v),
                        O = B,
                        R = f(v, arguments, !0).beforestart();
                    "overlay" === m ? (A && (p = !0), k.selection = A = [
                        [n = t === vi ? S : B[0], o = t === bi ? M : B[1]],
                        [u = t === vi ? T : n, h = t === bi ? D : o]
                    ]) : (n = A[0][0], o = A[0][1], u = A[1][0], h = A[1][1]), i = n, s = o, l = u, d = h;
                    var P = Te(v).attr("pointer-events", "none"),
                        F = P.selectAll(".overlay").attr("cursor", _i[m]);
                    if (pe.touches) R.moved = j, R.ended = z;
                    else {
                        var q = Te(pe.view).on("mousemove.brush", j, !0).on("mouseup.brush", z, !0);
                        a && q.on("keydown.brush", (function() {
                            switch (pe.keyCode) {
                                case 16:
                                    I = w && x;
                                    break;
                                case 18:
                                    _ === di && (w && (u = l - C * w, n = i + C * w), x && (h = d - N * x, o = s + N * x), _ = pi, U());
                                    break;
                                case 32:
                                    _ !== di && _ !== pi || (w < 0 ? u = l - C : w > 0 && (n = i - C), x < 0 ? h = d - N : x > 0 && (o = s - N), _ = hi, F.attr("cursor", _i.selection), U());
                                    break;
                                default:
                                    return
                            }
                            fi()
                        }), !0).on("keyup.brush", (function() {
                            switch (pe.keyCode) {
                                case 16:
                                    I && (g = y = I = !1, U());
                                    break;
                                case 18:
                                    _ === pi && (w < 0 ? u = l : w > 0 && (n = i), x < 0 ? h = d : x > 0 && (o = s), _ = di, U());
                                    break;
                                case 32:
                                    _ === hi && (pe.altKey ? (w && (u = l - C * w, n = i + C * w), x && (h = d - N * x, o = s + N * x), _ = pi) : (w < 0 ? u = l : w > 0 && (n = i), x < 0 ? h = d : x > 0 && (o = s), _ = di), F.attr("cursor", _i[m]), U());
                                    break;
                                default:
                                    return
                            }
                            fi()
                        }), !0), Ne(pe.view)
                    }
                    ci(), _r(v), c.call(v), R.start()
                }

                function j() {
                    var t = L(v);
                    !I || g || y || (Math.abs(t[0] - O[0]) > Math.abs(t[1] - O[1]) ? y = !0 : g = !0), O = t, p = !0, fi(), U()
                }

                function U() {
                    var t;
                    switch (C = O[0] - B[0], N = O[1] - B[1], _) {
                        case hi:
                        case li:
                            w && (C = Math.max(S - n, Math.min(T - u, C)), i = n + C, l = u + C), x && (N = Math.max(M - o, Math.min(D - h, N)), s = o + N, d = h + N);
                            break;
                        case di:
                            w < 0 ? (C = Math.max(S - n, Math.min(T - n, C)), i = n + C, l = u) : w > 0 && (C = Math.max(S - u, Math.min(T - u, C)), i = n, l = u + C), x < 0 ? (N = Math.max(M - o, Math.min(D - o, N)), s = o + N, d = h) : x > 0 && (N = Math.max(M - h, Math.min(D - h, N)), s = o, d = h + N);
                            break;
                        case pi:
                            w && (i = Math.max(S, Math.min(T, n - C * w)), l = Math.max(S, Math.min(T, u + C * w))), x && (s = Math.max(M, Math.min(D, o - N * x)), d = Math.max(M, Math.min(D, h + N * x)))
                    }
                    l < i && (w *= -1, t = n, n = u, u = t, t = i, i = l, l = t, m in wi && F.attr("cursor", _i[m = wi[m]])), d < s && (x *= -1, t = o, o = h, h = t, t = s, s = d, d = t, m in xi && F.attr("cursor", _i[m = xi[m]])), k.selection && (A = k.selection), g && (i = A[0][0], l = A[1][0]), y && (s = A[0][1], d = A[1][1]), A[0][0] === i && A[0][1] === s && A[1][0] === l && A[1][1] === d || (k.selection = [
                        [i, s],
                        [l, d]
                    ], c.call(v), R.brush())
                }

                function z() {
                    if (ci(), pe.touches) {
                        if (pe.touches.length) return;
                        e && clearTimeout(e), e = setTimeout((function() {
                            e = null
                        }), 500)
                    } else Ie(pe.view, p), q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);
                    P.attr("pointer-events", "all"), F.attr("cursor", _i.overlay), k.selection && (A = k.selection),
                        function(t) {
                            return t[0][0] === t[1][0] || t[0][1] === t[1][1]
                        }(A) && (k.selection = null, c.call(v)), R.end()
                }
            }

            function d() {
                f(this, arguments).moved()
            }

            function p() {
                f(this, arguments).ended()
            }

            function g() {
                var e = this.__brush || {
                    selection: null
                };
                return e.extent = yi(n.apply(this, arguments)), e.dim = t, e
            }
            return u.move = function(e, n) {
                e.selection ? e.on("start.brush", (function() {
                    f(this, arguments).beforestart().start()
                })).on("interrupt.brush end.brush", (function() {
                    f(this, arguments).end()
                })).tween("brush", (function() {
                    var e = this,
                        r = e.__brush,
                        i = f(e, arguments),
                        a = r.selection,
                        o = t.input("function" == typeof n ? n.apply(this, arguments) : n, r.extent),
                        s = Bn(a, o);

                    function u(t) {
                        r.selection = 1 === t && null === o ? null : s(t), c.call(e), i.brush()
                    }
                    return null !== a && null !== o ? u : u(1)
                })) : e.each((function() {
                    var e = this,
                        r = arguments,
                        i = e.__brush,
                        a = t.input("function" == typeof n ? n.apply(e, r) : n, i.extent),
                        o = f(e, r).beforestart();
                    _r(e), i.selection = null === a ? null : a, c.call(e), o.start().brush().end()
                }))
            }, u.clear = function(t) {
                u.move(t, null)
            }, l.prototype = {
                beforestart: function() {
                    return 1 == ++this.active && (this.state.emitter = this, this.starting = !0), this
                },
                start: function() {
                    return this.starting ? (this.starting = !1, this.emit("start")) : this.emit("brush"), this
                },
                brush: function() {
                    return this.emit("brush"), this
                },
                end: function() {
                    return 0 == --this.active && (delete this.state.emitter, this.emit("end")), this
                },
                emit: function(e) {
                    _e(new ui(u, e, t.output(this.state.selection)), o.apply, o, [e, this.that, this.args])
                }
            }, u.extent = function(t) {
                return arguments.length ? (n = "function" == typeof t ? t : si(yi(t)), u) : n
            }, u.filter = function(t) {
                return arguments.length ? (r = "function" == typeof t ? t : si(!!t), u) : r
            }, u.touchable = function(t) {
                return arguments.length ? (i = "function" == typeof t ? t : si(!!t), u) : i
            }, u.handleSize = function(t) {
                return arguments.length ? (s = +t, u) : s
            }, u.keyModifiers = function(t) {
                return arguments.length ? (a = !!t, u) : a
            }, u.on = function() {
                var t = o.on.apply(o, arguments);
                return t === o ? u : t
            }, u
        }
        var Oi = Math.cos,
            Ri = Math.sin,
            Pi = Math.PI,
            Fi = Pi / 2,
            qi = 2 * Pi,
            ji = Math.max;

        function Ui(t) {
            return function(e, n) {
                return t(e.source.value + e.target.value, n.source.value + n.target.value)
            }
        }
        var zi = function() {
                var t = 0,
                    e = null,
                    n = null,
                    r = null;

                function i(i) {
                    var a, o, s, u, c, f, l = i.length,
                        h = [],
                        d = x(l),
                        p = [],
                        g = [],
                        y = g.groups = new Array(l),
                        b = new Array(l * l);
                    for (a = 0, c = -1; ++c < l;) {
                        for (o = 0, f = -1; ++f < l;) o += i[c][f];
                        h.push(o), p.push(x(l)), a += o
                    }
                    for (e && d.sort((function(t, n) {
                            return e(h[t], h[n])
                        })), n && p.forEach((function(t, e) {
                            t.sort((function(t, r) {
                                return n(i[e][t], i[e][r])
                            }))
                        })), u = (a = ji(0, qi - t * l) / a) ? t : qi / l, o = 0, c = -1; ++c < l;) {
                        for (s = o, f = -1; ++f < l;) {
                            var v = d[c],
                                m = p[v][f],
                                _ = i[v][m],
                                w = o,
                                k = o += _ * a;
                            b[m * l + v] = {
                                index: v,
                                subindex: m,
                                startAngle: w,
                                endAngle: k,
                                value: _
                            }
                        }
                        y[v] = {
                            index: v,
                            startAngle: s,
                            endAngle: o,
                            value: h[v]
                        }, o += u
                    }
                    for (c = -1; ++c < l;)
                        for (f = c - 1; ++f < l;) {
                            var E = b[f * l + c],
                                A = b[c * l + f];
                            (E.value || A.value) && g.push(E.value < A.value ? {
                                source: A,
                                target: E
                            } : {
                                source: E,
                                target: A
                            })
                        }
                    return r ? g.sort(r) : g
                }
                return i.padAngle = function(e) {
                    return arguments.length ? (t = ji(0, e), i) : t
                }, i.sortGroups = function(t) {
                    return arguments.length ? (e = t, i) : e
                }, i.sortSubgroups = function(t) {
                    return arguments.length ? (n = t, i) : n
                }, i.sortChords = function(t) {
                    return arguments.length ? (null == t ? r = null : (r = Ui(t))._ = t, i) : r && r._
                }, i
            },
            Yi = Array.prototype.slice,
            Vi = function(t) {
                return function() {
                    return t
                }
            },
            Hi = Math.PI,
            Gi = 2 * Hi,
            $i = Gi - 1e-6;

        function Wi() {
            this._x0 = this._y0 = this._x1 = this._y1 = null, this._ = ""
        }

        function Ki() {
            return new Wi
        }
        Wi.prototype = Ki.prototype = {
            constructor: Wi,
            moveTo: function(t, e) {
                this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +e)
            },
            closePath: function() {
                null !== this._x1 && (this._x1 = this._x0, this._y1 = this._y0, this._ += "Z")
            },
            lineTo: function(t, e) {
                this._ += "L" + (this._x1 = +t) + "," + (this._y1 = +e)
            },
            quadraticCurveTo: function(t, e, n, r) {
                this._ += "Q" + +t + "," + +e + "," + (this._x1 = +n) + "," + (this._y1 = +r)
            },
            bezierCurveTo: function(t, e, n, r, i, a) {
                this._ += "C" + +t + "," + +e + "," + +n + "," + +r + "," + (this._x1 = +i) + "," + (this._y1 = +a)
            },
            arcTo: function(t, e, n, r, i) {
                t = +t, e = +e, n = +n, r = +r, i = +i;
                var a = this._x1,
                    o = this._y1,
                    s = n - t,
                    u = r - e,
                    c = a - t,
                    f = o - e,
                    l = c * c + f * f;
                if (i < 0) throw new Error("negative radius: " + i);
                if (null === this._x1) this._ += "M" + (this._x1 = t) + "," + (this._y1 = e);
                else if (l > 1e-6)
                    if (Math.abs(f * s - u * c) > 1e-6 && i) {
                        var h = n - a,
                            d = r - o,
                            p = s * s + u * u,
                            g = h * h + d * d,
                            y = Math.sqrt(p),
                            b = Math.sqrt(l),
                            v = i * Math.tan((Hi - Math.acos((p + l - g) / (2 * y * b))) / 2),
                            m = v / b,
                            _ = v / y;
                        Math.abs(m - 1) > 1e-6 && (this._ += "L" + (t + m * c) + "," + (e + m * f)), this._ += "A" + i + "," + i + ",0,0," + +(f * h > c * d) + "," + (this._x1 = t + _ * s) + "," + (this._y1 = e + _ * u)
                    } else this._ += "L" + (this._x1 = t) + "," + (this._y1 = e);
                else;
            },
            arc: function(t, e, n, r, i, a) {
                t = +t, e = +e, a = !!a;
                var o = (n = +n) * Math.cos(r),
                    s = n * Math.sin(r),
                    u = t + o,
                    c = e + s,
                    f = 1 ^ a,
                    l = a ? r - i : i - r;
                if (n < 0) throw new Error("negative radius: " + n);
                null === this._x1 ? this._ += "M" + u + "," + c : (Math.abs(this._x1 - u) > 1e-6 || Math.abs(this._y1 - c) > 1e-6) && (this._ += "L" + u + "," + c), n && (l < 0 && (l = l % Gi + Gi), l > $i ? this._ += "A" + n + "," + n + ",0,1," + f + "," + (t - o) + "," + (e - s) + "A" + n + "," + n + ",0,1," + f + "," + (this._x1 = u) + "," + (this._y1 = c) : l > 1e-6 && (this._ += "A" + n + "," + n + ",0," + +(l >= Hi) + "," + f + "," + (this._x1 = t + n * Math.cos(i)) + "," + (this._y1 = e + n * Math.sin(i))))
            },
            rect: function(t, e, n, r) {
                this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +e) + "h" + +n + "v" + +r + "h" + -n + "Z"
            },
            toString: function() {
                return this._
            }
        };
        var Xi = Ki;

        function Zi(t) {
            return t.source
        }

        function Ji(t) {
            return t.target
        }

        function Qi(t) {
            return t.radius
        }

        function ta(t) {
            return t.startAngle
        }

        function ea(t) {
            return t.endAngle
        }
        var na = function() {
            var t = Zi,
                e = Ji,
                n = Qi,
                r = ta,
                i = ea,
                a = null;

            function o() {
                var o, s = Yi.call(arguments),
                    u = t.apply(this, s),
                    c = e.apply(this, s),
                    f = +n.apply(this, (s[0] = u, s)),
                    l = r.apply(this, s) - Fi,
                    h = i.apply(this, s) - Fi,
                    d = f * Oi(l),
                    p = f * Ri(l),
                    g = +n.apply(this, (s[0] = c, s)),
                    y = r.apply(this, s) - Fi,
                    b = i.apply(this, s) - Fi;
                if (a || (a = o = Xi()), a.moveTo(d, p), a.arc(0, 0, f, l, h), l === y && h === b || (a.quadraticCurveTo(0, 0, g * Oi(y), g * Ri(y)), a.arc(0, 0, g, y, b)), a.quadraticCurveTo(0, 0, d, p), a.closePath(), o) return a = null, o + "" || null
            }
            return o.radius = function(t) {
                return arguments.length ? (n = "function" == typeof t ? t : Vi(+t), o) : n
            }, o.startAngle = function(t) {
                return arguments.length ? (r = "function" == typeof t ? t : Vi(+t), o) : r
            }, o.endAngle = function(t) {
                return arguments.length ? (i = "function" == typeof t ? t : Vi(+t), o) : i
            }, o.source = function(e) {
                return arguments.length ? (t = e, o) : t
            }, o.target = function(t) {
                return arguments.length ? (e = t, o) : e
            }, o.context = function(t) {
                return arguments.length ? (a = null == t ? null : t, o) : a
            }, o
        };

        function ra() {}

        function ia(t, e) {
            var n = new ra;
            if (t instanceof ra) t.each((function(t, e) {
                n.set(e, t)
            }));
            else if (Array.isArray(t)) {
                var r, i = -1,
                    a = t.length;
                if (null == e)
                    for (; ++i < a;) n.set(i, t[i]);
                else
                    for (; ++i < a;) n.set(e(r = t[i], i, t), r)
            } else if (t)
                for (var o in t) n.set(o, t[o]);
            return n
        }
        ra.prototype = ia.prototype = {
            constructor: ra,
            has: function(t) {
                return "$" + t in this
            },
            get: function(t) {
                return this["$" + t]
            },
            set: function(t, e) {
                return this["$" + t] = e, this
            },
            remove: function(t) {
                var e = "$" + t;
                return e in this && delete this[e]
            },
            clear: function() {
                for (var t in this) "$" === t[0] && delete this[t]
            },
            keys: function() {
                var t = [];
                for (var e in this) "$" === e[0] && t.push(e.slice(1));
                return t
            },
            values: function() {
                var t = [];
                for (var e in this) "$" === e[0] && t.push(this[e]);
                return t
            },
            entries: function() {
                var t = [];
                for (var e in this) "$" === e[0] && t.push({
                    key: e.slice(1),
                    value: this[e]
                });
                return t
            },
            size: function() {
                var t = 0;
                for (var e in this) "$" === e[0] && ++t;
                return t
            },
            empty: function() {
                for (var t in this)
                    if ("$" === t[0]) return !1;
                return !0
            },
            each: function(t) {
                for (var e in this) "$" === e[0] && t(this[e], e.slice(1), this)
            }
        };
        var aa = ia,
            oa = function() {
                var t, e, n, r = [],
                    i = [];

                function a(n, i, o, s) {
                    if (i >= r.length) return null != t && n.sort(t), null != e ? e(n) : n;
                    for (var u, c, f, l = -1, h = n.length, d = r[i++], p = aa(), g = o(); ++l < h;)(f = p.get(u = d(c = n[l]) + "")) ? f.push(c) : p.set(u, [c]);
                    return p.each((function(t, e) {
                        s(g, e, a(t, i, o, s))
                    })), g
                }
                return n = {
                    object: function(t) {
                        return a(t, 0, sa, ua)
                    },
                    map: function(t) {
                        return a(t, 0, ca, fa)
                    },
                    entries: function(t) {
                        return function t(n, a) {
                            if (++a > r.length) return n;
                            var o, s = i[a - 1];
                            return null != e && a >= r.length ? o = n.entries() : (o = [], n.each((function(e, n) {
                                o.push({
                                    key: n,
                                    values: t(e, a)
                                })
                            }))), null != s ? o.sort((function(t, e) {
                                return s(t.key, e.key)
                            })) : o
                        }(a(t, 0, ca, fa), 0)
                    },
                    key: function(t) {
                        return r.push(t), n
                    },
                    sortKeys: function(t) {
                        return i[r.length - 1] = t, n
                    },
                    sortValues: function(e) {
                        return t = e, n
                    },
                    rollup: function(t) {
                        return e = t, n
                    }
                }
            };

        function sa() {
            return {}
        }

        function ua(t, e, n) {
            t[e] = n
        }

        function ca() {
            return aa()
        }

        function fa(t, e, n) {
            t.set(e, n)
        }

        function la() {}
        var ha = aa.prototype;

        function da(t, e) {
            var n = new la;
            if (t instanceof la) t.each((function(t) {
                n.add(t)
            }));
            else if (t) {
                var r = -1,
                    i = t.length;
                if (null == e)
                    for (; ++r < i;) n.add(t[r]);
                else
                    for (; ++r < i;) n.add(e(t[r], r, t))
            }
            return n
        }
        la.prototype = da.prototype = {
            constructor: la,
            has: ha.has,
            add: function(t) {
                return this["$" + (t += "")] = t, this
            },
            remove: ha.remove,
            clear: ha.clear,
            values: ha.keys,
            size: ha.size,
            empty: ha.empty,
            each: ha.each
        };
        var pa = da,
            ga = function(t) {
                var e = [];
                for (var n in t) e.push(n);
                return e
            },
            ya = function(t) {
                var e = [];
                for (var n in t) e.push(t[n]);
                return e
            },
            ba = function(t) {
                var e = [];
                for (var n in t) e.push({
                    key: n,
                    value: t[n]
                });
                return e
            },
            va = Math.PI / 180,
            ma = 180 / Math.PI,
            _a = .96422,
            wa = 1,
            xa = .82521,
            ka = 4 / 29,
            Ea = 6 / 29,
            Aa = 3 * Ea * Ea,
            Sa = Ea * Ea * Ea;

        function Ma(t) {
            if (t instanceof Ca) return new Ca(t.l, t.a, t.b, t.opacity);
            if (t instanceof Fa) return qa(t);
            t instanceof tn || (t = Je(t));
            var e, n, r = Ba(t.r),
                i = Ba(t.g),
                a = Ba(t.b),
                o = Na((.2225045 * r + .7168786 * i + .0606169 * a) / wa);
            return r === i && i === a ? e = n = o : (e = Na((.4360747 * r + .3850649 * i + .1430804 * a) / _a), n = Na((.0139322 * r + .0971045 * i + .7141733 * a) / xa)), new Ca(116 * o - 16, 500 * (e - o), 200 * (o - n), t.opacity)
        }

        function Ta(t, e) {
            return new Ca(t, 0, 0, null == e ? 1 : e)
        }

        function Da(t, e, n, r) {
            return 1 === arguments.length ? Ma(t) : new Ca(t, e, n, null == r ? 1 : r)
        }

        function Ca(t, e, n, r) {
            this.l = +t, this.a = +e, this.b = +n, this.opacity = +r
        }

        function Na(t) {
            return t > Sa ? Math.pow(t, 1 / 3) : t / Aa + ka
        }

        function Ia(t) {
            return t > Ea ? t * t * t : Aa * (t - ka)
        }

        function La(t) {
            return 255 * (t <= .0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - .055)
        }

        function Ba(t) {
            return (t /= 255) <= .04045 ? t / 12.92 : Math.pow((t + .055) / 1.055, 2.4)
        }

        function Oa(t) {
            if (t instanceof Fa) return new Fa(t.h, t.c, t.l, t.opacity);
            if (t instanceof Ca || (t = Ma(t)), 0 === t.a && 0 === t.b) return new Fa(NaN, 0 < t.l && t.l < 100 ? 0 : NaN, t.l, t.opacity);
            var e = Math.atan2(t.b, t.a) * ma;
            return new Fa(e < 0 ? e + 360 : e, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity)
        }

        function Ra(t, e, n, r) {
            return 1 === arguments.length ? Oa(t) : new Fa(n, e, t, null == r ? 1 : r)
        }

        function Pa(t, e, n, r) {
            return 1 === arguments.length ? Oa(t) : new Fa(t, e, n, null == r ? 1 : r)
        }

        function Fa(t, e, n, r) {
            this.h = +t, this.c = +e, this.l = +n, this.opacity = +r
        }

        function qa(t) {
            if (isNaN(t.h)) return new Ca(t.l, 0, 0, t.opacity);
            var e = t.h * va;
            return new Ca(t.l, Math.cos(e) * t.c, Math.sin(e) * t.c, t.opacity)
        }
        Le(Ca, Da, Be(Oe, {
            brighter: function(t) {
                return new Ca(this.l + 18 * (null == t ? 1 : t), this.a, this.b, this.opacity)
            },
            darker: function(t) {
                return new Ca(this.l - 18 * (null == t ? 1 : t), this.a, this.b, this.opacity)
            },
            rgb: function() {
                var t = (this.l + 16) / 116,
                    e = isNaN(this.a) ? t : t + this.a / 500,
                    n = isNaN(this.b) ? t : t - this.b / 200;
                return new tn(La(3.1338561 * (e = _a * Ia(e)) - 1.6168667 * (t = wa * Ia(t)) - .4906146 * (n = xa * Ia(n))), La(-.9787684 * e + 1.9161415 * t + .033454 * n), La(.0719453 * e - .2289914 * t + 1.4052427 * n), this.opacity)
            }
        })), Le(Fa, Pa, Be(Oe, {
            brighter: function(t) {
                return new Fa(this.h, this.c, this.l + 18 * (null == t ? 1 : t), this.opacity)
            },
            darker: function(t) {
                return new Fa(this.h, this.c, this.l - 18 * (null == t ? 1 : t), this.opacity)
            },
            rgb: function() {
                return qa(this).rgb()
            }
        }));
        var ja = -.29227,
            Ua = -.90649,
            za = 1.97294,
            Ya = za * Ua,
            Va = 1.78277 * za,
            Ha = 1.78277 * ja - -.14861 * Ua;

        function Ga(t, e, n, r) {
            return 1 === arguments.length ? function(t) {
                if (t instanceof $a) return new $a(t.h, t.s, t.l, t.opacity);
                t instanceof tn || (t = Je(t));
                var e = t.r / 255,
                    n = t.g / 255,
                    r = t.b / 255,
                    i = (Ha * r + Ya * e - Va * n) / (Ha + Ya - Va),
                    a = r - i,
                    o = (za * (n - i) - ja * a) / Ua,
                    s = Math.sqrt(o * o + a * a) / (za * i * (1 - i)),
                    u = s ? Math.atan2(o, a) * ma - 120 : NaN;
                return new $a(u < 0 ? u + 360 : u, s, i, t.opacity)
            }(t) : new $a(t, e, n, null == r ? 1 : r)
        }

        function $a(t, e, n, r) {
            this.h = +t, this.s = +e, this.l = +n, this.opacity = +r
        }
        Le($a, Ga, Be(Oe, {
            brighter: function(t) {
                return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new $a(this.h, this.s, this.l * t, this.opacity)
            },
            darker: function(t) {
                return t = null == t ? .7 : Math.pow(.7, t), new $a(this.h, this.s, this.l * t, this.opacity)
            },
            rgb: function() {
                var t = isNaN(this.h) ? 0 : (this.h + 120) * va,
                    e = +this.l,
                    n = isNaN(this.s) ? 0 : this.s * e * (1 - e),
                    r = Math.cos(t),
                    i = Math.sin(t);
                return new tn(255 * (e + n * (-.14861 * r + 1.78277 * i)), 255 * (e + n * (ja * r + Ua * i)), 255 * (e + n * (za * r)), this.opacity)
            }
        }));
        var Wa = Array.prototype.slice,
            Ka = function(t, e) {
                return t - e
            },
            Xa = function(t) {
                for (var e = 0, n = t.length, r = t[n - 1][1] * t[0][0] - t[n - 1][0] * t[0][1]; ++e < n;) r += t[e - 1][1] * t[e][0] - t[e - 1][0] * t[e][1];
                return r
            },
            Za = function(t) {
                return function() {
                    return t
                }
            },
            Ja = function(t, e) {
                for (var n, r = -1, i = e.length; ++r < i;)
                    if (n = Qa(t, e[r])) return n;
                return 0
            };

        function Qa(t, e) {
            for (var n = e[0], r = e[1], i = -1, a = 0, o = t.length, s = o - 1; a < o; s = a++) {
                var u = t[a],
                    c = u[0],
                    f = u[1],
                    l = t[s],
                    h = l[0],
                    d = l[1];
                if (to(u, l, e)) return 0;
                f > r != d > r && n < (h - c) * (r - f) / (d - f) + c && (i = -i)
            }
            return i
        }

        function to(t, e, n) {
            var r, i, a, o;
            return function(t, e, n) {
                return (e[0] - t[0]) * (n[1] - t[1]) == (n[0] - t[0]) * (e[1] - t[1])
            }(t, e, n) && (i = t[r = +(t[0] === e[0])], a = n[r], o = e[r], i <= a && a <= o || o <= a && a <= i)
        }
        var eo = function() {},
            no = [
                [],
                [
                    [
                        [1, 1.5],
                        [.5, 1]
                    ]
                ],
                [
                    [
                        [1.5, 1],
                        [1, 1.5]
                    ]
                ],
                [
                    [
                        [1.5, 1],
                        [.5, 1]
                    ]
                ],
                [
                    [
                        [1, .5],
                        [1.5, 1]
                    ]
                ],
                [
                    [
                        [1, 1.5],
                        [.5, 1]
                    ],
                    [
                        [1, .5],
                        [1.5, 1]
                    ]
                ],
                [
                    [
                        [1, .5],
                        [1, 1.5]
                    ]
                ],
                [
                    [
                        [1, .5],
                        [.5, 1]
                    ]
                ],
                [
                    [
                        [.5, 1],
                        [1, .5]
                    ]
                ],
                [
                    [
                        [1, 1.5],
                        [1, .5]
                    ]
                ],
                [
                    [
                        [.5, 1],
                        [1, .5]
                    ],
                    [
                        [1.5, 1],
                        [1, 1.5]
                    ]
                ],
                [
                    [
                        [1.5, 1],
                        [1, .5]
                    ]
                ],
                [
                    [
                        [.5, 1],
                        [1.5, 1]
                    ]
                ],
                [
                    [
                        [1, 1.5],
                        [1.5, 1]
                    ]
                ],
                [
                    [
                        [.5, 1],
                        [1, 1.5]
                    ]
                ],
                []
            ],
            ro = function() {
                var t = 1,
                    e = 1,
                    n = D,
                    r = s;

                function i(t) {
                    var e = n(t);
                    if (Array.isArray(e)) e = e.slice().sort(Ka);
                    else {
                        var r = y(t),
                            i = r[0],
                            o = r[1];
                        e = T(i, o, e), e = x(Math.floor(i / e) * e, Math.floor(o / e) * e, e)
                    }
                    return e.map((function(e) {
                        return a(t, e)
                    }))
                }

                function a(n, i) {
                    var a = [],
                        s = [];
                    return function(n, r, i) {
                        var a, s, u, c, f, l, h = new Array,
                            d = new Array;
                        a = s = -1, c = n[0] >= r, no[c << 1].forEach(p);
                        for (; ++a < t - 1;) u = c, c = n[a + 1] >= r, no[u | c << 1].forEach(p);
                        no[c << 0].forEach(p);
                        for (; ++s < e - 1;) {
                            for (a = -1, c = n[s * t + t] >= r, f = n[s * t] >= r, no[c << 1 | f << 2].forEach(p); ++a < t - 1;) u = c, c = n[s * t + t + a + 1] >= r, l = f, f = n[s * t + a + 1] >= r, no[u | c << 1 | f << 2 | l << 3].forEach(p);
                            no[c | f << 3].forEach(p)
                        }
                        a = -1, f = n[s * t] >= r, no[f << 2].forEach(p);
                        for (; ++a < t - 1;) l = f, f = n[s * t + a + 1] >= r, no[f << 2 | l << 3].forEach(p);

                        function p(t) {
                            var e, n, r = [t[0][0] + a, t[0][1] + s],
                                u = [t[1][0] + a, t[1][1] + s],
                                c = o(r),
                                f = o(u);
                            (e = d[c]) ? (n = h[f]) ? (delete d[e.end], delete h[n.start], e === n ? (e.ring.push(u), i(e.ring)) : h[e.start] = d[n.end] = {
                                start: e.start,
                                end: n.end,
                                ring: e.ring.concat(n.ring)
                            }) : (delete d[e.end], e.ring.push(u), d[e.end = f] = e) : (e = h[f]) ? (n = d[c]) ? (delete h[e.start], delete d[n.end], e === n ? (e.ring.push(u), i(e.ring)) : h[n.start] = d[e.end] = {
                                start: n.start,
                                end: e.end,
                                ring: n.ring.concat(e.ring)
                            }) : (delete h[e.start], e.ring.unshift(r), h[e.start = c] = e) : h[c] = d[f] = {
                                start: c,
                                end: f,
                                ring: [r, u]
                            }
                        }
                        no[f << 3].forEach(p)
                    }(n, i, (function(t) {
                        r(t, n, i), Xa(t) > 0 ? a.push([t]) : s.push(t)
                    })), s.forEach((function(t) {
                        for (var e, n = 0, r = a.length; n < r; ++n)
                            if (-1 !== Ja((e = a[n])[0], t)) return void e.push(t)
                    })), {
                        type: "MultiPolygon",
                        value: i,
                        coordinates: a
                    }
                }

                function o(e) {
                    return 2 * e[0] + e[1] * (t + 1) * 4
                }

                function s(n, r, i) {
                    n.forEach((function(n) {
                        var a, o = n[0],
                            s = n[1],
                            u = 0 | o,
                            c = 0 | s,
                            f = r[c * t + u];
                        o > 0 && o < t && u === o && (a = r[c * t + u - 1], n[0] = o + (i - a) / (f - a) - .5), s > 0 && s < e && c === s && (a = r[(c - 1) * t + u], n[1] = s + (i - a) / (f - a) - .5)
                    }))
                }
                return i.contour = a, i.size = function(n) {
                    if (!arguments.length) return [t, e];
                    var r = Math.ceil(n[0]),
                        a = Math.ceil(n[1]);
                    if (!(r > 0 && a > 0)) throw new Error("invalid size");
                    return t = r, e = a, i
                }, i.thresholds = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : Array.isArray(t) ? Za(Wa.call(t)) : Za(t), i) : n
                }, i.smooth = function(t) {
                    return arguments.length ? (r = t ? s : eo, i) : r === s
                }, i
            };

        function io(t, e, n) {
            for (var r = t.width, i = t.height, a = 1 + (n << 1), o = 0; o < i; ++o)
                for (var s = 0, u = 0; s < r + n; ++s) s < r && (u += t.data[s + o * r]), s >= n && (s >= a && (u -= t.data[s - a + o * r]), e.data[s - n + o * r] = u / Math.min(s + 1, r - 1 + a - s, a))
        }

        function ao(t, e, n) {
            for (var r = t.width, i = t.height, a = 1 + (n << 1), o = 0; o < r; ++o)
                for (var s = 0, u = 0; s < i + n; ++s) s < i && (u += t.data[o + s * r]), s >= n && (s >= a && (u -= t.data[o + (s - a) * r]), e.data[o + (s - n) * r] = u / Math.min(s + 1, i - 1 + a - s, a))
        }

        function oo(t) {
            return t[0]
        }

        function so(t) {
            return t[1]
        }

        function uo() {
            return 1
        }
        var co = function() {
                var t = oo,
                    e = so,
                    n = uo,
                    r = 960,
                    i = 500,
                    a = 20,
                    o = 2,
                    s = 3 * a,
                    u = r + 2 * s >> o,
                    c = i + 2 * s >> o,
                    f = Za(20);

                function l(r) {
                    var i = new Float32Array(u * c),
                        l = new Float32Array(u * c);
                    r.forEach((function(r, a, f) {
                        var l = +t(r, a, f) + s >> o,
                            h = +e(r, a, f) + s >> o,
                            d = +n(r, a, f);
                        l >= 0 && l < u && h >= 0 && h < c && (i[l + h * u] += d)
                    })), io({
                        width: u,
                        height: c,
                        data: i
                    }, {
                        width: u,
                        height: c,
                        data: l
                    }, a >> o), ao({
                        width: u,
                        height: c,
                        data: l
                    }, {
                        width: u,
                        height: c,
                        data: i
                    }, a >> o), io({
                        width: u,
                        height: c,
                        data: i
                    }, {
                        width: u,
                        height: c,
                        data: l
                    }, a >> o), ao({
                        width: u,
                        height: c,
                        data: l
                    }, {
                        width: u,
                        height: c,
                        data: i
                    }, a >> o), io({
                        width: u,
                        height: c,
                        data: i
                    }, {
                        width: u,
                        height: c,
                        data: l
                    }, a >> o), ao({
                        width: u,
                        height: c,
                        data: l
                    }, {
                        width: u,
                        height: c,
                        data: i
                    }, a >> o);
                    var d = f(i);
                    if (!Array.isArray(d)) {
                        var p = B(i);
                        d = T(0, p, d), (d = x(0, Math.floor(p / d) * d, d)).shift()
                    }
                    return ro().thresholds(d).size([u, c])(i).map(h)
                }

                function h(t) {
                    return t.value *= Math.pow(2, -2 * o), t.coordinates.forEach(d), t
                }

                function d(t) {
                    t.forEach(p)
                }

                function p(t) {
                    t.forEach(g)
                }

                function g(t) {
                    t[0] = t[0] * Math.pow(2, o) - s, t[1] = t[1] * Math.pow(2, o) - s
                }

                function y() {
                    return u = r + 2 * (s = 3 * a) >> o, c = i + 2 * s >> o, l
                }
                return l.x = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : Za(+e), l) : t
                }, l.y = function(t) {
                    return arguments.length ? (e = "function" == typeof t ? t : Za(+t), l) : e
                }, l.weight = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : Za(+t), l) : n
                }, l.size = function(t) {
                    if (!arguments.length) return [r, i];
                    var e = Math.ceil(t[0]),
                        n = Math.ceil(t[1]);
                    if (!(e >= 0 || e >= 0)) throw new Error("invalid size");
                    return r = e, i = n, y()
                }, l.cellSize = function(t) {
                    if (!arguments.length) return 1 << o;
                    if (!((t = +t) >= 1)) throw new Error("invalid cell size");
                    return o = Math.floor(Math.log(t) / Math.LN2), y()
                }, l.thresholds = function(t) {
                    return arguments.length ? (f = "function" == typeof t ? t : Array.isArray(t) ? Za(Wa.call(t)) : Za(t), l) : f
                }, l.bandwidth = function(t) {
                    if (!arguments.length) return Math.sqrt(a * (a + 1));
                    if (!((t = +t) >= 0)) throw new Error("invalid bandwidth");
                    return a = Math.round((Math.sqrt(4 * t * t + 1) - 1) / 2), y()
                }, l
            },
            fo = function(t) {
                return function() {
                    return t
                }
            };

        function lo(t, e, n, r, i, a, o, s, u, c) {
            this.target = t, this.type = e, this.subject = n, this.identifier = r, this.active = i, this.x = a, this.y = o, this.dx = s, this.dy = u, this._ = c
        }

        function ho() {
            return !pe.ctrlKey && !pe.button
        }

        function po() {
            return this.parentNode
        }

        function go(t) {
            return null == t ? {
                x: pe.x,
                y: pe.y
            } : t
        }

        function yo() {
            return navigator.maxTouchPoints || "ontouchstart" in this
        }
        lo.prototype.on = function() {
            var t = this._.on.apply(this._, arguments);
            return t === this._ ? this : t
        };
        var bo = function() {
                var t, e, n, r, i = ho,
                    a = po,
                    o = go,
                    s = yo,
                    u = {},
                    c = gt("start", "drag", "end"),
                    f = 0,
                    l = 0;

                function h(t) {
                    t.on("mousedown.drag", d).filter(s).on("touchstart.drag", y).on("touchmove.drag", b).on("touchend.drag touchcancel.drag", v).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
                }

                function d() {
                    if (!r && i.apply(this, arguments)) {
                        var o = m("mouse", a.apply(this, arguments), Fn, this, arguments);
                        o && (Te(pe.view).on("mousemove.drag", p, !0).on("mouseup.drag", g, !0), Ne(pe.view), De(), n = !1, t = pe.clientX, e = pe.clientY, o("start"))
                    }
                }

                function p() {
                    if (Ce(), !n) {
                        var r = pe.clientX - t,
                            i = pe.clientY - e;
                        n = r * r + i * i > l
                    }
                    u.mouse("drag")
                }

                function g() {
                    Te(pe.view).on("mousemove.drag mouseup.drag", null), Ie(pe.view, n), Ce(), u.mouse("end")
                }

                function y() {
                    if (i.apply(this, arguments)) {
                        var t, e, n = pe.changedTouches,
                            r = a.apply(this, arguments),
                            o = n.length;
                        for (t = 0; t < o; ++t)(e = m(n[t].identifier, r, Pn, this, arguments)) && (De(), e("start"))
                    }
                }

                function b() {
                    var t, e, n = pe.changedTouches,
                        r = n.length;
                    for (t = 0; t < r; ++t)(e = u[n[t].identifier]) && (Ce(), e("drag"))
                }

                function v() {
                    var t, e, n = pe.changedTouches,
                        i = n.length;
                    for (r && clearTimeout(r), r = setTimeout((function() {
                            r = null
                        }), 500), t = 0; t < i; ++t)(e = u[n[t].identifier]) && (De(), e("end"))
                }

                function m(t, e, n, r, i) {
                    var a, s, l, d = n(e, t),
                        p = c.copy();
                    if (_e(new lo(h, "beforestart", a, t, f, d[0], d[1], 0, 0, p), (function() {
                            return null != (pe.subject = a = o.apply(r, i)) && (s = a.x - d[0] || 0, l = a.y - d[1] || 0, !0)
                        }))) return function o(c) {
                        var g, y = d;
                        switch (c) {
                            case "start":
                                u[t] = o, g = f++;
                                break;
                            case "end":
                                delete u[t], --f;
                            case "drag":
                                d = n(e, t), g = f
                        }
                        _e(new lo(h, c, a, t, g, d[0] + s, d[1] + l, d[0] - y[0], d[1] - y[1], p), p.apply, p, [c, r, i])
                    }
                }
                return h.filter = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : fo(!!t), h) : i
                }, h.container = function(t) {
                    return arguments.length ? (a = "function" == typeof t ? t : fo(t), h) : a
                }, h.subject = function(t) {
                    return arguments.length ? (o = "function" == typeof t ? t : fo(t), h) : o
                }, h.touchable = function(t) {
                    return arguments.length ? (s = "function" == typeof t ? t : fo(!!t), h) : s
                }, h.on = function() {
                    var t = c.on.apply(c, arguments);
                    return t === c ? h : t
                }, h.clickDistance = function(t) {
                    return arguments.length ? (l = (t = +t) * t, h) : Math.sqrt(l)
                }, h
            },
            vo = {},
            mo = {},
            _o = 34,
            wo = 10,
            xo = 13;

        function ko(t) {
            return new Function("d", "return {" + t.map((function(t, e) {
                return JSON.stringify(t) + ": d[" + e + '] || ""'
            })).join(",") + "}")
        }

        function Eo(t) {
            var e = Object.create(null),
                n = [];
            return t.forEach((function(t) {
                for (var r in t) r in e || n.push(e[r] = r)
            })), n
        }

        function Ao(t, e) {
            var n = t + "",
                r = n.length;
            return r < e ? new Array(e - r + 1).join(0) + n : n
        }

        function So(t) {
            var e, n = t.getUTCHours(),
                r = t.getUTCMinutes(),
                i = t.getUTCSeconds(),
                a = t.getUTCMilliseconds();
            return isNaN(t) ? "Invalid Date" : ((e = t.getUTCFullYear()) < 0 ? "-" + Ao(-e, 6) : e > 9999 ? "+" + Ao(e, 6) : Ao(e, 4)) + "-" + Ao(t.getUTCMonth() + 1, 2) + "-" + Ao(t.getUTCDate(), 2) + (a ? "T" + Ao(n, 2) + ":" + Ao(r, 2) + ":" + Ao(i, 2) + "." + Ao(a, 3) + "Z" : i ? "T" + Ao(n, 2) + ":" + Ao(r, 2) + ":" + Ao(i, 2) + "Z" : r || n ? "T" + Ao(n, 2) + ":" + Ao(r, 2) + "Z" : "")
        }
        var Mo = function(t) {
                var e = new RegExp('["' + t + "\n\r]"),
                    n = t.charCodeAt(0);

                function r(t, e) {
                    var r, i = [],
                        a = t.length,
                        o = 0,
                        s = 0,
                        u = a <= 0,
                        c = !1;

                    function f() {
                        if (u) return mo;
                        if (c) return c = !1, vo;
                        var e, r, i = o;
                        if (t.charCodeAt(i) === _o) {
                            for (; o++ < a && t.charCodeAt(o) !== _o || t.charCodeAt(++o) === _o;);
                            return (e = o) >= a ? u = !0 : (r = t.charCodeAt(o++)) === wo ? c = !0 : r === xo && (c = !0, t.charCodeAt(o) === wo && ++o), t.slice(i + 1, e - 1).replace(/""/g, '"')
                        }
                        for (; o < a;) {
                            if ((r = t.charCodeAt(e = o++)) === wo) c = !0;
                            else if (r === xo) c = !0, t.charCodeAt(o) === wo && ++o;
                            else if (r !== n) continue;
                            return t.slice(i, e)
                        }
                        return u = !0, t.slice(i, a)
                    }
                    for (t.charCodeAt(a - 1) === wo && --a, t.charCodeAt(a - 1) === xo && --a;
                        (r = f()) !== mo;) {
                        for (var l = []; r !== vo && r !== mo;) l.push(r), r = f();
                        e && null == (l = e(l, s++)) || i.push(l)
                    }
                    return i
                }

                function i(e, n) {
                    return e.map((function(e) {
                        return n.map((function(t) {
                            return o(e[t])
                        })).join(t)
                    }))
                }

                function a(e) {
                    return e.map(o).join(t)
                }

                function o(t) {
                    return null == t ? "" : t instanceof Date ? So(t) : e.test(t += "") ? '"' + t.replace(/"/g, '""') + '"' : t
                }
                return {
                    parse: function(t, e) {
                        var n, i, a = r(t, (function(t, r) {
                            if (n) return n(t, r - 1);
                            i = t, n = e ? function(t, e) {
                                var n = ko(t);
                                return function(r, i) {
                                    return e(n(r), i, t)
                                }
                            }(t, e) : ko(t)
                        }));
                        return a.columns = i || [], a
                    },
                    parseRows: r,
                    format: function(e, n) {
                        return null == n && (n = Eo(e)), [n.map(o).join(t)].concat(i(e, n)).join("\n")
                    },
                    formatBody: function(t, e) {
                        return null == e && (e = Eo(t)), i(t, e).join("\n")
                    },
                    formatRows: function(t) {
                        return t.map(a).join("\n")
                    },
                    formatRow: a,
                    formatValue: o
                }
            },
            To = Mo(","),
            Do = To.parse,
            Co = To.parseRows,
            No = To.format,
            Io = To.formatBody,
            Lo = To.formatRows,
            Bo = To.formatRow,
            Oo = To.formatValue,
            Ro = Mo("\t"),
            Po = Ro.parse,
            Fo = Ro.parseRows,
            qo = Ro.format,
            jo = Ro.formatBody,
            Uo = Ro.formatRows,
            zo = Ro.formatRow,
            Yo = Ro.formatValue;

        function Vo(t) {
            for (var e in t) {
                var n, r, i = t[e].trim();
                if (i)
                    if ("true" === i) i = !0;
                    else if ("false" === i) i = !1;
                else if ("NaN" === i) i = NaN;
                else if (isNaN(n = +i)) {
                    if (!(r = i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/))) continue;
                    Ho && r[4] && !r[7] && (i = i.replace(/-/g, "/").replace(/T/, " ")), i = new Date(i)
                } else i = n;
                else i = null;
                t[e] = i
            }
            return t
        }
        var Ho = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours();

        function Go(t) {
            return +t
        }

        function $o(t) {
            return t * t
        }

        function Wo(t) {
            return t * (2 - t)
        }

        function Ko(t) {
            return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2
        }
        var Xo = function t(e) {
                function n(t) {
                    return Math.pow(t, e)
                }
                return e = +e, n.exponent = t, n
            }(3),
            Zo = function t(e) {
                function n(t) {
                    return 1 - Math.pow(1 - t, e)
                }
                return e = +e, n.exponent = t, n
            }(3),
            Jo = function t(e) {
                function n(t) {
                    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2
                }
                return e = +e, n.exponent = t, n
            }(3),
            Qo = Math.PI,
            ts = Qo / 2;

        function es(t) {
            return 1 - Math.cos(t * ts)
        }

        function ns(t) {
            return Math.sin(t * ts)
        }

        function rs(t) {
            return (1 - Math.cos(Qo * t)) / 2
        }

        function is(t) {
            return Math.pow(2, 10 * t - 10)
        }

        function as(t) {
            return 1 - Math.pow(2, -10 * t)
        }

        function os(t) {
            return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2
        }

        function ss(t) {
            return 1 - Math.sqrt(1 - t * t)
        }

        function us(t) {
            return Math.sqrt(1 - --t * t)
        }

        function cs(t) {
            return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2
        }
        var fs = 4 / 11,
            ls = 6 / 11,
            hs = 8 / 11,
            ds = .75,
            ps = 9 / 11,
            gs = 10 / 11,
            ys = .9375,
            bs = 21 / 22,
            vs = 63 / 64,
            ms = 1 / fs / fs;

        function _s(t) {
            return 1 - ws(1 - t)
        }

        function ws(t) {
            return (t = +t) < fs ? ms * t * t : t < hs ? ms * (t -= ls) * t + ds : t < gs ? ms * (t -= ps) * t + ys : ms * (t -= bs) * t + vs
        }

        function xs(t) {
            return ((t *= 2) <= 1 ? 1 - ws(1 - t) : ws(t - 1) + 1) / 2
        }
        var ks = function t(e) {
                function n(t) {
                    return t * t * ((e + 1) * t - e)
                }
                return e = +e, n.overshoot = t, n
            }(1.70158),
            Es = function t(e) {
                function n(t) {
                    return --t * t * ((e + 1) * t + e) + 1
                }
                return e = +e, n.overshoot = t, n
            }(1.70158),
            As = function t(e) {
                function n(t) {
                    return ((t *= 2) < 1 ? t * t * ((e + 1) * t - e) : (t -= 2) * t * ((e + 1) * t + e) + 2) / 2
                }
                return e = +e, n.overshoot = t, n
            }(1.70158),
            Ss = 2 * Math.PI,
            Ms = function t(e, n) {
                var r = Math.asin(1 / (e = Math.max(1, e))) * (n /= Ss);

                function i(t) {
                    return e * Math.pow(2, 10 * --t) * Math.sin((r - t) / n)
                }
                return i.amplitude = function(e) {
                    return t(e, n * Ss)
                }, i.period = function(n) {
                    return t(e, n)
                }, i
            }(1, .3),
            Ts = function t(e, n) {
                var r = Math.asin(1 / (e = Math.max(1, e))) * (n /= Ss);

                function i(t) {
                    return 1 - e * Math.pow(2, -10 * (t = +t)) * Math.sin((t + r) / n)
                }
                return i.amplitude = function(e) {
                    return t(e, n * Ss)
                }, i.period = function(n) {
                    return t(e, n)
                }, i
            }(1, .3),
            Ds = function t(e, n) {
                var r = Math.asin(1 / (e = Math.max(1, e))) * (n /= Ss);

                function i(t) {
                    return ((t = 2 * t - 1) < 0 ? e * Math.pow(2, 10 * t) * Math.sin((r - t) / n) : 2 - e * Math.pow(2, -10 * t) * Math.sin((r + t) / n)) / 2
                }
                return i.amplitude = function(e) {
                    return t(e, n * Ss)
                }, i.period = function(n) {
                    return t(e, n)
                }, i
            }(1, .3);

        function Cs(t) {
            if (!t.ok) throw new Error(t.status + " " + t.statusText);
            return t.blob()
        }
        var Ns = function(t, e) {
            return fetch(t, e).then(Cs)
        };

        function Is(t) {
            if (!t.ok) throw new Error(t.status + " " + t.statusText);
            return t.arrayBuffer()
        }
        var Ls = function(t, e) {
            return fetch(t, e).then(Is)
        };

        function Bs(t) {
            if (!t.ok) throw new Error(t.status + " " + t.statusText);
            return t.text()
        }
        var Os = function(t, e) {
            return fetch(t, e).then(Bs)
        };

        function Rs(t) {
            return function(e, n, r) {
                return 2 === arguments.length && "function" == typeof n && (r = n, n = void 0), Os(e, n).then((function(e) {
                    return t(e, r)
                }))
            }
        }

        function Ps(t, e, n, r) {
            3 === arguments.length && "function" == typeof n && (r = n, n = void 0);
            var i = Mo(t);
            return Os(e, n).then((function(t) {
                return i.parse(t, r)
            }))
        }
        var Fs = Rs(Do),
            qs = Rs(Po),
            js = function(t, e) {
                return new Promise((function(n, r) {
                    var i = new Image;
                    for (var a in e) i[a] = e[a];
                    i.onerror = r, i.onload = function() {
                        n(i)
                    }, i.src = t
                }))
            };

        function Us(t) {
            if (!t.ok) throw new Error(t.status + " " + t.statusText);
            return t.json()
        }
        var zs = function(t, e) {
            return fetch(t, e).then(Us)
        };

        function Ys(t) {
            return function(e, n) {
                return Os(e, n).then((function(e) {
                    return (new DOMParser).parseFromString(e, t)
                }))
            }
        }
        var Vs = Ys("application/xml"),
            Hs = Ys("text/html"),
            Gs = Ys("image/svg+xml"),
            $s = function(t, e) {
                var n;

                function r() {
                    var r, i, a = n.length,
                        o = 0,
                        s = 0;
                    for (r = 0; r < a; ++r) o += (i = n[r]).x, s += i.y;
                    for (o = o / a - t, s = s / a - e, r = 0; r < a; ++r)(i = n[r]).x -= o, i.y -= s
                }
                return null == t && (t = 0), null == e && (e = 0), r.initialize = function(t) {
                    n = t
                }, r.x = function(e) {
                    return arguments.length ? (t = +e, r) : t
                }, r.y = function(t) {
                    return arguments.length ? (e = +t, r) : e
                }, r
            },
            Ws = function(t) {
                return function() {
                    return t
                }
            },
            Ks = function() {
                return 1e-6 * (Math.random() - .5)
            };

        function Xs(t, e, n, r) {
            if (isNaN(e) || isNaN(n)) return t;
            var i, a, o, s, u, c, f, l, h, d = t._root,
                p = {
                    data: r
                },
                g = t._x0,
                y = t._y0,
                b = t._x1,
                v = t._y1;
            if (!d) return t._root = p, t;
            for (; d.length;)
                if ((c = e >= (a = (g + b) / 2)) ? g = a : b = a, (f = n >= (o = (y + v) / 2)) ? y = o : v = o, i = d, !(d = d[l = f << 1 | c])) return i[l] = p, t;
            if (s = +t._x.call(null, d.data), u = +t._y.call(null, d.data), e === s && n === u) return p.next = d, i ? i[l] = p : t._root = p, t;
            do {
                i = i ? i[l] = new Array(4) : t._root = new Array(4), (c = e >= (a = (g + b) / 2)) ? g = a : b = a, (f = n >= (o = (y + v) / 2)) ? y = o : v = o
            } while ((l = f << 1 | c) == (h = (u >= o) << 1 | s >= a));
            return i[h] = d, i[l] = p, t
        }
        var Zs = function(t, e, n, r, i) {
            this.node = t, this.x0 = e, this.y0 = n, this.x1 = r, this.y1 = i
        };

        function Js(t) {
            return t[0]
        }

        function Qs(t) {
            return t[1]
        }

        function tu(t, e, n) {
            var r = new eu(null == e ? Js : e, null == n ? Qs : n, NaN, NaN, NaN, NaN);
            return null == t ? r : r.addAll(t)
        }

        function eu(t, e, n, r, i, a) {
            this._x = t, this._y = e, this._x0 = n, this._y0 = r, this._x1 = i, this._y1 = a, this._root = void 0
        }

        function nu(t) {
            for (var e = {
                    data: t.data
                }, n = e; t = t.next;) n = n.next = {
                data: t.data
            };
            return e
        }
        var ru = tu.prototype = eu.prototype;

        function iu(t) {
            return t.x + t.vx
        }

        function au(t) {
            return t.y + t.vy
        }
        ru.copy = function() {
            var t, e, n = new eu(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
                r = this._root;
            if (!r) return n;
            if (!r.length) return n._root = nu(r), n;
            for (t = [{
                    source: r,
                    target: n._root = new Array(4)
                }]; r = t.pop();)
                for (var i = 0; i < 4; ++i)(e = r.source[i]) && (e.length ? t.push({
                    source: e,
                    target: r.target[i] = new Array(4)
                }) : r.target[i] = nu(e));
            return n
        }, ru.add = function(t) {
            var e = +this._x.call(null, t),
                n = +this._y.call(null, t);
            return Xs(this.cover(e, n), e, n, t)
        }, ru.addAll = function(t) {
            var e, n, r, i, a = t.length,
                o = new Array(a),
                s = new Array(a),
                u = 1 / 0,
                c = 1 / 0,
                f = -1 / 0,
                l = -1 / 0;
            for (n = 0; n < a; ++n) isNaN(r = +this._x.call(null, e = t[n])) || isNaN(i = +this._y.call(null, e)) || (o[n] = r, s[n] = i, r < u && (u = r), r > f && (f = r), i < c && (c = i), i > l && (l = i));
            if (u > f || c > l) return this;
            for (this.cover(u, c).cover(f, l), n = 0; n < a; ++n) Xs(this, o[n], s[n], t[n]);
            return this
        }, ru.cover = function(t, e) {
            if (isNaN(t = +t) || isNaN(e = +e)) return this;
            var n = this._x0,
                r = this._y0,
                i = this._x1,
                a = this._y1;
            if (isNaN(n)) i = (n = Math.floor(t)) + 1, a = (r = Math.floor(e)) + 1;
            else {
                for (var o, s, u = i - n, c = this._root; n > t || t >= i || r > e || e >= a;) switch (s = (e < r) << 1 | t < n, (o = new Array(4))[s] = c, c = o, u *= 2, s) {
                    case 0:
                        i = n + u, a = r + u;
                        break;
                    case 1:
                        n = i - u, a = r + u;
                        break;
                    case 2:
                        i = n + u, r = a - u;
                        break;
                    case 3:
                        n = i - u, r = a - u
                }
                this._root && this._root.length && (this._root = c)
            }
            return this._x0 = n, this._y0 = r, this._x1 = i, this._y1 = a, this
        }, ru.data = function() {
            var t = [];
            return this.visit((function(e) {
                if (!e.length)
                    do {
                        t.push(e.data)
                    } while (e = e.next)
            })), t
        }, ru.extent = function(t) {
            return arguments.length ? this.cover(+t[0][0], +t[0][1]).cover(+t[1][0], +t[1][1]) : isNaN(this._x0) ? void 0 : [
                [this._x0, this._y0],
                [this._x1, this._y1]
            ]
        }, ru.find = function(t, e, n) {
            var r, i, a, o, s, u, c, f = this._x0,
                l = this._y0,
                h = this._x1,
                d = this._y1,
                p = [],
                g = this._root;
            for (g && p.push(new Zs(g, f, l, h, d)), null == n ? n = 1 / 0 : (f = t - n, l = e - n, h = t + n, d = e + n, n *= n); u = p.pop();)
                if (!(!(g = u.node) || (i = u.x0) > h || (a = u.y0) > d || (o = u.x1) < f || (s = u.y1) < l))
                    if (g.length) {
                        var y = (i + o) / 2,
                            b = (a + s) / 2;
                        p.push(new Zs(g[3], y, b, o, s), new Zs(g[2], i, b, y, s), new Zs(g[1], y, a, o, b), new Zs(g[0], i, a, y, b)), (c = (e >= b) << 1 | t >= y) && (u = p[p.length - 1], p[p.length - 1] = p[p.length - 1 - c], p[p.length - 1 - c] = u)
                    } else {
                        var v = t - +this._x.call(null, g.data),
                            m = e - +this._y.call(null, g.data),
                            _ = v * v + m * m;
                        if (_ < n) {
                            var w = Math.sqrt(n = _);
                            f = t - w, l = e - w, h = t + w, d = e + w, r = g.data
                        }
                    } return r
        }, ru.remove = function(t) {
            if (isNaN(a = +this._x.call(null, t)) || isNaN(o = +this._y.call(null, t))) return this;
            var e, n, r, i, a, o, s, u, c, f, l, h, d = this._root,
                p = this._x0,
                g = this._y0,
                y = this._x1,
                b = this._y1;
            if (!d) return this;
            if (d.length)
                for (;;) {
                    if ((c = a >= (s = (p + y) / 2)) ? p = s : y = s, (f = o >= (u = (g + b) / 2)) ? g = u : b = u, e = d, !(d = d[l = f << 1 | c])) return this;
                    if (!d.length) break;
                    (e[l + 1 & 3] || e[l + 2 & 3] || e[l + 3 & 3]) && (n = e, h = l)
                }
            for (; d.data !== t;)
                if (r = d, !(d = d.next)) return this;
            return (i = d.next) && delete d.next, r ? (i ? r.next = i : delete r.next, this) : e ? (i ? e[l] = i : delete e[l], (d = e[0] || e[1] || e[2] || e[3]) && d === (e[3] || e[2] || e[1] || e[0]) && !d.length && (n ? n[h] = d : this._root = d), this) : (this._root = i, this)
        }, ru.removeAll = function(t) {
            for (var e = 0, n = t.length; e < n; ++e) this.remove(t[e]);
            return this
        }, ru.root = function() {
            return this._root
        }, ru.size = function() {
            var t = 0;
            return this.visit((function(e) {
                if (!e.length)
                    do {
                        ++t
                    } while (e = e.next)
            })), t
        }, ru.visit = function(t) {
            var e, n, r, i, a, o, s = [],
                u = this._root;
            for (u && s.push(new Zs(u, this._x0, this._y0, this._x1, this._y1)); e = s.pop();)
                if (!t(u = e.node, r = e.x0, i = e.y0, a = e.x1, o = e.y1) && u.length) {
                    var c = (r + a) / 2,
                        f = (i + o) / 2;
                    (n = u[3]) && s.push(new Zs(n, c, f, a, o)), (n = u[2]) && s.push(new Zs(n, r, f, c, o)), (n = u[1]) && s.push(new Zs(n, c, i, a, f)), (n = u[0]) && s.push(new Zs(n, r, i, c, f))
                } return this
        }, ru.visitAfter = function(t) {
            var e, n = [],
                r = [];
            for (this._root && n.push(new Zs(this._root, this._x0, this._y0, this._x1, this._y1)); e = n.pop();) {
                var i = e.node;
                if (i.length) {
                    var a, o = e.x0,
                        s = e.y0,
                        u = e.x1,
                        c = e.y1,
                        f = (o + u) / 2,
                        l = (s + c) / 2;
                    (a = i[0]) && n.push(new Zs(a, o, s, f, l)), (a = i[1]) && n.push(new Zs(a, f, s, u, l)), (a = i[2]) && n.push(new Zs(a, o, l, f, c)), (a = i[3]) && n.push(new Zs(a, f, l, u, c))
                }
                r.push(e)
            }
            for (; e = r.pop();) t(e.node, e.x0, e.y0, e.x1, e.y1);
            return this
        }, ru.x = function(t) {
            return arguments.length ? (this._x = t, this) : this._x
        }, ru.y = function(t) {
            return arguments.length ? (this._y = t, this) : this._y
        };
        var ou = function(t) {
            var e, n, r = 1,
                i = 1;

            function a() {
                for (var t, a, s, u, c, f, l, h = e.length, d = 0; d < i; ++d)
                    for (a = tu(e, iu, au).visitAfter(o), t = 0; t < h; ++t) s = e[t], f = n[s.index], l = f * f, u = s.x + s.vx, c = s.y + s.vy, a.visit(p);

                function p(t, e, n, i, a) {
                    var o = t.data,
                        h = t.r,
                        d = f + h;
                    if (!o) return e > u + d || i < u - d || n > c + d || a < c - d;
                    if (o.index > s.index) {
                        var p = u - o.x - o.vx,
                            g = c - o.y - o.vy,
                            y = p * p + g * g;
                        y < d * d && (0 === p && (y += (p = Ks()) * p), 0 === g && (y += (g = Ks()) * g), y = (d - (y = Math.sqrt(y))) / y * r, s.vx += (p *= y) * (d = (h *= h) / (l + h)), s.vy += (g *= y) * d, o.vx -= p * (d = 1 - d), o.vy -= g * d)
                    }
                }
            }

            function o(t) {
                if (t.data) return t.r = n[t.data.index];
                for (var e = t.r = 0; e < 4; ++e) t[e] && t[e].r > t.r && (t.r = t[e].r)
            }

            function s() {
                if (e) {
                    var r, i, a = e.length;
                    for (n = new Array(a), r = 0; r < a; ++r) i = e[r], n[i.index] = +t(i, r, e)
                }
            }
            return "function" != typeof t && (t = Ws(null == t ? 1 : +t)), a.initialize = function(t) {
                e = t, s()
            }, a.iterations = function(t) {
                return arguments.length ? (i = +t, a) : i
            }, a.strength = function(t) {
                return arguments.length ? (r = +t, a) : r
            }, a.radius = function(e) {
                return arguments.length ? (t = "function" == typeof e ? e : Ws(+e), s(), a) : t
            }, a
        };

        function su(t) {
            return t.index
        }

        function uu(t, e) {
            var n = t.get(e);
            if (!n) throw new Error("missing: " + e);
            return n
        }
        var cu = function(t) {
            var e, n, r, i, a, o = su,
                s = function(t) {
                    return 1 / Math.min(i[t.source.index], i[t.target.index])
                },
                u = Ws(30),
                c = 1;

            function f(r) {
                for (var i = 0, o = t.length; i < c; ++i)
                    for (var s, u, f, l, h, d, p, g = 0; g < o; ++g) u = (s = t[g]).source, l = (f = s.target).x + f.vx - u.x - u.vx || Ks(), h = f.y + f.vy - u.y - u.vy || Ks(), l *= d = ((d = Math.sqrt(l * l + h * h)) - n[g]) / d * r * e[g], h *= d, f.vx -= l * (p = a[g]), f.vy -= h * p, u.vx += l * (p = 1 - p), u.vy += h * p
            }

            function l() {
                if (r) {
                    var s, u, c = r.length,
                        f = t.length,
                        l = aa(r, o);
                    for (s = 0, i = new Array(c); s < f; ++s)(u = t[s]).index = s, "object" != typeof u.source && (u.source = uu(l, u.source)), "object" != typeof u.target && (u.target = uu(l, u.target)), i[u.source.index] = (i[u.source.index] || 0) + 1, i[u.target.index] = (i[u.target.index] || 0) + 1;
                    for (s = 0, a = new Array(f); s < f; ++s) u = t[s], a[s] = i[u.source.index] / (i[u.source.index] + i[u.target.index]);
                    e = new Array(f), h(), n = new Array(f), d()
                }
            }

            function h() {
                if (r)
                    for (var n = 0, i = t.length; n < i; ++n) e[n] = +s(t[n], n, t)
            }

            function d() {
                if (r)
                    for (var e = 0, i = t.length; e < i; ++e) n[e] = +u(t[e], e, t)
            }
            return null == t && (t = []), f.initialize = function(t) {
                r = t, l()
            }, f.links = function(e) {
                return arguments.length ? (t = e, l(), f) : t
            }, f.id = function(t) {
                return arguments.length ? (o = t, f) : o
            }, f.iterations = function(t) {
                return arguments.length ? (c = +t, f) : c
            }, f.strength = function(t) {
                return arguments.length ? (s = "function" == typeof t ? t : Ws(+t), h(), f) : s
            }, f.distance = function(t) {
                return arguments.length ? (u = "function" == typeof t ? t : Ws(+t), d(), f) : u
            }, f
        };

        function fu(t) {
            return t.x
        }

        function lu(t) {
            return t.y
        }
        var hu = 10,
            du = Math.PI * (3 - Math.sqrt(5)),
            pu = function(t) {
                var e, n = 1,
                    r = .001,
                    i = 1 - Math.pow(r, 1 / 300),
                    a = 0,
                    o = .6,
                    s = aa(),
                    u = Zn(f),
                    c = gt("tick", "end");

                function f() {
                    l(), c.call("tick", e), n < r && (u.stop(), c.call("end", e))
                }

                function l(r) {
                    var u, c, f = t.length;
                    void 0 === r && (r = 1);
                    for (var l = 0; l < r; ++l)
                        for (n += (a - n) * i, s.each((function(t) {
                                t(n)
                            })), u = 0; u < f; ++u) null == (c = t[u]).fx ? c.x += c.vx *= o : (c.x = c.fx, c.vx = 0), null == c.fy ? c.y += c.vy *= o : (c.y = c.fy, c.vy = 0);
                    return e
                }

                function h() {
                    for (var e, n = 0, r = t.length; n < r; ++n) {
                        if ((e = t[n]).index = n, null != e.fx && (e.x = e.fx), null != e.fy && (e.y = e.fy), isNaN(e.x) || isNaN(e.y)) {
                            var i = hu * Math.sqrt(n),
                                a = n * du;
                            e.x = i * Math.cos(a), e.y = i * Math.sin(a)
                        }(isNaN(e.vx) || isNaN(e.vy)) && (e.vx = e.vy = 0)
                    }
                }

                function d(e) {
                    return e.initialize && e.initialize(t), e
                }
                return null == t && (t = []), h(), e = {
                    tick: l,
                    restart: function() {
                        return u.restart(f), e
                    },
                    stop: function() {
                        return u.stop(), e
                    },
                    nodes: function(n) {
                        return arguments.length ? (t = n, h(), s.each(d), e) : t
                    },
                    alpha: function(t) {
                        return arguments.length ? (n = +t, e) : n
                    },
                    alphaMin: function(t) {
                        return arguments.length ? (r = +t, e) : r
                    },
                    alphaDecay: function(t) {
                        return arguments.length ? (i = +t, e) : +i
                    },
                    alphaTarget: function(t) {
                        return arguments.length ? (a = +t, e) : a
                    },
                    velocityDecay: function(t) {
                        return arguments.length ? (o = 1 - t, e) : 1 - o
                    },
                    force: function(t, n) {
                        return arguments.length > 1 ? (null == n ? s.remove(t) : s.set(t, d(n)), e) : s.get(t)
                    },
                    find: function(e, n, r) {
                        var i, a, o, s, u, c = 0,
                            f = t.length;
                        for (null == r ? r = 1 / 0 : r *= r, c = 0; c < f; ++c)(o = (i = e - (s = t[c]).x) * i + (a = n - s.y) * a) < r && (u = s, r = o);
                        return u
                    },
                    on: function(t, n) {
                        return arguments.length > 1 ? (c.on(t, n), e) : c.on(t)
                    }
                }
            },
            gu = function() {
                var t, e, n, r, i = Ws(-30),
                    a = 1,
                    o = 1 / 0,
                    s = .81;

                function u(r) {
                    var i, a = t.length,
                        o = tu(t, fu, lu).visitAfter(f);
                    for (n = r, i = 0; i < a; ++i) e = t[i], o.visit(l)
                }

                function c() {
                    if (t) {
                        var e, n, a = t.length;
                        for (r = new Array(a), e = 0; e < a; ++e) n = t[e], r[n.index] = +i(n, e, t)
                    }
                }

                function f(t) {
                    var e, n, i, a, o, s = 0,
                        u = 0;
                    if (t.length) {
                        for (i = a = o = 0; o < 4; ++o)(e = t[o]) && (n = Math.abs(e.value)) && (s += e.value, u += n, i += n * e.x, a += n * e.y);
                        t.x = i / u, t.y = a / u
                    } else {
                        (e = t).x = e.data.x, e.y = e.data.y;
                        do {
                            s += r[e.data.index]
                        } while (e = e.next)
                    }
                    t.value = s
                }

                function l(t, i, u, c) {
                    if (!t.value) return !0;
                    var f = t.x - e.x,
                        l = t.y - e.y,
                        h = c - i,
                        d = f * f + l * l;
                    if (h * h / s < d) return d < o && (0 === f && (d += (f = Ks()) * f), 0 === l && (d += (l = Ks()) * l), d < a && (d = Math.sqrt(a * d)), e.vx += f * t.value * n / d, e.vy += l * t.value * n / d), !0;
                    if (!(t.length || d >= o)) {
                        (t.data !== e || t.next) && (0 === f && (d += (f = Ks()) * f), 0 === l && (d += (l = Ks()) * l), d < a && (d = Math.sqrt(a * d)));
                        do {
                            t.data !== e && (h = r[t.data.index] * n / d, e.vx += f * h, e.vy += l * h)
                        } while (t = t.next)
                    }
                }
                return u.initialize = function(e) {
                    t = e, c()
                }, u.strength = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : Ws(+t), c(), u) : i
                }, u.distanceMin = function(t) {
                    return arguments.length ? (a = t * t, u) : Math.sqrt(a)
                }, u.distanceMax = function(t) {
                    return arguments.length ? (o = t * t, u) : Math.sqrt(o)
                }, u.theta = function(t) {
                    return arguments.length ? (s = t * t, u) : Math.sqrt(s)
                }, u
            },
            yu = function(t, e, n) {
                var r, i, a, o = Ws(.1);

                function s(t) {
                    for (var o = 0, s = r.length; o < s; ++o) {
                        var u = r[o],
                            c = u.x - e || 1e-6,
                            f = u.y - n || 1e-6,
                            l = Math.sqrt(c * c + f * f),
                            h = (a[o] - l) * i[o] * t / l;
                        u.vx += c * h, u.vy += f * h
                    }
                }

                function u() {
                    if (r) {
                        var e, n = r.length;
                        for (i = new Array(n), a = new Array(n), e = 0; e < n; ++e) a[e] = +t(r[e], e, r), i[e] = isNaN(a[e]) ? 0 : +o(r[e], e, r)
                    }
                }
                return "function" != typeof t && (t = Ws(+t)), null == e && (e = 0), null == n && (n = 0), s.initialize = function(t) {
                    r = t, u()
                }, s.strength = function(t) {
                    return arguments.length ? (o = "function" == typeof t ? t : Ws(+t), u(), s) : o
                }, s.radius = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : Ws(+e), u(), s) : t
                }, s.x = function(t) {
                    return arguments.length ? (e = +t, s) : e
                }, s.y = function(t) {
                    return arguments.length ? (n = +t, s) : n
                }, s
            },
            bu = function(t) {
                var e, n, r, i = Ws(.1);

                function a(t) {
                    for (var i, a = 0, o = e.length; a < o; ++a)(i = e[a]).vx += (r[a] - i.x) * n[a] * t
                }

                function o() {
                    if (e) {
                        var a, o = e.length;
                        for (n = new Array(o), r = new Array(o), a = 0; a < o; ++a) n[a] = isNaN(r[a] = +t(e[a], a, e)) ? 0 : +i(e[a], a, e)
                    }
                }
                return "function" != typeof t && (t = Ws(null == t ? 0 : +t)), a.initialize = function(t) {
                    e = t, o()
                }, a.strength = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : Ws(+t), o(), a) : i
                }, a.x = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : Ws(+e), o(), a) : t
                }, a
            },
            vu = function(t) {
                var e, n, r, i = Ws(.1);

                function a(t) {
                    for (var i, a = 0, o = e.length; a < o; ++a)(i = e[a]).vy += (r[a] - i.y) * n[a] * t
                }

                function o() {
                    if (e) {
                        var a, o = e.length;
                        for (n = new Array(o), r = new Array(o), a = 0; a < o; ++a) n[a] = isNaN(r[a] = +t(e[a], a, e)) ? 0 : +i(e[a], a, e)
                    }
                }
                return "function" != typeof t && (t = Ws(null == t ? 0 : +t)), a.initialize = function(t) {
                    e = t, o()
                }, a.strength = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : Ws(+t), o(), a) : i
                }, a.y = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : Ws(+e), o(), a) : t
                }, a
            },
            mu = function(t, e) {
                if ((n = (t = e ? t.toExponential(e - 1) : t.toExponential()).indexOf("e")) < 0) return null;
                var n, r = t.slice(0, n);
                return [r.length > 1 ? r[0] + r.slice(2) : r, +t.slice(n + 1)]
            },
            _u = function(t) {
                return (t = mu(Math.abs(t))) ? t[1] : NaN
            },
            wu = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;

        function xu(t) {
            if (!(e = wu.exec(t))) throw new Error("invalid format: " + t);
            var e;
            return new ku({
                fill: e[1],
                align: e[2],
                sign: e[3],
                symbol: e[4],
                zero: e[5],
                width: e[6],
                comma: e[7],
                precision: e[8] && e[8].slice(1),
                trim: e[9],
                type: e[10]
            })
        }

        function ku(t) {
            this.fill = void 0 === t.fill ? " " : t.fill + "", this.align = void 0 === t.align ? ">" : t.align + "", this.sign = void 0 === t.sign ? "-" : t.sign + "", this.symbol = void 0 === t.symbol ? "" : t.symbol + "", this.zero = !!t.zero, this.width = void 0 === t.width ? void 0 : +t.width, this.comma = !!t.comma, this.precision = void 0 === t.precision ? void 0 : +t.precision, this.trim = !!t.trim, this.type = void 0 === t.type ? "" : t.type + ""
        }
        xu.prototype = ku.prototype, ku.prototype.toString = function() {
            return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (void 0 === this.width ? "" : Math.max(1, 0 | this.width)) + (this.comma ? "," : "") + (void 0 === this.precision ? "" : "." + Math.max(0, 0 | this.precision)) + (this.trim ? "~" : "") + this.type
        };
        var Eu, Au, Su, Mu, Tu = function(t) {
                t: for (var e, n = t.length, r = 1, i = -1; r < n; ++r) switch (t[r]) {
                    case ".":
                        i = e = r;
                        break;
                    case "0":
                        0 === i && (i = r), e = r;
                        break;
                    default:
                        if (i > 0) {
                            if (!+t[r]) break t;
                            i = 0
                        }
                }
                return i > 0 ? t.slice(0, i) + t.slice(e + 1) : t
            },
            Du = function(t, e) {
                var n = mu(t, e);
                if (!n) return t + "";
                var r = n[0],
                    i = n[1];
                return i < 0 ? "0." + new Array(-i).join("0") + r : r.length > i + 1 ? r.slice(0, i + 1) + "." + r.slice(i + 1) : r + new Array(i - r.length + 2).join("0")
            },
            Cu = {
                "%": function(t, e) {
                    return (100 * t).toFixed(e)
                },
                b: function(t) {
                    return Math.round(t).toString(2)
                },
                c: function(t) {
                    return t + ""
                },
                d: function(t) {
                    return Math.round(t).toString(10)
                },
                e: function(t, e) {
                    return t.toExponential(e)
                },
                f: function(t, e) {
                    return t.toFixed(e)
                },
                g: function(t, e) {
                    return t.toPrecision(e)
                },
                o: function(t) {
                    return Math.round(t).toString(8)
                },
                p: function(t, e) {
                    return Du(100 * t, e)
                },
                r: Du,
                s: function(t, e) {
                    var n = mu(t, e);
                    if (!n) return t + "";
                    var r = n[0],
                        i = n[1],
                        a = i - (Eu = 3 * Math.max(-8, Math.min(8, Math.floor(i / 3)))) + 1,
                        o = r.length;
                    return a === o ? r : a > o ? r + new Array(a - o + 1).join("0") : a > 0 ? r.slice(0, a) + "." + r.slice(a) : "0." + new Array(1 - a).join("0") + mu(t, Math.max(0, e + a - 1))[0]
                },
                X: function(t) {
                    return Math.round(t).toString(16).toUpperCase()
                },
                x: function(t) {
                    return Math.round(t).toString(16)
                }
            },
            Nu = function(t) {
                return t
            },
            Iu = Array.prototype.map,
            Lu = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"],
            Bu = function(t) {
                var e, n, r = void 0 === t.grouping || void 0 === t.thousands ? Nu : (e = Iu.call(t.grouping, Number), n = t.thousands + "", function(t, r) {
                        for (var i = t.length, a = [], o = 0, s = e[0], u = 0; i > 0 && s > 0 && (u + s + 1 > r && (s = Math.max(1, r - u)), a.push(t.substring(i -= s, i + s)), !((u += s + 1) > r));) s = e[o = (o + 1) % e.length];
                        return a.reverse().join(n)
                    }),
                    i = void 0 === t.currency ? "" : t.currency[0] + "",
                    a = void 0 === t.currency ? "" : t.currency[1] + "",
                    o = void 0 === t.decimal ? "." : t.decimal + "",
                    s = void 0 === t.numerals ? Nu : function(t) {
                        return function(e) {
                            return e.replace(/[0-9]/g, (function(e) {
                                return t[+e]
                            }))
                        }
                    }(Iu.call(t.numerals, String)),
                    u = void 0 === t.percent ? "%" : t.percent + "",
                    c = void 0 === t.minus ? "-" : t.minus + "",
                    f = void 0 === t.nan ? "NaN" : t.nan + "";

                function l(t) {
                    var e = (t = xu(t)).fill,
                        n = t.align,
                        l = t.sign,
                        h = t.symbol,
                        d = t.zero,
                        p = t.width,
                        g = t.comma,
                        y = t.precision,
                        b = t.trim,
                        v = t.type;
                    "n" === v ? (g = !0, v = "g") : Cu[v] || (void 0 === y && (y = 12), b = !0, v = "g"), (d || "0" === e && "=" === n) && (d = !0, e = "0", n = "=");
                    var m = "$" === h ? i : "#" === h && /[boxX]/.test(v) ? "0" + v.toLowerCase() : "",
                        _ = "$" === h ? a : /[%p]/.test(v) ? u : "",
                        w = Cu[v],
                        x = /[defgprs%]/.test(v);

                    function k(t) {
                        var i, a, u, h = m,
                            k = _;
                        if ("c" === v) k = w(t) + k, t = "";
                        else {
                            var E = (t = +t) < 0;
                            if (t = isNaN(t) ? f : w(Math.abs(t), y), b && (t = Tu(t)), E && 0 == +t && (E = !1), h = (E ? "(" === l ? l : c : "-" === l || "(" === l ? "" : l) + h, k = ("s" === v ? Lu[8 + Eu / 3] : "") + k + (E && "(" === l ? ")" : ""), x)
                                for (i = -1, a = t.length; ++i < a;)
                                    if (48 > (u = t.charCodeAt(i)) || u > 57) {
                                        k = (46 === u ? o + t.slice(i + 1) : t.slice(i)) + k, t = t.slice(0, i);
                                        break
                                    }
                        }
                        g && !d && (t = r(t, 1 / 0));
                        var A = h.length + t.length + k.length,
                            S = A < p ? new Array(p - A + 1).join(e) : "";
                        switch (g && d && (t = r(S + t, S.length ? p - k.length : 1 / 0), S = ""), n) {
                            case "<":
                                t = h + t + k + S;
                                break;
                            case "=":
                                t = h + S + t + k;
                                break;
                            case "^":
                                t = S.slice(0, A = S.length >> 1) + h + t + k + S.slice(A);
                                break;
                            default:
                                t = S + h + t + k
                        }
                        return s(t)
                    }
                    return y = void 0 === y ? 6 : /[gprs]/.test(v) ? Math.max(1, Math.min(21, y)) : Math.max(0, Math.min(20, y)), k.toString = function() {
                        return t + ""
                    }, k
                }
                return {
                    format: l,
                    formatPrefix: function(t, e) {
                        var n = l(((t = xu(t)).type = "f", t)),
                            r = 3 * Math.max(-8, Math.min(8, Math.floor(_u(e) / 3))),
                            i = Math.pow(10, -r),
                            a = Lu[8 + r / 3];
                        return function(t) {
                            return n(i * t) + a
                        }
                    }
                }
            };

        function Ou(t) {
            return Au = Bu(t), Su = Au.format, Mu = Au.formatPrefix, Au
        }
        Ou({
            decimal: ".",
            thousands: ",",
            grouping: [3],
            currency: ["$", ""],
            minus: "-"
        });
        var Ru = function(t) {
                return Math.max(0, -_u(Math.abs(t)))
            },
            Pu = function(t, e) {
                return Math.max(0, 3 * Math.max(-8, Math.min(8, Math.floor(_u(e) / 3))) - _u(Math.abs(t)))
            },
            Fu = function(t, e) {
                return t = Math.abs(t), e = Math.abs(e) - t, Math.max(0, _u(e) - _u(t)) + 1
            },
            qu = function() {
                return new ju
            };

        function ju() {
            this.reset()
        }
        ju.prototype = {
            constructor: ju,
            reset: function() {
                this.s = this.t = 0
            },
            add: function(t) {
                zu(Uu, t, this.t), zu(this, Uu.s, this.s), this.s ? this.t += Uu.t : this.s = Uu.t
            },
            valueOf: function() {
                return this.s
            }
        };
        var Uu = new ju;

        function zu(t, e, n) {
            var r = t.s = e + n,
                i = r - e,
                a = r - i;
            t.t = e - a + (n - i)
        }
        var Yu = 1e-6,
            Vu = 1e-12,
            Hu = Math.PI,
            Gu = Hu / 2,
            $u = Hu / 4,
            Wu = 2 * Hu,
            Ku = 180 / Hu,
            Xu = Hu / 180,
            Zu = Math.abs,
            Ju = Math.atan,
            Qu = Math.atan2,
            tc = Math.cos,
            ec = Math.ceil,
            nc = Math.exp,
            rc = (Math.floor, Math.log),
            ic = Math.pow,
            ac = Math.sin,
            oc = Math.sign || function(t) {
                return t > 0 ? 1 : t < 0 ? -1 : 0
            },
            sc = Math.sqrt,
            uc = Math.tan;

        function cc(t) {
            return t > 1 ? 0 : t < -1 ? Hu : Math.acos(t)
        }

        function fc(t) {
            return t > 1 ? Gu : t < -1 ? -Gu : Math.asin(t)
        }

        function lc(t) {
            return (t = ac(t / 2)) * t
        }

        function hc() {}

        function dc(t, e) {
            t && gc.hasOwnProperty(t.type) && gc[t.type](t, e)
        }
        var pc = {
                Feature: function(t, e) {
                    dc(t.geometry, e)
                },
                FeatureCollection: function(t, e) {
                    for (var n = t.features, r = -1, i = n.length; ++r < i;) dc(n[r].geometry, e)
                }
            },
            gc = {
                Sphere: function(t, e) {
                    e.sphere()
                },
                Point: function(t, e) {
                    t = t.coordinates, e.point(t[0], t[1], t[2])
                },
                MultiPoint: function(t, e) {
                    for (var n = t.coordinates, r = -1, i = n.length; ++r < i;) t = n[r], e.point(t[0], t[1], t[2])
                },
                LineString: function(t, e) {
                    yc(t.coordinates, e, 0)
                },
                MultiLineString: function(t, e) {
                    for (var n = t.coordinates, r = -1, i = n.length; ++r < i;) yc(n[r], e, 0)
                },
                Polygon: function(t, e) {
                    bc(t.coordinates, e)
                },
                MultiPolygon: function(t, e) {
                    for (var n = t.coordinates, r = -1, i = n.length; ++r < i;) bc(n[r], e)
                },
                GeometryCollection: function(t, e) {
                    for (var n = t.geometries, r = -1, i = n.length; ++r < i;) dc(n[r], e)
                }
            };

        function yc(t, e, n) {
            var r, i = -1,
                a = t.length - n;
            for (e.lineStart(); ++i < a;) r = t[i], e.point(r[0], r[1], r[2]);
            e.lineEnd()
        }

        function bc(t, e) {
            var n = -1,
                r = t.length;
            for (e.polygonStart(); ++n < r;) yc(t[n], e, 1);
            e.polygonEnd()
        }
        var vc, mc, _c, wc, xc, kc = function(t, e) {
                t && pc.hasOwnProperty(t.type) ? pc[t.type](t, e) : dc(t, e)
            },
            Ec = qu(),
            Ac = qu(),
            Sc = {
                point: hc,
                lineStart: hc,
                lineEnd: hc,
                polygonStart: function() {
                    Ec.reset(), Sc.lineStart = Mc, Sc.lineEnd = Tc
                },
                polygonEnd: function() {
                    var t = +Ec;
                    Ac.add(t < 0 ? Wu + t : t), this.lineStart = this.lineEnd = this.point = hc
                },
                sphere: function() {
                    Ac.add(Wu)
                }
            };

        function Mc() {
            Sc.point = Dc
        }

        function Tc() {
            Cc(vc, mc)
        }

        function Dc(t, e) {
            Sc.point = Cc, vc = t, mc = e, _c = t *= Xu, wc = tc(e = (e *= Xu) / 2 + $u), xc = ac(e)
        }

        function Cc(t, e) {
            var n = (t *= Xu) - _c,
                r = n >= 0 ? 1 : -1,
                i = r * n,
                a = tc(e = (e *= Xu) / 2 + $u),
                o = ac(e),
                s = xc * o,
                u = wc * a + s * tc(i),
                c = s * r * ac(i);
            Ec.add(Qu(c, u)), _c = t, wc = a, xc = o
        }
        var Nc = function(t) {
            return Ac.reset(), kc(t, Sc), 2 * Ac
        };

        function Ic(t) {
            return [Qu(t[1], t[0]), fc(t[2])]
        }

        function Lc(t) {
            var e = t[0],
                n = t[1],
                r = tc(n);
            return [r * tc(e), r * ac(e), ac(n)]
        }

        function Bc(t, e) {
            return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]
        }

        function Oc(t, e) {
            return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
        }

        function Rc(t, e) {
            t[0] += e[0], t[1] += e[1], t[2] += e[2]
        }

        function Pc(t, e) {
            return [t[0] * e, t[1] * e, t[2] * e]
        }

        function Fc(t) {
            var e = sc(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
            t[0] /= e, t[1] /= e, t[2] /= e
        }
        var qc, jc, Uc, zc, Yc, Vc, Hc, Gc, $c, Wc, Kc = qu(),
            Xc = {
                point: Zc,
                lineStart: Qc,
                lineEnd: tf,
                polygonStart: function() {
                    Xc.point = ef, Xc.lineStart = nf, Xc.lineEnd = rf, Kc.reset(), Sc.polygonStart()
                },
                polygonEnd: function() {
                    Sc.polygonEnd(), Xc.point = Zc, Xc.lineStart = Qc, Xc.lineEnd = tf, Ec < 0 ? (qc = -(Uc = 180), jc = -(zc = 90)) : Kc > Yu ? zc = 90 : Kc < -Yu && (jc = -90), Wc[0] = qc, Wc[1] = Uc
                },
                sphere: function() {
                    qc = -(Uc = 180), jc = -(zc = 90)
                }
            };

        function Zc(t, e) {
            $c.push(Wc = [qc = t, Uc = t]), e < jc && (jc = e), e > zc && (zc = e)
        }

        function Jc(t, e) {
            var n = Lc([t * Xu, e * Xu]);
            if (Gc) {
                var r = Oc(Gc, n),
                    i = Oc([r[1], -r[0], 0], r);
                Fc(i), i = Ic(i);
                var a, o = t - Yc,
                    s = o > 0 ? 1 : -1,
                    u = i[0] * Ku * s,
                    c = Zu(o) > 180;
                c ^ (s * Yc < u && u < s * t) ? (a = i[1] * Ku) > zc && (zc = a) : c ^ (s * Yc < (u = (u + 360) % 360 - 180) && u < s * t) ? (a = -i[1] * Ku) < jc && (jc = a) : (e < jc && (jc = e), e > zc && (zc = e)), c ? t < Yc ? af(qc, t) > af(qc, Uc) && (Uc = t) : af(t, Uc) > af(qc, Uc) && (qc = t) : Uc >= qc ? (t < qc && (qc = t), t > Uc && (Uc = t)) : t > Yc ? af(qc, t) > af(qc, Uc) && (Uc = t) : af(t, Uc) > af(qc, Uc) && (qc = t)
            } else $c.push(Wc = [qc = t, Uc = t]);
            e < jc && (jc = e), e > zc && (zc = e), Gc = n, Yc = t
        }

        function Qc() {
            Xc.point = Jc
        }

        function tf() {
            Wc[0] = qc, Wc[1] = Uc, Xc.point = Zc, Gc = null
        }

        function ef(t, e) {
            if (Gc) {
                var n = t - Yc;
                Kc.add(Zu(n) > 180 ? n + (n > 0 ? 360 : -360) : n)
            } else Vc = t, Hc = e;
            Sc.point(t, e), Jc(t, e)
        }

        function nf() {
            Sc.lineStart()
        }

        function rf() {
            ef(Vc, Hc), Sc.lineEnd(), Zu(Kc) > Yu && (qc = -(Uc = 180)), Wc[0] = qc, Wc[1] = Uc, Gc = null
        }

        function af(t, e) {
            return (e -= t) < 0 ? e + 360 : e
        }

        function of (t, e) {
            return t[0] - e[0]
        }

        function sf(t, e) {
            return t[0] <= t[1] ? t[0] <= e && e <= t[1] : e < t[0] || t[1] < e
        }
        var uf, cf, ff, lf, hf, df, pf, gf, yf, bf, vf, mf, _f, wf, xf, kf, Ef = function(t) {
                var e, n, r, i, a, o, s;
                if (zc = Uc = -(qc = jc = 1 / 0), $c = [], kc(t, Xc), n = $c.length) {
                    for ($c.sort( of ), e = 1, a = [r = $c[0]]; e < n; ++e) sf(r, (i = $c[e])[0]) || sf(r, i[1]) ? (af(r[0], i[1]) > af(r[0], r[1]) && (r[1] = i[1]), af(i[0], r[1]) > af(r[0], r[1]) && (r[0] = i[0])) : a.push(r = i);
                    for (o = -1 / 0, e = 0, r = a[n = a.length - 1]; e <= n; r = i, ++e) i = a[e], (s = af(r[1], i[0])) > o && (o = s, qc = i[0], Uc = r[1])
                }
                return $c = Wc = null, qc === 1 / 0 || jc === 1 / 0 ? [
                    [NaN, NaN],
                    [NaN, NaN]
                ] : [
                    [qc, jc],
                    [Uc, zc]
                ]
            },
            Af = {
                sphere: hc,
                point: Sf,
                lineStart: Tf,
                lineEnd: Nf,
                polygonStart: function() {
                    Af.lineStart = If, Af.lineEnd = Lf
                },
                polygonEnd: function() {
                    Af.lineStart = Tf, Af.lineEnd = Nf
                }
            };

        function Sf(t, e) {
            t *= Xu;
            var n = tc(e *= Xu);
            Mf(n * tc(t), n * ac(t), ac(e))
        }

        function Mf(t, e, n) {
            ++uf, ff += (t - ff) / uf, lf += (e - lf) / uf, hf += (n - hf) / uf
        }

        function Tf() {
            Af.point = Df
        }

        function Df(t, e) {
            t *= Xu;
            var n = tc(e *= Xu);
            wf = n * tc(t), xf = n * ac(t), kf = ac(e), Af.point = Cf, Mf(wf, xf, kf)
        }

        function Cf(t, e) {
            t *= Xu;
            var n = tc(e *= Xu),
                r = n * tc(t),
                i = n * ac(t),
                a = ac(e),
                o = Qu(sc((o = xf * a - kf * i) * o + (o = kf * r - wf * a) * o + (o = wf * i - xf * r) * o), wf * r + xf * i + kf * a);
            cf += o, df += o * (wf + (wf = r)), pf += o * (xf + (xf = i)), gf += o * (kf + (kf = a)), Mf(wf, xf, kf)
        }

        function Nf() {
            Af.point = Sf
        }

        function If() {
            Af.point = Bf
        }

        function Lf() {
            Of(mf, _f), Af.point = Sf
        }

        function Bf(t, e) {
            mf = t, _f = e, t *= Xu, e *= Xu, Af.point = Of;
            var n = tc(e);
            wf = n * tc(t), xf = n * ac(t), kf = ac(e), Mf(wf, xf, kf)
        }

        function Of(t, e) {
            t *= Xu;
            var n = tc(e *= Xu),
                r = n * tc(t),
                i = n * ac(t),
                a = ac(e),
                o = xf * a - kf * i,
                s = kf * r - wf * a,
                u = wf * i - xf * r,
                c = sc(o * o + s * s + u * u),
                f = fc(c),
                l = c && -f / c;
            yf += l * o, bf += l * s, vf += l * u, cf += f, df += f * (wf + (wf = r)), pf += f * (xf + (xf = i)), gf += f * (kf + (kf = a)), Mf(wf, xf, kf)
        }
        var Rf = function(t) {
                uf = cf = ff = lf = hf = df = pf = gf = yf = bf = vf = 0, kc(t, Af);
                var e = yf,
                    n = bf,
                    r = vf,
                    i = e * e + n * n + r * r;
                return i < Vu && (e = df, n = pf, r = gf, cf < Yu && (e = ff, n = lf, r = hf), (i = e * e + n * n + r * r) < Vu) ? [NaN, NaN] : [Qu(n, e) * Ku, fc(r / sc(i)) * Ku]
            },
            Pf = function(t) {
                return function() {
                    return t
                }
            },
            Ff = function(t, e) {
                function n(n, r) {
                    return n = t(n, r), e(n[0], n[1])
                }
                return t.invert && e.invert && (n.invert = function(n, r) {
                    return (n = e.invert(n, r)) && t.invert(n[0], n[1])
                }), n
            };

        function qf(t, e) {
            return [Zu(t) > Hu ? t + Math.round(-t / Wu) * Wu : t, e]
        }

        function jf(t, e, n) {
            return (t %= Wu) ? e || n ? Ff(zf(t), Yf(e, n)) : zf(t) : e || n ? Yf(e, n) : qf
        }

        function Uf(t) {
            return function(e, n) {
                return [(e += t) > Hu ? e - Wu : e < -Hu ? e + Wu : e, n]
            }
        }

        function zf(t) {
            var e = Uf(t);
            return e.invert = Uf(-t), e
        }

        function Yf(t, e) {
            var n = tc(t),
                r = ac(t),
                i = tc(e),
                a = ac(e);

            function o(t, e) {
                var o = tc(e),
                    s = tc(t) * o,
                    u = ac(t) * o,
                    c = ac(e),
                    f = c * n + s * r;
                return [Qu(u * i - f * a, s * n - c * r), fc(f * i + u * a)]
            }
            return o.invert = function(t, e) {
                var o = tc(e),
                    s = tc(t) * o,
                    u = ac(t) * o,
                    c = ac(e),
                    f = c * i - u * a;
                return [Qu(u * i + c * a, s * n + f * r), fc(f * n - s * r)]
            }, o
        }
        qf.invert = qf;
        var Vf = function(t) {
            function e(e) {
                return (e = t(e[0] * Xu, e[1] * Xu))[0] *= Ku, e[1] *= Ku, e
            }
            return t = jf(t[0] * Xu, t[1] * Xu, t.length > 2 ? t[2] * Xu : 0), e.invert = function(e) {
                return (e = t.invert(e[0] * Xu, e[1] * Xu))[0] *= Ku, e[1] *= Ku, e
            }, e
        };

        function Hf(t, e, n, r, i, a) {
            if (n) {
                var o = tc(e),
                    s = ac(e),
                    u = r * n;
                null == i ? (i = e + r * Wu, a = e - u / 2) : (i = Gf(o, i), a = Gf(o, a), (r > 0 ? i < a : i > a) && (i += r * Wu));
                for (var c, f = i; r > 0 ? f > a : f < a; f -= u) c = Ic([o, -s * tc(f), -s * ac(f)]), t.point(c[0], c[1])
            }
        }

        function Gf(t, e) {
            (e = Lc(e))[0] -= t, Fc(e);
            var n = cc(-e[1]);
            return ((-e[2] < 0 ? -n : n) + Wu - Yu) % Wu
        }
        var $f = function() {
                var t, e, n = Pf([0, 0]),
                    r = Pf(90),
                    i = Pf(6),
                    a = {
                        point: function(n, r) {
                            t.push(n = e(n, r)), n[0] *= Ku, n[1] *= Ku
                        }
                    };

                function o() {
                    var o = n.apply(this, arguments),
                        s = r.apply(this, arguments) * Xu,
                        u = i.apply(this, arguments) * Xu;
                    return t = [], e = jf(-o[0] * Xu, -o[1] * Xu, 0).invert, Hf(a, s, u, 1), o = {
                        type: "Polygon",
                        coordinates: [t]
                    }, t = e = null, o
                }
                return o.center = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : Pf([+t[0], +t[1]]), o) : n
                }, o.radius = function(t) {
                    return arguments.length ? (r = "function" == typeof t ? t : Pf(+t), o) : r
                }, o.precision = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : Pf(+t), o) : i
                }, o
            },
            Wf = function() {
                var t, e = [];
                return {
                    point: function(e, n) {
                        t.push([e, n])
                    },
                    lineStart: function() {
                        e.push(t = [])
                    },
                    lineEnd: hc,
                    rejoin: function() {
                        e.length > 1 && e.push(e.pop().concat(e.shift()))
                    },
                    result: function() {
                        var n = e;
                        return e = [], t = null, n
                    }
                }
            },
            Kf = function(t, e) {
                return Zu(t[0] - e[0]) < Yu && Zu(t[1] - e[1]) < Yu
            };

        function Xf(t, e, n, r) {
            this.x = t, this.z = e, this.o = n, this.e = r, this.v = !1, this.n = this.p = null
        }
        var Zf = function(t, e, n, r, i) {
            var a, o, s = [],
                u = [];
            if (t.forEach((function(t) {
                    if (!((e = t.length - 1) <= 0)) {
                        var e, n, r = t[0],
                            o = t[e];
                        if (Kf(r, o)) {
                            for (i.lineStart(), a = 0; a < e; ++a) i.point((r = t[a])[0], r[1]);
                            i.lineEnd()
                        } else s.push(n = new Xf(r, t, null, !0)), u.push(n.o = new Xf(r, null, n, !1)), s.push(n = new Xf(o, t, null, !1)), u.push(n.o = new Xf(o, null, n, !0))
                    }
                })), s.length) {
                for (u.sort(e), Jf(s), Jf(u), a = 0, o = u.length; a < o; ++a) u[a].e = n = !n;
                for (var c, f, l = s[0];;) {
                    for (var h = l, d = !0; h.v;)
                        if ((h = h.n) === l) return;
                    c = h.z, i.lineStart();
                    do {
                        if (h.v = h.o.v = !0, h.e) {
                            if (d)
                                for (a = 0, o = c.length; a < o; ++a) i.point((f = c[a])[0], f[1]);
                            else r(h.x, h.n.x, 1, i);
                            h = h.n
                        } else {
                            if (d)
                                for (c = h.p.z, a = c.length - 1; a >= 0; --a) i.point((f = c[a])[0], f[1]);
                            else r(h.x, h.p.x, -1, i);
                            h = h.p
                        }
                        c = (h = h.o).z, d = !d
                    } while (!h.v);
                    i.lineEnd()
                }
            }
        };

        function Jf(t) {
            if (e = t.length) {
                for (var e, n, r = 0, i = t[0]; ++r < e;) i.n = n = t[r], n.p = i, i = n;
                i.n = n = t[0], n.p = i
            }
        }
        var Qf = qu();

        function tl(t) {
            return Zu(t[0]) <= Hu ? t[0] : oc(t[0]) * ((Zu(t[0]) + Hu) % Wu - Hu)
        }
        var el = function(t, e) {
                var n = tl(e),
                    r = e[1],
                    i = ac(r),
                    a = [ac(n), -tc(n), 0],
                    o = 0,
                    s = 0;
                Qf.reset(), 1 === i ? r = Gu + Yu : -1 === i && (r = -Gu - Yu);
                for (var u = 0, c = t.length; u < c; ++u)
                    if (l = (f = t[u]).length)
                        for (var f, l, h = f[l - 1], d = tl(h), p = h[1] / 2 + $u, g = ac(p), y = tc(p), b = 0; b < l; ++b, d = m, g = w, y = x, h = v) {
                            var v = f[b],
                                m = tl(v),
                                _ = v[1] / 2 + $u,
                                w = ac(_),
                                x = tc(_),
                                k = m - d,
                                E = k >= 0 ? 1 : -1,
                                A = E * k,
                                S = A > Hu,
                                M = g * w;
                            if (Qf.add(Qu(M * E * ac(A), y * x + M * tc(A))), o += S ? k + E * Wu : k, S ^ d >= n ^ m >= n) {
                                var T = Oc(Lc(h), Lc(v));
                                Fc(T);
                                var D = Oc(a, T);
                                Fc(D);
                                var C = (S ^ k >= 0 ? -1 : 1) * fc(D[2]);
                                (r > C || r === C && (T[0] || T[1])) && (s += S ^ k >= 0 ? 1 : -1)
                            }
                        }
                return (o < -Yu || o < Yu && Qf < -Yu) ^ 1 & s
            },
            nl = function(t, e, n, r) {
                return function(i) {
                    var a, o, s, u = e(i),
                        c = Wf(),
                        f = e(c),
                        l = !1,
                        h = {
                            point: d,
                            lineStart: g,
                            lineEnd: y,
                            polygonStart: function() {
                                h.point = b, h.lineStart = v, h.lineEnd = m, o = [], a = []
                            },
                            polygonEnd: function() {
                                h.point = d, h.lineStart = g, h.lineEnd = y, o = P(o);
                                var t = el(a, r);
                                o.length ? (l || (i.polygonStart(), l = !0), Zf(o, il, t, n, i)) : t && (l || (i.polygonStart(), l = !0), i.lineStart(), n(null, null, 1, i), i.lineEnd()), l && (i.polygonEnd(), l = !1), o = a = null
                            },
                            sphere: function() {
                                i.polygonStart(), i.lineStart(), n(null, null, 1, i), i.lineEnd(), i.polygonEnd()
                            }
                        };

                    function d(e, n) {
                        t(e, n) && i.point(e, n)
                    }

                    function p(t, e) {
                        u.point(t, e)
                    }

                    function g() {
                        h.point = p, u.lineStart()
                    }

                    function y() {
                        h.point = d, u.lineEnd()
                    }

                    function b(t, e) {
                        s.push([t, e]), f.point(t, e)
                    }

                    function v() {
                        f.lineStart(), s = []
                    }

                    function m() {
                        b(s[0][0], s[0][1]), f.lineEnd();
                        var t, e, n, r, u = f.clean(),
                            h = c.result(),
                            d = h.length;
                        if (s.pop(), a.push(s), s = null, d)
                            if (1 & u) {
                                if ((e = (n = h[0]).length - 1) > 0) {
                                    for (l || (i.polygonStart(), l = !0), i.lineStart(), t = 0; t < e; ++t) i.point((r = n[t])[0], r[1]);
                                    i.lineEnd()
                                }
                            } else d > 1 && 2 & u && h.push(h.pop().concat(h.shift())), o.push(h.filter(rl))
                    }
                    return h
                }
            };

        function rl(t) {
            return t.length > 1
        }

        function il(t, e) {
            return ((t = t.x)[0] < 0 ? t[1] - Gu - Yu : Gu - t[1]) - ((e = e.x)[0] < 0 ? e[1] - Gu - Yu : Gu - e[1])
        }
        var al = nl((function() {
            return !0
        }), (function(t) {
            var e, n = NaN,
                r = NaN,
                i = NaN;
            return {
                lineStart: function() {
                    t.lineStart(), e = 1
                },
                point: function(a, o) {
                    var s = a > 0 ? Hu : -Hu,
                        u = Zu(a - n);
                    Zu(u - Hu) < Yu ? (t.point(n, r = (r + o) / 2 > 0 ? Gu : -Gu), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(s, r), t.point(a, r), e = 0) : i !== s && u >= Hu && (Zu(n - i) < Yu && (n -= i * Yu), Zu(a - s) < Yu && (a -= s * Yu), r = function(t, e, n, r) {
                        var i, a, o = ac(t - n);
                        return Zu(o) > Yu ? Ju((ac(e) * (a = tc(r)) * ac(n) - ac(r) * (i = tc(e)) * ac(t)) / (i * a * o)) : (e + r) / 2
                    }(n, r, a, o), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(s, r), e = 0), t.point(n = a, r = o), i = s
                },
                lineEnd: function() {
                    t.lineEnd(), n = r = NaN
                },
                clean: function() {
                    return 2 - e
                }
            }
        }), (function(t, e, n, r) {
            var i;
            if (null == t) i = n * Gu, r.point(-Hu, i), r.point(0, i), r.point(Hu, i), r.point(Hu, 0), r.point(Hu, -i), r.point(0, -i), r.point(-Hu, -i), r.point(-Hu, 0), r.point(-Hu, i);
            else if (Zu(t[0] - e[0]) > Yu) {
                var a = t[0] < e[0] ? Hu : -Hu;
                i = n * a / 2, r.point(-a, i), r.point(0, i), r.point(a, i)
            } else r.point(e[0], e[1])
        }), [-Hu, -Gu]);
        var ol = function(t) {
                var e = tc(t),
                    n = 6 * Xu,
                    r = e > 0,
                    i = Zu(e) > Yu;

                function a(t, n) {
                    return tc(t) * tc(n) > e
                }

                function o(t, n, r) {
                    var i = [1, 0, 0],
                        a = Oc(Lc(t), Lc(n)),
                        o = Bc(a, a),
                        s = a[0],
                        u = o - s * s;
                    if (!u) return !r && t;
                    var c = e * o / u,
                        f = -e * s / u,
                        l = Oc(i, a),
                        h = Pc(i, c);
                    Rc(h, Pc(a, f));
                    var d = l,
                        p = Bc(h, d),
                        g = Bc(d, d),
                        y = p * p - g * (Bc(h, h) - 1);
                    if (!(y < 0)) {
                        var b = sc(y),
                            v = Pc(d, (-p - b) / g);
                        if (Rc(v, h), v = Ic(v), !r) return v;
                        var m, _ = t[0],
                            w = n[0],
                            x = t[1],
                            k = n[1];
                        w < _ && (m = _, _ = w, w = m);
                        var E = w - _,
                            A = Zu(E - Hu) < Yu;
                        if (!A && k < x && (m = x, x = k, k = m), A || E < Yu ? A ? x + k > 0 ^ v[1] < (Zu(v[0] - _) < Yu ? x : k) : x <= v[1] && v[1] <= k : E > Hu ^ (_ <= v[0] && v[0] <= w)) {
                            var S = Pc(d, (-p + b) / g);
                            return Rc(S, h), [v, Ic(S)]
                        }
                    }
                }

                function s(e, n) {
                    var i = r ? t : Hu - t,
                        a = 0;
                    return e < -i ? a |= 1 : e > i && (a |= 2), n < -i ? a |= 4 : n > i && (a |= 8), a
                }
                return nl(a, (function(t) {
                    var e, n, u, c, f;
                    return {
                        lineStart: function() {
                            c = u = !1, f = 1
                        },
                        point: function(l, h) {
                            var d, p = [l, h],
                                g = a(l, h),
                                y = r ? g ? 0 : s(l, h) : g ? s(l + (l < 0 ? Hu : -Hu), h) : 0;
                            if (!e && (c = u = g) && t.lineStart(), g !== u && (!(d = o(e, p)) || Kf(e, d) || Kf(p, d)) && (p[0] += Yu, p[1] += Yu, g = a(p[0], p[1])), g !== u) f = 0, g ? (t.lineStart(), d = o(p, e), t.point(d[0], d[1])) : (d = o(e, p), t.point(d[0], d[1]), t.lineEnd()), e = d;
                            else if (i && e && r ^ g) {
                                var b;
                                y & n || !(b = o(p, e, !0)) || (f = 0, r ? (t.lineStart(), t.point(b[0][0], b[0][1]), t.point(b[1][0], b[1][1]), t.lineEnd()) : (t.point(b[1][0], b[1][1]), t.lineEnd(), t.lineStart(), t.point(b[0][0], b[0][1])))
                            }!g || e && Kf(e, p) || t.point(p[0], p[1]), e = p, u = g, n = y
                        },
                        lineEnd: function() {
                            u && t.lineEnd(), e = null
                        },
                        clean: function() {
                            return f | (c && u) << 1
                        }
                    }
                }), (function(e, r, i, a) {
                    Hf(a, t, n, i, e, r)
                }), r ? [0, -t] : [-Hu, t - Hu])
            },
            sl = function(t, e, n, r, i, a) {
                var o, s = t[0],
                    u = t[1],
                    c = 0,
                    f = 1,
                    l = e[0] - s,
                    h = e[1] - u;
                if (o = n - s, l || !(o > 0)) {
                    if (o /= l, l < 0) {
                        if (o < c) return;
                        o < f && (f = o)
                    } else if (l > 0) {
                        if (o > f) return;
                        o > c && (c = o)
                    }
                    if (o = i - s, l || !(o < 0)) {
                        if (o /= l, l < 0) {
                            if (o > f) return;
                            o > c && (c = o)
                        } else if (l > 0) {
                            if (o < c) return;
                            o < f && (f = o)
                        }
                        if (o = r - u, h || !(o > 0)) {
                            if (o /= h, h < 0) {
                                if (o < c) return;
                                o < f && (f = o)
                            } else if (h > 0) {
                                if (o > f) return;
                                o > c && (c = o)
                            }
                            if (o = a - u, h || !(o < 0)) {
                                if (o /= h, h < 0) {
                                    if (o > f) return;
                                    o > c && (c = o)
                                } else if (h > 0) {
                                    if (o < c) return;
                                    o < f && (f = o)
                                }
                                return c > 0 && (t[0] = s + c * l, t[1] = u + c * h), f < 1 && (e[0] = s + f * l, e[1] = u + f * h), !0
                            }
                        }
                    }
                }
            },
            ul = 1e9,
            cl = -ul;

        function fl(t, e, n, r) {
            function i(i, a) {
                return t <= i && i <= n && e <= a && a <= r
            }

            function a(i, a, s, c) {
                var f = 0,
                    l = 0;
                if (null == i || (f = o(i, s)) !== (l = o(a, s)) || u(i, a) < 0 ^ s > 0)
                    do {
                        c.point(0 === f || 3 === f ? t : n, f > 1 ? r : e)
                    } while ((f = (f + s + 4) % 4) !== l);
                else c.point(a[0], a[1])
            }

            function o(r, i) {
                return Zu(r[0] - t) < Yu ? i > 0 ? 0 : 3 : Zu(r[0] - n) < Yu ? i > 0 ? 2 : 1 : Zu(r[1] - e) < Yu ? i > 0 ? 1 : 0 : i > 0 ? 3 : 2
            }

            function s(t, e) {
                return u(t.x, e.x)
            }

            function u(t, e) {
                var n = o(t, 1),
                    r = o(e, 1);
                return n !== r ? n - r : 0 === n ? e[1] - t[1] : 1 === n ? t[0] - e[0] : 2 === n ? t[1] - e[1] : e[0] - t[0]
            }
            return function(o) {
                var u, c, f, l, h, d, p, g, y, b, v, m = o,
                    _ = Wf(),
                    w = {
                        point: x,
                        lineStart: function() {
                            w.point = k, c && c.push(f = []);
                            b = !0, y = !1, p = g = NaN
                        },
                        lineEnd: function() {
                            u && (k(l, h), d && y && _.rejoin(), u.push(_.result()));
                            w.point = x, y && m.lineEnd()
                        },
                        polygonStart: function() {
                            m = _, u = [], c = [], v = !0
                        },
                        polygonEnd: function() {
                            var e = function() {
                                    for (var e = 0, n = 0, i = c.length; n < i; ++n)
                                        for (var a, o, s = c[n], u = 1, f = s.length, l = s[0], h = l[0], d = l[1]; u < f; ++u) a = h, o = d, l = s[u], h = l[0], d = l[1], o <= r ? d > r && (h - a) * (r - o) > (d - o) * (t - a) && ++e : d <= r && (h - a) * (r - o) < (d - o) * (t - a) && --e;
                                    return e
                                }(),
                                n = v && e,
                                i = (u = P(u)).length;
                            (n || i) && (o.polygonStart(), n && (o.lineStart(), a(null, null, 1, o), o.lineEnd()), i && Zf(u, s, e, a, o), o.polygonEnd());
                            m = o, u = c = f = null
                        }
                    };

                function x(t, e) {
                    i(t, e) && m.point(t, e)
                }

                function k(a, o) {
                    var s = i(a, o);
                    if (c && f.push([a, o]), b) l = a, h = o, d = s, b = !1, s && (m.lineStart(), m.point(a, o));
                    else if (s && y) m.point(a, o);
                    else {
                        var u = [p = Math.max(cl, Math.min(ul, p)), g = Math.max(cl, Math.min(ul, g))],
                            _ = [a = Math.max(cl, Math.min(ul, a)), o = Math.max(cl, Math.min(ul, o))];
                        sl(u, _, t, e, n, r) ? (y || (m.lineStart(), m.point(u[0], u[1])), m.point(_[0], _[1]), s || m.lineEnd(), v = !1) : s && (m.lineStart(), m.point(a, o), v = !1)
                    }
                    p = a, g = o, y = s
                }
                return w
            }
        }
        var ll, hl, dl, pl = function() {
                var t, e, n, r = 0,
                    i = 0,
                    a = 960,
                    o = 500;
                return n = {
                    stream: function(n) {
                        return t && e === n ? t : t = fl(r, i, a, o)(e = n)
                    },
                    extent: function(s) {
                        return arguments.length ? (r = +s[0][0], i = +s[0][1], a = +s[1][0], o = +s[1][1], t = e = null, n) : [
                            [r, i],
                            [a, o]
                        ]
                    }
                }
            },
            gl = qu(),
            yl = {
                sphere: hc,
                point: hc,
                lineStart: function() {
                    yl.point = vl, yl.lineEnd = bl
                },
                lineEnd: hc,
                polygonStart: hc,
                polygonEnd: hc
            };

        function bl() {
            yl.point = yl.lineEnd = hc
        }

        function vl(t, e) {
            ll = t *= Xu, hl = ac(e *= Xu), dl = tc(e), yl.point = ml
        }

        function ml(t, e) {
            t *= Xu;
            var n = ac(e *= Xu),
                r = tc(e),
                i = Zu(t - ll),
                a = tc(i),
                o = r * ac(i),
                s = dl * n - hl * r * a,
                u = hl * n + dl * r * a;
            gl.add(Qu(sc(o * o + s * s), u)), ll = t, hl = n, dl = r
        }
        var _l = function(t) {
                return gl.reset(), kc(t, yl), +gl
            },
            wl = [null, null],
            xl = {
                type: "LineString",
                coordinates: wl
            },
            kl = function(t, e) {
                return wl[0] = t, wl[1] = e, _l(xl)
            },
            El = {
                Feature: function(t, e) {
                    return Sl(t.geometry, e)
                },
                FeatureCollection: function(t, e) {
                    for (var n = t.features, r = -1, i = n.length; ++r < i;)
                        if (Sl(n[r].geometry, e)) return !0;
                    return !1
                }
            },
            Al = {
                Sphere: function() {
                    return !0
                },
                Point: function(t, e) {
                    return Ml(t.coordinates, e)
                },
                MultiPoint: function(t, e) {
                    for (var n = t.coordinates, r = -1, i = n.length; ++r < i;)
                        if (Ml(n[r], e)) return !0;
                    return !1
                },
                LineString: function(t, e) {
                    return Tl(t.coordinates, e)
                },
                MultiLineString: function(t, e) {
                    for (var n = t.coordinates, r = -1, i = n.length; ++r < i;)
                        if (Tl(n[r], e)) return !0;
                    return !1
                },
                Polygon: function(t, e) {
                    return Dl(t.coordinates, e)
                },
                MultiPolygon: function(t, e) {
                    for (var n = t.coordinates, r = -1, i = n.length; ++r < i;)
                        if (Dl(n[r], e)) return !0;
                    return !1
                },
                GeometryCollection: function(t, e) {
                    for (var n = t.geometries, r = -1, i = n.length; ++r < i;)
                        if (Sl(n[r], e)) return !0;
                    return !1
                }
            };

        function Sl(t, e) {
            return !(!t || !Al.hasOwnProperty(t.type)) && Al[t.type](t, e)
        }

        function Ml(t, e) {
            return 0 === kl(t, e)
        }

        function Tl(t, e) {
            for (var n, r, i, a = 0, o = t.length; a < o; a++) {
                if (0 === (r = kl(t[a], e))) return !0;
                if (a > 0 && (i = kl(t[a], t[a - 1])) > 0 && n <= i && r <= i && (n + r - i) * (1 - Math.pow((n - r) / i, 2)) < Vu * i) return !0;
                n = r
            }
            return !1
        }

        function Dl(t, e) {
            return !!el(t.map(Cl), Nl(e))
        }

        function Cl(t) {
            return (t = t.map(Nl)).pop(), t
        }

        function Nl(t) {
            return [t[0] * Xu, t[1] * Xu]
        }
        var Il = function(t, e) {
            return (t && El.hasOwnProperty(t.type) ? El[t.type] : Sl)(t, e)
        };

        function Ll(t, e, n) {
            var r = x(t, e - Yu, n).concat(e);
            return function(t) {
                return r.map((function(e) {
                    return [t, e]
                }))
            }
        }

        function Bl(t, e, n) {
            var r = x(t, e - Yu, n).concat(e);
            return function(t) {
                return r.map((function(e) {
                    return [e, t]
                }))
            }
        }

        function Ol() {
            var t, e, n, r, i, a, o, s, u, c, f, l, h = 10,
                d = h,
                p = 90,
                g = 360,
                y = 2.5;

            function b() {
                return {
                    type: "MultiLineString",
                    coordinates: v()
                }
            }

            function v() {
                return x(ec(r / p) * p, n, p).map(f).concat(x(ec(s / g) * g, o, g).map(l)).concat(x(ec(e / h) * h, t, h).filter((function(t) {
                    return Zu(t % p) > Yu
                })).map(u)).concat(x(ec(a / d) * d, i, d).filter((function(t) {
                    return Zu(t % g) > Yu
                })).map(c))
            }
            return b.lines = function() {
                return v().map((function(t) {
                    return {
                        type: "LineString",
                        coordinates: t
                    }
                }))
            }, b.outline = function() {
                return {
                    type: "Polygon",
                    coordinates: [f(r).concat(l(o).slice(1), f(n).reverse().slice(1), l(s).reverse().slice(1))]
                }
            }, b.extent = function(t) {
                return arguments.length ? b.extentMajor(t).extentMinor(t) : b.extentMinor()
            }, b.extentMajor = function(t) {
                return arguments.length ? (r = +t[0][0], n = +t[1][0], s = +t[0][1], o = +t[1][1], r > n && (t = r, r = n, n = t), s > o && (t = s, s = o, o = t), b.precision(y)) : [
                    [r, s],
                    [n, o]
                ]
            }, b.extentMinor = function(n) {
                return arguments.length ? (e = +n[0][0], t = +n[1][0], a = +n[0][1], i = +n[1][1], e > t && (n = e, e = t, t = n), a > i && (n = a, a = i, i = n), b.precision(y)) : [
                    [e, a],
                    [t, i]
                ]
            }, b.step = function(t) {
                return arguments.length ? b.stepMajor(t).stepMinor(t) : b.stepMinor()
            }, b.stepMajor = function(t) {
                return arguments.length ? (p = +t[0], g = +t[1], b) : [p, g]
            }, b.stepMinor = function(t) {
                return arguments.length ? (h = +t[0], d = +t[1], b) : [h, d]
            }, b.precision = function(h) {
                return arguments.length ? (y = +h, u = Ll(a, i, 90), c = Bl(e, t, y), f = Ll(s, o, 90), l = Bl(r, n, y), b) : y
            }, b.extentMajor([
                [-180, -90 + Yu],
                [180, 90 - Yu]
            ]).extentMinor([
                [-180, -80 - Yu],
                [180, 80 + Yu]
            ])
        }

        function Rl() {
            return Ol()()
        }
        var Pl, Fl, ql, jl, Ul = function(t, e) {
                var n = t[0] * Xu,
                    r = t[1] * Xu,
                    i = e[0] * Xu,
                    a = e[1] * Xu,
                    o = tc(r),
                    s = ac(r),
                    u = tc(a),
                    c = ac(a),
                    f = o * tc(n),
                    l = o * ac(n),
                    h = u * tc(i),
                    d = u * ac(i),
                    p = 2 * fc(sc(lc(a - r) + o * u * lc(i - n))),
                    g = ac(p),
                    y = p ? function(t) {
                        var e = ac(t *= p) / g,
                            n = ac(p - t) / g,
                            r = n * f + e * h,
                            i = n * l + e * d,
                            a = n * s + e * c;
                        return [Qu(i, r) * Ku, Qu(a, sc(r * r + i * i)) * Ku]
                    } : function() {
                        return [n * Ku, r * Ku]
                    };
                return y.distance = p, y
            },
            zl = function(t) {
                return t
            },
            Yl = qu(),
            Vl = qu(),
            Hl = {
                point: hc,
                lineStart: hc,
                lineEnd: hc,
                polygonStart: function() {
                    Hl.lineStart = Gl, Hl.lineEnd = Kl
                },
                polygonEnd: function() {
                    Hl.lineStart = Hl.lineEnd = Hl.point = hc, Yl.add(Zu(Vl)), Vl.reset()
                },
                result: function() {
                    var t = Yl / 2;
                    return Yl.reset(), t
                }
            };

        function Gl() {
            Hl.point = $l
        }

        function $l(t, e) {
            Hl.point = Wl, Pl = ql = t, Fl = jl = e
        }

        function Wl(t, e) {
            Vl.add(jl * t - ql * e), ql = t, jl = e
        }

        function Kl() {
            Wl(Pl, Fl)
        }
        var Xl = Hl,
            Zl = 1 / 0,
            Jl = Zl,
            Ql = -Zl,
            th = Ql;
        var eh, nh, rh, ih, ah = {
                point: function(t, e) {
                    t < Zl && (Zl = t);
                    t > Ql && (Ql = t);
                    e < Jl && (Jl = e);
                    e > th && (th = e)
                },
                lineStart: hc,
                lineEnd: hc,
                polygonStart: hc,
                polygonEnd: hc,
                result: function() {
                    var t = [
                        [Zl, Jl],
                        [Ql, th]
                    ];
                    return Ql = th = -(Jl = Zl = 1 / 0), t
                }
            },
            oh = 0,
            sh = 0,
            uh = 0,
            ch = 0,
            fh = 0,
            lh = 0,
            hh = 0,
            dh = 0,
            ph = 0,
            gh = {
                point: yh,
                lineStart: bh,
                lineEnd: _h,
                polygonStart: function() {
                    gh.lineStart = wh, gh.lineEnd = xh
                },
                polygonEnd: function() {
                    gh.point = yh, gh.lineStart = bh, gh.lineEnd = _h
                },
                result: function() {
                    var t = ph ? [hh / ph, dh / ph] : lh ? [ch / lh, fh / lh] : uh ? [oh / uh, sh / uh] : [NaN, NaN];
                    return oh = sh = uh = ch = fh = lh = hh = dh = ph = 0, t
                }
            };

        function yh(t, e) {
            oh += t, sh += e, ++uh
        }

        function bh() {
            gh.point = vh
        }

        function vh(t, e) {
            gh.point = mh, yh(rh = t, ih = e)
        }

        function mh(t, e) {
            var n = t - rh,
                r = e - ih,
                i = sc(n * n + r * r);
            ch += i * (rh + t) / 2, fh += i * (ih + e) / 2, lh += i, yh(rh = t, ih = e)
        }

        function _h() {
            gh.point = yh
        }

        function wh() {
            gh.point = kh
        }

        function xh() {
            Eh(eh, nh)
        }

        function kh(t, e) {
            gh.point = Eh, yh(eh = rh = t, nh = ih = e)
        }

        function Eh(t, e) {
            var n = t - rh,
                r = e - ih,
                i = sc(n * n + r * r);
            ch += i * (rh + t) / 2, fh += i * (ih + e) / 2, lh += i, hh += (i = ih * t - rh * e) * (rh + t), dh += i * (ih + e), ph += 3 * i, yh(rh = t, ih = e)
        }
        var Ah = gh;

        function Sh(t) {
            this._context = t
        }
        Sh.prototype = {
            _radius: 4.5,
            pointRadius: function(t) {
                return this._radius = t, this
            },
            polygonStart: function() {
                this._line = 0
            },
            polygonEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._point = 0
            },
            lineEnd: function() {
                0 === this._line && this._context.closePath(), this._point = NaN
            },
            point: function(t, e) {
                switch (this._point) {
                    case 0:
                        this._context.moveTo(t, e), this._point = 1;
                        break;
                    case 1:
                        this._context.lineTo(t, e);
                        break;
                    default:
                        this._context.moveTo(t + this._radius, e), this._context.arc(t, e, this._radius, 0, Wu)
                }
            },
            result: hc
        };
        var Mh, Th, Dh, Ch, Nh, Ih = qu(),
            Lh = {
                point: hc,
                lineStart: function() {
                    Lh.point = Bh
                },
                lineEnd: function() {
                    Mh && Oh(Th, Dh), Lh.point = hc
                },
                polygonStart: function() {
                    Mh = !0
                },
                polygonEnd: function() {
                    Mh = null
                },
                result: function() {
                    var t = +Ih;
                    return Ih.reset(), t
                }
            };

        function Bh(t, e) {
            Lh.point = Oh, Th = Ch = t, Dh = Nh = e
        }

        function Oh(t, e) {
            Ch -= t, Nh -= e, Ih.add(sc(Ch * Ch + Nh * Nh)), Ch = t, Nh = e
        }
        var Rh = Lh;

        function Ph() {
            this._string = []
        }

        function Fh(t) {
            return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z"
        }
        Ph.prototype = {
            _radius: 4.5,
            _circle: Fh(4.5),
            pointRadius: function(t) {
                return (t = +t) !== this._radius && (this._radius = t, this._circle = null), this
            },
            polygonStart: function() {
                this._line = 0
            },
            polygonEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._point = 0
            },
            lineEnd: function() {
                0 === this._line && this._string.push("Z"), this._point = NaN
            },
            point: function(t, e) {
                switch (this._point) {
                    case 0:
                        this._string.push("M", t, ",", e), this._point = 1;
                        break;
                    case 1:
                        this._string.push("L", t, ",", e);
                        break;
                    default:
                        null == this._circle && (this._circle = Fh(this._radius)), this._string.push("M", t, ",", e, this._circle)
                }
            },
            result: function() {
                if (this._string.length) {
                    var t = this._string.join("");
                    return this._string = [], t
                }
                return null
            }
        };
        var qh = function(t, e) {
                var n, r, i = 4.5;

                function a(t) {
                    return t && ("function" == typeof i && r.pointRadius(+i.apply(this, arguments)), kc(t, n(r))), r.result()
                }
                return a.area = function(t) {
                    return kc(t, n(Xl)), Xl.result()
                }, a.measure = function(t) {
                    return kc(t, n(Rh)), Rh.result()
                }, a.bounds = function(t) {
                    return kc(t, n(ah)), ah.result()
                }, a.centroid = function(t) {
                    return kc(t, n(Ah)), Ah.result()
                }, a.projection = function(e) {
                    return arguments.length ? (n = null == e ? (t = null, zl) : (t = e).stream, a) : t
                }, a.context = function(t) {
                    return arguments.length ? (r = null == t ? (e = null, new Ph) : new Sh(e = t), "function" != typeof i && r.pointRadius(i), a) : e
                }, a.pointRadius = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : (r.pointRadius(+t), +t), a) : i
                }, a.projection(t).context(e)
            },
            jh = function(t) {
                return {
                    stream: Uh(t)
                }
            };

        function Uh(t) {
            return function(e) {
                var n = new zh;
                for (var r in t) n[r] = t[r];
                return n.stream = e, n
            }
        }

        function zh() {}

        function Yh(t, e, n) {
            var r = t.clipExtent && t.clipExtent();
            return t.scale(150).translate([0, 0]), null != r && t.clipExtent(null), kc(n, t.stream(ah)), e(ah.result()), null != r && t.clipExtent(r), t
        }

        function Vh(t, e, n) {
            return Yh(t, (function(n) {
                var r = e[1][0] - e[0][0],
                    i = e[1][1] - e[0][1],
                    a = Math.min(r / (n[1][0] - n[0][0]), i / (n[1][1] - n[0][1])),
                    o = +e[0][0] + (r - a * (n[1][0] + n[0][0])) / 2,
                    s = +e[0][1] + (i - a * (n[1][1] + n[0][1])) / 2;
                t.scale(150 * a).translate([o, s])
            }), n)
        }

        function Hh(t, e, n) {
            return Vh(t, [
                [0, 0], e
            ], n)
        }

        function Gh(t, e, n) {
            return Yh(t, (function(n) {
                var r = +e,
                    i = r / (n[1][0] - n[0][0]),
                    a = (r - i * (n[1][0] + n[0][0])) / 2,
                    o = -i * n[0][1];
                t.scale(150 * i).translate([a, o])
            }), n)
        }

        function $h(t, e, n) {
            return Yh(t, (function(n) {
                var r = +e,
                    i = r / (n[1][1] - n[0][1]),
                    a = -i * n[0][0],
                    o = (r - i * (n[1][1] + n[0][1])) / 2;
                t.scale(150 * i).translate([a, o])
            }), n)
        }
        zh.prototype = {
            constructor: zh,
            point: function(t, e) {
                this.stream.point(t, e)
            },
            sphere: function() {
                this.stream.sphere()
            },
            lineStart: function() {
                this.stream.lineStart()
            },
            lineEnd: function() {
                this.stream.lineEnd()
            },
            polygonStart: function() {
                this.stream.polygonStart()
            },
            polygonEnd: function() {
                this.stream.polygonEnd()
            }
        };
        var Wh = 16,
            Kh = tc(30 * Xu),
            Xh = function(t, e) {
                return +e ? function(t, e) {
                    function n(r, i, a, o, s, u, c, f, l, h, d, p, g, y) {
                        var b = c - r,
                            v = f - i,
                            m = b * b + v * v;
                        if (m > 4 * e && g--) {
                            var _ = o + h,
                                w = s + d,
                                x = u + p,
                                k = sc(_ * _ + w * w + x * x),
                                E = fc(x /= k),
                                A = Zu(Zu(x) - 1) < Yu || Zu(a - l) < Yu ? (a + l) / 2 : Qu(w, _),
                                S = t(A, E),
                                M = S[0],
                                T = S[1],
                                D = M - r,
                                C = T - i,
                                N = v * D - b * C;
                            (N * N / m > e || Zu((b * D + v * C) / m - .5) > .3 || o * h + s * d + u * p < Kh) && (n(r, i, a, o, s, u, M, T, A, _ /= k, w /= k, x, g, y), y.point(M, T), n(M, T, A, _, w, x, c, f, l, h, d, p, g, y))
                        }
                    }
                    return function(e) {
                        var r, i, a, o, s, u, c, f, l, h, d, p, g = {
                            point: y,
                            lineStart: b,
                            lineEnd: m,
                            polygonStart: function() {
                                e.polygonStart(), g.lineStart = _
                            },
                            polygonEnd: function() {
                                e.polygonEnd(), g.lineStart = b
                            }
                        };

                        function y(n, r) {
                            n = t(n, r), e.point(n[0], n[1])
                        }

                        function b() {
                            f = NaN, g.point = v, e.lineStart()
                        }

                        function v(r, i) {
                            var a = Lc([r, i]),
                                o = t(r, i);
                            n(f, l, c, h, d, p, f = o[0], l = o[1], c = r, h = a[0], d = a[1], p = a[2], Wh, e), e.point(f, l)
                        }

                        function m() {
                            g.point = y, e.lineEnd()
                        }

                        function _() {
                            b(), g.point = w, g.lineEnd = x
                        }

                        function w(t, e) {
                            v(r = t, e), i = f, a = l, o = h, s = d, u = p, g.point = v
                        }

                        function x() {
                            n(f, l, c, h, d, p, i, a, r, o, s, u, Wh, e), g.lineEnd = m, m()
                        }
                        return g
                    }
                }(t, e) : function(t) {
                    return Uh({
                        point: function(e, n) {
                            e = t(e, n), this.stream.point(e[0], e[1])
                        }
                    })
                }(t)
            };
        var Zh = Uh({
            point: function(t, e) {
                this.stream.point(t * Xu, e * Xu)
            }
        });

        function Jh(t, e, n) {
            function r(r, i) {
                return [e + t * r, n - t * i]
            }
            return r.invert = function(r, i) {
                return [(r - e) / t, (n - i) / t]
            }, r
        }

        function Qh(t, e, n, r) {
            var i = tc(r),
                a = ac(r),
                o = i * t,
                s = a * t,
                u = i / t,
                c = a / t,
                f = (a * n - i * e) / t,
                l = (a * e + i * n) / t;

            function h(t, r) {
                return [o * t - s * r + e, n - s * t - o * r]
            }
            return h.invert = function(t, e) {
                return [u * t - c * e + f, l - c * t - u * e]
            }, h
        }

        function td(t) {
            return ed((function() {
                return t
            }))()
        }

        function ed(t) {
            var e, n, r, i, a, o, s, u, c, f, l = 150,
                h = 480,
                d = 250,
                p = 0,
                g = 0,
                y = 0,
                b = 0,
                v = 0,
                m = 0,
                _ = null,
                w = al,
                x = null,
                k = zl,
                E = .5;

            function A(t) {
                return u(t[0] * Xu, t[1] * Xu)
            }

            function S(t) {
                return (t = u.invert(t[0], t[1])) && [t[0] * Ku, t[1] * Ku]
            }

            function M() {
                var t = Qh(l, 0, 0, m).apply(null, e(p, g)),
                    r = (m ? Qh : Jh)(l, h - t[0], d - t[1], m);
                return n = jf(y, b, v), s = Ff(e, r), u = Ff(n, s), o = Xh(s, E), T()
            }

            function T() {
                return c = f = null, A
            }
            return A.stream = function(t) {
                    return c && f === t ? c : c = Zh(function(t) {
                        return Uh({
                            point: function(e, n) {
                                var r = t(e, n);
                                return this.stream.point(r[0], r[1])
                            }
                        })
                    }(n)(w(o(k(f = t)))))
                }, A.preclip = function(t) {
                    return arguments.length ? (w = t, _ = void 0, T()) : w
                }, A.postclip = function(t) {
                    return arguments.length ? (k = t, x = r = i = a = null, T()) : k
                }, A.clipAngle = function(t) {
                    return arguments.length ? (w = +t ? ol(_ = t * Xu) : (_ = null, al), T()) : _ * Ku
                }, A.clipExtent = function(t) {
                    return arguments.length ? (k = null == t ? (x = r = i = a = null, zl) : fl(x = +t[0][0], r = +t[0][1], i = +t[1][0], a = +t[1][1]), T()) : null == x ? null : [
                        [x, r],
                        [i, a]
                    ]
                }, A.scale = function(t) {
                    return arguments.length ? (l = +t, M()) : l
                }, A.translate = function(t) {
                    return arguments.length ? (h = +t[0], d = +t[1], M()) : [h, d]
                }, A.center = function(t) {
                    return arguments.length ? (p = t[0] % 360 * Xu, g = t[1] % 360 * Xu, M()) : [p * Ku, g * Ku]
                }, A.rotate = function(t) {
                    return arguments.length ? (y = t[0] % 360 * Xu, b = t[1] % 360 * Xu, v = t.length > 2 ? t[2] % 360 * Xu : 0, M()) : [y * Ku, b * Ku, v * Ku]
                }, A.angle = function(t) {
                    return arguments.length ? (m = t % 360 * Xu, M()) : m * Ku
                }, A.precision = function(t) {
                    return arguments.length ? (o = Xh(s, E = t * t), T()) : sc(E)
                }, A.fitExtent = function(t, e) {
                    return Vh(A, t, e)
                }, A.fitSize = function(t, e) {
                    return Hh(A, t, e)
                }, A.fitWidth = function(t, e) {
                    return Gh(A, t, e)
                }, A.fitHeight = function(t, e) {
                    return $h(A, t, e)
                },
                function() {
                    return e = t.apply(this, arguments), A.invert = e.invert && S, M()
                }
        }

        function nd(t) {
            var e = 0,
                n = Hu / 3,
                r = ed(t),
                i = r(e, n);
            return i.parallels = function(t) {
                return arguments.length ? r(e = t[0] * Xu, n = t[1] * Xu) : [e * Ku, n * Ku]
            }, i
        }

        function rd(t, e) {
            var n = ac(t),
                r = (n + ac(e)) / 2;
            if (Zu(r) < Yu) return function(t) {
                var e = tc(t);

                function n(t, n) {
                    return [t * e, ac(n) / e]
                }
                return n.invert = function(t, n) {
                    return [t / e, fc(n * e)]
                }, n
            }(t);
            var i = 1 + n * (2 * r - n),
                a = sc(i) / r;

            function o(t, e) {
                var n = sc(i - 2 * r * ac(e)) / r;
                return [n * ac(t *= r), a - n * tc(t)]
            }
            return o.invert = function(t, e) {
                var n = a - e;
                return [Qu(t, Zu(n)) / r * oc(n), fc((i - (t * t + n * n) * r * r) / (2 * r))]
            }, o
        }
        var id = function() {
                return nd(rd).scale(155.424).center([0, 33.6442])
            },
            ad = function() {
                return id().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-.6, 38.7])
            };
        var od = function() {
            var t, e, n, r, i, a, o = ad(),
                s = id().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),
                u = id().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),
                c = {
                    point: function(t, e) {
                        a = [t, e]
                    }
                };

            function f(t) {
                var e = t[0],
                    o = t[1];
                return a = null, n.point(e, o), a || (r.point(e, o), a) || (i.point(e, o), a)
            }

            function l() {
                return t = e = null, f
            }
            return f.invert = function(t) {
                var e = o.scale(),
                    n = o.translate(),
                    r = (t[0] - n[0]) / e,
                    i = (t[1] - n[1]) / e;
                return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? s : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? u : o).invert(t)
            }, f.stream = function(n) {
                return t && e === n ? t : (r = [o.stream(e = n), s.stream(n), u.stream(n)], i = r.length, t = {
                    point: function(t, e) {
                        for (var n = -1; ++n < i;) r[n].point(t, e)
                    },
                    sphere: function() {
                        for (var t = -1; ++t < i;) r[t].sphere()
                    },
                    lineStart: function() {
                        for (var t = -1; ++t < i;) r[t].lineStart()
                    },
                    lineEnd: function() {
                        for (var t = -1; ++t < i;) r[t].lineEnd()
                    },
                    polygonStart: function() {
                        for (var t = -1; ++t < i;) r[t].polygonStart()
                    },
                    polygonEnd: function() {
                        for (var t = -1; ++t < i;) r[t].polygonEnd()
                    }
                });
                var r, i
            }, f.precision = function(t) {
                return arguments.length ? (o.precision(t), s.precision(t), u.precision(t), l()) : o.precision()
            }, f.scale = function(t) {
                return arguments.length ? (o.scale(t), s.scale(.35 * t), u.scale(t), f.translate(o.translate())) : o.scale()
            }, f.translate = function(t) {
                if (!arguments.length) return o.translate();
                var e = o.scale(),
                    a = +t[0],
                    f = +t[1];
                return n = o.translate(t).clipExtent([
                    [a - .455 * e, f - .238 * e],
                    [a + .455 * e, f + .238 * e]
                ]).stream(c), r = s.translate([a - .307 * e, f + .201 * e]).clipExtent([
                    [a - .425 * e + Yu, f + .12 * e + Yu],
                    [a - .214 * e - Yu, f + .234 * e - Yu]
                ]).stream(c), i = u.translate([a - .205 * e, f + .212 * e]).clipExtent([
                    [a - .214 * e + Yu, f + .166 * e + Yu],
                    [a - .115 * e - Yu, f + .234 * e - Yu]
                ]).stream(c), l()
            }, f.fitExtent = function(t, e) {
                return Vh(f, t, e)
            }, f.fitSize = function(t, e) {
                return Hh(f, t, e)
            }, f.fitWidth = function(t, e) {
                return Gh(f, t, e)
            }, f.fitHeight = function(t, e) {
                return $h(f, t, e)
            }, f.scale(1070)
        };

        function sd(t) {
            return function(e, n) {
                var r = tc(e),
                    i = tc(n),
                    a = t(r * i);
                return [a * i * ac(e), a * ac(n)]
            }
        }

        function ud(t) {
            return function(e, n) {
                var r = sc(e * e + n * n),
                    i = t(r),
                    a = ac(i),
                    o = tc(i);
                return [Qu(e * a, r * o), fc(r && n * a / r)]
            }
        }
        var cd = sd((function(t) {
            return sc(2 / (1 + t))
        }));
        cd.invert = ud((function(t) {
            return 2 * fc(t / 2)
        }));
        var fd = function() {
                return td(cd).scale(124.75).clipAngle(179.999)
            },
            ld = sd((function(t) {
                return (t = cc(t)) && t / ac(t)
            }));
        ld.invert = ud((function(t) {
            return t
        }));
        var hd = function() {
            return td(ld).scale(79.4188).clipAngle(179.999)
        };

        function dd(t, e) {
            return [t, rc(uc((Gu + e) / 2))]
        }
        dd.invert = function(t, e) {
            return [t, 2 * Ju(nc(e)) - Gu]
        };
        var pd = function() {
            return gd(dd).scale(961 / Wu)
        };

        function gd(t) {
            var e, n, r, i = td(t),
                a = i.center,
                o = i.scale,
                s = i.translate,
                u = i.clipExtent,
                c = null;

            function f() {
                var a = Hu * o(),
                    s = i(Vf(i.rotate()).invert([0, 0]));
                return u(null == c ? [
                    [s[0] - a, s[1] - a],
                    [s[0] + a, s[1] + a]
                ] : t === dd ? [
                    [Math.max(s[0] - a, c), e],
                    [Math.min(s[0] + a, n), r]
                ] : [
                    [c, Math.max(s[1] - a, e)],
                    [n, Math.min(s[1] + a, r)]
                ])
            }
            return i.scale = function(t) {
                return arguments.length ? (o(t), f()) : o()
            }, i.translate = function(t) {
                return arguments.length ? (s(t), f()) : s()
            }, i.center = function(t) {
                return arguments.length ? (a(t), f()) : a()
            }, i.clipExtent = function(t) {
                return arguments.length ? (null == t ? c = e = n = r = null : (c = +t[0][0], e = +t[0][1], n = +t[1][0], r = +t[1][1]), f()) : null == c ? null : [
                    [c, e],
                    [n, r]
                ]
            }, f()
        }

        function yd(t) {
            return uc((Gu + t) / 2)
        }

        function bd(t, e) {
            var n = tc(t),
                r = t === e ? ac(t) : rc(n / tc(e)) / rc(yd(e) / yd(t)),
                i = n * ic(yd(t), r) / r;
            if (!r) return dd;

            function a(t, e) {
                i > 0 ? e < -Gu + Yu && (e = -Gu + Yu) : e > Gu - Yu && (e = Gu - Yu);
                var n = i / ic(yd(e), r);
                return [n * ac(r * t), i - n * tc(r * t)]
            }
            return a.invert = function(t, e) {
                var n = i - e,
                    a = oc(r) * sc(t * t + n * n);
                return [Qu(t, Zu(n)) / r * oc(n), 2 * Ju(ic(i / a, 1 / r)) - Gu]
            }, a
        }
        var vd = function() {
            return nd(bd).scale(109.5).parallels([30, 30])
        };

        function md(t, e) {
            return [t, e]
        }
        md.invert = md;
        var _d = function() {
            return td(md).scale(152.63)
        };

        function wd(t, e) {
            var n = tc(t),
                r = t === e ? ac(t) : (n - tc(e)) / (e - t),
                i = n / r + t;
            if (Zu(r) < Yu) return md;

            function a(t, e) {
                var n = i - e,
                    a = r * t;
                return [n * ac(a), i - n * tc(a)]
            }
            return a.invert = function(t, e) {
                var n = i - e;
                return [Qu(t, Zu(n)) / r * oc(n), i - oc(r) * sc(t * t + n * n)]
            }, a
        }
        var xd = function() {
                return nd(wd).scale(131.154).center([0, 13.9389])
            },
            kd = 1.340264,
            Ed = -.081106,
            Ad = 893e-6,
            Sd = .003796,
            Md = sc(3) / 2;

        function Td(t, e) {
            var n = fc(Md * ac(e)),
                r = n * n,
                i = r * r * r;
            return [t * tc(n) / (Md * (kd + 3 * Ed * r + i * (7 * Ad + 9 * Sd * r))), n * (kd + Ed * r + i * (Ad + Sd * r))]
        }
        Td.invert = function(t, e) {
            for (var n, r = e, i = r * r, a = i * i * i, o = 0; o < 12 && (a = (i = (r -= n = (r * (kd + Ed * i + a * (Ad + Sd * i)) - e) / (kd + 3 * Ed * i + a * (7 * Ad + 9 * Sd * i))) * r) * i * i, !(Zu(n) < Vu)); ++o);
            return [Md * t * (kd + 3 * Ed * i + a * (7 * Ad + 9 * Sd * i)) / tc(r), fc(ac(r) / Md)]
        };
        var Dd = function() {
            return td(Td).scale(177.158)
        };

        function Cd(t, e) {
            var n = tc(e),
                r = tc(t) * n;
            return [n * ac(t) / r, ac(e) / r]
        }
        Cd.invert = ud(Ju);
        var Nd = function() {
            return td(Cd).scale(144.049).clipAngle(60)
        };

        function Id(t, e, n, r) {
            return 1 === t && 1 === e && 0 === n && 0 === r ? zl : Uh({
                point: function(i, a) {
                    this.stream.point(i * t + n, a * e + r)
                }
            })
        }
        var Ld = function() {
            var t, e, n, r, i, a, o = 1,
                s = 0,
                u = 0,
                c = 1,
                f = 1,
                l = zl,
                h = null,
                d = zl;

            function p() {
                return r = i = null, a
            }
            return a = {
                stream: function(t) {
                    return r && i === t ? r : r = l(d(i = t))
                },
                postclip: function(r) {
                    return arguments.length ? (d = r, h = t = e = n = null, p()) : d
                },
                clipExtent: function(r) {
                    return arguments.length ? (d = null == r ? (h = t = e = n = null, zl) : fl(h = +r[0][0], t = +r[0][1], e = +r[1][0], n = +r[1][1]), p()) : null == h ? null : [
                        [h, t],
                        [e, n]
                    ]
                },
                scale: function(t) {
                    return arguments.length ? (l = Id((o = +t) * c, o * f, s, u), p()) : o
                },
                translate: function(t) {
                    return arguments.length ? (l = Id(o * c, o * f, s = +t[0], u = +t[1]), p()) : [s, u]
                },
                reflectX: function(t) {
                    return arguments.length ? (l = Id(o * (c = t ? -1 : 1), o * f, s, u), p()) : c < 0
                },
                reflectY: function(t) {
                    return arguments.length ? (l = Id(o * c, o * (f = t ? -1 : 1), s, u), p()) : f < 0
                },
                fitExtent: function(t, e) {
                    return Vh(a, t, e)
                },
                fitSize: function(t, e) {
                    return Hh(a, t, e)
                },
                fitWidth: function(t, e) {
                    return Gh(a, t, e)
                },
                fitHeight: function(t, e) {
                    return $h(a, t, e)
                }
            }
        };

        function Bd(t, e) {
            var n = e * e,
                r = n * n;
            return [t * (.8707 - .131979 * n + r * (r * (.003971 * n - .001529 * r) - .013791)), e * (1.007226 + n * (.015085 + r * (.028874 * n - .044475 - .005916 * r)))]
        }
        Bd.invert = function(t, e) {
            var n, r = e,
                i = 25;
            do {
                var a = r * r,
                    o = a * a;
                r -= n = (r * (1.007226 + a * (.015085 + o * (.028874 * a - .044475 - .005916 * o))) - e) / (1.007226 + a * (.045255 + o * (.259866 * a - .311325 - .005916 * 11 * o)))
            } while (Zu(n) > Yu && --i > 0);
            return [t / (.8707 + (a = r * r) * (a * (a * a * a * (.003971 - .001529 * a) - .013791) - .131979)), r]
        };
        var Od = function() {
            return td(Bd).scale(175.295)
        };

        function Rd(t, e) {
            return [tc(e) * ac(t), ac(e)]
        }
        Rd.invert = ud(fc);
        var Pd = function() {
            return td(Rd).scale(249.5).clipAngle(90 + Yu)
        };

        function Fd(t, e) {
            var n = tc(e),
                r = 1 + tc(t) * n;
            return [n * ac(t) / r, ac(e) / r]
        }
        Fd.invert = ud((function(t) {
            return 2 * Ju(t)
        }));
        var qd = function() {
            return td(Fd).scale(250).clipAngle(142)
        };

        function jd(t, e) {
            return [rc(uc((Gu + e) / 2)), -t]
        }
        jd.invert = function(t, e) {
            return [-e, 2 * Ju(nc(t)) - Gu]
        };
        var Ud = function() {
            var t = gd(jd),
                e = t.center,
                n = t.rotate;
            return t.center = function(t) {
                return arguments.length ? e([-t[1], t[0]]) : [(t = e())[1], -t[0]]
            }, t.rotate = function(t) {
                return arguments.length ? n([t[0], t[1], t.length > 2 ? t[2] + 90 : 90]) : [(t = n())[0], t[1], t[2] - 90]
            }, n([0, 0, 90]).scale(159.155)
        };

        function zd(t, e) {
            return t.parent === e.parent ? 1 : 2
        }

        function Yd(t, e) {
            return t + e.x
        }

        function Vd(t, e) {
            return Math.max(t, e.y)
        }
        var Hd = function() {
            var t = zd,
                e = 1,
                n = 1,
                r = !1;

            function i(i) {
                var a, o = 0;
                i.eachAfter((function(e) {
                    var n = e.children;
                    n ? (e.x = function(t) {
                        return t.reduce(Yd, 0) / t.length
                    }(n), e.y = function(t) {
                        return 1 + t.reduce(Vd, 0)
                    }(n)) : (e.x = a ? o += t(e, a) : 0, e.y = 0, a = e)
                }));
                var s = function(t) {
                        for (var e; e = t.children;) t = e[0];
                        return t
                    }(i),
                    u = function(t) {
                        for (var e; e = t.children;) t = e[e.length - 1];
                        return t
                    }(i),
                    c = s.x - t(s, u) / 2,
                    f = u.x + t(u, s) / 2;
                return i.eachAfter(r ? function(t) {
                    t.x = (t.x - i.x) * e, t.y = (i.y - t.y) * n
                } : function(t) {
                    t.x = (t.x - c) / (f - c) * e, t.y = (1 - (i.y ? t.y / i.y : 1)) * n
                })
            }
            return i.separation = function(e) {
                return arguments.length ? (t = e, i) : t
            }, i.size = function(t) {
                return arguments.length ? (r = !1, e = +t[0], n = +t[1], i) : r ? null : [e, n]
            }, i.nodeSize = function(t) {
                return arguments.length ? (r = !0, e = +t[0], n = +t[1], i) : r ? [e, n] : null
            }, i
        };

        function Gd(t) {
            var e = 0,
                n = t.children,
                r = n && n.length;
            if (r)
                for (; --r >= 0;) e += n[r].value;
            else e = 1;
            t.value = e
        }

        function $d(t, e) {
            var n, r, i, a, o, s = new Zd(t),
                u = +t.value && (s.value = t.value),
                c = [s];
            for (null == e && (e = Wd); n = c.pop();)
                if (u && (n.value = +n.data.value), (i = e(n.data)) && (o = i.length))
                    for (n.children = new Array(o), a = o - 1; a >= 0; --a) c.push(r = n.children[a] = new Zd(i[a])), r.parent = n, r.depth = n.depth + 1;
            return s.eachBefore(Xd)
        }

        function Wd(t) {
            return t.children
        }

        function Kd(t) {
            t.data = t.data.data
        }

        function Xd(t) {
            var e = 0;
            do {
                t.height = e
            } while ((t = t.parent) && t.height < ++e)
        }

        function Zd(t) {
            this.data = t, this.depth = this.height = 0, this.parent = null
        }
        Zd.prototype = $d.prototype = {
            constructor: Zd,
            count: function() {
                return this.eachAfter(Gd)
            },
            each: function(t) {
                var e, n, r, i, a = this,
                    o = [a];
                do {
                    for (e = o.reverse(), o = []; a = e.pop();)
                        if (t(a), n = a.children)
                            for (r = 0, i = n.length; r < i; ++r) o.push(n[r])
                } while (o.length);
                return this
            },
            eachAfter: function(t) {
                for (var e, n, r, i = this, a = [i], o = []; i = a.pop();)
                    if (o.push(i), e = i.children)
                        for (n = 0, r = e.length; n < r; ++n) a.push(e[n]);
                for (; i = o.pop();) t(i);
                return this
            },
            eachBefore: function(t) {
                for (var e, n, r = this, i = [r]; r = i.pop();)
                    if (t(r), e = r.children)
                        for (n = e.length - 1; n >= 0; --n) i.push(e[n]);
                return this
            },
            sum: function(t) {
                return this.eachAfter((function(e) {
                    for (var n = +t(e.data) || 0, r = e.children, i = r && r.length; --i >= 0;) n += r[i].value;
                    e.value = n
                }))
            },
            sort: function(t) {
                return this.eachBefore((function(e) {
                    e.children && e.children.sort(t)
                }))
            },
            path: function(t) {
                for (var e = this, n = function(t, e) {
                        if (t === e) return t;
                        var n = t.ancestors(),
                            r = e.ancestors(),
                            i = null;
                        t = n.pop(), e = r.pop();
                        for (; t === e;) i = t, t = n.pop(), e = r.pop();
                        return i
                    }(e, t), r = [e]; e !== n;) e = e.parent, r.push(e);
                for (var i = r.length; t !== n;) r.splice(i, 0, t), t = t.parent;
                return r
            },
            ancestors: function() {
                for (var t = this, e = [t]; t = t.parent;) e.push(t);
                return e
            },
            descendants: function() {
                var t = [];
                return this.each((function(e) {
                    t.push(e)
                })), t
            },
            leaves: function() {
                var t = [];
                return this.eachBefore((function(e) {
                    e.children || t.push(e)
                })), t
            },
            links: function() {
                var t = this,
                    e = [];
                return t.each((function(n) {
                    n !== t && e.push({
                        source: n.parent,
                        target: n
                    })
                })), e
            },
            copy: function() {
                return $d(this).eachBefore(Kd)
            }
        };
        var Jd = Array.prototype.slice;
        var Qd = function(t) {
            for (var e, n, r = 0, i = (t = function(t) {
                    for (var e, n, r = t.length; r;) n = Math.random() * r-- | 0, e = t[r], t[r] = t[n], t[n] = e;
                    return t
                }(Jd.call(t))).length, a = []; r < i;) e = t[r], n && np(n, e) ? ++r : (n = ip(a = tp(a, e)), r = 0);
            return n
        };

        function tp(t, e) {
            var n, r;
            if (rp(e, t)) return [e];
            for (n = 0; n < t.length; ++n)
                if (ep(e, t[n]) && rp(ap(t[n], e), t)) return [t[n], e];
            for (n = 0; n < t.length - 1; ++n)
                for (r = n + 1; r < t.length; ++r)
                    if (ep(ap(t[n], t[r]), e) && ep(ap(t[n], e), t[r]) && ep(ap(t[r], e), t[n]) && rp(op(t[n], t[r], e), t)) return [t[n], t[r], e];
            throw new Error
        }

        function ep(t, e) {
            var n = t.r - e.r,
                r = e.x - t.x,
                i = e.y - t.y;
            return n < 0 || n * n < r * r + i * i
        }

        function np(t, e) {
            var n = t.r - e.r + 1e-6,
                r = e.x - t.x,
                i = e.y - t.y;
            return n > 0 && n * n > r * r + i * i
        }

        function rp(t, e) {
            for (var n = 0; n < e.length; ++n)
                if (!np(t, e[n])) return !1;
            return !0
        }

        function ip(t) {
            switch (t.length) {
                case 1:
                    return {
                        x: (e = t[0]).x, y: e.y, r: e.r
                    };
                case 2:
                    return ap(t[0], t[1]);
                case 3:
                    return op(t[0], t[1], t[2])
            }
            var e
        }

        function ap(t, e) {
            var n = t.x,
                r = t.y,
                i = t.r,
                a = e.x,
                o = e.y,
                s = e.r,
                u = a - n,
                c = o - r,
                f = s - i,
                l = Math.sqrt(u * u + c * c);
            return {
                x: (n + a + u / l * f) / 2,
                y: (r + o + c / l * f) / 2,
                r: (l + i + s) / 2
            }
        }

        function op(t, e, n) {
            var r = t.x,
                i = t.y,
                a = t.r,
                o = e.x,
                s = e.y,
                u = e.r,
                c = n.x,
                f = n.y,
                l = n.r,
                h = r - o,
                d = r - c,
                p = i - s,
                g = i - f,
                y = u - a,
                b = l - a,
                v = r * r + i * i - a * a,
                m = v - o * o - s * s + u * u,
                _ = v - c * c - f * f + l * l,
                w = d * p - h * g,
                x = (p * _ - g * m) / (2 * w) - r,
                k = (g * y - p * b) / w,
                E = (d * m - h * _) / (2 * w) - i,
                A = (h * b - d * y) / w,
                S = k * k + A * A - 1,
                M = 2 * (a + x * k + E * A),
                T = x * x + E * E - a * a,
                D = -(S ? (M + Math.sqrt(M * M - 4 * S * T)) / (2 * S) : T / M);
            return {
                x: r + x + k * D,
                y: i + E + A * D,
                r: D
            }
        }

        function sp(t, e, n) {
            var r, i, a, o, s = t.x - e.x,
                u = t.y - e.y,
                c = s * s + u * u;
            c ? (i = e.r + n.r, i *= i, o = t.r + n.r, i > (o *= o) ? (r = (c + o - i) / (2 * c), a = Math.sqrt(Math.max(0, o / c - r * r)), n.x = t.x - r * s - a * u, n.y = t.y - r * u + a * s) : (r = (c + i - o) / (2 * c), a = Math.sqrt(Math.max(0, i / c - r * r)), n.x = e.x + r * s - a * u, n.y = e.y + r * u + a * s)) : (n.x = e.x + n.r, n.y = e.y)
        }

        function up(t, e) {
            var n = t.r + e.r - 1e-6,
                r = e.x - t.x,
                i = e.y - t.y;
            return n > 0 && n * n > r * r + i * i
        }

        function cp(t) {
            var e = t._,
                n = t.next._,
                r = e.r + n.r,
                i = (e.x * n.r + n.x * e.r) / r,
                a = (e.y * n.r + n.y * e.r) / r;
            return i * i + a * a
        }

        function fp(t) {
            this._ = t, this.next = null, this.previous = null
        }

        function lp(t) {
            if (!(i = t.length)) return 0;
            var e, n, r, i, a, o, s, u, c, f, l;
            if ((e = t[0]).x = 0, e.y = 0, !(i > 1)) return e.r;
            if (n = t[1], e.x = -n.r, n.x = e.r, n.y = 0, !(i > 2)) return e.r + n.r;
            sp(n, e, r = t[2]), e = new fp(e), n = new fp(n), r = new fp(r), e.next = r.previous = n, n.next = e.previous = r, r.next = n.previous = e;
            t: for (s = 3; s < i; ++s) {
                sp(e._, n._, r = t[s]), r = new fp(r), u = n.next, c = e.previous, f = n._.r, l = e._.r;
                do {
                    if (f <= l) {
                        if (up(u._, r._)) {
                            n = u, e.next = n, n.previous = e, --s;
                            continue t
                        }
                        f += u._.r, u = u.next
                    } else {
                        if (up(c._, r._)) {
                            (e = c).next = n, n.previous = e, --s;
                            continue t
                        }
                        l += c._.r, c = c.previous
                    }
                } while (u !== c.next);
                for (r.previous = e, r.next = n, e.next = n.previous = n = r, a = cp(e);
                    (r = r.next) !== n;)(o = cp(r)) < a && (e = r, a = o);
                n = e.next
            }
            for (e = [n._], r = n;
                (r = r.next) !== n;) e.push(r._);
            for (r = Qd(e), s = 0; s < i; ++s)(e = t[s]).x -= r.x, e.y -= r.y;
            return r.r
        }
        var hp = function(t) {
            return lp(t), t
        };

        function dp(t) {
            return null == t ? null : pp(t)
        }

        function pp(t) {
            if ("function" != typeof t) throw new Error;
            return t
        }

        function gp() {
            return 0
        }
        var yp = function(t) {
            return function() {
                return t
            }
        };

        function bp(t) {
            return Math.sqrt(t.value)
        }
        var vp = function() {
            var t = null,
                e = 1,
                n = 1,
                r = gp;

            function i(i) {
                return i.x = e / 2, i.y = n / 2, t ? i.eachBefore(mp(t)).eachAfter(_p(r, .5)).eachBefore(wp(1)) : i.eachBefore(mp(bp)).eachAfter(_p(gp, 1)).eachAfter(_p(r, i.r / Math.min(e, n))).eachBefore(wp(Math.min(e, n) / (2 * i.r))), i
            }
            return i.radius = function(e) {
                return arguments.length ? (t = dp(e), i) : t
            }, i.size = function(t) {
                return arguments.length ? (e = +t[0], n = +t[1], i) : [e, n]
            }, i.padding = function(t) {
                return arguments.length ? (r = "function" == typeof t ? t : yp(+t), i) : r
            }, i
        };

        function mp(t) {
            return function(e) {
                e.children || (e.r = Math.max(0, +t(e) || 0))
            }
        }

        function _p(t, e) {
            return function(n) {
                if (r = n.children) {
                    var r, i, a, o = r.length,
                        s = t(n) * e || 0;
                    if (s)
                        for (i = 0; i < o; ++i) r[i].r += s;
                    if (a = lp(r), s)
                        for (i = 0; i < o; ++i) r[i].r -= s;
                    n.r = a + s
                }
            }
        }

        function wp(t) {
            return function(e) {
                var n = e.parent;
                e.r *= t, n && (e.x = n.x + t * e.x, e.y = n.y + t * e.y)
            }
        }
        var xp = function(t) {
                t.x0 = Math.round(t.x0), t.y0 = Math.round(t.y0), t.x1 = Math.round(t.x1), t.y1 = Math.round(t.y1)
            },
            kp = function(t, e, n, r, i) {
                for (var a, o = t.children, s = -1, u = o.length, c = t.value && (r - e) / t.value; ++s < u;)(a = o[s]).y0 = n, a.y1 = i, a.x0 = e, a.x1 = e += a.value * c
            },
            Ep = function() {
                var t = 1,
                    e = 1,
                    n = 0,
                    r = !1;

                function i(i) {
                    var a = i.height + 1;
                    return i.x0 = i.y0 = n, i.x1 = t, i.y1 = e / a, i.eachBefore(function(t, e) {
                        return function(r) {
                            r.children && kp(r, r.x0, t * (r.depth + 1) / e, r.x1, t * (r.depth + 2) / e);
                            var i = r.x0,
                                a = r.y0,
                                o = r.x1 - n,
                                s = r.y1 - n;
                            o < i && (i = o = (i + o) / 2), s < a && (a = s = (a + s) / 2), r.x0 = i, r.y0 = a, r.x1 = o, r.y1 = s
                        }
                    }(e, a)), r && i.eachBefore(xp), i
                }
                return i.round = function(t) {
                    return arguments.length ? (r = !!t, i) : r
                }, i.size = function(n) {
                    return arguments.length ? (t = +n[0], e = +n[1], i) : [t, e]
                }, i.padding = function(t) {
                    return arguments.length ? (n = +t, i) : n
                }, i
            },
            Ap = "$",
            Sp = {
                depth: -1
            },
            Mp = {};

        function Tp(t) {
            return t.id
        }

        function Dp(t) {
            return t.parentId
        }
        var Cp = function() {
            var t = Tp,
                e = Dp;

            function n(n) {
                var r, i, a, o, s, u, c, f = n.length,
                    l = new Array(f),
                    h = {};
                for (i = 0; i < f; ++i) r = n[i], s = l[i] = new Zd(r), null != (u = t(r, i, n)) && (u += "") && (h[c = Ap + (s.id = u)] = c in h ? Mp : s);
                for (i = 0; i < f; ++i)
                    if (s = l[i], null != (u = e(n[i], i, n)) && (u += "")) {
                        if (!(o = h[Ap + u])) throw new Error("missing: " + u);
                        if (o === Mp) throw new Error("ambiguous: " + u);
                        o.children ? o.children.push(s) : o.children = [s], s.parent = o
                    } else {
                        if (a) throw new Error("multiple roots");
                        a = s
                    } if (!a) throw new Error("no root");
                if (a.parent = Sp, a.eachBefore((function(t) {
                        t.depth = t.parent.depth + 1, --f
                    })).eachBefore(Xd), a.parent = null, f > 0) throw new Error("cycle");
                return a
            }
            return n.id = function(e) {
                return arguments.length ? (t = pp(e), n) : t
            }, n.parentId = function(t) {
                return arguments.length ? (e = pp(t), n) : e
            }, n
        };

        function Np(t, e) {
            return t.parent === e.parent ? 1 : 2
        }

        function Ip(t) {
            var e = t.children;
            return e ? e[0] : t.t
        }

        function Lp(t) {
            var e = t.children;
            return e ? e[e.length - 1] : t.t
        }

        function Bp(t, e, n) {
            var r = n / (e.i - t.i);
            e.c -= r, e.s += n, t.c += r, e.z += n, e.m += n
        }

        function Op(t, e, n) {
            return t.a.parent === e.parent ? t.a : n
        }

        function Rp(t, e) {
            this._ = t, this.parent = null, this.children = null, this.A = null, this.a = this, this.z = 0, this.m = 0, this.c = 0, this.s = 0, this.t = null, this.i = e
        }
        Rp.prototype = Object.create(Zd.prototype);
        var Pp = function() {
                var t = Np,
                    e = 1,
                    n = 1,
                    r = null;

                function i(i) {
                    var u = function(t) {
                        for (var e, n, r, i, a, o = new Rp(t, 0), s = [o]; e = s.pop();)
                            if (r = e._.children)
                                for (e.children = new Array(a = r.length), i = a - 1; i >= 0; --i) s.push(n = e.children[i] = new Rp(r[i], i)), n.parent = e;
                        return (o.parent = new Rp(null, 0)).children = [o], o
                    }(i);
                    if (u.eachAfter(a), u.parent.m = -u.z, u.eachBefore(o), r) i.eachBefore(s);
                    else {
                        var c = i,
                            f = i,
                            l = i;
                        i.eachBefore((function(t) {
                            t.x < c.x && (c = t), t.x > f.x && (f = t), t.depth > l.depth && (l = t)
                        }));
                        var h = c === f ? 1 : t(c, f) / 2,
                            d = h - c.x,
                            p = e / (f.x + h + d),
                            g = n / (l.depth || 1);
                        i.eachBefore((function(t) {
                            t.x = (t.x + d) * p, t.y = t.depth * g
                        }))
                    }
                    return i
                }

                function a(e) {
                    var n = e.children,
                        r = e.parent.children,
                        i = e.i ? r[e.i - 1] : null;
                    if (n) {
                        ! function(t) {
                            for (var e, n = 0, r = 0, i = t.children, a = i.length; --a >= 0;)(e = i[a]).z += n, e.m += n, n += e.s + (r += e.c)
                        }(e);
                        var a = (n[0].z + n[n.length - 1].z) / 2;
                        i ? (e.z = i.z + t(e._, i._), e.m = e.z - a) : e.z = a
                    } else i && (e.z = i.z + t(e._, i._));
                    e.parent.A = function(e, n, r) {
                        if (n) {
                            for (var i, a = e, o = e, s = n, u = a.parent.children[0], c = a.m, f = o.m, l = s.m, h = u.m; s = Lp(s), a = Ip(a), s && a;) u = Ip(u), (o = Lp(o)).a = e, (i = s.z + l - a.z - c + t(s._, a._)) > 0 && (Bp(Op(s, e, r), e, i), c += i, f += i), l += s.m, c += a.m, h += u.m, f += o.m;
                            s && !Lp(o) && (o.t = s, o.m += l - f), a && !Ip(u) && (u.t = a, u.m += c - h, r = e)
                        }
                        return r
                    }(e, i, e.parent.A || r[0])
                }

                function o(t) {
                    t._.x = t.z + t.parent.m, t.m += t.parent.m
                }

                function s(t) {
                    t.x *= e, t.y = t.depth * n
                }
                return i.separation = function(e) {
                    return arguments.length ? (t = e, i) : t
                }, i.size = function(t) {
                    return arguments.length ? (r = !1, e = +t[0], n = +t[1], i) : r ? null : [e, n]
                }, i.nodeSize = function(t) {
                    return arguments.length ? (r = !0, e = +t[0], n = +t[1], i) : r ? [e, n] : null
                }, i
            },
            Fp = function(t, e, n, r, i) {
                for (var a, o = t.children, s = -1, u = o.length, c = t.value && (i - n) / t.value; ++s < u;)(a = o[s]).x0 = e, a.x1 = r, a.y0 = n, a.y1 = n += a.value * c
            },
            qp = (1 + Math.sqrt(5)) / 2;

        function jp(t, e, n, r, i, a) {
            for (var o, s, u, c, f, l, h, d, p, g, y, b = [], v = e.children, m = 0, _ = 0, w = v.length, x = e.value; m < w;) {
                u = i - n, c = a - r;
                do {
                    f = v[_++].value
                } while (!f && _ < w);
                for (l = h = f, y = f * f * (g = Math.max(c / u, u / c) / (x * t)), p = Math.max(h / y, y / l); _ < w; ++_) {
                    if (f += s = v[_].value, s < l && (l = s), s > h && (h = s), y = f * f * g, (d = Math.max(h / y, y / l)) > p) {
                        f -= s;
                        break
                    }
                    p = d
                }
                b.push(o = {
                    value: f,
                    dice: u < c,
                    children: v.slice(m, _)
                }), o.dice ? kp(o, n, r, i, x ? r += c * f / x : a) : Fp(o, n, r, x ? n += u * f / x : i, a), x -= f, m = _
            }
            return b
        }
        var Up = function t(e) {
                function n(t, n, r, i, a) {
                    jp(e, t, n, r, i, a)
                }
                return n.ratio = function(e) {
                    return t((e = +e) > 1 ? e : 1)
                }, n
            }(qp),
            zp = function() {
                var t = Up,
                    e = !1,
                    n = 1,
                    r = 1,
                    i = [0],
                    a = gp,
                    o = gp,
                    s = gp,
                    u = gp,
                    c = gp;

                function f(t) {
                    return t.x0 = t.y0 = 0, t.x1 = n, t.y1 = r, t.eachBefore(l), i = [0], e && t.eachBefore(xp), t
                }

                function l(e) {
                    var n = i[e.depth],
                        r = e.x0 + n,
                        f = e.y0 + n,
                        l = e.x1 - n,
                        h = e.y1 - n;
                    l < r && (r = l = (r + l) / 2), h < f && (f = h = (f + h) / 2), e.x0 = r, e.y0 = f, e.x1 = l, e.y1 = h, e.children && (n = i[e.depth + 1] = a(e) / 2, r += c(e) - n, f += o(e) - n, (l -= s(e) - n) < r && (r = l = (r + l) / 2), (h -= u(e) - n) < f && (f = h = (f + h) / 2), t(e, r, f, l, h))
                }
                return f.round = function(t) {
                    return arguments.length ? (e = !!t, f) : e
                }, f.size = function(t) {
                    return arguments.length ? (n = +t[0], r = +t[1], f) : [n, r]
                }, f.tile = function(e) {
                    return arguments.length ? (t = pp(e), f) : t
                }, f.padding = function(t) {
                    return arguments.length ? f.paddingInner(t).paddingOuter(t) : f.paddingInner()
                }, f.paddingInner = function(t) {
                    return arguments.length ? (a = "function" == typeof t ? t : yp(+t), f) : a
                }, f.paddingOuter = function(t) {
                    return arguments.length ? f.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t) : f.paddingTop()
                }, f.paddingTop = function(t) {
                    return arguments.length ? (o = "function" == typeof t ? t : yp(+t), f) : o
                }, f.paddingRight = function(t) {
                    return arguments.length ? (s = "function" == typeof t ? t : yp(+t), f) : s
                }, f.paddingBottom = function(t) {
                    return arguments.length ? (u = "function" == typeof t ? t : yp(+t), f) : u
                }, f.paddingLeft = function(t) {
                    return arguments.length ? (c = "function" == typeof t ? t : yp(+t), f) : c
                }, f
            },
            Yp = function(t, e, n, r, i) {
                var a, o, s = t.children,
                    u = s.length,
                    c = new Array(u + 1);
                for (c[0] = o = a = 0; a < u; ++a) c[a + 1] = o += s[a].value;
                ! function t(e, n, r, i, a, o, u) {
                    if (e >= n - 1) {
                        var f = s[e];
                        return f.x0 = i, f.y0 = a, f.x1 = o, void(f.y1 = u)
                    }
                    var l = c[e],
                        h = r / 2 + l,
                        d = e + 1,
                        p = n - 1;
                    for (; d < p;) {
                        var g = d + p >>> 1;
                        c[g] < h ? d = g + 1 : p = g
                    }
                    h - c[d - 1] < c[d] - h && e + 1 < d && --d;
                    var y = c[d] - l,
                        b = r - y;
                    if (o - i > u - a) {
                        var v = (i * b + o * y) / r;
                        t(e, d, y, i, a, v, u), t(d, n, b, v, a, o, u)
                    } else {
                        var m = (a * b + u * y) / r;
                        t(e, d, y, i, a, o, m), t(d, n, b, i, m, o, u)
                    }
                }(0, u, t.value, e, n, r, i)
            },
            Vp = function(t, e, n, r, i) {
                (1 & t.depth ? Fp : kp)(t, e, n, r, i)
            },
            Hp = function t(e) {
                function n(t, n, r, i, a) {
                    if ((o = t._squarify) && o.ratio === e)
                        for (var o, s, u, c, f, l = -1, h = o.length, d = t.value; ++l < h;) {
                            for (u = (s = o[l]).children, c = s.value = 0, f = u.length; c < f; ++c) s.value += u[c].value;
                            s.dice ? kp(s, n, r, i, r += (a - r) * s.value / d) : Fp(s, n, r, n += (i - n) * s.value / d, a), d -= s.value
                        } else t._squarify = o = jp(e, t, n, r, i, a), o.ratio = e
                }
                return n.ratio = function(e) {
                    return t((e = +e) > 1 ? e : 1)
                }, n
            }(qp),
            Gp = function(t) {
                var e = t.length;
                return function(n) {
                    return t[Math.max(0, Math.min(e - 1, Math.floor(n * e)))]
                }
            },
            $p = function(t, e) {
                var n = gn(+t, +e);
                return function(t) {
                    var e = n(t);
                    return e - 360 * Math.floor(e / 360)
                }
            },
            Wp = function(t, e) {
                return t = +t, e = +e,
                    function(n) {
                        return Math.round(t * (1 - n) + e * n)
                    }
            },
            Kp = Math.SQRT2;

        function Xp(t) {
            return ((t = Math.exp(t)) + 1 / t) / 2
        }
        var Zp = function(t, e) {
            var n, r, i = t[0],
                a = t[1],
                o = t[2],
                s = e[0],
                u = e[1],
                c = e[2],
                f = s - i,
                l = u - a,
                h = f * f + l * l;
            if (h < 1e-12) r = Math.log(c / o) / Kp, n = function(t) {
                return [i + t * f, a + t * l, o * Math.exp(Kp * t * r)]
            };
            else {
                var d = Math.sqrt(h),
                    p = (c * c - o * o + 4 * h) / (2 * o * 2 * d),
                    g = (c * c - o * o - 4 * h) / (2 * c * 2 * d),
                    y = Math.log(Math.sqrt(p * p + 1) - p),
                    b = Math.log(Math.sqrt(g * g + 1) - g);
                r = (b - y) / Kp, n = function(t) {
                    var e, n = t * r,
                        s = Xp(y),
                        u = o / (2 * d) * (s * (e = Kp * n + y, ((e = Math.exp(2 * e)) - 1) / (e + 1)) - function(t) {
                            return ((t = Math.exp(t)) - 1 / t) / 2
                        }(y));
                    return [i + u * f, a + u * l, o * s / Xp(Kp * n + y)]
                }
            }
            return n.duration = 1e3 * r, n
        };

        function Jp(t) {
            return function(e, n) {
                var r = t((e = sn(e)).h, (n = sn(n)).h),
                    i = bn(e.s, n.s),
                    a = bn(e.l, n.l),
                    o = bn(e.opacity, n.opacity);
                return function(t) {
                    return e.h = r(t), e.s = i(t), e.l = a(t), e.opacity = o(t), e + ""
                }
            }
        }
        var Qp = Jp(gn),
            tg = Jp(bn);

        function eg(t, e) {
            var n = bn((t = Da(t)).l, (e = Da(e)).l),
                r = bn(t.a, e.a),
                i = bn(t.b, e.b),
                a = bn(t.opacity, e.opacity);
            return function(e) {
                return t.l = n(e), t.a = r(e), t.b = i(e), t.opacity = a(e), t + ""
            }
        }

        function ng(t) {
            return function(e, n) {
                var r = t((e = Pa(e)).h, (n = Pa(n)).h),
                    i = bn(e.c, n.c),
                    a = bn(e.l, n.l),
                    o = bn(e.opacity, n.opacity);
                return function(t) {
                    return e.h = r(t), e.c = i(t), e.l = a(t), e.opacity = o(t), e + ""
                }
            }
        }
        var rg = ng(gn),
            ig = ng(bn);

        function ag(t) {
            return function e(n) {
                function r(e, r) {
                    var i = t((e = Ga(e)).h, (r = Ga(r)).h),
                        a = bn(e.s, r.s),
                        o = bn(e.l, r.l),
                        s = bn(e.opacity, r.opacity);
                    return function(t) {
                        return e.h = i(t), e.s = a(t), e.l = o(Math.pow(t, n)), e.opacity = s(t), e + ""
                    }
                }
                return n = +n, r.gamma = e, r
            }(1)
        }
        var og = ag(gn),
            sg = ag(bn);

        function ug(t, e) {
            for (var n = 0, r = e.length - 1, i = e[0], a = new Array(r < 0 ? 0 : r); n < r;) a[n] = t(i, i = e[++n]);
            return function(t) {
                var e = Math.max(0, Math.min(r - 1, Math.floor(t *= r)));
                return a[e](t - e)
            }
        }
        var cg = function(t, e) {
                for (var n = new Array(e), r = 0; r < e; ++r) n[r] = t(r / (e - 1));
                return n
            },
            fg = function(t) {
                for (var e, n = -1, r = t.length, i = t[r - 1], a = 0; ++n < r;) e = i, i = t[n], a += e[1] * i[0] - e[0] * i[1];
                return a / 2
            },
            lg = function(t) {
                for (var e, n, r = -1, i = t.length, a = 0, o = 0, s = t[i - 1], u = 0; ++r < i;) e = s, s = t[r], u += n = e[0] * s[1] - s[0] * e[1], a += (e[0] + s[0]) * n, o += (e[1] + s[1]) * n;
                return [a / (u *= 3), o / u]
            },
            hg = function(t, e, n) {
                return (e[0] - t[0]) * (n[1] - t[1]) - (e[1] - t[1]) * (n[0] - t[0])
            };

        function dg(t, e) {
            return t[0] - e[0] || t[1] - e[1]
        }

        function pg(t) {
            for (var e = t.length, n = [0, 1], r = 2, i = 2; i < e; ++i) {
                for (; r > 1 && hg(t[n[r - 2]], t[n[r - 1]], t[i]) <= 0;) --r;
                n[r++] = i
            }
            return n.slice(0, r)
        }
        var gg = function(t) {
                if ((n = t.length) < 3) return null;
                var e, n, r = new Array(n),
                    i = new Array(n);
                for (e = 0; e < n; ++e) r[e] = [+t[e][0], +t[e][1], e];
                for (r.sort(dg), e = 0; e < n; ++e) i[e] = [r[e][0], -r[e][1]];
                var a = pg(r),
                    o = pg(i),
                    s = o[0] === a[0],
                    u = o[o.length - 1] === a[a.length - 1],
                    c = [];
                for (e = a.length - 1; e >= 0; --e) c.push(t[r[a[e]][2]]);
                for (e = +s; e < o.length - u; ++e) c.push(t[r[o[e]][2]]);
                return c
            },
            yg = function(t, e) {
                for (var n, r, i = t.length, a = t[i - 1], o = e[0], s = e[1], u = a[0], c = a[1], f = !1, l = 0; l < i; ++l) n = (a = t[l])[0], (r = a[1]) > s != c > s && o < (u - n) * (s - r) / (c - r) + n && (f = !f), u = n, c = r;
                return f
            },
            bg = function(t) {
                for (var e, n, r = -1, i = t.length, a = t[i - 1], o = a[0], s = a[1], u = 0; ++r < i;) e = o, n = s, e -= o = (a = t[r])[0], n -= s = a[1], u += Math.sqrt(e * e + n * n);
                return u
            },
            vg = function() {
                return Math.random()
            },
            mg = function t(e) {
                function n(t, n) {
                    return t = null == t ? 0 : +t, n = null == n ? 1 : +n, 1 === arguments.length ? (n = t, t = 0) : n -= t,
                        function() {
                            return e() * n + t
                        }
                }
                return n.source = t, n
            }(vg),
            _g = function t(e) {
                function n(t, n) {
                    var r, i;
                    return t = null == t ? 0 : +t, n = null == n ? 1 : +n,
                        function() {
                            var a;
                            if (null != r) a = r, r = null;
                            else
                                do {
                                    r = 2 * e() - 1, a = 2 * e() - 1, i = r * r + a * a
                                } while (!i || i > 1);
                            return t + n * a * Math.sqrt(-2 * Math.log(i) / i)
                        }
                }
                return n.source = t, n
            }(vg),
            wg = function t(e) {
                function n() {
                    var t = _g.source(e).apply(this, arguments);
                    return function() {
                        return Math.exp(t())
                    }
                }
                return n.source = t, n
            }(vg),
            xg = function t(e) {
                function n(t) {
                    return function() {
                        for (var n = 0, r = 0; r < t; ++r) n += e();
                        return n
                    }
                }
                return n.source = t, n
            }(vg),
            kg = function t(e) {
                function n(t) {
                    var n = xg.source(e)(t);
                    return function() {
                        return n() / t
                    }
                }
                return n.source = t, n
            }(vg),
            Eg = function t(e) {
                function n(t) {
                    return function() {
                        return -Math.log(1 - e()) / t
                    }
                }
                return n.source = t, n
            }(vg);

        function Ag(t, e) {
            switch (arguments.length) {
                case 0:
                    break;
                case 1:
                    this.range(t);
                    break;
                default:
                    this.range(e).domain(t)
            }
            return this
        }

        function Sg(t, e) {
            switch (arguments.length) {
                case 0:
                    break;
                case 1:
                    this.interpolator(t);
                    break;
                default:
                    this.interpolator(e).domain(t)
            }
            return this
        }
        var Mg = Array.prototype,
            Tg = Mg.map,
            Dg = Mg.slice,
            Cg = {
                name: "implicit"
            };

        function Ng() {
            var t = aa(),
                e = [],
                n = [],
                r = Cg;

            function i(i) {
                var a = i + "",
                    o = t.get(a);
                if (!o) {
                    if (r !== Cg) return r;
                    t.set(a, o = e.push(i))
                }
                return n[(o - 1) % n.length]
            }
            return i.domain = function(n) {
                if (!arguments.length) return e.slice();
                e = [], t = aa();
                for (var r, a, o = -1, s = n.length; ++o < s;) t.has(a = (r = n[o]) + "") || t.set(a, e.push(r));
                return i
            }, i.range = function(t) {
                return arguments.length ? (n = Dg.call(t), i) : n.slice()
            }, i.unknown = function(t) {
                return arguments.length ? (r = t, i) : r
            }, i.copy = function() {
                return Ng(e, n).unknown(r)
            }, Ag.apply(i, arguments), i
        }

        function Ig() {
            var t, e, n = Ng().unknown(void 0),
                r = n.domain,
                i = n.range,
                a = [0, 1],
                o = !1,
                s = 0,
                u = 0,
                c = .5;

            function f() {
                var n = r().length,
                    f = a[1] < a[0],
                    l = a[f - 0],
                    h = a[1 - f];
                t = (h - l) / Math.max(1, n - s + 2 * u), o && (t = Math.floor(t)), l += (h - l - t * (n - s)) * c, e = t * (1 - s), o && (l = Math.round(l), e = Math.round(e));
                var d = x(n).map((function(e) {
                    return l + t * e
                }));
                return i(f ? d.reverse() : d)
            }
            return delete n.unknown, n.domain = function(t) {
                return arguments.length ? (r(t), f()) : r()
            }, n.range = function(t) {
                return arguments.length ? (a = [+t[0], +t[1]], f()) : a.slice()
            }, n.rangeRound = function(t) {
                return a = [+t[0], +t[1]], o = !0, f()
            }, n.bandwidth = function() {
                return e
            }, n.step = function() {
                return t
            }, n.round = function(t) {
                return arguments.length ? (o = !!t, f()) : o
            }, n.padding = function(t) {
                return arguments.length ? (s = Math.min(1, u = +t), f()) : s
            }, n.paddingInner = function(t) {
                return arguments.length ? (s = Math.min(1, t), f()) : s
            }, n.paddingOuter = function(t) {
                return arguments.length ? (u = +t, f()) : u
            }, n.align = function(t) {
                return arguments.length ? (c = Math.max(0, Math.min(1, t)), f()) : c
            }, n.copy = function() {
                return Ig(r(), a).round(o).paddingInner(s).paddingOuter(u).align(c)
            }, Ag.apply(f(), arguments)
        }

        function Lg() {
            return function t(e) {
                var n = e.copy;
                return e.padding = e.paddingOuter, delete e.paddingInner, delete e.paddingOuter, e.copy = function() {
                    return t(n())
                }, e
            }(Ig.apply(null, arguments).paddingInner(1))
        }
        var Bg = function(t) {
                return function() {
                    return t
                }
            },
            Og = function(t) {
                return +t
            },
            Rg = [0, 1];

        function Pg(t) {
            return t
        }

        function Fg(t, e) {
            return (e -= t = +t) ? function(n) {
                return (n - t) / e
            } : Bg(isNaN(e) ? NaN : .5)
        }

        function qg(t) {
            var e, n = t[0],
                r = t[t.length - 1];
            return n > r && (e = n, n = r, r = e),
                function(t) {
                    return Math.max(n, Math.min(r, t))
                }
        }

        function jg(t, e, n) {
            var r = t[0],
                i = t[1],
                a = e[0],
                o = e[1];
            return i < r ? (r = Fg(i, r), a = n(o, a)) : (r = Fg(r, i), a = n(a, o)),
                function(t) {
                    return a(r(t))
                }
        }

        function Ug(t, e, n) {
            var r = Math.min(t.length, e.length) - 1,
                i = new Array(r),
                a = new Array(r),
                o = -1;
            for (t[r] < t[0] && (t = t.slice().reverse(), e = e.slice().reverse()); ++o < r;) i[o] = Fg(t[o], t[o + 1]), a[o] = n(e[o], e[o + 1]);
            return function(e) {
                var n = u(t, e, 1, r) - 1;
                return a[n](i[n](e))
            }
        }

        function zg(t, e) {
            return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())
        }

        function Yg() {
            var t, e, n, r, i, a, o = Rg,
                s = Rg,
                u = Bn,
                c = Pg;

            function f() {
                return r = Math.min(o.length, s.length) > 2 ? Ug : jg, i = a = null, l
            }

            function l(e) {
                return isNaN(e = +e) ? n : (i || (i = r(o.map(t), s, u)))(t(c(e)))
            }
            return l.invert = function(n) {
                    return c(e((a || (a = r(s, o.map(t), Mn)))(n)))
                }, l.domain = function(t) {
                    return arguments.length ? (o = Tg.call(t, Og), c === Pg || (c = qg(o)), f()) : o.slice()
                }, l.range = function(t) {
                    return arguments.length ? (s = Dg.call(t), f()) : s.slice()
                }, l.rangeRound = function(t) {
                    return s = Dg.call(t), u = Wp, f()
                }, l.clamp = function(t) {
                    return arguments.length ? (c = t ? qg(o) : Pg, l) : c !== Pg
                }, l.interpolate = function(t) {
                    return arguments.length ? (u = t, f()) : u
                }, l.unknown = function(t) {
                    return arguments.length ? (n = t, l) : n
                },
                function(n, r) {
                    return t = n, e = r, f()
                }
        }

        function Vg(t, e) {
            return Yg()(t, e)
        }
        var Hg = function(t, e, n, r) {
            var i, a = T(t, e, n);
            switch ((r = xu(null == r ? ",f" : r)).type) {
                case "s":
                    var o = Math.max(Math.abs(t), Math.abs(e));
                    return null != r.precision || isNaN(i = Pu(a, o)) || (r.precision = i), Mu(r, o);
                case "":
                case "e":
                case "g":
                case "p":
                case "r":
                    null != r.precision || isNaN(i = Fu(a, Math.max(Math.abs(t), Math.abs(e)))) || (r.precision = i - ("e" === r.type));
                    break;
                case "f":
                case "%":
                    null != r.precision || isNaN(i = Ru(a)) || (r.precision = i - 2 * ("%" === r.type))
            }
            return Su(r)
        };

        function Gg(t) {
            var e = t.domain;
            return t.ticks = function(t) {
                var n = e();
                return S(n[0], n[n.length - 1], null == t ? 10 : t)
            }, t.tickFormat = function(t, n) {
                var r = e();
                return Hg(r[0], r[r.length - 1], null == t ? 10 : t, n)
            }, t.nice = function(n) {
                null == n && (n = 10);
                var r, i = e(),
                    a = 0,
                    o = i.length - 1,
                    s = i[a],
                    u = i[o];
                return u < s && (r = s, s = u, u = r, r = a, a = o, o = r), (r = M(s, u, n)) > 0 ? r = M(s = Math.floor(s / r) * r, u = Math.ceil(u / r) * r, n) : r < 0 && (r = M(s = Math.ceil(s * r) / r, u = Math.floor(u * r) / r, n)), r > 0 ? (i[a] = Math.floor(s / r) * r, i[o] = Math.ceil(u / r) * r, e(i)) : r < 0 && (i[a] = Math.ceil(s * r) / r, i[o] = Math.floor(u * r) / r, e(i)), t
            }, t
        }

        function $g() {
            var t = Vg(Pg, Pg);
            return t.copy = function() {
                return zg(t, $g())
            }, Ag.apply(t, arguments), Gg(t)
        }

        function Wg(t) {
            var e;

            function n(t) {
                return isNaN(t = +t) ? e : t
            }
            return n.invert = n, n.domain = n.range = function(e) {
                return arguments.length ? (t = Tg.call(e, Og), n) : t.slice()
            }, n.unknown = function(t) {
                return arguments.length ? (e = t, n) : e
            }, n.copy = function() {
                return Wg(t).unknown(e)
            }, t = arguments.length ? Tg.call(t, Og) : [0, 1], Gg(n)
        }
        var Kg = function(t, e) {
            var n, r = 0,
                i = (t = t.slice()).length - 1,
                a = t[r],
                o = t[i];
            return o < a && (n = r, r = i, i = n, n = a, a = o, o = n), t[r] = e.floor(a), t[i] = e.ceil(o), t
        };

        function Xg(t) {
            return Math.log(t)
        }

        function Zg(t) {
            return Math.exp(t)
        }

        function Jg(t) {
            return -Math.log(-t)
        }

        function Qg(t) {
            return -Math.exp(-t)
        }

        function ty(t) {
            return isFinite(t) ? +("1e" + t) : t < 0 ? 0 : t
        }

        function ey(t) {
            return function(e) {
                return -t(-e)
            }
        }

        function ny(t) {
            var e, n, r = t(Xg, Zg),
                i = r.domain,
                a = 10;

            function o() {
                return e = function(t) {
                    return t === Math.E ? Math.log : 10 === t && Math.log10 || 2 === t && Math.log2 || (t = Math.log(t), function(e) {
                        return Math.log(e) / t
                    })
                }(a), n = function(t) {
                    return 10 === t ? ty : t === Math.E ? Math.exp : function(e) {
                        return Math.pow(t, e)
                    }
                }(a), i()[0] < 0 ? (e = ey(e), n = ey(n), t(Jg, Qg)) : t(Xg, Zg), r
            }
            return r.base = function(t) {
                return arguments.length ? (a = +t, o()) : a
            }, r.domain = function(t) {
                return arguments.length ? (i(t), o()) : i()
            }, r.ticks = function(t) {
                var r, o = i(),
                    s = o[0],
                    u = o[o.length - 1];
                (r = u < s) && (h = s, s = u, u = h);
                var c, f, l, h = e(s),
                    d = e(u),
                    p = null == t ? 10 : +t,
                    g = [];
                if (!(a % 1) && d - h < p) {
                    if (h = Math.round(h) - 1, d = Math.round(d) + 1, s > 0) {
                        for (; h < d; ++h)
                            for (f = 1, c = n(h); f < a; ++f)
                                if (!((l = c * f) < s)) {
                                    if (l > u) break;
                                    g.push(l)
                                }
                    } else
                        for (; h < d; ++h)
                            for (f = a - 1, c = n(h); f >= 1; --f)
                                if (!((l = c * f) < s)) {
                                    if (l > u) break;
                                    g.push(l)
                                }
                } else g = S(h, d, Math.min(d - h, p)).map(n);
                return r ? g.reverse() : g
            }, r.tickFormat = function(t, i) {
                if (null == i && (i = 10 === a ? ".0e" : ","), "function" != typeof i && (i = Su(i)), t === 1 / 0) return i;
                null == t && (t = 10);
                var o = Math.max(1, a * t / r.ticks().length);
                return function(t) {
                    var r = t / n(Math.round(e(t)));
                    return r * a < a - .5 && (r *= a), r <= o ? i(t) : ""
                }
            }, r.nice = function() {
                return i(Kg(i(), {
                    floor: function(t) {
                        return n(Math.floor(e(t)))
                    },
                    ceil: function(t) {
                        return n(Math.ceil(e(t)))
                    }
                }))
            }, r
        }

        function ry() {
            var t = ny(Yg()).domain([1, 10]);
            return t.copy = function() {
                return zg(t, ry()).base(t.base())
            }, Ag.apply(t, arguments), t
        }

        function iy(t) {
            return function(e) {
                return Math.sign(e) * Math.log1p(Math.abs(e / t))
            }
        }

        function ay(t) {
            return function(e) {
                return Math.sign(e) * Math.expm1(Math.abs(e)) * t
            }
        }

        function oy(t) {
            var e = 1,
                n = t(iy(e), ay(e));
            return n.constant = function(n) {
                return arguments.length ? t(iy(e = +n), ay(e)) : e
            }, Gg(n)
        }

        function sy() {
            var t = oy(Yg());
            return t.copy = function() {
                return zg(t, sy()).constant(t.constant())
            }, Ag.apply(t, arguments)
        }

        function uy(t) {
            return function(e) {
                return e < 0 ? -Math.pow(-e, t) : Math.pow(e, t)
            }
        }

        function cy(t) {
            return t < 0 ? -Math.sqrt(-t) : Math.sqrt(t)
        }

        function fy(t) {
            return t < 0 ? -t * t : t * t
        }

        function ly(t) {
            var e = t(Pg, Pg),
                n = 1;

            function r() {
                return 1 === n ? t(Pg, Pg) : .5 === n ? t(cy, fy) : t(uy(n), uy(1 / n))
            }
            return e.exponent = function(t) {
                return arguments.length ? (n = +t, r()) : n
            }, Gg(e)
        }

        function hy() {
            var t = ly(Yg());
            return t.copy = function() {
                return zg(t, hy()).exponent(t.exponent())
            }, Ag.apply(t, arguments), t
        }

        function dy() {
            return hy.apply(null, arguments).exponent(.5)
        }

        function py() {
            var t, e = [],
                n = [],
                i = [];

            function a() {
                var t = 0,
                    r = Math.max(1, n.length);
                for (i = new Array(r - 1); ++t < r;) i[t - 1] = N(e, t / r);
                return o
            }

            function o(e) {
                return isNaN(e = +e) ? t : n[u(i, e)]
            }
            return o.invertExtent = function(t) {
                var r = n.indexOf(t);
                return r < 0 ? [NaN, NaN] : [r > 0 ? i[r - 1] : e[0], r < i.length ? i[r] : e[e.length - 1]]
            }, o.domain = function(t) {
                if (!arguments.length) return e.slice();
                e = [];
                for (var n, i = 0, o = t.length; i < o; ++i) null == (n = t[i]) || isNaN(n = +n) || e.push(n);
                return e.sort(r), a()
            }, o.range = function(t) {
                return arguments.length ? (n = Dg.call(t), a()) : n.slice()
            }, o.unknown = function(e) {
                return arguments.length ? (t = e, o) : t
            }, o.quantiles = function() {
                return i.slice()
            }, o.copy = function() {
                return py().domain(e).range(n).unknown(t)
            }, Ag.apply(o, arguments)
        }

        function gy() {
            var t, e = 0,
                n = 1,
                r = 1,
                i = [.5],
                a = [0, 1];

            function o(e) {
                return e <= e ? a[u(i, e, 0, r)] : t
            }

            function s() {
                var t = -1;
                for (i = new Array(r); ++t < r;) i[t] = ((t + 1) * n - (t - r) * e) / (r + 1);
                return o
            }
            return o.domain = function(t) {
                return arguments.length ? (e = +t[0], n = +t[1], s()) : [e, n]
            }, o.range = function(t) {
                return arguments.length ? (r = (a = Dg.call(t)).length - 1, s()) : a.slice()
            }, o.invertExtent = function(t) {
                var o = a.indexOf(t);
                return o < 0 ? [NaN, NaN] : o < 1 ? [e, i[0]] : o >= r ? [i[r - 1], n] : [i[o - 1], i[o]]
            }, o.unknown = function(e) {
                return arguments.length ? (t = e, o) : o
            }, o.thresholds = function() {
                return i.slice()
            }, o.copy = function() {
                return gy().domain([e, n]).range(a).unknown(t)
            }, Ag.apply(Gg(o), arguments)
        }

        function yy() {
            var t, e = [.5],
                n = [0, 1],
                r = 1;

            function i(i) {
                return i <= i ? n[u(e, i, 0, r)] : t
            }
            return i.domain = function(t) {
                return arguments.length ? (e = Dg.call(t), r = Math.min(e.length, n.length - 1), i) : e.slice()
            }, i.range = function(t) {
                return arguments.length ? (n = Dg.call(t), r = Math.min(e.length, n.length - 1), i) : n.slice()
            }, i.invertExtent = function(t) {
                var r = n.indexOf(t);
                return [e[r - 1], e[r]]
            }, i.unknown = function(e) {
                return arguments.length ? (t = e, i) : t
            }, i.copy = function() {
                return yy().domain(e).range(n).unknown(t)
            }, Ag.apply(i, arguments)
        }
        var by = new Date,
            vy = new Date;

        function my(t, e, n, r) {
            function i(e) {
                return t(e = 0 === arguments.length ? new Date : new Date(+e)), e
            }
            return i.floor = function(e) {
                return t(e = new Date(+e)), e
            }, i.ceil = function(n) {
                return t(n = new Date(n - 1)), e(n, 1), t(n), n
            }, i.round = function(t) {
                var e = i(t),
                    n = i.ceil(t);
                return t - e < n - t ? e : n
            }, i.offset = function(t, n) {
                return e(t = new Date(+t), null == n ? 1 : Math.floor(n)), t
            }, i.range = function(n, r, a) {
                var o, s = [];
                if (n = i.ceil(n), a = null == a ? 1 : Math.floor(a), !(n < r && a > 0)) return s;
                do {
                    s.push(o = new Date(+n)), e(n, a), t(n)
                } while (o < n && n < r);
                return s
            }, i.filter = function(n) {
                return my((function(e) {
                    if (e >= e)
                        for (; t(e), !n(e);) e.setTime(e - 1)
                }), (function(t, r) {
                    if (t >= t)
                        if (r < 0)
                            for (; ++r <= 0;)
                                for (; e(t, -1), !n(t););
                        else
                            for (; --r >= 0;)
                                for (; e(t, 1), !n(t););
                }))
            }, n && (i.count = function(e, r) {
                return by.setTime(+e), vy.setTime(+r), t(by), t(vy), Math.floor(n(by, vy))
            }, i.every = function(t) {
                return t = Math.floor(t), isFinite(t) && t > 0 ? t > 1 ? i.filter(r ? function(e) {
                    return r(e) % t == 0
                } : function(e) {
                    return i.count(0, e) % t == 0
                }) : i : null
            }), i
        }
        var _y = my((function(t) {
            t.setMonth(0, 1), t.setHours(0, 0, 0, 0)
        }), (function(t, e) {
            t.setFullYear(t.getFullYear() + e)
        }), (function(t, e) {
            return e.getFullYear() - t.getFullYear()
        }), (function(t) {
            return t.getFullYear()
        }));
        _y.every = function(t) {
            return isFinite(t = Math.floor(t)) && t > 0 ? my((function(e) {
                e.setFullYear(Math.floor(e.getFullYear() / t) * t), e.setMonth(0, 1), e.setHours(0, 0, 0, 0)
            }), (function(e, n) {
                e.setFullYear(e.getFullYear() + n * t)
            })) : null
        };
        var wy = _y,
            xy = _y.range,
            ky = my((function(t) {
                t.setDate(1), t.setHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setMonth(t.getMonth() + e)
            }), (function(t, e) {
                return e.getMonth() - t.getMonth() + 12 * (e.getFullYear() - t.getFullYear())
            }), (function(t) {
                return t.getMonth()
            })),
            Ey = ky,
            Ay = ky.range,
            Sy = 6e4,
            My = 6048e5;

        function Ty(t) {
            return my((function(e) {
                e.setDate(e.getDate() - (e.getDay() + 7 - t) % 7), e.setHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setDate(t.getDate() + 7 * e)
            }), (function(t, e) {
                return (e - t - (e.getTimezoneOffset() - t.getTimezoneOffset()) * Sy) / My
            }))
        }
        var Dy = Ty(0),
            Cy = Ty(1),
            Ny = Ty(2),
            Iy = Ty(3),
            Ly = Ty(4),
            By = Ty(5),
            Oy = Ty(6),
            Ry = Dy.range,
            Py = Cy.range,
            Fy = Ny.range,
            qy = Iy.range,
            jy = Ly.range,
            Uy = By.range,
            zy = Oy.range,
            Yy = my((function(t) {
                t.setHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setDate(t.getDate() + e)
            }), (function(t, e) {
                return (e - t - (e.getTimezoneOffset() - t.getTimezoneOffset()) * Sy) / 864e5
            }), (function(t) {
                return t.getDate() - 1
            })),
            Vy = Yy,
            Hy = Yy.range,
            Gy = my((function(t) {
                t.setTime(t - t.getMilliseconds() - 1e3 * t.getSeconds() - t.getMinutes() * Sy)
            }), (function(t, e) {
                t.setTime(+t + 36e5 * e)
            }), (function(t, e) {
                return (e - t) / 36e5
            }), (function(t) {
                return t.getHours()
            })),
            $y = Gy,
            Wy = Gy.range,
            Ky = my((function(t) {
                t.setTime(t - t.getMilliseconds() - 1e3 * t.getSeconds())
            }), (function(t, e) {
                t.setTime(+t + e * Sy)
            }), (function(t, e) {
                return (e - t) / Sy
            }), (function(t) {
                return t.getMinutes()
            })),
            Xy = Ky,
            Zy = Ky.range,
            Jy = my((function(t) {
                t.setTime(t - t.getMilliseconds())
            }), (function(t, e) {
                t.setTime(+t + 1e3 * e)
            }), (function(t, e) {
                return (e - t) / 1e3
            }), (function(t) {
                return t.getUTCSeconds()
            })),
            Qy = Jy,
            tb = Jy.range,
            eb = my((function() {}), (function(t, e) {
                t.setTime(+t + e)
            }), (function(t, e) {
                return e - t
            }));
        eb.every = function(t) {
            return t = Math.floor(t), isFinite(t) && t > 0 ? t > 1 ? my((function(e) {
                e.setTime(Math.floor(e / t) * t)
            }), (function(e, n) {
                e.setTime(+e + n * t)
            }), (function(e, n) {
                return (n - e) / t
            })) : eb : null
        };
        var nb = eb,
            rb = eb.range;

        function ib(t) {
            return my((function(e) {
                e.setUTCDate(e.getUTCDate() - (e.getUTCDay() + 7 - t) % 7), e.setUTCHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setUTCDate(t.getUTCDate() + 7 * e)
            }), (function(t, e) {
                return (e - t) / My
            }))
        }
        var ab = ib(0),
            ob = ib(1),
            sb = ib(2),
            ub = ib(3),
            cb = ib(4),
            fb = ib(5),
            lb = ib(6),
            hb = ab.range,
            db = ob.range,
            pb = sb.range,
            gb = ub.range,
            yb = cb.range,
            bb = fb.range,
            vb = lb.range,
            mb = my((function(t) {
                t.setUTCHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setUTCDate(t.getUTCDate() + e)
            }), (function(t, e) {
                return (e - t) / 864e5
            }), (function(t) {
                return t.getUTCDate() - 1
            })),
            _b = mb,
            wb = mb.range,
            xb = my((function(t) {
                t.setUTCMonth(0, 1), t.setUTCHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setUTCFullYear(t.getUTCFullYear() + e)
            }), (function(t, e) {
                return e.getUTCFullYear() - t.getUTCFullYear()
            }), (function(t) {
                return t.getUTCFullYear()
            }));
        xb.every = function(t) {
            return isFinite(t = Math.floor(t)) && t > 0 ? my((function(e) {
                e.setUTCFullYear(Math.floor(e.getUTCFullYear() / t) * t), e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0)
            }), (function(e, n) {
                e.setUTCFullYear(e.getUTCFullYear() + n * t)
            })) : null
        };
        var kb = xb,
            Eb = xb.range;

        function Ab(t) {
            if (0 <= t.y && t.y < 100) {
                var e = new Date(-1, t.m, t.d, t.H, t.M, t.S, t.L);
                return e.setFullYear(t.y), e
            }
            return new Date(t.y, t.m, t.d, t.H, t.M, t.S, t.L)
        }

        function Sb(t) {
            if (0 <= t.y && t.y < 100) {
                var e = new Date(Date.UTC(-1, t.m, t.d, t.H, t.M, t.S, t.L));
                return e.setUTCFullYear(t.y), e
            }
            return new Date(Date.UTC(t.y, t.m, t.d, t.H, t.M, t.S, t.L))
        }

        function Mb(t, e, n) {
            return {
                y: t,
                m: e,
                d: n,
                H: 0,
                M: 0,
                S: 0,
                L: 0
            }
        }

        function Tb(t) {
            var e = t.dateTime,
                n = t.date,
                r = t.time,
                i = t.periods,
                a = t.days,
                o = t.shortDays,
                s = t.months,
                u = t.shortMonths,
                c = jb(i),
                f = Ub(i),
                l = jb(a),
                h = Ub(a),
                d = jb(o),
                p = Ub(o),
                g = jb(s),
                y = Ub(s),
                b = jb(u),
                v = Ub(u),
                m = {
                    a: function(t) {
                        return o[t.getDay()]
                    },
                    A: function(t) {
                        return a[t.getDay()]
                    },
                    b: function(t) {
                        return u[t.getMonth()]
                    },
                    B: function(t) {
                        return s[t.getMonth()]
                    },
                    c: null,
                    d: uv,
                    e: uv,
                    f: dv,
                    H: cv,
                    I: fv,
                    j: lv,
                    L: hv,
                    m: pv,
                    M: gv,
                    p: function(t) {
                        return i[+(t.getHours() >= 12)]
                    },
                    q: function(t) {
                        return 1 + ~~(t.getMonth() / 3)
                    },
                    Q: Yv,
                    s: Vv,
                    S: yv,
                    u: bv,
                    U: vv,
                    V: mv,
                    w: _v,
                    W: wv,
                    x: null,
                    X: null,
                    y: xv,
                    Y: kv,
                    Z: Ev,
                    "%": zv
                },
                _ = {
                    a: function(t) {
                        return o[t.getUTCDay()]
                    },
                    A: function(t) {
                        return a[t.getUTCDay()]
                    },
                    b: function(t) {
                        return u[t.getUTCMonth()]
                    },
                    B: function(t) {
                        return s[t.getUTCMonth()]
                    },
                    c: null,
                    d: Av,
                    e: Av,
                    f: Cv,
                    H: Sv,
                    I: Mv,
                    j: Tv,
                    L: Dv,
                    m: Nv,
                    M: Iv,
                    p: function(t) {
                        return i[+(t.getUTCHours() >= 12)]
                    },
                    q: function(t) {
                        return 1 + ~~(t.getUTCMonth() / 3)
                    },
                    Q: Yv,
                    s: Vv,
                    S: Lv,
                    u: Bv,
                    U: Ov,
                    V: Rv,
                    w: Pv,
                    W: Fv,
                    x: null,
                    X: null,
                    y: qv,
                    Y: jv,
                    Z: Uv,
                    "%": zv
                },
                w = {
                    a: function(t, e, n) {
                        var r = d.exec(e.slice(n));
                        return r ? (t.w = p[r[0].toLowerCase()], n + r[0].length) : -1
                    },
                    A: function(t, e, n) {
                        var r = l.exec(e.slice(n));
                        return r ? (t.w = h[r[0].toLowerCase()], n + r[0].length) : -1
                    },
                    b: function(t, e, n) {
                        var r = b.exec(e.slice(n));
                        return r ? (t.m = v[r[0].toLowerCase()], n + r[0].length) : -1
                    },
                    B: function(t, e, n) {
                        var r = g.exec(e.slice(n));
                        return r ? (t.m = y[r[0].toLowerCase()], n + r[0].length) : -1
                    },
                    c: function(t, n, r) {
                        return E(t, e, n, r)
                    },
                    d: Jb,
                    e: Jb,
                    f: iv,
                    H: tv,
                    I: tv,
                    j: Qb,
                    L: rv,
                    m: Zb,
                    M: ev,
                    p: function(t, e, n) {
                        var r = c.exec(e.slice(n));
                        return r ? (t.p = f[r[0].toLowerCase()], n + r[0].length) : -1
                    },
                    q: Xb,
                    Q: ov,
                    s: sv,
                    S: nv,
                    u: Yb,
                    U: Vb,
                    V: Hb,
                    w: zb,
                    W: Gb,
                    x: function(t, e, r) {
                        return E(t, n, e, r)
                    },
                    X: function(t, e, n) {
                        return E(t, r, e, n)
                    },
                    y: Wb,
                    Y: $b,
                    Z: Kb,
                    "%": av
                };

            function x(t, e) {
                return function(n) {
                    var r, i, a, o = [],
                        s = -1,
                        u = 0,
                        c = t.length;
                    for (n instanceof Date || (n = new Date(+n)); ++s < c;) 37 === t.charCodeAt(s) && (o.push(t.slice(u, s)), null != (i = Bb[r = t.charAt(++s)]) ? r = t.charAt(++s) : i = "e" === r ? " " : "0", (a = e[r]) && (r = a(n, i)), o.push(r), u = s + 1);
                    return o.push(t.slice(u, s)), o.join("")
                }
            }

            function k(t, e) {
                return function(n) {
                    var r, i, a = Mb(1900, void 0, 1);
                    if (E(a, t, n += "", 0) != n.length) return null;
                    if ("Q" in a) return new Date(a.Q);
                    if ("s" in a) return new Date(1e3 * a.s + ("L" in a ? a.L : 0));
                    if (!e || "Z" in a || (a.Z = 0), "p" in a && (a.H = a.H % 12 + 12 * a.p), void 0 === a.m && (a.m = "q" in a ? a.q : 0), "V" in a) {
                        if (a.V < 1 || a.V > 53) return null;
                        "w" in a || (a.w = 1), "Z" in a ? (i = (r = Sb(Mb(a.y, 0, 1))).getUTCDay(), r = i > 4 || 0 === i ? ob.ceil(r) : ob(r), r = _b.offset(r, 7 * (a.V - 1)), a.y = r.getUTCFullYear(), a.m = r.getUTCMonth(), a.d = r.getUTCDate() + (a.w + 6) % 7) : (i = (r = Ab(Mb(a.y, 0, 1))).getDay(), r = i > 4 || 0 === i ? Cy.ceil(r) : Cy(r), r = Vy.offset(r, 7 * (a.V - 1)), a.y = r.getFullYear(), a.m = r.getMonth(), a.d = r.getDate() + (a.w + 6) % 7)
                    } else("W" in a || "U" in a) && ("w" in a || (a.w = "u" in a ? a.u % 7 : "W" in a ? 1 : 0), i = "Z" in a ? Sb(Mb(a.y, 0, 1)).getUTCDay() : Ab(Mb(a.y, 0, 1)).getDay(), a.m = 0, a.d = "W" in a ? (a.w + 6) % 7 + 7 * a.W - (i + 5) % 7 : a.w + 7 * a.U - (i + 6) % 7);
                    return "Z" in a ? (a.H += a.Z / 100 | 0, a.M += a.Z % 100, Sb(a)) : Ab(a)
                }
            }

            function E(t, e, n, r) {
                for (var i, a, o = 0, s = e.length, u = n.length; o < s;) {
                    if (r >= u) return -1;
                    if (37 === (i = e.charCodeAt(o++))) {
                        if (i = e.charAt(o++), !(a = w[i in Bb ? e.charAt(o++) : i]) || (r = a(t, n, r)) < 0) return -1
                    } else if (i != n.charCodeAt(r++)) return -1
                }
                return r
            }
            return (m.x = x(n, m), m.X = x(r, m), m.c = x(e, m), _.x = x(n, _), _.X = x(r, _), _.c = x(e, _), {
                format: function(t) {
                    var e = x(t += "", m);
                    return e.toString = function() {
                        return t
                    }, e
                },
                parse: function(t) {
                    var e = k(t += "", !1);
                    return e.toString = function() {
                        return t
                    }, e
                },
                utcFormat: function(t) {
                    var e = x(t += "", _);
                    return e.toString = function() {
                        return t
                    }, e
                },
                utcParse: function(t) {
                    var e = k(t += "", !0);
                    return e.toString = function() {
                        return t
                    }, e
                }
            })
        }
        var Db, Cb, Nb, Ib, Lb, Bb = {
                "-": "",
                _: " ",
                0: "0"
            },
            Ob = /^\s*\d+/,
            Rb = /^%/,
            Pb = /[\\^$*+?|[\]().{}]/g;

        function Fb(t, e, n) {
            var r = t < 0 ? "-" : "",
                i = (r ? -t : t) + "",
                a = i.length;
            return r + (a < n ? new Array(n - a + 1).join(e) + i : i)
        }

        function qb(t) {
            return t.replace(Pb, "\\$&")
        }

        function jb(t) {
            return new RegExp("^(?:" + t.map(qb).join("|") + ")", "i")
        }

        function Ub(t) {
            for (var e = {}, n = -1, r = t.length; ++n < r;) e[t[n].toLowerCase()] = n;
            return e
        }

        function zb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 1));
            return r ? (t.w = +r[0], n + r[0].length) : -1
        }

        function Yb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 1));
            return r ? (t.u = +r[0], n + r[0].length) : -1
        }

        function Vb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.U = +r[0], n + r[0].length) : -1
        }

        function Hb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.V = +r[0], n + r[0].length) : -1
        }

        function Gb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.W = +r[0], n + r[0].length) : -1
        }

        function $b(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 4));
            return r ? (t.y = +r[0], n + r[0].length) : -1
        }

        function Wb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.y = +r[0] + (+r[0] > 68 ? 1900 : 2e3), n + r[0].length) : -1
        }

        function Kb(t, e, n) {
            var r = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n, n + 6));
            return r ? (t.Z = r[1] ? 0 : -(r[2] + (r[3] || "00")), n + r[0].length) : -1
        }

        function Xb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 1));
            return r ? (t.q = 3 * r[0] - 3, n + r[0].length) : -1
        }

        function Zb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.m = r[0] - 1, n + r[0].length) : -1
        }

        function Jb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.d = +r[0], n + r[0].length) : -1
        }

        function Qb(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 3));
            return r ? (t.m = 0, t.d = +r[0], n + r[0].length) : -1
        }

        function tv(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.H = +r[0], n + r[0].length) : -1
        }

        function ev(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.M = +r[0], n + r[0].length) : -1
        }

        function nv(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 2));
            return r ? (t.S = +r[0], n + r[0].length) : -1
        }

        function rv(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 3));
            return r ? (t.L = +r[0], n + r[0].length) : -1
        }

        function iv(t, e, n) {
            var r = Ob.exec(e.slice(n, n + 6));
            return r ? (t.L = Math.floor(r[0] / 1e3), n + r[0].length) : -1
        }

        function av(t, e, n) {
            var r = Rb.exec(e.slice(n, n + 1));
            return r ? n + r[0].length : -1
        }

        function ov(t, e, n) {
            var r = Ob.exec(e.slice(n));
            return r ? (t.Q = +r[0], n + r[0].length) : -1
        }

        function sv(t, e, n) {
            var r = Ob.exec(e.slice(n));
            return r ? (t.s = +r[0], n + r[0].length) : -1
        }

        function uv(t, e) {
            return Fb(t.getDate(), e, 2)
        }

        function cv(t, e) {
            return Fb(t.getHours(), e, 2)
        }

        function fv(t, e) {
            return Fb(t.getHours() % 12 || 12, e, 2)
        }

        function lv(t, e) {
            return Fb(1 + Vy.count(wy(t), t), e, 3)
        }

        function hv(t, e) {
            return Fb(t.getMilliseconds(), e, 3)
        }

        function dv(t, e) {
            return hv(t, e) + "000"
        }

        function pv(t, e) {
            return Fb(t.getMonth() + 1, e, 2)
        }

        function gv(t, e) {
            return Fb(t.getMinutes(), e, 2)
        }

        function yv(t, e) {
            return Fb(t.getSeconds(), e, 2)
        }

        function bv(t) {
            var e = t.getDay();
            return 0 === e ? 7 : e
        }

        function vv(t, e) {
            return Fb(Dy.count(wy(t) - 1, t), e, 2)
        }

        function mv(t, e) {
            var n = t.getDay();
            return t = n >= 4 || 0 === n ? Ly(t) : Ly.ceil(t), Fb(Ly.count(wy(t), t) + (4 === wy(t).getDay()), e, 2)
        }

        function _v(t) {
            return t.getDay()
        }

        function wv(t, e) {
            return Fb(Cy.count(wy(t) - 1, t), e, 2)
        }

        function xv(t, e) {
            return Fb(t.getFullYear() % 100, e, 2)
        }

        function kv(t, e) {
            return Fb(t.getFullYear() % 1e4, e, 4)
        }

        function Ev(t) {
            var e = t.getTimezoneOffset();
            return (e > 0 ? "-" : (e *= -1, "+")) + Fb(e / 60 | 0, "0", 2) + Fb(e % 60, "0", 2)
        }

        function Av(t, e) {
            return Fb(t.getUTCDate(), e, 2)
        }

        function Sv(t, e) {
            return Fb(t.getUTCHours(), e, 2)
        }

        function Mv(t, e) {
            return Fb(t.getUTCHours() % 12 || 12, e, 2)
        }

        function Tv(t, e) {
            return Fb(1 + _b.count(kb(t), t), e, 3)
        }

        function Dv(t, e) {
            return Fb(t.getUTCMilliseconds(), e, 3)
        }

        function Cv(t, e) {
            return Dv(t, e) + "000"
        }

        function Nv(t, e) {
            return Fb(t.getUTCMonth() + 1, e, 2)
        }

        function Iv(t, e) {
            return Fb(t.getUTCMinutes(), e, 2)
        }

        function Lv(t, e) {
            return Fb(t.getUTCSeconds(), e, 2)
        }

        function Bv(t) {
            var e = t.getUTCDay();
            return 0 === e ? 7 : e
        }

        function Ov(t, e) {
            return Fb(ab.count(kb(t) - 1, t), e, 2)
        }

        function Rv(t, e) {
            var n = t.getUTCDay();
            return t = n >= 4 || 0 === n ? cb(t) : cb.ceil(t), Fb(cb.count(kb(t), t) + (4 === kb(t).getUTCDay()), e, 2)
        }

        function Pv(t) {
            return t.getUTCDay()
        }

        function Fv(t, e) {
            return Fb(ob.count(kb(t) - 1, t), e, 2)
        }

        function qv(t, e) {
            return Fb(t.getUTCFullYear() % 100, e, 2)
        }

        function jv(t, e) {
            return Fb(t.getUTCFullYear() % 1e4, e, 4)
        }

        function Uv() {
            return "+0000"
        }

        function zv() {
            return "%"
        }

        function Yv(t) {
            return +t
        }

        function Vv(t) {
            return Math.floor(+t / 1e3)
        }

        function Hv(t) {
            return Db = Tb(t), Cb = Db.format, Nb = Db.parse, Ib = Db.utcFormat, Lb = Db.utcParse, Db
        }
        Hv({
            dateTime: "%x, %X",
            date: "%-m/%-d/%Y",
            time: "%-I:%M:%S %p",
            periods: ["AM", "PM"],
            days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
            shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
            months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
        });
        var Gv = 1e3,
            $v = 60 * Gv,
            Wv = 60 * $v,
            Kv = 24 * Wv,
            Xv = 7 * Kv,
            Zv = 30 * Kv,
            Jv = 365 * Kv;

        function Qv(t) {
            return new Date(t)
        }

        function tm(t) {
            return t instanceof Date ? +t : +new Date(+t)
        }

        function em(t, e, n, r, a, o, s, u, c) {
            var f = Vg(Pg, Pg),
                l = f.invert,
                h = f.domain,
                d = c(".%L"),
                p = c(":%S"),
                g = c("%I:%M"),
                y = c("%I %p"),
                b = c("%a %d"),
                v = c("%b %d"),
                m = c("%B"),
                _ = c("%Y"),
                w = [
                    [s, 1, Gv],
                    [s, 5, 5 * Gv],
                    [s, 15, 15 * Gv],
                    [s, 30, 30 * Gv],
                    [o, 1, $v],
                    [o, 5, 5 * $v],
                    [o, 15, 15 * $v],
                    [o, 30, 30 * $v],
                    [a, 1, Wv],
                    [a, 3, 3 * Wv],
                    [a, 6, 6 * Wv],
                    [a, 12, 12 * Wv],
                    [r, 1, Kv],
                    [r, 2, 2 * Kv],
                    [n, 1, Xv],
                    [e, 1, Zv],
                    [e, 3, 3 * Zv],
                    [t, 1, Jv]
                ];

            function x(i) {
                return (s(i) < i ? d : o(i) < i ? p : a(i) < i ? g : r(i) < i ? y : e(i) < i ? n(i) < i ? b : v : t(i) < i ? m : _)(i)
            }

            function k(e, n, r, a) {
                if (null == e && (e = 10), "number" == typeof e) {
                    var o = Math.abs(r - n) / e,
                        s = i((function(t) {
                            return t[2]
                        })).right(w, o);
                    s === w.length ? (a = T(n / Jv, r / Jv, e), e = t) : s ? (a = (s = w[o / w[s - 1][2] < w[s][2] / o ? s - 1 : s])[1], e = s[0]) : (a = Math.max(T(n, r, e), 1), e = u)
                }
                return null == a ? e : e.every(a)
            }
            return f.invert = function(t) {
                return new Date(l(t))
            }, f.domain = function(t) {
                return arguments.length ? h(Tg.call(t, tm)) : h().map(Qv)
            }, f.ticks = function(t, e) {
                var n, r = h(),
                    i = r[0],
                    a = r[r.length - 1],
                    o = a < i;
                return o && (n = i, i = a, a = n), n = (n = k(t, i, a, e)) ? n.range(i, a + 1) : [], o ? n.reverse() : n
            }, f.tickFormat = function(t, e) {
                return null == e ? x : c(e)
            }, f.nice = function(t, e) {
                var n = h();
                return (t = k(t, n[0], n[n.length - 1], e)) ? h(Kg(n, t)) : f
            }, f.copy = function() {
                return zg(f, em(t, e, n, r, a, o, s, u, c))
            }, f
        }
        var nm = function() {
                return Ag.apply(em(wy, Ey, Dy, Vy, $y, Xy, Qy, nb, Cb).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments)
            },
            rm = my((function(t) {
                t.setUTCDate(1), t.setUTCHours(0, 0, 0, 0)
            }), (function(t, e) {
                t.setUTCMonth(t.getUTCMonth() + e)
            }), (function(t, e) {
                return e.getUTCMonth() - t.getUTCMonth() + 12 * (e.getUTCFullYear() - t.getUTCFullYear())
            }), (function(t) {
                return t.getUTCMonth()
            })),
            im = rm,
            am = rm.range,
            om = my((function(t) {
                t.setUTCMinutes(0, 0, 0)
            }), (function(t, e) {
                t.setTime(+t + 36e5 * e)
            }), (function(t, e) {
                return (e - t) / 36e5
            }), (function(t) {
                return t.getUTCHours()
            })),
            sm = om,
            um = om.range,
            cm = my((function(t) {
                t.setUTCSeconds(0, 0)
            }), (function(t, e) {
                t.setTime(+t + e * Sy)
            }), (function(t, e) {
                return (e - t) / Sy
            }), (function(t) {
                return t.getUTCMinutes()
            })),
            fm = cm,
            lm = cm.range,
            hm = function() {
                return Ag.apply(em(kb, im, ab, _b, sm, fm, Qy, nb, Ib).domain([Date.UTC(2e3, 0, 1), Date.UTC(2e3, 0, 2)]), arguments)
            };

        function dm() {
            var t, e, n, r, i, a = 0,
                o = 1,
                s = Pg,
                u = !1;

            function c(e) {
                return isNaN(e = +e) ? i : s(0 === n ? .5 : (e = (r(e) - t) * n, u ? Math.max(0, Math.min(1, e)) : e))
            }
            return c.domain = function(i) {
                    return arguments.length ? (t = r(a = +i[0]), e = r(o = +i[1]), n = t === e ? 0 : 1 / (e - t), c) : [a, o]
                }, c.clamp = function(t) {
                    return arguments.length ? (u = !!t, c) : u
                }, c.interpolator = function(t) {
                    return arguments.length ? (s = t, c) : s
                }, c.unknown = function(t) {
                    return arguments.length ? (i = t, c) : i
                },
                function(i) {
                    return r = i, t = i(a), e = i(o), n = t === e ? 0 : 1 / (e - t), c
                }
        }

        function pm(t, e) {
            return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())
        }

        function gm() {
            var t = Gg(dm()(Pg));
            return t.copy = function() {
                return pm(t, gm())
            }, Sg.apply(t, arguments)
        }

        function ym() {
            var t = ny(dm()).domain([1, 10]);
            return t.copy = function() {
                return pm(t, ym()).base(t.base())
            }, Sg.apply(t, arguments)
        }

        function bm() {
            var t = oy(dm());
            return t.copy = function() {
                return pm(t, bm()).constant(t.constant())
            }, Sg.apply(t, arguments)
        }

        function vm() {
            var t = ly(dm());
            return t.copy = function() {
                return pm(t, vm()).exponent(t.exponent())
            }, Sg.apply(t, arguments)
        }

        function mm() {
            return vm.apply(null, arguments).exponent(.5)
        }

        function _m() {
            var t = [],
                e = Pg;

            function n(n) {
                if (!isNaN(n = +n)) return e((u(t, n) - 1) / (t.length - 1))
            }
            return n.domain = function(e) {
                if (!arguments.length) return t.slice();
                t = [];
                for (var i, a = 0, o = e.length; a < o; ++a) null == (i = e[a]) || isNaN(i = +i) || t.push(i);
                return t.sort(r), n
            }, n.interpolator = function(t) {
                return arguments.length ? (e = t, n) : e
            }, n.copy = function() {
                return _m(e).domain(t)
            }, Sg.apply(n, arguments)
        }

        function wm() {
            var t, e, n, r, i, a, o, s = 0,
                u = .5,
                c = 1,
                f = Pg,
                l = !1;

            function h(t) {
                return isNaN(t = +t) ? o : (t = .5 + ((t = +a(t)) - e) * (t < e ? r : i), f(l ? Math.max(0, Math.min(1, t)) : t))
            }
            return h.domain = function(o) {
                    return arguments.length ? (t = a(s = +o[0]), e = a(u = +o[1]), n = a(c = +o[2]), r = t === e ? 0 : .5 / (e - t), i = e === n ? 0 : .5 / (n - e), h) : [s, u, c]
                }, h.clamp = function(t) {
                    return arguments.length ? (l = !!t, h) : l
                }, h.interpolator = function(t) {
                    return arguments.length ? (f = t, h) : f
                }, h.unknown = function(t) {
                    return arguments.length ? (o = t, h) : o
                },
                function(o) {
                    return a = o, t = o(s), e = o(u), n = o(c), r = t === e ? 0 : .5 / (e - t), i = e === n ? 0 : .5 / (n - e), h
                }
        }

        function xm() {
            var t = Gg(wm()(Pg));
            return t.copy = function() {
                return pm(t, xm())
            }, Sg.apply(t, arguments)
        }

        function km() {
            var t = ny(wm()).domain([.1, 1, 10]);
            return t.copy = function() {
                return pm(t, km()).base(t.base())
            }, Sg.apply(t, arguments)
        }

        function Em() {
            var t = oy(wm());
            return t.copy = function() {
                return pm(t, Em()).constant(t.constant())
            }, Sg.apply(t, arguments)
        }

        function Am() {
            var t = ly(wm());
            return t.copy = function() {
                return pm(t, Am()).exponent(t.exponent())
            }, Sg.apply(t, arguments)
        }

        function Sm() {
            return Am.apply(null, arguments).exponent(.5)
        }
        var Mm = function(t) {
                for (var e = t.length / 6 | 0, n = new Array(e), r = 0; r < e;) n[r] = "#" + t.slice(6 * r, 6 * ++r);
                return n
            },
            Tm = Mm("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),
            Dm = Mm("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),
            Cm = Mm("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),
            Nm = Mm("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),
            Im = Mm("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),
            Lm = Mm("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),
            Bm = Mm("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),
            Om = Mm("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),
            Rm = Mm("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),
            Pm = Mm("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),
            Fm = function(t) {
                return _n(t[t.length - 1])
            },
            qm = new Array(3).concat("d8b365f5f5f55ab4ac", "a6611adfc27d80cdc1018571", "a6611adfc27df5f5f580cdc1018571", "8c510ad8b365f6e8c3c7eae55ab4ac01665e", "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Mm),
            jm = Fm(qm),
            Um = new Array(3).concat("af8dc3f7f7f77fbf7b", "7b3294c2a5cfa6dba0008837", "7b3294c2a5cff7f7f7a6dba0008837", "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Mm),
            zm = Fm(Um),
            Ym = new Array(3).concat("e9a3c9f7f7f7a1d76a", "d01c8bf1b6dab8e1864dac26", "d01c8bf1b6daf7f7f7b8e1864dac26", "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Mm),
            Vm = Fm(Ym),
            Hm = new Array(3).concat("998ec3f7f7f7f1a340", "5e3c99b2abd2fdb863e66101", "5e3c99b2abd2f7f7f7fdb863e66101", "542788998ec3d8daebfee0b6f1a340b35806", "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Mm),
            Gm = Fm(Hm),
            $m = new Array(3).concat("ef8a62f7f7f767a9cf", "ca0020f4a58292c5de0571b0", "ca0020f4a582f7f7f792c5de0571b0", "b2182bef8a62fddbc7d1e5f067a9cf2166ac", "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Mm),
            Wm = Fm($m),
            Km = new Array(3).concat("ef8a62ffffff999999", "ca0020f4a582bababa404040", "ca0020f4a582ffffffbababa404040", "b2182bef8a62fddbc7e0e0e09999994d4d4d", "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Mm),
            Xm = Fm(Km),
            Zm = new Array(3).concat("fc8d59ffffbf91bfdb", "d7191cfdae61abd9e92c7bb6", "d7191cfdae61ffffbfabd9e92c7bb6", "d73027fc8d59fee090e0f3f891bfdb4575b4", "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Mm),
            Jm = Fm(Zm),
            Qm = new Array(3).concat("fc8d59ffffbf91cf60", "d7191cfdae61a6d96a1a9641", "d7191cfdae61ffffbfa6d96a1a9641", "d73027fc8d59fee08bd9ef8b91cf601a9850", "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Mm),
            t_ = Fm(Qm),
            e_ = new Array(3).concat("fc8d59ffffbf99d594", "d7191cfdae61abdda42b83ba", "d7191cfdae61ffffbfabdda42b83ba", "d53e4ffc8d59fee08be6f59899d5943288bd", "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Mm),
            n_ = Fm(e_),
            r_ = new Array(3).concat("e5f5f999d8c92ca25f", "edf8fbb2e2e266c2a4238b45", "edf8fbb2e2e266c2a42ca25f006d2c", "edf8fbccece699d8c966c2a42ca25f006d2c", "edf8fbccece699d8c966c2a441ae76238b45005824", "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Mm),
            i_ = Fm(r_),
            a_ = new Array(3).concat("e0ecf49ebcda8856a7", "edf8fbb3cde38c96c688419d", "edf8fbb3cde38c96c68856a7810f7c", "edf8fbbfd3e69ebcda8c96c68856a7810f7c", "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Mm),
            o_ = Fm(a_),
            s_ = new Array(3).concat("e0f3dba8ddb543a2ca", "f0f9e8bae4bc7bccc42b8cbe", "f0f9e8bae4bc7bccc443a2ca0868ac", "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Mm),
            u_ = Fm(s_),
            c_ = new Array(3).concat("fee8c8fdbb84e34a33", "fef0d9fdcc8afc8d59d7301f", "fef0d9fdcc8afc8d59e34a33b30000", "fef0d9fdd49efdbb84fc8d59e34a33b30000", "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Mm),
            f_ = Fm(c_),
            l_ = new Array(3).concat("ece2f0a6bddb1c9099", "f6eff7bdc9e167a9cf02818a", "f6eff7bdc9e167a9cf1c9099016c59", "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Mm),
            h_ = Fm(l_),
            d_ = new Array(3).concat("ece7f2a6bddb2b8cbe", "f1eef6bdc9e174a9cf0570b0", "f1eef6bdc9e174a9cf2b8cbe045a8d", "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Mm),
            p_ = Fm(d_),
            g_ = new Array(3).concat("e7e1efc994c7dd1c77", "f1eef6d7b5d8df65b0ce1256", "f1eef6d7b5d8df65b0dd1c77980043", "f1eef6d4b9dac994c7df65b0dd1c77980043", "f1eef6d4b9dac994c7df65b0e7298ace125691003f", "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Mm),
            y_ = Fm(g_),
            b_ = new Array(3).concat("fde0ddfa9fb5c51b8a", "feebe2fbb4b9f768a1ae017e", "feebe2fbb4b9f768a1c51b8a7a0177", "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Mm),
            v_ = Fm(b_),
            m_ = new Array(3).concat("edf8b17fcdbb2c7fb8", "ffffcca1dab441b6c4225ea8", "ffffcca1dab441b6c42c7fb8253494", "ffffccc7e9b47fcdbb41b6c42c7fb8253494", "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Mm),
            __ = Fm(m_),
            w_ = new Array(3).concat("f7fcb9addd8e31a354", "ffffccc2e69978c679238443", "ffffccc2e69978c67931a354006837", "ffffccd9f0a3addd8e78c67931a354006837", "ffffccd9f0a3addd8e78c67941ab5d238443005a32", "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Mm),
            x_ = Fm(w_),
            k_ = new Array(3).concat("fff7bcfec44fd95f0e", "ffffd4fed98efe9929cc4c02", "ffffd4fed98efe9929d95f0e993404", "ffffd4fee391fec44ffe9929d95f0e993404", "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Mm),
            E_ = Fm(k_),
            A_ = new Array(3).concat("ffeda0feb24cf03b20", "ffffb2fecc5cfd8d3ce31a1c", "ffffb2fecc5cfd8d3cf03b20bd0026", "ffffb2fed976feb24cfd8d3cf03b20bd0026", "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Mm),
            S_ = Fm(A_),
            M_ = new Array(3).concat("deebf79ecae13182bd", "eff3ffbdd7e76baed62171b5", "eff3ffbdd7e76baed63182bd08519c", "eff3ffc6dbef9ecae16baed63182bd08519c", "eff3ffc6dbef9ecae16baed64292c62171b5084594", "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Mm),
            T_ = Fm(M_),
            D_ = new Array(3).concat("e5f5e0a1d99b31a354", "edf8e9bae4b374c476238b45", "edf8e9bae4b374c47631a354006d2c", "edf8e9c7e9c0a1d99b74c47631a354006d2c", "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Mm),
            C_ = Fm(D_),
            N_ = new Array(3).concat("f0f0f0bdbdbd636363", "f7f7f7cccccc969696525252", "f7f7f7cccccc969696636363252525", "f7f7f7d9d9d9bdbdbd969696636363252525", "f7f7f7d9d9d9bdbdbd969696737373525252252525", "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Mm),
            I_ = Fm(N_),
            L_ = new Array(3).concat("efedf5bcbddc756bb1", "f2f0f7cbc9e29e9ac86a51a3", "f2f0f7cbc9e29e9ac8756bb154278f", "f2f0f7dadaebbcbddc9e9ac8756bb154278f", "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Mm),
            B_ = Fm(L_),
            O_ = new Array(3).concat("fee0d2fc9272de2d26", "fee5d9fcae91fb6a4acb181d", "fee5d9fcae91fb6a4ade2d26a50f15", "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Mm),
            R_ = Fm(O_),
            P_ = new Array(3).concat("fee6cefdae6be6550d", "feeddefdbe85fd8d3cd94701", "feeddefdbe85fd8d3ce6550da63603", "feeddefdd0a2fdae6bfd8d3ce6550da63603", "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Mm),
            F_ = Fm(P_),
            q_ = function(t) {
                return t = Math.max(0, Math.min(1, t)), "rgb(" + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - 2710.57 * t))))))) + ", " + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - 67.37 * t))))))) + ", " + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - 2475.67 * t))))))) + ")"
            },
            j_ = sg(Ga(300, .5, 0), Ga(-240, .5, 1)),
            U_ = sg(Ga(-100, .75, .35), Ga(80, 1.5, .8)),
            z_ = sg(Ga(260, .75, .35), Ga(80, 1.5, .8)),
            Y_ = Ga(),
            V_ = function(t) {
                (t < 0 || t > 1) && (t -= Math.floor(t));
                var e = Math.abs(t - .5);
                return Y_.h = 360 * t - 100, Y_.s = 1.5 - 1.5 * e, Y_.l = .8 - .9 * e, Y_ + ""
            },
            H_ = Qe(),
            G_ = Math.PI / 3,
            $_ = 2 * Math.PI / 3,
            W_ = function(t) {
                var e;
                return t = (.5 - t) * Math.PI, H_.r = 255 * (e = Math.sin(t)) * e, H_.g = 255 * (e = Math.sin(t + G_)) * e, H_.b = 255 * (e = Math.sin(t + $_)) * e, H_ + ""
            },
            K_ = function(t) {
                return t = Math.max(0, Math.min(1, t)), "rgb(" + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - 14825.05 * t))))))) + ", " + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + 707.56 * t))))))) + ", " + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - 6838.66 * t))))))) + ")"
            };

        function X_(t) {
            var e = t.length;
            return function(n) {
                return t[Math.max(0, Math.min(e - 1, Math.floor(n * e)))]
            }
        }
        var Z_ = X_(Mm("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),
            J_ = X_(Mm("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),
            Q_ = X_(Mm("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),
            tw = X_(Mm("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),
            ew = function(t) {
                return Te(ue(t).call(document.documentElement))
            },
            nw = 0;

        function rw() {
            return new iw
        }

        function iw() {
            this._ = "@" + (++nw).toString(36)
        }
        iw.prototype = rw.prototype = {
            constructor: iw,
            get: function(t) {
                for (var e = this._; !(e in t);)
                    if (!(t = t.parentNode)) return;
                return t[e]
            },
            set: function(t, e) {
                return t[this._] = e
            },
            remove: function(t) {
                return this._ in t && delete t[this._]
            },
            toString: function() {
                return this._
            }
        };
        var aw = function(t) {
                return "string" == typeof t ? new Ae([document.querySelectorAll(t)], [document.documentElement]) : new Ae([null == t ? [] : t], Ee)
            },
            ow = function(t, e) {
                null == e && (e = On().touches);
                for (var n = 0, r = e ? e.length : 0, i = new Array(r); n < r; ++n) i[n] = Rn(t, e[n]);
                return i
            },
            sw = function(t) {
                return function() {
                    return t
                }
            },
            uw = Math.abs,
            cw = Math.atan2,
            fw = Math.cos,
            lw = Math.max,
            hw = Math.min,
            dw = Math.sin,
            pw = Math.sqrt,
            gw = 1e-12,
            yw = Math.PI,
            bw = yw / 2,
            vw = 2 * yw;

        function mw(t) {
            return t >= 1 ? bw : t <= -1 ? -bw : Math.asin(t)
        }

        function _w(t) {
            return t.innerRadius
        }

        function ww(t) {
            return t.outerRadius
        }

        function xw(t) {
            return t.startAngle
        }

        function kw(t) {
            return t.endAngle
        }

        function Ew(t) {
            return t && t.padAngle
        }

        function Aw(t, e, n, r, i, a, o) {
            var s = t - n,
                u = e - r,
                c = (o ? a : -a) / pw(s * s + u * u),
                f = c * u,
                l = -c * s,
                h = t + f,
                d = e + l,
                p = n + f,
                g = r + l,
                y = (h + p) / 2,
                b = (d + g) / 2,
                v = p - h,
                m = g - d,
                _ = v * v + m * m,
                w = i - a,
                x = h * g - p * d,
                k = (m < 0 ? -1 : 1) * pw(lw(0, w * w * _ - x * x)),
                E = (x * m - v * k) / _,
                A = (-x * v - m * k) / _,
                S = (x * m + v * k) / _,
                M = (-x * v + m * k) / _,
                T = E - y,
                D = A - b,
                C = S - y,
                N = M - b;
            return T * T + D * D > C * C + N * N && (E = S, A = M), {
                cx: E,
                cy: A,
                x01: -f,
                y01: -l,
                x11: E * (i / w - 1),
                y11: A * (i / w - 1)
            }
        }
        var Sw = function() {
            var t = _w,
                e = ww,
                n = sw(0),
                r = null,
                i = xw,
                a = kw,
                o = Ew,
                s = null;

            function u() {
                var u, c, f, l = +t.apply(this, arguments),
                    h = +e.apply(this, arguments),
                    d = i.apply(this, arguments) - bw,
                    p = a.apply(this, arguments) - bw,
                    g = uw(p - d),
                    y = p > d;
                if (s || (s = u = Xi()), h < l && (c = h, h = l, l = c), h > gw)
                    if (g > vw - gw) s.moveTo(h * fw(d), h * dw(d)), s.arc(0, 0, h, d, p, !y), l > gw && (s.moveTo(l * fw(p), l * dw(p)), s.arc(0, 0, l, p, d, y));
                    else {
                        var b, v, m = d,
                            _ = p,
                            w = d,
                            x = p,
                            k = g,
                            E = g,
                            A = o.apply(this, arguments) / 2,
                            S = A > gw && (r ? +r.apply(this, arguments) : pw(l * l + h * h)),
                            M = hw(uw(h - l) / 2, +n.apply(this, arguments)),
                            T = M,
                            D = M;
                        if (S > gw) {
                            var C = mw(S / l * dw(A)),
                                N = mw(S / h * dw(A));
                            (k -= 2 * C) > gw ? (w += C *= y ? 1 : -1, x -= C) : (k = 0, w = x = (d + p) / 2), (E -= 2 * N) > gw ? (m += N *= y ? 1 : -1, _ -= N) : (E = 0, m = _ = (d + p) / 2)
                        }
                        var I = h * fw(m),
                            L = h * dw(m),
                            B = l * fw(x),
                            O = l * dw(x);
                        if (M > gw) {
                            var R, P = h * fw(_),
                                F = h * dw(_),
                                q = l * fw(w),
                                j = l * dw(w);
                            if (g < yw && (R = function(t, e, n, r, i, a, o, s) {
                                    var u = n - t,
                                        c = r - e,
                                        f = o - i,
                                        l = s - a,
                                        h = l * u - f * c;
                                    if (!(h * h < gw)) return [t + (h = (f * (e - a) - l * (t - i)) / h) * u, e + h * c]
                                }(I, L, q, j, P, F, B, O))) {
                                var U = I - R[0],
                                    z = L - R[1],
                                    Y = P - R[0],
                                    V = F - R[1],
                                    H = 1 / dw(((f = (U * Y + z * V) / (pw(U * U + z * z) * pw(Y * Y + V * V))) > 1 ? 0 : f < -1 ? yw : Math.acos(f)) / 2),
                                    G = pw(R[0] * R[0] + R[1] * R[1]);
                                T = hw(M, (l - G) / (H - 1)), D = hw(M, (h - G) / (H + 1))
                            }
                        }
                        E > gw ? D > gw ? (b = Aw(q, j, I, L, h, D, y), v = Aw(P, F, B, O, h, D, y), s.moveTo(b.cx + b.x01, b.cy + b.y01), D < M ? s.arc(b.cx, b.cy, D, cw(b.y01, b.x01), cw(v.y01, v.x01), !y) : (s.arc(b.cx, b.cy, D, cw(b.y01, b.x01), cw(b.y11, b.x11), !y), s.arc(0, 0, h, cw(b.cy + b.y11, b.cx + b.x11), cw(v.cy + v.y11, v.cx + v.x11), !y), s.arc(v.cx, v.cy, D, cw(v.y11, v.x11), cw(v.y01, v.x01), !y))) : (s.moveTo(I, L), s.arc(0, 0, h, m, _, !y)) : s.moveTo(I, L), l > gw && k > gw ? T > gw ? (b = Aw(B, O, P, F, l, -T, y), v = Aw(I, L, q, j, l, -T, y), s.lineTo(b.cx + b.x01, b.cy + b.y01), T < M ? s.arc(b.cx, b.cy, T, cw(b.y01, b.x01), cw(v.y01, v.x01), !y) : (s.arc(b.cx, b.cy, T, cw(b.y01, b.x01), cw(b.y11, b.x11), !y), s.arc(0, 0, l, cw(b.cy + b.y11, b.cx + b.x11), cw(v.cy + v.y11, v.cx + v.x11), y), s.arc(v.cx, v.cy, T, cw(v.y11, v.x11), cw(v.y01, v.x01), !y))) : s.arc(0, 0, l, x, w, y) : s.lineTo(B, O)
                    }
                else s.moveTo(0, 0);
                if (s.closePath(), u) return s = null, u + "" || null
            }
            return u.centroid = function() {
                var n = (+t.apply(this, arguments) + +e.apply(this, arguments)) / 2,
                    r = (+i.apply(this, arguments) + +a.apply(this, arguments)) / 2 - yw / 2;
                return [fw(r) * n, dw(r) * n]
            }, u.innerRadius = function(e) {
                return arguments.length ? (t = "function" == typeof e ? e : sw(+e), u) : t
            }, u.outerRadius = function(t) {
                return arguments.length ? (e = "function" == typeof t ? t : sw(+t), u) : e
            }, u.cornerRadius = function(t) {
                return arguments.length ? (n = "function" == typeof t ? t : sw(+t), u) : n
            }, u.padRadius = function(t) {
                return arguments.length ? (r = null == t ? null : "function" == typeof t ? t : sw(+t), u) : r
            }, u.startAngle = function(t) {
                return arguments.length ? (i = "function" == typeof t ? t : sw(+t), u) : i
            }, u.endAngle = function(t) {
                return arguments.length ? (a = "function" == typeof t ? t : sw(+t), u) : a
            }, u.padAngle = function(t) {
                return arguments.length ? (o = "function" == typeof t ? t : sw(+t), u) : o
            }, u.context = function(t) {
                return arguments.length ? (s = null == t ? null : t, u) : s
            }, u
        };

        function Mw(t) {
            this._context = t
        }
        Mw.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._point = 0
            },
            lineEnd: function() {
                (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1, this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
                        break;
                    case 1:
                        this._point = 2;
                    default:
                        this._context.lineTo(t, e)
                }
            }
        };
        var Tw = function(t) {
            return new Mw(t)
        };

        function Dw(t) {
            return t[0]
        }

        function Cw(t) {
            return t[1]
        }
        var Nw = function() {
                var t = Dw,
                    e = Cw,
                    n = sw(!0),
                    r = null,
                    i = Tw,
                    a = null;

                function o(o) {
                    var s, u, c, f = o.length,
                        l = !1;
                    for (null == r && (a = i(c = Xi())), s = 0; s <= f; ++s) !(s < f && n(u = o[s], s, o)) === l && ((l = !l) ? a.lineStart() : a.lineEnd()), l && a.point(+t(u, s, o), +e(u, s, o));
                    if (c) return a = null, c + "" || null
                }
                return o.x = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : sw(+e), o) : t
                }, o.y = function(t) {
                    return arguments.length ? (e = "function" == typeof t ? t : sw(+t), o) : e
                }, o.defined = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : sw(!!t), o) : n
                }, o.curve = function(t) {
                    return arguments.length ? (i = t, null != r && (a = i(r)), o) : i
                }, o.context = function(t) {
                    return arguments.length ? (null == t ? r = a = null : a = i(r = t), o) : r
                }, o
            },
            Iw = function() {
                var t = Dw,
                    e = null,
                    n = sw(0),
                    r = Cw,
                    i = sw(!0),
                    a = null,
                    o = Tw,
                    s = null;

                function u(u) {
                    var c, f, l, h, d, p = u.length,
                        g = !1,
                        y = new Array(p),
                        b = new Array(p);
                    for (null == a && (s = o(d = Xi())), c = 0; c <= p; ++c) {
                        if (!(c < p && i(h = u[c], c, u)) === g)
                            if (g = !g) f = c, s.areaStart(), s.lineStart();
                            else {
                                for (s.lineEnd(), s.lineStart(), l = c - 1; l >= f; --l) s.point(y[l], b[l]);
                                s.lineEnd(), s.areaEnd()
                            } g && (y[c] = +t(h, c, u), b[c] = +n(h, c, u), s.point(e ? +e(h, c, u) : y[c], r ? +r(h, c, u) : b[c]))
                    }
                    if (d) return s = null, d + "" || null
                }

                function c() {
                    return Nw().defined(i).curve(o).context(a)
                }
                return u.x = function(n) {
                    return arguments.length ? (t = "function" == typeof n ? n : sw(+n), e = null, u) : t
                }, u.x0 = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : sw(+e), u) : t
                }, u.x1 = function(t) {
                    return arguments.length ? (e = null == t ? null : "function" == typeof t ? t : sw(+t), u) : e
                }, u.y = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : sw(+t), r = null, u) : n
                }, u.y0 = function(t) {
                    return arguments.length ? (n = "function" == typeof t ? t : sw(+t), u) : n
                }, u.y1 = function(t) {
                    return arguments.length ? (r = null == t ? null : "function" == typeof t ? t : sw(+t), u) : r
                }, u.lineX0 = u.lineY0 = function() {
                    return c().x(t).y(n)
                }, u.lineY1 = function() {
                    return c().x(t).y(r)
                }, u.lineX1 = function() {
                    return c().x(e).y(n)
                }, u.defined = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : sw(!!t), u) : i
                }, u.curve = function(t) {
                    return arguments.length ? (o = t, null != a && (s = o(a)), u) : o
                }, u.context = function(t) {
                    return arguments.length ? (null == t ? a = s = null : s = o(a = t), u) : a
                }, u
            },
            Lw = function(t, e) {
                return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN
            },
            Bw = function(t) {
                return t
            },
            Ow = function() {
                var t = Bw,
                    e = Lw,
                    n = null,
                    r = sw(0),
                    i = sw(vw),
                    a = sw(0);

                function o(o) {
                    var s, u, c, f, l, h = o.length,
                        d = 0,
                        p = new Array(h),
                        g = new Array(h),
                        y = +r.apply(this, arguments),
                        b = Math.min(vw, Math.max(-vw, i.apply(this, arguments) - y)),
                        v = Math.min(Math.abs(b) / h, a.apply(this, arguments)),
                        m = v * (b < 0 ? -1 : 1);
                    for (s = 0; s < h; ++s)(l = g[p[s] = s] = +t(o[s], s, o)) > 0 && (d += l);
                    for (null != e ? p.sort((function(t, n) {
                            return e(g[t], g[n])
                        })) : null != n && p.sort((function(t, e) {
                            return n(o[t], o[e])
                        })), s = 0, c = d ? (b - h * m) / d : 0; s < h; ++s, y = f) u = p[s], f = y + ((l = g[u]) > 0 ? l * c : 0) + m, g[u] = {
                        data: o[u],
                        index: s,
                        value: l,
                        startAngle: y,
                        endAngle: f,
                        padAngle: v
                    };
                    return g
                }
                return o.value = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : sw(+e), o) : t
                }, o.sortValues = function(t) {
                    return arguments.length ? (e = t, n = null, o) : e
                }, o.sort = function(t) {
                    return arguments.length ? (n = t, e = null, o) : n
                }, o.startAngle = function(t) {
                    return arguments.length ? (r = "function" == typeof t ? t : sw(+t), o) : r
                }, o.endAngle = function(t) {
                    return arguments.length ? (i = "function" == typeof t ? t : sw(+t), o) : i
                }, o.padAngle = function(t) {
                    return arguments.length ? (a = "function" == typeof t ? t : sw(+t), o) : a
                }, o
            },
            Rw = Fw(Tw);

        function Pw(t) {
            this._curve = t
        }

        function Fw(t) {
            function e(e) {
                return new Pw(t(e))
            }
            return e._curve = t, e
        }

        function qw(t) {
            var e = t.curve;
            return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t.curve = function(t) {
                return arguments.length ? e(Fw(t)) : e()._curve
            }, t
        }
        Pw.prototype = {
            areaStart: function() {
                this._curve.areaStart()
            },
            areaEnd: function() {
                this._curve.areaEnd()
            },
            lineStart: function() {
                this._curve.lineStart()
            },
            lineEnd: function() {
                this._curve.lineEnd()
            },
            point: function(t, e) {
                this._curve.point(e * Math.sin(t), e * -Math.cos(t))
            }
        };
        var jw = function() {
                return qw(Nw().curve(Rw))
            },
            Uw = function() {
                var t = Iw().curve(Rw),
                    e = t.curve,
                    n = t.lineX0,
                    r = t.lineX1,
                    i = t.lineY0,
                    a = t.lineY1;
                return t.angle = t.x, delete t.x, t.startAngle = t.x0, delete t.x0, t.endAngle = t.x1, delete t.x1, t.radius = t.y, delete t.y, t.innerRadius = t.y0, delete t.y0, t.outerRadius = t.y1, delete t.y1, t.lineStartAngle = function() {
                    return qw(n())
                }, delete t.lineX0, t.lineEndAngle = function() {
                    return qw(r())
                }, delete t.lineX1, t.lineInnerRadius = function() {
                    return qw(i())
                }, delete t.lineY0, t.lineOuterRadius = function() {
                    return qw(a())
                }, delete t.lineY1, t.curve = function(t) {
                    return arguments.length ? e(Fw(t)) : e()._curve
                }, t
            },
            zw = function(t, e) {
                return [(e = +e) * Math.cos(t -= Math.PI / 2), e * Math.sin(t)]
            },
            Yw = Array.prototype.slice;

        function Vw(t) {
            return t.source
        }

        function Hw(t) {
            return t.target
        }

        function Gw(t) {
            var e = Vw,
                n = Hw,
                r = Dw,
                i = Cw,
                a = null;

            function o() {
                var o, s = Yw.call(arguments),
                    u = e.apply(this, s),
                    c = n.apply(this, s);
                if (a || (a = o = Xi()), t(a, +r.apply(this, (s[0] = u, s)), +i.apply(this, s), +r.apply(this, (s[0] = c, s)), +i.apply(this, s)), o) return a = null, o + "" || null
            }
            return o.source = function(t) {
                return arguments.length ? (e = t, o) : e
            }, o.target = function(t) {
                return arguments.length ? (n = t, o) : n
            }, o.x = function(t) {
                return arguments.length ? (r = "function" == typeof t ? t : sw(+t), o) : r
            }, o.y = function(t) {
                return arguments.length ? (i = "function" == typeof t ? t : sw(+t), o) : i
            }, o.context = function(t) {
                return arguments.length ? (a = null == t ? null : t, o) : a
            }, o
        }

        function $w(t, e, n, r, i) {
            t.moveTo(e, n), t.bezierCurveTo(e = (e + r) / 2, n, e, i, r, i)
        }

        function Ww(t, e, n, r, i) {
            t.moveTo(e, n), t.bezierCurveTo(e, n = (n + i) / 2, r, n, r, i)
        }

        function Kw(t, e, n, r, i) {
            var a = zw(e, n),
                o = zw(e, n = (n + i) / 2),
                s = zw(r, n),
                u = zw(r, i);
            t.moveTo(a[0], a[1]), t.bezierCurveTo(o[0], o[1], s[0], s[1], u[0], u[1])
        }

        function Xw() {
            return Gw($w)
        }

        function Zw() {
            return Gw(Ww)
        }

        function Jw() {
            var t = Gw(Kw);
            return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t
        }
        var Qw = {
                draw: function(t, e) {
                    var n = Math.sqrt(e / yw);
                    t.moveTo(n, 0), t.arc(0, 0, n, 0, vw)
                }
            },
            tx = {
                draw: function(t, e) {
                    var n = Math.sqrt(e / 5) / 2;
                    t.moveTo(-3 * n, -n), t.lineTo(-n, -n), t.lineTo(-n, -3 * n), t.lineTo(n, -3 * n), t.lineTo(n, -n), t.lineTo(3 * n, -n), t.lineTo(3 * n, n), t.lineTo(n, n), t.lineTo(n, 3 * n), t.lineTo(-n, 3 * n), t.lineTo(-n, n), t.lineTo(-3 * n, n), t.closePath()
                }
            },
            ex = Math.sqrt(1 / 3),
            nx = 2 * ex,
            rx = {
                draw: function(t, e) {
                    var n = Math.sqrt(e / nx),
                        r = n * ex;
                    t.moveTo(0, -n), t.lineTo(r, 0), t.lineTo(0, n), t.lineTo(-r, 0), t.closePath()
                }
            },
            ix = Math.sin(yw / 10) / Math.sin(7 * yw / 10),
            ax = Math.sin(vw / 10) * ix,
            ox = -Math.cos(vw / 10) * ix,
            sx = {
                draw: function(t, e) {
                    var n = Math.sqrt(.8908130915292852 * e),
                        r = ax * n,
                        i = ox * n;
                    t.moveTo(0, -n), t.lineTo(r, i);
                    for (var a = 1; a < 5; ++a) {
                        var o = vw * a / 5,
                            s = Math.cos(o),
                            u = Math.sin(o);
                        t.lineTo(u * n, -s * n), t.lineTo(s * r - u * i, u * r + s * i)
                    }
                    t.closePath()
                }
            },
            ux = {
                draw: function(t, e) {
                    var n = Math.sqrt(e),
                        r = -n / 2;
                    t.rect(r, r, n, n)
                }
            },
            cx = Math.sqrt(3),
            fx = {
                draw: function(t, e) {
                    var n = -Math.sqrt(e / (3 * cx));
                    t.moveTo(0, 2 * n), t.lineTo(-cx * n, -n), t.lineTo(cx * n, -n), t.closePath()
                }
            },
            lx = Math.sqrt(3) / 2,
            hx = 1 / Math.sqrt(12),
            dx = 3 * (hx / 2 + 1),
            px = {
                draw: function(t, e) {
                    var n = Math.sqrt(e / dx),
                        r = n / 2,
                        i = n * hx,
                        a = r,
                        o = n * hx + n,
                        s = -a,
                        u = o;
                    t.moveTo(r, i), t.lineTo(a, o), t.lineTo(s, u), t.lineTo(-.5 * r - lx * i, lx * r + -.5 * i), t.lineTo(-.5 * a - lx * o, lx * a + -.5 * o), t.lineTo(-.5 * s - lx * u, lx * s + -.5 * u), t.lineTo(-.5 * r + lx * i, -.5 * i - lx * r), t.lineTo(-.5 * a + lx * o, -.5 * o - lx * a), t.lineTo(-.5 * s + lx * u, -.5 * u - lx * s), t.closePath()
                }
            },
            gx = [Qw, tx, rx, ux, sx, fx, px],
            yx = function() {
                var t = sw(Qw),
                    e = sw(64),
                    n = null;

                function r() {
                    var r;
                    if (n || (n = r = Xi()), t.apply(this, arguments).draw(n, +e.apply(this, arguments)), r) return n = null, r + "" || null
                }
                return r.type = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : sw(e), r) : t
                }, r.size = function(t) {
                    return arguments.length ? (e = "function" == typeof t ? t : sw(+t), r) : e
                }, r.context = function(t) {
                    return arguments.length ? (n = null == t ? null : t, r) : n
                }, r
            },
            bx = function() {};

        function vx(t, e, n) {
            t._context.bezierCurveTo((2 * t._x0 + t._x1) / 3, (2 * t._y0 + t._y1) / 3, (t._x0 + 2 * t._x1) / 3, (t._y0 + 2 * t._y1) / 3, (t._x0 + 4 * t._x1 + e) / 6, (t._y0 + 4 * t._y1 + n) / 6)
        }

        function mx(t) {
            this._context = t
        }
        mx.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 3:
                        vx(this, this._x1, this._y1);
                    case 2:
                        this._context.lineTo(this._x1, this._y1)
                }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1, this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
                        break;
                    case 1:
                        this._point = 2;
                        break;
                    case 2:
                        this._point = 3, this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);
                    default:
                        vx(this, t, e)
                }
                this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = e
            }
        };
        var _x = function(t) {
            return new mx(t)
        };

        function wx(t) {
            this._context = t
        }
        wx.prototype = {
            areaStart: bx,
            areaEnd: bx,
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN, this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 1:
                        this._context.moveTo(this._x2, this._y2), this._context.closePath();
                        break;
                    case 2:
                        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3), this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3), this._context.closePath();
                        break;
                    case 3:
                        this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4)
                }
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1, this._x2 = t, this._y2 = e;
                        break;
                    case 1:
                        this._point = 2, this._x3 = t, this._y3 = e;
                        break;
                    case 2:
                        this._point = 3, this._x4 = t, this._y4 = e, this._context.moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + e) / 6);
                        break;
                    default:
                        vx(this, t, e)
                }
                this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = e
            }
        };
        var xx = function(t) {
            return new wx(t)
        };

        function kx(t) {
            this._context = t
        }
        kx.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0
            },
            lineEnd: function() {
                (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1;
                        break;
                    case 1:
                        this._point = 2;
                        break;
                    case 2:
                        this._point = 3;
                        var n = (this._x0 + 4 * this._x1 + t) / 6,
                            r = (this._y0 + 4 * this._y1 + e) / 6;
                        this._line ? this._context.lineTo(n, r) : this._context.moveTo(n, r);
                        break;
                    case 3:
                        this._point = 4;
                    default:
                        vx(this, t, e)
                }
                this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = e
            }
        };
        var Ex = function(t) {
            return new kx(t)
        };

        function Ax(t, e) {
            this._basis = new mx(t), this._beta = e
        }
        Ax.prototype = {
            lineStart: function() {
                this._x = [], this._y = [], this._basis.lineStart()
            },
            lineEnd: function() {
                var t = this._x,
                    e = this._y,
                    n = t.length - 1;
                if (n > 0)
                    for (var r, i = t[0], a = e[0], o = t[n] - i, s = e[n] - a, u = -1; ++u <= n;) r = u / n, this._basis.point(this._beta * t[u] + (1 - this._beta) * (i + r * o), this._beta * e[u] + (1 - this._beta) * (a + r * s));
                this._x = this._y = null, this._basis.lineEnd()
            },
            point: function(t, e) {
                this._x.push(+t), this._y.push(+e)
            }
        };
        var Sx = function t(e) {
            function n(t) {
                return 1 === e ? new mx(t) : new Ax(t, e)
            }
            return n.beta = function(e) {
                return t(+e)
            }, n
        }(.85);

        function Mx(t, e, n) {
            t._context.bezierCurveTo(t._x1 + t._k * (t._x2 - t._x0), t._y1 + t._k * (t._y2 - t._y0), t._x2 + t._k * (t._x1 - e), t._y2 + t._k * (t._y1 - n), t._x2, t._y2)
        }

        function Tx(t, e) {
            this._context = t, this._k = (1 - e) / 6
        }
        Tx.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 2:
                        this._context.lineTo(this._x2, this._y2);
                        break;
                    case 3:
                        Mx(this, this._x1, this._y1)
                }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1, this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
                        break;
                    case 1:
                        this._point = 2, this._x1 = t, this._y1 = e;
                        break;
                    case 2:
                        this._point = 3;
                    default:
                        Mx(this, t, e)
                }
                this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = e
            }
        };
        var Dx = function t(e) {
            function n(t) {
                return new Tx(t, e)
            }
            return n.tension = function(e) {
                return t(+e)
            }, n
        }(0);

        function Cx(t, e) {
            this._context = t, this._k = (1 - e) / 6
        }
        Cx.prototype = {
            areaStart: bx,
            areaEnd: bx,
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 1:
                        this._context.moveTo(this._x3, this._y3), this._context.closePath();
                        break;
                    case 2:
                        this._context.lineTo(this._x3, this._y3), this._context.closePath();
                        break;
                    case 3:
                        this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5)
                }
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1, this._x3 = t, this._y3 = e;
                        break;
                    case 1:
                        this._point = 2, this._context.moveTo(this._x4 = t, this._y4 = e);
                        break;
                    case 2:
                        this._point = 3, this._x5 = t, this._y5 = e;
                        break;
                    default:
                        Mx(this, t, e)
                }
                this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = e
            }
        };
        var Nx = function t(e) {
            function n(t) {
                return new Cx(t, e)
            }
            return n.tension = function(e) {
                return t(+e)
            }, n
        }(0);

        function Ix(t, e) {
            this._context = t, this._k = (1 - e) / 6
        }
        Ix.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0
            },
            lineEnd: function() {
                (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1;
                        break;
                    case 1:
                        this._point = 2;
                        break;
                    case 2:
                        this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);
                        break;
                    case 3:
                        this._point = 4;
                    default:
                        Mx(this, t, e)
                }
                this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = e
            }
        };
        var Lx = function t(e) {
            function n(t) {
                return new Ix(t, e)
            }
            return n.tension = function(e) {
                return t(+e)
            }, n
        }(0);

        function Bx(t, e, n) {
            var r = t._x1,
                i = t._y1,
                a = t._x2,
                o = t._y2;
            if (t._l01_a > gw) {
                var s = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a,
                    u = 3 * t._l01_a * (t._l01_a + t._l12_a);
                r = (r * s - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / u, i = (i * s - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / u
            }
            if (t._l23_a > gw) {
                var c = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a,
                    f = 3 * t._l23_a * (t._l23_a + t._l12_a);
                a = (a * c + t._x1 * t._l23_2a - e * t._l12_2a) / f, o = (o * c + t._y1 * t._l23_2a - n * t._l12_2a) / f
            }
            t._context.bezierCurveTo(r, i, a, o, t._x2, t._y2)
        }

        function Ox(t, e) {
            this._context = t, this._alpha = e
        }
        Ox.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 2:
                        this._context.lineTo(this._x2, this._y2);
                        break;
                    case 3:
                        this.point(this._x2, this._y2)
                }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                if (t = +t, e = +e, this._point) {
                    var n = this._x2 - t,
                        r = this._y2 - e;
                    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + r * r, this._alpha))
                }
                switch (this._point) {
                    case 0:
                        this._point = 1, this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
                        break;
                    case 1:
                        this._point = 2;
                        break;
                    case 2:
                        this._point = 3;
                    default:
                        Bx(this, t, e)
                }
                this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = e
            }
        };
        var Rx = function t(e) {
            function n(t) {
                return e ? new Ox(t, e) : new Tx(t, 0)
            }
            return n.alpha = function(e) {
                return t(+e)
            }, n
        }(.5);

        function Px(t, e) {
            this._context = t, this._alpha = e
        }
        Px.prototype = {
            areaStart: bx,
            areaEnd: bx,
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 1:
                        this._context.moveTo(this._x3, this._y3), this._context.closePath();
                        break;
                    case 2:
                        this._context.lineTo(this._x3, this._y3), this._context.closePath();
                        break;
                    case 3:
                        this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5)
                }
            },
            point: function(t, e) {
                if (t = +t, e = +e, this._point) {
                    var n = this._x2 - t,
                        r = this._y2 - e;
                    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + r * r, this._alpha))
                }
                switch (this._point) {
                    case 0:
                        this._point = 1, this._x3 = t, this._y3 = e;
                        break;
                    case 1:
                        this._point = 2, this._context.moveTo(this._x4 = t, this._y4 = e);
                        break;
                    case 2:
                        this._point = 3, this._x5 = t, this._y5 = e;
                        break;
                    default:
                        Bx(this, t, e)
                }
                this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = e
            }
        };
        var Fx = function t(e) {
            function n(t) {
                return e ? new Px(t, e) : new Cx(t, 0)
            }
            return n.alpha = function(e) {
                return t(+e)
            }, n
        }(.5);

        function qx(t, e) {
            this._context = t, this._alpha = e
        }
        qx.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0
            },
            lineEnd: function() {
                (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                if (t = +t, e = +e, this._point) {
                    var n = this._x2 - t,
                        r = this._y2 - e;
                    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + r * r, this._alpha))
                }
                switch (this._point) {
                    case 0:
                        this._point = 1;
                        break;
                    case 1:
                        this._point = 2;
                        break;
                    case 2:
                        this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);
                        break;
                    case 3:
                        this._point = 4;
                    default:
                        Bx(this, t, e)
                }
                this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = e
            }
        };
        var jx = function t(e) {
            function n(t) {
                return e ? new qx(t, e) : new Ix(t, 0)
            }
            return n.alpha = function(e) {
                return t(+e)
            }, n
        }(.5);

        function Ux(t) {
            this._context = t
        }
        Ux.prototype = {
            areaStart: bx,
            areaEnd: bx,
            lineStart: function() {
                this._point = 0
            },
            lineEnd: function() {
                this._point && this._context.closePath()
            },
            point: function(t, e) {
                t = +t, e = +e, this._point ? this._context.lineTo(t, e) : (this._point = 1, this._context.moveTo(t, e))
            }
        };
        var zx = function(t) {
            return new Ux(t)
        };

        function Yx(t) {
            return t < 0 ? -1 : 1
        }

        function Vx(t, e, n) {
            var r = t._x1 - t._x0,
                i = e - t._x1,
                a = (t._y1 - t._y0) / (r || i < 0 && -0),
                o = (n - t._y1) / (i || r < 0 && -0),
                s = (a * i + o * r) / (r + i);
            return (Yx(a) + Yx(o)) * Math.min(Math.abs(a), Math.abs(o), .5 * Math.abs(s)) || 0
        }

        function Hx(t, e) {
            var n = t._x1 - t._x0;
            return n ? (3 * (t._y1 - t._y0) / n - e) / 2 : e
        }

        function Gx(t, e, n) {
            var r = t._x0,
                i = t._y0,
                a = t._x1,
                o = t._y1,
                s = (a - r) / 3;
            t._context.bezierCurveTo(r + s, i + s * e, a - s, o - s * n, a, o)
        }

        function $x(t) {
            this._context = t
        }

        function Wx(t) {
            this._context = new Kx(t)
        }

        function Kx(t) {
            this._context = t
        }

        function Xx(t) {
            return new $x(t)
        }

        function Zx(t) {
            return new Wx(t)
        }

        function Jx(t) {
            this._context = t
        }

        function Qx(t) {
            var e, n, r = t.length - 1,
                i = new Array(r),
                a = new Array(r),
                o = new Array(r);
            for (i[0] = 0, a[0] = 2, o[0] = t[0] + 2 * t[1], e = 1; e < r - 1; ++e) i[e] = 1, a[e] = 4, o[e] = 4 * t[e] + 2 * t[e + 1];
            for (i[r - 1] = 2, a[r - 1] = 7, o[r - 1] = 8 * t[r - 1] + t[r], e = 1; e < r; ++e) n = i[e] / a[e - 1], a[e] -= n, o[e] -= n * o[e - 1];
            for (i[r - 1] = o[r - 1] / a[r - 1], e = r - 2; e >= 0; --e) i[e] = (o[e] - i[e + 1]) / a[e];
            for (a[r - 1] = (t[r] + i[r - 1]) / 2, e = 0; e < r - 1; ++e) a[e] = 2 * t[e + 1] - i[e + 1];
            return [i, a]
        }
        $x.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0
            },
            lineEnd: function() {
                switch (this._point) {
                    case 2:
                        this._context.lineTo(this._x1, this._y1);
                        break;
                    case 3:
                        Gx(this, this._t0, Hx(this, this._t0))
                }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line
            },
            point: function(t, e) {
                var n = NaN;
                if (e = +e, (t = +t) !== this._x1 || e !== this._y1) {
                    switch (this._point) {
                        case 0:
                            this._point = 1, this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
                            break;
                        case 1:
                            this._point = 2;
                            break;
                        case 2:
                            this._point = 3, Gx(this, Hx(this, n = Vx(this, t, e)), n);
                            break;
                        default:
                            Gx(this, this._t0, n = Vx(this, t, e))
                    }
                    this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = e, this._t0 = n
                }
            }
        }, (Wx.prototype = Object.create($x.prototype)).point = function(t, e) {
            $x.prototype.point.call(this, e, t)
        }, Kx.prototype = {
            moveTo: function(t, e) {
                this._context.moveTo(e, t)
            },
            closePath: function() {
                this._context.closePath()
            },
            lineTo: function(t, e) {
                this._context.lineTo(e, t)
            },
            bezierCurveTo: function(t, e, n, r, i, a) {
                this._context.bezierCurveTo(e, t, r, n, a, i)
            }
        }, Jx.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x = [], this._y = []
            },
            lineEnd: function() {
                var t = this._x,
                    e = this._y,
                    n = t.length;
                if (n)
                    if (this._line ? this._context.lineTo(t[0], e[0]) : this._context.moveTo(t[0], e[0]), 2 === n) this._context.lineTo(t[1], e[1]);
                    else
                        for (var r = Qx(t), i = Qx(e), a = 0, o = 1; o < n; ++a, ++o) this._context.bezierCurveTo(r[0][a], i[0][a], r[1][a], i[1][a], t[o], e[o]);
                (this._line || 0 !== this._line && 1 === n) && this._context.closePath(), this._line = 1 - this._line, this._x = this._y = null
            },
            point: function(t, e) {
                this._x.push(+t), this._y.push(+e)
            }
        };
        var tk = function(t) {
            return new Jx(t)
        };

        function ek(t, e) {
            this._context = t, this._t = e
        }
        ek.prototype = {
            areaStart: function() {
                this._line = 0
            },
            areaEnd: function() {
                this._line = NaN
            },
            lineStart: function() {
                this._x = this._y = NaN, this._point = 0
            },
            lineEnd: function() {
                0 < this._t && this._t < 1 && 2 === this._point && this._context.lineTo(this._x, this._y), (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line)
            },
            point: function(t, e) {
                switch (t = +t, e = +e, this._point) {
                    case 0:
                        this._point = 1, this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e);
                        break;
                    case 1:
                        this._point = 2;
                    default:
                        if (this._t <= 0) this._context.lineTo(this._x, e), this._context.lineTo(t, e);
                        else {
                            var n = this._x * (1 - this._t) + t * this._t;
                            this._context.lineTo(n, this._y), this._context.lineTo(n, e)
                        }
                }
                this._x = t, this._y = e
            }
        };
        var nk = function(t) {
            return new ek(t, .5)
        };

        function rk(t) {
            return new ek(t, 0)
        }

        function ik(t) {
            return new ek(t, 1)
        }
        var ak = function(t, e) {
                if ((i = t.length) > 1)
                    for (var n, r, i, a = 1, o = t[e[0]], s = o.length; a < i; ++a)
                        for (r = o, o = t[e[a]], n = 0; n < s; ++n) o[n][1] += o[n][0] = isNaN(r[n][1]) ? r[n][0] : r[n][1]
            },
            ok = function(t) {
                for (var e = t.length, n = new Array(e); --e >= 0;) n[e] = e;
                return n
            };

        function sk(t, e) {
            return t[e]
        }
        var uk = function() {
                var t = sw([]),
                    e = ok,
                    n = ak,
                    r = sk;

                function i(i) {
                    var a, o, s = t.apply(this, arguments),
                        u = i.length,
                        c = s.length,
                        f = new Array(c);
                    for (a = 0; a < c; ++a) {
                        for (var l, h = s[a], d = f[a] = new Array(u), p = 0; p < u; ++p) d[p] = l = [0, +r(i[p], h, p, i)], l.data = i[p];
                        d.key = h
                    }
                    for (a = 0, o = e(f); a < c; ++a) f[o[a]].index = a;
                    return n(f, o), f
                }
                return i.keys = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : sw(Yw.call(e)), i) : t
                }, i.value = function(t) {
                    return arguments.length ? (r = "function" == typeof t ? t : sw(+t), i) : r
                }, i.order = function(t) {
                    return arguments.length ? (e = null == t ? ok : "function" == typeof t ? t : sw(Yw.call(t)), i) : e
                }, i.offset = function(t) {
                    return arguments.length ? (n = null == t ? ak : t, i) : n
                }, i
            },
            ck = function(t, e) {
                if ((r = t.length) > 0) {
                    for (var n, r, i, a = 0, o = t[0].length; a < o; ++a) {
                        for (i = n = 0; n < r; ++n) i += t[n][a][1] || 0;
                        if (i)
                            for (n = 0; n < r; ++n) t[n][a][1] /= i
                    }
                    ak(t, e)
                }
            },
            fk = function(t, e) {
                if ((s = t.length) > 0)
                    for (var n, r, i, a, o, s, u = 0, c = t[e[0]].length; u < c; ++u)
                        for (a = o = 0, n = 0; n < s; ++n)(i = (r = t[e[n]][u])[1] - r[0]) > 0 ? (r[0] = a, r[1] = a += i) : i < 0 ? (r[1] = o, r[0] = o += i) : (r[0] = 0, r[1] = i)
            },
            lk = function(t, e) {
                if ((n = t.length) > 0) {
                    for (var n, r = 0, i = t[e[0]], a = i.length; r < a; ++r) {
                        for (var o = 0, s = 0; o < n; ++o) s += t[o][r][1] || 0;
                        i[r][1] += i[r][0] = -s / 2
                    }
                    ak(t, e)
                }
            },
            hk = function(t, e) {
                if ((i = t.length) > 0 && (r = (n = t[e[0]]).length) > 0) {
                    for (var n, r, i, a = 0, o = 1; o < r; ++o) {
                        for (var s = 0, u = 0, c = 0; s < i; ++s) {
                            for (var f = t[e[s]], l = f[o][1] || 0, h = (l - (f[o - 1][1] || 0)) / 2, d = 0; d < s; ++d) {
                                var p = t[e[d]];
                                h += (p[o][1] || 0) - (p[o - 1][1] || 0)
                            }
                            u += l, c += h * l
                        }
                        n[o - 1][1] += n[o - 1][0] = a, u && (a -= c / u)
                    }
                    n[o - 1][1] += n[o - 1][0] = a, ak(t, e)
                }
            },
            dk = function(t) {
                var e = t.map(pk);
                return ok(t).sort((function(t, n) {
                    return e[t] - e[n]
                }))
            };

        function pk(t) {
            for (var e, n = -1, r = 0, i = t.length, a = -1 / 0; ++n < i;)(e = +t[n][1]) > a && (a = e, r = n);
            return r
        }
        var gk = function(t) {
            var e = t.map(yk);
            return ok(t).sort((function(t, n) {
                return e[t] - e[n]
            }))
        };

        function yk(t) {
            for (var e, n = 0, r = -1, i = t.length; ++r < i;)(e = +t[r][1]) && (n += e);
            return n
        }
        var bk = function(t) {
                return gk(t).reverse()
            },
            vk = function(t) {
                var e, n, r = t.length,
                    i = t.map(yk),
                    a = dk(t),
                    o = 0,
                    s = 0,
                    u = [],
                    c = [];
                for (e = 0; e < r; ++e) n = a[e], o < s ? (o += i[n], u.push(n)) : (s += i[n], c.push(n));
                return c.reverse().concat(u)
            },
            mk = function(t) {
                return ok(t).reverse()
            };
        var _k = Date.prototype.toISOString ? function(t) {
            return t.toISOString()
        } : Ib("%Y-%m-%dT%H:%M:%S.%LZ");
        var wk = +new Date("2000-01-01T00:00:00.000Z") ? function(t) {
                var e = new Date(t);
                return isNaN(e) ? null : e
            } : Lb("%Y-%m-%dT%H:%M:%S.%LZ"),
            xk = function(t, e, n) {
                var r = new Xn,
                    i = e;
                return null == e ? (r.restart(t, e, n), r) : (e = +e, n = null == n ? Wn() : +n, r.restart((function a(o) {
                    o += i, r.restart(a, i += e, n), t(o)
                }), e, n), r)
            },
            kk = function(t) {
                return function() {
                    return t
                }
            };

        function Ek(t) {
            return t[0]
        }

        function Ak(t) {
            return t[1]
        }

        function Sk() {
            this._ = null
        }

        function Mk(t) {
            t.U = t.C = t.L = t.R = t.P = t.N = null
        }

        function Tk(t, e) {
            var n = e,
                r = e.R,
                i = n.U;
            i ? i.L === n ? i.L = r : i.R = r : t._ = r, r.U = i, n.U = r, n.R = r.L, n.R && (n.R.U = n), r.L = n
        }

        function Dk(t, e) {
            var n = e,
                r = e.L,
                i = n.U;
            i ? i.L === n ? i.L = r : i.R = r : t._ = r, r.U = i, n.U = r, n.L = r.R, n.L && (n.L.U = n), r.R = n
        }

        function Ck(t) {
            for (; t.L;) t = t.L;
            return t
        }
        Sk.prototype = {
            constructor: Sk,
            insert: function(t, e) {
                var n, r, i;
                if (t) {
                    if (e.P = t, e.N = t.N, t.N && (t.N.P = e), t.N = e, t.R) {
                        for (t = t.R; t.L;) t = t.L;
                        t.L = e
                    } else t.R = e;
                    n = t
                } else this._ ? (t = Ck(this._), e.P = null, e.N = t, t.P = t.L = e, n = t) : (e.P = e.N = null, this._ = e, n = null);
                for (e.L = e.R = null, e.U = n, e.C = !0, t = e; n && n.C;) n === (r = n.U).L ? (i = r.R) && i.C ? (n.C = i.C = !1, r.C = !0, t = r) : (t === n.R && (Tk(this, n), n = (t = n).U), n.C = !1, r.C = !0, Dk(this, r)) : (i = r.L) && i.C ? (n.C = i.C = !1, r.C = !0, t = r) : (t === n.L && (Dk(this, n), n = (t = n).U), n.C = !1, r.C = !0, Tk(this, r)), n = t.U;
                this._.C = !1
            },
            remove: function(t) {
                t.N && (t.N.P = t.P), t.P && (t.P.N = t.N), t.N = t.P = null;
                var e, n, r, i = t.U,
                    a = t.L,
                    o = t.R;
                if (n = a ? o ? Ck(o) : a : o, i ? i.L === t ? i.L = n : i.R = n : this._ = n, a && o ? (r = n.C, n.C = t.C, n.L = a, a.U = n, n !== o ? (i = n.U, n.U = t.U, t = n.R, i.L = t, n.R = o, o.U = n) : (n.U = i, i = n, t = n.R)) : (r = t.C, t = n), t && (t.U = i), !r)
                    if (t && t.C) t.C = !1;
                    else {
                        do {
                            if (t === this._) break;
                            if (t === i.L) {
                                if ((e = i.R).C && (e.C = !1, i.C = !0, Tk(this, i), e = i.R), e.L && e.L.C || e.R && e.R.C) {
                                    e.R && e.R.C || (e.L.C = !1, e.C = !0, Dk(this, e), e = i.R), e.C = i.C, i.C = e.R.C = !1, Tk(this, i), t = this._;
                                    break
                                }
                            } else if ((e = i.L).C && (e.C = !1, i.C = !0, Dk(this, i), e = i.L), e.L && e.L.C || e.R && e.R.C) {
                                e.L && e.L.C || (e.R.C = !1, e.C = !0, Tk(this, e), e = i.L), e.C = i.C, i.C = e.L.C = !1, Dk(this, i), t = this._;
                                break
                            }
                            e.C = !0, t = i, i = i.U
                        } while (!t.C);
                        t && (t.C = !1)
                    }
            }
        };
        var Nk = Sk;

        function Ik(t, e, n, r) {
            var i = [null, null],
                a = nE.push(i) - 1;
            return i.left = t, i.right = e, n && Bk(i, t, e, n), r && Bk(i, e, t, r), tE[t.index].halfedges.push(a), tE[e.index].halfedges.push(a), i
        }

        function Lk(t, e, n) {
            var r = [e, n];
            return r.left = t, r
        }

        function Bk(t, e, n, r) {
            t[0] || t[1] ? t.left === n ? t[1] = r : t[0] = r : (t[0] = r, t.left = e, t.right = n)
        }

        function Ok(t, e, n, r, i) {
            var a, o = t[0],
                s = t[1],
                u = o[0],
                c = o[1],
                f = 0,
                l = 1,
                h = s[0] - u,
                d = s[1] - c;
            if (a = e - u, h || !(a > 0)) {
                if (a /= h, h < 0) {
                    if (a < f) return;
                    a < l && (l = a)
                } else if (h > 0) {
                    if (a > l) return;
                    a > f && (f = a)
                }
                if (a = r - u, h || !(a < 0)) {
                    if (a /= h, h < 0) {
                        if (a > l) return;
                        a > f && (f = a)
                    } else if (h > 0) {
                        if (a < f) return;
                        a < l && (l = a)
                    }
                    if (a = n - c, d || !(a > 0)) {
                        if (a /= d, d < 0) {
                            if (a < f) return;
                            a < l && (l = a)
                        } else if (d > 0) {
                            if (a > l) return;
                            a > f && (f = a)
                        }
                        if (a = i - c, d || !(a < 0)) {
                            if (a /= d, d < 0) {
                                if (a > l) return;
                                a > f && (f = a)
                            } else if (d > 0) {
                                if (a < f) return;
                                a < l && (l = a)
                            }
                            return !(f > 0 || l < 1) || (f > 0 && (t[0] = [u + f * h, c + f * d]), l < 1 && (t[1] = [u + l * h, c + l * d]), !0)
                        }
                    }
                }
            }
        }

        function Rk(t, e, n, r, i) {
            var a = t[1];
            if (a) return !0;
            var o, s, u = t[0],
                c = t.left,
                f = t.right,
                l = c[0],
                h = c[1],
                d = f[0],
                p = f[1],
                g = (l + d) / 2,
                y = (h + p) / 2;
            if (p === h) {
                if (g < e || g >= r) return;
                if (l > d) {
                    if (u) {
                        if (u[1] >= i) return
                    } else u = [g, n];
                    a = [g, i]
                } else {
                    if (u) {
                        if (u[1] < n) return
                    } else u = [g, i];
                    a = [g, n]
                }
            } else if (s = y - (o = (l - d) / (p - h)) * g, o < -1 || o > 1)
                if (l > d) {
                    if (u) {
                        if (u[1] >= i) return
                    } else u = [(n - s) / o, n];
                    a = [(i - s) / o, i]
                } else {
                    if (u) {
                        if (u[1] < n) return
                    } else u = [(i - s) / o, i];
                    a = [(n - s) / o, n]
                }
            else if (h < p) {
                if (u) {
                    if (u[0] >= r) return
                } else u = [e, o * e + s];
                a = [r, o * r + s]
            } else {
                if (u) {
                    if (u[0] < e) return
                } else u = [r, o * r + s];
                a = [e, o * e + s]
            }
            return t[0] = u, t[1] = a, !0
        }

        function Pk(t, e) {
            var n = t.site,
                r = e.left,
                i = e.right;
            return n === i && (i = r, r = n), i ? Math.atan2(i[1] - r[1], i[0] - r[0]) : (n === r ? (r = e[1], i = e[0]) : (r = e[0], i = e[1]), Math.atan2(r[0] - i[0], i[1] - r[1]))
        }

        function Fk(t, e) {
            return e[+(e.left !== t.site)]
        }

        function qk(t, e) {
            return e[+(e.left === t.site)]
        }
        var jk, Uk = [];

        function zk() {
            Mk(this), this.x = this.y = this.arc = this.site = this.cy = null
        }

        function Yk(t) {
            var e = t.P,
                n = t.N;
            if (e && n) {
                var r = e.site,
                    i = t.site,
                    a = n.site;
                if (r !== a) {
                    var o = i[0],
                        s = i[1],
                        u = r[0] - o,
                        c = r[1] - s,
                        f = a[0] - o,
                        l = a[1] - s,
                        h = 2 * (u * l - c * f);
                    if (!(h >= -iE)) {
                        var d = u * u + c * c,
                            p = f * f + l * l,
                            g = (l * d - c * p) / h,
                            y = (u * p - f * d) / h,
                            b = Uk.pop() || new zk;
                        b.arc = t, b.site = i, b.x = g + o, b.y = (b.cy = y + s) + Math.sqrt(g * g + y * y), t.circle = b;
                        for (var v = null, m = eE._; m;)
                            if (b.y < m.y || b.y === m.y && b.x <= m.x) {
                                if (!m.L) {
                                    v = m.P;
                                    break
                                }
                                m = m.L
                            } else {
                                if (!m.R) {
                                    v = m;
                                    break
                                }
                                m = m.R
                            } eE.insert(v, b), v || (jk = b)
                    }
                }
            }
        }

        function Vk(t) {
            var e = t.circle;
            e && (e.P || (jk = e.N), eE.remove(e), Uk.push(e), Mk(e), t.circle = null)
        }
        var Hk = [];

        function Gk() {
            Mk(this), this.edge = this.site = this.circle = null
        }

        function $k(t) {
            var e = Hk.pop() || new Gk;
            return e.site = t, e
        }

        function Wk(t) {
            Vk(t), Qk.remove(t), Hk.push(t), Mk(t)
        }

        function Kk(t) {
            var e = t.circle,
                n = e.x,
                r = e.cy,
                i = [n, r],
                a = t.P,
                o = t.N,
                s = [t];
            Wk(t);
            for (var u = a; u.circle && Math.abs(n - u.circle.x) < rE && Math.abs(r - u.circle.cy) < rE;) a = u.P, s.unshift(u), Wk(u), u = a;
            s.unshift(u), Vk(u);
            for (var c = o; c.circle && Math.abs(n - c.circle.x) < rE && Math.abs(r - c.circle.cy) < rE;) o = c.N, s.push(c), Wk(c), c = o;
            s.push(c), Vk(c);
            var f, l = s.length;
            for (f = 1; f < l; ++f) c = s[f], u = s[f - 1], Bk(c.edge, u.site, c.site, i);
            u = s[0], (c = s[l - 1]).edge = Ik(u.site, c.site, null, i), Yk(u), Yk(c)
        }

        function Xk(t) {
            for (var e, n, r, i, a = t[0], o = t[1], s = Qk._; s;)
                if ((r = Zk(s, o) - a) > rE) s = s.L;
                else {
                    if (!((i = a - Jk(s, o)) > rE)) {
                        r > -rE ? (e = s.P, n = s) : i > -rE ? (e = s, n = s.N) : e = n = s;
                        break
                    }
                    if (!s.R) {
                        e = s;
                        break
                    }
                    s = s.R
                }!
            function(t) {
                tE[t.index] = {
                    site: t,
                    halfedges: []
                }
            }(t);
            var u = $k(t);
            if (Qk.insert(e, u), e || n) {
                if (e === n) return Vk(e), n = $k(e.site), Qk.insert(u, n), u.edge = n.edge = Ik(e.site, u.site), Yk(e), void Yk(n);
                if (n) {
                    Vk(e), Vk(n);
                    var c = e.site,
                        f = c[0],
                        l = c[1],
                        h = t[0] - f,
                        d = t[1] - l,
                        p = n.site,
                        g = p[0] - f,
                        y = p[1] - l,
                        b = 2 * (h * y - d * g),
                        v = h * h + d * d,
                        m = g * g + y * y,
                        _ = [(y * v - d * m) / b + f, (h * m - g * v) / b + l];
                    Bk(n.edge, c, p, _), u.edge = Ik(c, t, null, _), n.edge = Ik(t, p, null, _), Yk(e), Yk(n)
                } else u.edge = Ik(e.site, u.site)
            }
        }

        function Zk(t, e) {
            var n = t.site,
                r = n[0],
                i = n[1],
                a = i - e;
            if (!a) return r;
            var o = t.P;
            if (!o) return -1 / 0;
            var s = (n = o.site)[0],
                u = n[1],
                c = u - e;
            if (!c) return s;
            var f = s - r,
                l = 1 / a - 1 / c,
                h = f / c;
            return l ? (-h + Math.sqrt(h * h - 2 * l * (f * f / (-2 * c) - u + c / 2 + i - a / 2))) / l + r : (r + s) / 2
        }

        function Jk(t, e) {
            var n = t.N;
            if (n) return Zk(n, e);
            var r = t.site;
            return r[1] === e ? r[0] : 1 / 0
        }
        var Qk, tE, eE, nE, rE = 1e-6,
            iE = 1e-12;

        function aE(t, e) {
            return e[1] - t[1] || e[0] - t[0]
        }

        function oE(t, e) {
            var n, r, i, a = t.sort(aE).pop();
            for (nE = [], tE = new Array(t.length), Qk = new Nk, eE = new Nk;;)
                if (i = jk, a && (!i || a[1] < i.y || a[1] === i.y && a[0] < i.x)) a[0] === n && a[1] === r || (Xk(a), n = a[0], r = a[1]), a = t.pop();
                else {
                    if (!i) break;
                    Kk(i.arc)
                } if (function() {
                    for (var t, e, n, r, i = 0, a = tE.length; i < a; ++i)
                        if ((t = tE[i]) && (r = (e = t.halfedges).length)) {
                            var o = new Array(r),
                                s = new Array(r);
                            for (n = 0; n < r; ++n) o[n] = n, s[n] = Pk(t, nE[e[n]]);
                            for (o.sort((function(t, e) {
                                    return s[e] - s[t]
                                })), n = 0; n < r; ++n) s[n] = e[o[n]];
                            for (n = 0; n < r; ++n) e[n] = s[n]
                        }
                }(), e) {
                var o = +e[0][0],
                    s = +e[0][1],
                    u = +e[1][0],
                    c = +e[1][1];
                ! function(t, e, n, r) {
                    for (var i, a = nE.length; a--;) Rk(i = nE[a], t, e, n, r) && Ok(i, t, e, n, r) && (Math.abs(i[0][0] - i[1][0]) > rE || Math.abs(i[0][1] - i[1][1]) > rE) || delete nE[a]
                }(o, s, u, c),
                function(t, e, n, r) {
                    var i, a, o, s, u, c, f, l, h, d, p, g, y = tE.length,
                        b = !0;
                    for (i = 0; i < y; ++i)
                        if (a = tE[i]) {
                            for (o = a.site, s = (u = a.halfedges).length; s--;) nE[u[s]] || u.splice(s, 1);
                            for (s = 0, c = u.length; s < c;) p = (d = qk(a, nE[u[s]]))[0], g = d[1], l = (f = Fk(a, nE[u[++s % c]]))[0], h = f[1], (Math.abs(p - l) > rE || Math.abs(g - h) > rE) && (u.splice(s, 0, nE.push(Lk(o, d, Math.abs(p - t) < rE && r - g > rE ? [t, Math.abs(l - t) < rE ? h : r] : Math.abs(g - r) < rE && n - p > rE ? [Math.abs(h - r) < rE ? l : n, r] : Math.abs(p - n) < rE && g - e > rE ? [n, Math.abs(l - n) < rE ? h : e] : Math.abs(g - e) < rE && p - t > rE ? [Math.abs(h - e) < rE ? l : t, e] : null)) - 1), ++c);
                            c && (b = !1)
                        } if (b) {
                        var v, m, _, w = 1 / 0;
                        for (i = 0, b = null; i < y; ++i)(a = tE[i]) && (_ = (v = (o = a.site)[0] - t) * v + (m = o[1] - e) * m) < w && (w = _, b = a);
                        if (b) {
                            var x = [t, e],
                                k = [t, r],
                                E = [n, r],
                                A = [n, e];
                            b.halfedges.push(nE.push(Lk(o = b.site, x, k)) - 1, nE.push(Lk(o, k, E)) - 1, nE.push(Lk(o, E, A)) - 1, nE.push(Lk(o, A, x)) - 1)
                        }
                    }
                    for (i = 0; i < y; ++i)(a = tE[i]) && (a.halfedges.length || delete tE[i])
                }(o, s, u, c)
            }
            this.edges = nE, this.cells = tE, Qk = eE = nE = tE = null
        }
        oE.prototype = {
            constructor: oE,
            polygons: function() {
                var t = this.edges;
                return this.cells.map((function(e) {
                    var n = e.halfedges.map((function(n) {
                        return Fk(e, t[n])
                    }));
                    return n.data = e.site.data, n
                }))
            },
            triangles: function() {
                var t = [],
                    e = this.edges;
                return this.cells.forEach((function(n, r) {
                    if (a = (i = n.halfedges).length)
                        for (var i, a, o, s, u, c, f = n.site, l = -1, h = e[i[a - 1]], d = h.left === f ? h.right : h.left; ++l < a;) o = d, d = (h = e[i[l]]).left === f ? h.right : h.left, o && d && r < o.index && r < d.index && (u = o, c = d, ((s = f)[0] - c[0]) * (u[1] - s[1]) - (s[0] - u[0]) * (c[1] - s[1]) < 0) && t.push([f.data, o.data, d.data])
                })), t
            },
            links: function() {
                return this.edges.filter((function(t) {
                    return t.right
                })).map((function(t) {
                    return {
                        source: t.left.data,
                        target: t.right.data
                    }
                }))
            },
            find: function(t, e, n) {
                for (var r, i, a = this, o = a._found || 0, s = a.cells.length; !(i = a.cells[o]);)
                    if (++o >= s) return null;
                var u = t - i.site[0],
                    c = e - i.site[1],
                    f = u * u + c * c;
                do {
                    i = a.cells[r = o], o = null, i.halfedges.forEach((function(n) {
                        var r = a.edges[n],
                            s = r.left;
                        if (s !== i.site && s || (s = r.right)) {
                            var u = t - s[0],
                                c = e - s[1],
                                l = u * u + c * c;
                            l < f && (f = l, o = s.index)
                        }
                    }))
                } while (null !== o);
                return a._found = r, null == n || f <= n * n ? i.site : null
            }
        };
        var sE = function() {
                var t = Ek,
                    e = Ak,
                    n = null;

                function r(r) {
                    return new oE(r.map((function(n, i) {
                        var a = [Math.round(t(n, i, r) / rE) * rE, Math.round(e(n, i, r) / rE) * rE];
                        return a.index = i, a.data = n, a
                    })), n)
                }
                return r.polygons = function(t) {
                    return r(t).polygons()
                }, r.links = function(t) {
                    return r(t).links()
                }, r.triangles = function(t) {
                    return r(t).triangles()
                }, r.x = function(e) {
                    return arguments.length ? (t = "function" == typeof e ? e : kk(+e), r) : t
                }, r.y = function(t) {
                    return arguments.length ? (e = "function" == typeof t ? t : kk(+t), r) : e
                }, r.extent = function(t) {
                    return arguments.length ? (n = null == t ? null : [
                        [+t[0][0], +t[0][1]],
                        [+t[1][0], +t[1][1]]
                    ], r) : n && [
                        [n[0][0], n[0][1]],
                        [n[1][0], n[1][1]]
                    ]
                }, r.size = function(t) {
                    return arguments.length ? (n = null == t ? null : [
                        [0, 0],
                        [+t[0], +t[1]]
                    ], r) : n && [n[1][0] - n[0][0], n[1][1] - n[0][1]]
                }, r
            },
            uE = function(t) {
                return function() {
                    return t
                }
            };

        function cE(t, e, n) {
            this.target = t, this.type = e, this.transform = n
        }

        function fE(t, e, n) {
            this.k = t, this.x = e, this.y = n
        }
        fE.prototype = {
            constructor: fE,
            scale: function(t) {
                return 1 === t ? this : new fE(this.k * t, this.x, this.y)
            },
            translate: function(t, e) {
                return 0 === t & 0 === e ? this : new fE(this.k, this.x + this.k * t, this.y + this.k * e)
            },
            apply: function(t) {
                return [t[0] * this.k + this.x, t[1] * this.k + this.y]
            },
            applyX: function(t) {
                return t * this.k + this.x
            },
            applyY: function(t) {
                return t * this.k + this.y
            },
            invert: function(t) {
                return [(t[0] - this.x) / this.k, (t[1] - this.y) / this.k]
            },
            invertX: function(t) {
                return (t - this.x) / this.k
            },
            invertY: function(t) {
                return (t - this.y) / this.k
            },
            rescaleX: function(t) {
                return t.copy().domain(t.range().map(this.invertX, this).map(t.invert, t))
            },
            rescaleY: function(t) {
                return t.copy().domain(t.range().map(this.invertY, this).map(t.invert, t))
            },
            toString: function() {
                return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"
            }
        };
        var lE = new fE(1, 0, 0);

        function hE(t) {
            for (; !t.__zoom;)
                if (!(t = t.parentNode)) return lE;
            return t.__zoom
        }

        function dE() {
            pe.stopImmediatePropagation()
        }
        hE.prototype = fE.prototype;
        var pE = function() {
            pe.preventDefault(), pe.stopImmediatePropagation()
        };

        function gE() {
            return !pe.ctrlKey && !pe.button
        }

        function yE() {
            var t = this;
            return t instanceof SVGElement ? (t = t.ownerSVGElement || t).hasAttribute("viewBox") ? [
                [(t = t.viewBox.baseVal).x, t.y],
                [t.x + t.width, t.y + t.height]
            ] : [
                [0, 0],
                [t.width.baseVal.value, t.height.baseVal.value]
            ] : [
                [0, 0],
                [t.clientWidth, t.clientHeight]
            ]
        }

        function bE() {
            return this.__zoom || lE
        }

        function vE() {
            return -pe.deltaY * (1 === pe.deltaMode ? .05 : pe.deltaMode ? 1 : .002)
        }

        function mE() {
            return navigator.maxTouchPoints || "ontouchstart" in this
        }

        function _E(t, e, n) {
            var r = t.invertX(e[0][0]) - n[0][0],
                i = t.invertX(e[1][0]) - n[1][0],
                a = t.invertY(e[0][1]) - n[0][1],
                o = t.invertY(e[1][1]) - n[1][1];
            return t.translate(i > r ? (r + i) / 2 : Math.min(0, r) || Math.max(0, i), o > a ? (a + o) / 2 : Math.min(0, a) || Math.max(0, o))
        }
        var wE = function() {
            var t, e, n = gE,
                r = yE,
                i = _E,
                a = vE,
                o = mE,
                s = [0, 1 / 0],
                u = [
                    [-1 / 0, -1 / 0],
                    [1 / 0, 1 / 0]
                ],
                c = 250,
                f = Zp,
                l = gt("start", "zoom", "end"),
                h = 500,
                d = 150,
                p = 0;

            function g(t) {
                t.property("__zoom", bE).on("wheel.zoom", x).on("mousedown.zoom", k).on("dblclick.zoom", E).filter(o).on("touchstart.zoom", A).on("touchmove.zoom", S).on("touchend.zoom touchcancel.zoom", M).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
            }

            function y(t, e) {
                return (e = Math.max(s[0], Math.min(s[1], e))) === t.k ? t : new fE(e, t.x, t.y)
            }

            function b(t, e, n) {
                var r = e[0] - n[0] * t.k,
                    i = e[1] - n[1] * t.k;
                return r === t.x && i === t.y ? t : new fE(t.k, r, i)
            }

            function v(t) {
                return [(+t[0][0] + +t[1][0]) / 2, (+t[0][1] + +t[1][1]) / 2]
            }

            function m(t, e, n) {
                t.on("start.zoom", (function() {
                    _(this, arguments).start()
                })).on("interrupt.zoom end.zoom", (function() {
                    _(this, arguments).end()
                })).tween("zoom", (function() {
                    var t = this,
                        i = arguments,
                        a = _(t, i),
                        o = r.apply(t, i),
                        s = null == n ? v(o) : "function" == typeof n ? n.apply(t, i) : n,
                        u = Math.max(o[1][0] - o[0][0], o[1][1] - o[0][1]),
                        c = t.__zoom,
                        l = "function" == typeof e ? e.apply(t, i) : e,
                        h = f(c.invert(s).concat(u / c.k), l.invert(s).concat(u / l.k));
                    return function(t) {
                        if (1 === t) t = l;
                        else {
                            var e = h(t),
                                n = u / e[2];
                            t = new fE(n, s[0] - e[0] * n, s[1] - e[1] * n)
                        }
                        a.zoom(null, t)
                    }
                }))
            }

            function _(t, e, n) {
                return !n && t.__zooming || new w(t, e)
            }

            function w(t, e) {
                this.that = t, this.args = e, this.active = 0, this.extent = r.apply(t, e), this.taps = 0
            }

            function x() {
                if (n.apply(this, arguments)) {
                    var t = _(this, arguments),
                        e = this.__zoom,
                        r = Math.max(s[0], Math.min(s[1], e.k * Math.pow(2, a.apply(this, arguments)))),
                        o = Fn(this);
                    if (t.wheel) t.mouse[0][0] === o[0] && t.mouse[0][1] === o[1] || (t.mouse[1] = e.invert(t.mouse[0] = o)), clearTimeout(t.wheel);
                    else {
                        if (e.k === r) return;
                        t.mouse = [o, e.invert(o)], _r(this), t.start()
                    }
                    pE(), t.wheel = setTimeout((function() {
                        t.wheel = null, t.end()
                    }), d), t.zoom("mouse", i(b(y(e, r), t.mouse[0], t.mouse[1]), t.extent, u))
                }
            }

            function k() {
                if (!e && n.apply(this, arguments)) {
                    var t = _(this, arguments, !0),
                        r = Te(pe.view).on("mousemove.zoom", (function() {
                            if (pE(), !t.moved) {
                                var e = pe.clientX - o,
                                    n = pe.clientY - s;
                                t.moved = e * e + n * n > p
                            }
                            t.zoom("mouse", i(b(t.that.__zoom, t.mouse[0] = Fn(t.that), t.mouse[1]), t.extent, u))
                        }), !0).on("mouseup.zoom", (function() {
                            r.on("mousemove.zoom mouseup.zoom", null), Ie(pe.view, t.moved), pE(), t.end()
                        }), !0),
                        a = Fn(this),
                        o = pe.clientX,
                        s = pe.clientY;
                    Ne(pe.view), dE(), t.mouse = [a, this.__zoom.invert(a)], _r(this), t.start()
                }
            }

            function E() {
                if (n.apply(this, arguments)) {
                    var t = this.__zoom,
                        e = Fn(this),
                        a = t.invert(e),
                        o = t.k * (pe.shiftKey ? .5 : 2),
                        s = i(b(y(t, o), e, a), r.apply(this, arguments), u);
                    pE(), c > 0 ? Te(this).transition().duration(c).call(m, s, e) : Te(this).call(g.transform, s)
                }
            }

            function A() {
                if (n.apply(this, arguments)) {
                    var e, r, i, a, o = pe.touches,
                        s = o.length,
                        u = _(this, arguments, pe.changedTouches.length === s);
                    for (dE(), r = 0; r < s; ++r) i = o[r], a = [a = Pn(this, o, i.identifier), this.__zoom.invert(a), i.identifier], u.touch0 ? u.touch1 || u.touch0[2] === a[2] || (u.touch1 = a, u.taps = 0) : (u.touch0 = a, e = !0, u.taps = 1 + !!t);
                    t && (t = clearTimeout(t)), e && (u.taps < 2 && (t = setTimeout((function() {
                        t = null
                    }), h)), _r(this), u.start())
                }
            }

            function S() {
                if (this.__zooming) {
                    var e, n, r, a, o = _(this, arguments),
                        s = pe.changedTouches,
                        c = s.length;
                    for (pE(), t && (t = clearTimeout(t)), o.taps = 0, e = 0; e < c; ++e) n = s[e], r = Pn(this, s, n.identifier), o.touch0 && o.touch0[2] === n.identifier ? o.touch0[0] = r : o.touch1 && o.touch1[2] === n.identifier && (o.touch1[0] = r);
                    if (n = o.that.__zoom, o.touch1) {
                        var f = o.touch0[0],
                            l = o.touch0[1],
                            h = o.touch1[0],
                            d = o.touch1[1],
                            p = (p = h[0] - f[0]) * p + (p = h[1] - f[1]) * p,
                            g = (g = d[0] - l[0]) * g + (g = d[1] - l[1]) * g;
                        n = y(n, Math.sqrt(p / g)), r = [(f[0] + h[0]) / 2, (f[1] + h[1]) / 2], a = [(l[0] + d[0]) / 2, (l[1] + d[1]) / 2]
                    } else {
                        if (!o.touch0) return;
                        r = o.touch0[0], a = o.touch0[1]
                    }
                    o.zoom("touch", i(b(n, r, a), o.extent, u))
                }
            }

            function M() {
                if (this.__zooming) {
                    var t, n, r = _(this, arguments),
                        i = pe.changedTouches,
                        a = i.length;
                    for (dE(), e && clearTimeout(e), e = setTimeout((function() {
                            e = null
                        }), h), t = 0; t < a; ++t) n = i[t], r.touch0 && r.touch0[2] === n.identifier ? delete r.touch0 : r.touch1 && r.touch1[2] === n.identifier && delete r.touch1;
                    if (r.touch1 && !r.touch0 && (r.touch0 = r.touch1, delete r.touch1), r.touch0) r.touch0[1] = this.__zoom.invert(r.touch0[0]);
                    else if (r.end(), 2 === r.taps) {
                        var o = Te(this).on("dblclick.zoom");
                        o && o.apply(this, arguments)
                    }
                }
            }
            return g.transform = function(t, e, n) {
                var r = t.selection ? t.selection() : t;
                r.property("__zoom", bE), t !== r ? m(t, e, n) : r.interrupt().each((function() {
                    _(this, arguments).start().zoom(null, "function" == typeof e ? e.apply(this, arguments) : e).end()
                }))
            }, g.scaleBy = function(t, e, n) {
                g.scaleTo(t, (function() {
                    var t = this.__zoom.k,
                        n = "function" == typeof e ? e.apply(this, arguments) : e;
                    return t * n
                }), n)
            }, g.scaleTo = function(t, e, n) {
                g.transform(t, (function() {
                    var t = r.apply(this, arguments),
                        a = this.__zoom,
                        o = null == n ? v(t) : "function" == typeof n ? n.apply(this, arguments) : n,
                        s = a.invert(o),
                        c = "function" == typeof e ? e.apply(this, arguments) : e;
                    return i(b(y(a, c), o, s), t, u)
                }), n)
            }, g.translateBy = function(t, e, n) {
                g.transform(t, (function() {
                    return i(this.__zoom.translate("function" == typeof e ? e.apply(this, arguments) : e, "function" == typeof n ? n.apply(this, arguments) : n), r.apply(this, arguments), u)
                }))
            }, g.translateTo = function(t, e, n, a) {
                g.transform(t, (function() {
                    var t = r.apply(this, arguments),
                        o = this.__zoom,
                        s = null == a ? v(t) : "function" == typeof a ? a.apply(this, arguments) : a;
                    return i(lE.translate(s[0], s[1]).scale(o.k).translate("function" == typeof e ? -e.apply(this, arguments) : -e, "function" == typeof n ? -n.apply(this, arguments) : -n), t, u)
                }), a)
            }, w.prototype = {
                start: function() {
                    return 1 == ++this.active && (this.that.__zooming = this, this.emit("start")), this
                },
                zoom: function(t, e) {
                    return this.mouse && "mouse" !== t && (this.mouse[1] = e.invert(this.mouse[0])), this.touch0 && "touch" !== t && (this.touch0[1] = e.invert(this.touch0[0])), this.touch1 && "touch" !== t && (this.touch1[1] = e.invert(this.touch1[0])), this.that.__zoom = e, this.emit("zoom"), this
                },
                end: function() {
                    return 0 == --this.active && (delete this.that.__zooming, this.emit("end")), this
                },
                emit: function(t) {
                    _e(new cE(g, t, this.that.__zoom), l.apply, l, [t, this.that, this.args])
                }
            }, g.wheelDelta = function(t) {
                return arguments.length ? (a = "function" == typeof t ? t : uE(+t), g) : a
            }, g.filter = function(t) {
                return arguments.length ? (n = "function" == typeof t ? t : uE(!!t), g) : n
            }, g.touchable = function(t) {
                return arguments.length ? (o = "function" == typeof t ? t : uE(!!t), g) : o
            }, g.extent = function(t) {
                return arguments.length ? (r = "function" == typeof t ? t : uE([
                    [+t[0][0], +t[0][1]],
                    [+t[1][0], +t[1][1]]
                ]), g) : r
            }, g.scaleExtent = function(t) {
                return arguments.length ? (s[0] = +t[0], s[1] = +t[1], g) : [s[0], s[1]]
            }, g.translateExtent = function(t) {
                return arguments.length ? (u[0][0] = +t[0][0], u[1][0] = +t[1][0], u[0][1] = +t[0][1], u[1][1] = +t[1][1], g) : [
                    [u[0][0], u[0][1]],
                    [u[1][0], u[1][1]]
                ]
            }, g.constrain = function(t) {
                return arguments.length ? (i = t, g) : i
            }, g.duration = function(t) {
                return arguments.length ? (c = +t, g) : c
            }, g.interpolate = function(t) {
                return arguments.length ? (f = t, g) : f
            }, g.on = function() {
                var t = l.on.apply(l, arguments);
                return t === l ? g : t
            }, g.clickDistance = function(t) {
                return arguments.length ? (p = (t = +t) * t, g) : Math.sqrt(p)
            }, g
        };
        n.d(e, "version", (function() {
            return "5.14.2"
        })), n.d(e, "bisect", (function() {
            return u
        })), n.d(e, "bisectRight", (function() {
            return o
        })), n.d(e, "bisectLeft", (function() {
            return s
        })), n.d(e, "ascending", (function() {
            return r
        })), n.d(e, "bisector", (function() {
            return i
        })), n.d(e, "cross", (function() {
            return l
        })), n.d(e, "descending", (function() {
            return h
        })), n.d(e, "deviation", (function() {
            return g
        })), n.d(e, "extent", (function() {
            return y
        })), n.d(e, "histogram", (function() {
            return C
        })), n.d(e, "thresholdFreedmanDiaconis", (function() {
            return I
        })), n.d(e, "thresholdScott", (function() {
            return L
        })), n.d(e, "thresholdSturges", (function() {
            return D
        })), n.d(e, "max", (function() {
            return B
        })), n.d(e, "mean", (function() {
            return O
        })), n.d(e, "median", (function() {
            return R
        })), n.d(e, "merge", (function() {
            return P
        })), n.d(e, "min", (function() {
            return F
        })), n.d(e, "pairs", (function() {
            return c
        })), n.d(e, "permute", (function() {
            return q
        })), n.d(e, "quantile", (function() {
            return N
        })), n.d(e, "range", (function() {
            return x
        })), n.d(e, "scan", (function() {
            return j
        })), n.d(e, "shuffle", (function() {
            return U
        })), n.d(e, "sum", (function() {
            return z
        })), n.d(e, "ticks", (function() {
            return S
        })), n.d(e, "tickIncrement", (function() {
            return M
        })), n.d(e, "tickStep", (function() {
            return T
        })), n.d(e, "transpose", (function() {
            return Y
        })), n.d(e, "variance", (function() {
            return p
        })), n.d(e, "zip", (function() {
            return H
        })), n.d(e, "axisTop", (function() {
            return at
        })), n.d(e, "axisRight", (function() {
            return ot
        })), n.d(e, "axisBottom", (function() {
            return st
        })), n.d(e, "axisLeft", (function() {
            return ut
        })), n.d(e, "brush", (function() {
            return Li
        })), n.d(e, "brushX", (function() {
            return Ni
        })), n.d(e, "brushY", (function() {
            return Ii
        })), n.d(e, "brushSelection", (function() {
            return Ci
        })), n.d(e, "chord", (function() {
            return zi
        })), n.d(e, "ribbon", (function() {
            return na
        })), n.d(e, "nest", (function() {
            return oa
        })), n.d(e, "set", (function() {
            return pa
        })), n.d(e, "map", (function() {
            return aa
        })), n.d(e, "keys", (function() {
            return ga
        })), n.d(e, "values", (function() {
            return ya
        })), n.d(e, "entries", (function() {
            return ba
        })), n.d(e, "color", (function() {
            return Ke
        })), n.d(e, "rgb", (function() {
            return Qe
        })), n.d(e, "hsl", (function() {
            return sn
        })), n.d(e, "lab", (function() {
            return Da
        })), n.d(e, "hcl", (function() {
            return Pa
        })), n.d(e, "lch", (function() {
            return Ra
        })), n.d(e, "gray", (function() {
            return Ta
        })), n.d(e, "cubehelix", (function() {
            return Ga
        })), n.d(e, "contours", (function() {
            return ro
        })), n.d(e, "contourDensity", (function() {
            return co
        })), n.d(e, "dispatch", (function() {
            return gt
        })), n.d(e, "drag", (function() {
            return bo
        })), n.d(e, "dragDisable", (function() {
            return Ne
        })), n.d(e, "dragEnable", (function() {
            return Ie
        })), n.d(e, "dsvFormat", (function() {
            return Mo
        })), n.d(e, "csvParse", (function() {
            return Do
        })), n.d(e, "csvParseRows", (function() {
            return Co
        })), n.d(e, "csvFormat", (function() {
            return No
        })), n.d(e, "csvFormatBody", (function() {
            return Io
        })), n.d(e, "csvFormatRows", (function() {
            return Lo
        })), n.d(e, "csvFormatRow", (function() {
            return Bo
        })), n.d(e, "csvFormatValue", (function() {
            return Oo
        })), n.d(e, "tsvParse", (function() {
            return Po
        })), n.d(e, "tsvParseRows", (function() {
            return Fo
        })), n.d(e, "tsvFormat", (function() {
            return qo
        })), n.d(e, "tsvFormatBody", (function() {
            return jo
        })), n.d(e, "tsvFormatRows", (function() {
            return Uo
        })), n.d(e, "tsvFormatRow", (function() {
            return zo
        })), n.d(e, "tsvFormatValue", (function() {
            return Yo
        })), n.d(e, "autoType", (function() {
            return Vo
        })), n.d(e, "easeLinear", (function() {
            return Go
        })), n.d(e, "easeQuad", (function() {
            return Ko
        })), n.d(e, "easeQuadIn", (function() {
            return $o
        })), n.d(e, "easeQuadOut", (function() {
            return Wo
        })), n.d(e, "easeQuadInOut", (function() {
            return Ko
        })), n.d(e, "easeCubic", (function() {
            return ni
        })), n.d(e, "easeCubicIn", (function() {
            return ti
        })), n.d(e, "easeCubicOut", (function() {
            return ei
        })), n.d(e, "easeCubicInOut", (function() {
            return ni
        })), n.d(e, "easePoly", (function() {
            return Jo
        })), n.d(e, "easePolyIn", (function() {
            return Xo
        })), n.d(e, "easePolyOut", (function() {
            return Zo
        })), n.d(e, "easePolyInOut", (function() {
            return Jo
        })), n.d(e, "easeSin", (function() {
            return rs
        })), n.d(e, "easeSinIn", (function() {
            return es
        })), n.d(e, "easeSinOut", (function() {
            return ns
        })), n.d(e, "easeSinInOut", (function() {
            return rs
        })), n.d(e, "easeExp", (function() {
            return os
        })), n.d(e, "easeExpIn", (function() {
            return is
        })), n.d(e, "easeExpOut", (function() {
            return as
        })), n.d(e, "easeExpInOut", (function() {
            return os
        })), n.d(e, "easeCircle", (function() {
            return cs
        })), n.d(e, "easeCircleIn", (function() {
            return ss
        })), n.d(e, "easeCircleOut", (function() {
            return us
        })), n.d(e, "easeCircleInOut", (function() {
            return cs
        })), n.d(e, "easeBounce", (function() {
            return ws
        })), n.d(e, "easeBounceIn", (function() {
            return _s
        })), n.d(e, "easeBounceOut", (function() {
            return ws
        })), n.d(e, "easeBounceInOut", (function() {
            return xs
        })), n.d(e, "easeBack", (function() {
            return As
        })), n.d(e, "easeBackIn", (function() {
            return ks
        })), n.d(e, "easeBackOut", (function() {
            return Es
        })), n.d(e, "easeBackInOut", (function() {
            return As
        })), n.d(e, "easeElastic", (function() {
            return Ts
        })), n.d(e, "easeElasticIn", (function() {
            return Ms
        })), n.d(e, "easeElasticOut", (function() {
            return Ts
        })), n.d(e, "easeElasticInOut", (function() {
            return Ds
        })), n.d(e, "blob", (function() {
            return Ns
        })), n.d(e, "buffer", (function() {
            return Ls
        })), n.d(e, "dsv", (function() {
            return Ps
        })), n.d(e, "csv", (function() {
            return Fs
        })), n.d(e, "tsv", (function() {
            return qs
        })), n.d(e, "image", (function() {
            return js
        })), n.d(e, "json", (function() {
            return zs
        })), n.d(e, "text", (function() {
            return Os
        })), n.d(e, "xml", (function() {
            return Vs
        })), n.d(e, "html", (function() {
            return Hs
        })), n.d(e, "svg", (function() {
            return Gs
        })), n.d(e, "forceCenter", (function() {
            return $s
        })), n.d(e, "forceCollide", (function() {
            return ou
        })), n.d(e, "forceLink", (function() {
            return cu
        })), n.d(e, "forceManyBody", (function() {
            return gu
        })), n.d(e, "forceRadial", (function() {
            return yu
        })), n.d(e, "forceSimulation", (function() {
            return pu
        })), n.d(e, "forceX", (function() {
            return bu
        })), n.d(e, "forceY", (function() {
            return vu
        })), n.d(e, "formatDefaultLocale", (function() {
            return Ou
        })), n.d(e, "format", (function() {
            return Su
        })), n.d(e, "formatPrefix", (function() {
            return Mu
        })), n.d(e, "formatLocale", (function() {
            return Bu
        })), n.d(e, "formatSpecifier", (function() {
            return xu
        })), n.d(e, "FormatSpecifier", (function() {
            return ku
        })), n.d(e, "precisionFixed", (function() {
            return Ru
        })), n.d(e, "precisionPrefix", (function() {
            return Pu
        })), n.d(e, "precisionRound", (function() {
            return Fu
        })), n.d(e, "geoArea", (function() {
            return Nc
        })), n.d(e, "geoBounds", (function() {
            return Ef
        })), n.d(e, "geoCentroid", (function() {
            return Rf
        })), n.d(e, "geoCircle", (function() {
            return $f
        })), n.d(e, "geoClipAntimeridian", (function() {
            return al
        })), n.d(e, "geoClipCircle", (function() {
            return ol
        })), n.d(e, "geoClipExtent", (function() {
            return pl
        })), n.d(e, "geoClipRectangle", (function() {
            return fl
        })), n.d(e, "geoContains", (function() {
            return Il
        })), n.d(e, "geoDistance", (function() {
            return kl
        })), n.d(e, "geoGraticule", (function() {
            return Ol
        })), n.d(e, "geoGraticule10", (function() {
            return Rl
        })), n.d(e, "geoInterpolate", (function() {
            return Ul
        })), n.d(e, "geoLength", (function() {
            return _l
        })), n.d(e, "geoPath", (function() {
            return qh
        })), n.d(e, "geoAlbers", (function() {
            return ad
        })), n.d(e, "geoAlbersUsa", (function() {
            return od
        })), n.d(e, "geoAzimuthalEqualArea", (function() {
            return fd
        })), n.d(e, "geoAzimuthalEqualAreaRaw", (function() {
            return cd
        })), n.d(e, "geoAzimuthalEquidistant", (function() {
            return hd
        })), n.d(e, "geoAzimuthalEquidistantRaw", (function() {
            return ld
        })), n.d(e, "geoConicConformal", (function() {
            return vd
        })), n.d(e, "geoConicConformalRaw", (function() {
            return bd
        })), n.d(e, "geoConicEqualArea", (function() {
            return id
        })), n.d(e, "geoConicEqualAreaRaw", (function() {
            return rd
        })), n.d(e, "geoConicEquidistant", (function() {
            return xd
        })), n.d(e, "geoConicEquidistantRaw", (function() {
            return wd
        })), n.d(e, "geoEqualEarth", (function() {
            return Dd
        })), n.d(e, "geoEqualEarthRaw", (function() {
            return Td
        })), n.d(e, "geoEquirectangular", (function() {
            return _d
        })), n.d(e, "geoEquirectangularRaw", (function() {
            return md
        })), n.d(e, "geoGnomonic", (function() {
            return Nd
        })), n.d(e, "geoGnomonicRaw", (function() {
            return Cd
        })), n.d(e, "geoIdentity", (function() {
            return Ld
        })), n.d(e, "geoProjection", (function() {
            return td
        })), n.d(e, "geoProjectionMutator", (function() {
            return ed
        })), n.d(e, "geoMercator", (function() {
            return pd
        })), n.d(e, "geoMercatorRaw", (function() {
            return dd
        })), n.d(e, "geoNaturalEarth1", (function() {
            return Od
        })), n.d(e, "geoNaturalEarth1Raw", (function() {
            return Bd
        })), n.d(e, "geoOrthographic", (function() {
            return Pd
        })), n.d(e, "geoOrthographicRaw", (function() {
            return Rd
        })), n.d(e, "geoStereographic", (function() {
            return qd
        })), n.d(e, "geoStereographicRaw", (function() {
            return Fd
        })), n.d(e, "geoTransverseMercator", (function() {
            return Ud
        })), n.d(e, "geoTransverseMercatorRaw", (function() {
            return jd
        })), n.d(e, "geoRotation", (function() {
            return Vf
        })), n.d(e, "geoStream", (function() {
            return kc
        })), n.d(e, "geoTransform", (function() {
            return jh
        })), n.d(e, "cluster", (function() {
            return Hd
        })), n.d(e, "hierarchy", (function() {
            return $d
        })), n.d(e, "pack", (function() {
            return vp
        })), n.d(e, "packSiblings", (function() {
            return hp
        })), n.d(e, "packEnclose", (function() {
            return Qd
        })), n.d(e, "partition", (function() {
            return Ep
        })), n.d(e, "stratify", (function() {
            return Cp
        })), n.d(e, "tree", (function() {
            return Pp
        })), n.d(e, "treemap", (function() {
            return zp
        })), n.d(e, "treemapBinary", (function() {
            return Yp
        })), n.d(e, "treemapDice", (function() {
            return kp
        })), n.d(e, "treemapSlice", (function() {
            return Fp
        })), n.d(e, "treemapSliceDice", (function() {
            return Vp
        })), n.d(e, "treemapSquarify", (function() {
            return Up
        })), n.d(e, "treemapResquarify", (function() {
            return Hp
        })), n.d(e, "interpolate", (function() {
            return Bn
        })), n.d(e, "interpolateArray", (function() {
            return En
        })), n.d(e, "interpolateBasis", (function() {
            return ln
        })), n.d(e, "interpolateBasisClosed", (function() {
            return hn
        })), n.d(e, "interpolateDate", (function() {
            return Sn
        })), n.d(e, "interpolateDiscrete", (function() {
            return Gp
        })), n.d(e, "interpolateHue", (function() {
            return $p
        })), n.d(e, "interpolateNumber", (function() {
            return Mn
        })), n.d(e, "interpolateNumberArray", (function() {
            return xn
        })), n.d(e, "interpolateObject", (function() {
            return Tn
        })), n.d(e, "interpolateRound", (function() {
            return Wp
        })), n.d(e, "interpolateString", (function() {
            return Ln
        })), n.d(e, "interpolateTransformCss", (function() {
            return Ar
        })), n.d(e, "interpolateTransformSvg", (function() {
            return Sr
        })), n.d(e, "interpolateZoom", (function() {
            return Zp
        })), n.d(e, "interpolateRgb", (function() {
            return vn
        })), n.d(e, "interpolateRgbBasis", (function() {
            return _n
        })), n.d(e, "interpolateRgbBasisClosed", (function() {
            return wn
        })), n.d(e, "interpolateHsl", (function() {
            return Qp
        })), n.d(e, "interpolateHslLong", (function() {
            return tg
        })), n.d(e, "interpolateLab", (function() {
            return eg
        })), n.d(e, "interpolateHcl", (function() {
            return rg
        })), n.d(e, "interpolateHclLong", (function() {
            return ig
        })), n.d(e, "interpolateCubehelix", (function() {
            return og
        })), n.d(e, "interpolateCubehelixLong", (function() {
            return sg
        })), n.d(e, "piecewise", (function() {
            return ug
        })), n.d(e, "quantize", (function() {
            return cg
        })), n.d(e, "path", (function() {
            return Xi
        })), n.d(e, "polygonArea", (function() {
            return fg
        })), n.d(e, "polygonCentroid", (function() {
            return lg
        })), n.d(e, "polygonHull", (function() {
            return gg
        })), n.d(e, "polygonContains", (function() {
            return yg
        })), n.d(e, "polygonLength", (function() {
            return bg
        })), n.d(e, "quadtree", (function() {
            return tu
        })), n.d(e, "randomUniform", (function() {
            return mg
        })), n.d(e, "randomNormal", (function() {
            return _g
        })), n.d(e, "randomLogNormal", (function() {
            return wg
        })), n.d(e, "randomBates", (function() {
            return kg
        })), n.d(e, "randomIrwinHall", (function() {
            return xg
        })), n.d(e, "randomExponential", (function() {
            return Eg
        })), n.d(e, "scaleBand", (function() {
            return Ig
        })), n.d(e, "scalePoint", (function() {
            return Lg
        })), n.d(e, "scaleIdentity", (function() {
            return Wg
        })), n.d(e, "scaleLinear", (function() {
            return $g
        })), n.d(e, "scaleLog", (function() {
            return ry
        })), n.d(e, "scaleSymlog", (function() {
            return sy
        })), n.d(e, "scaleOrdinal", (function() {
            return Ng
        })), n.d(e, "scaleImplicit", (function() {
            return Cg
        })), n.d(e, "scalePow", (function() {
            return hy
        })), n.d(e, "scaleSqrt", (function() {
            return dy
        })), n.d(e, "scaleQuantile", (function() {
            return py
        })), n.d(e, "scaleQuantize", (function() {
            return gy
        })), n.d(e, "scaleThreshold", (function() {
            return yy
        })), n.d(e, "scaleTime", (function() {
            return nm
        })), n.d(e, "scaleUtc", (function() {
            return hm
        })), n.d(e, "scaleSequential", (function() {
            return gm
        })), n.d(e, "scaleSequentialLog", (function() {
            return ym
        })), n.d(e, "scaleSequentialPow", (function() {
            return vm
        })), n.d(e, "scaleSequentialSqrt", (function() {
            return mm
        })), n.d(e, "scaleSequentialSymlog", (function() {
            return bm
        })), n.d(e, "scaleSequentialQuantile", (function() {
            return _m
        })), n.d(e, "scaleDiverging", (function() {
            return xm
        })), n.d(e, "scaleDivergingLog", (function() {
            return km
        })), n.d(e, "scaleDivergingPow", (function() {
            return Am
        })), n.d(e, "scaleDivergingSqrt", (function() {
            return Sm
        })), n.d(e, "scaleDivergingSymlog", (function() {
            return Em
        })), n.d(e, "tickFormat", (function() {
            return Hg
        })), n.d(e, "schemeCategory10", (function() {
            return Tm
        })), n.d(e, "schemeAccent", (function() {
            return Dm
        })), n.d(e, "schemeDark2", (function() {
            return Cm
        })), n.d(e, "schemePaired", (function() {
            return Nm
        })), n.d(e, "schemePastel1", (function() {
            return Im
        })), n.d(e, "schemePastel2", (function() {
            return Lm
        })), n.d(e, "schemeSet1", (function() {
            return Bm
        })), n.d(e, "schemeSet2", (function() {
            return Om
        })), n.d(e, "schemeSet3", (function() {
            return Rm
        })), n.d(e, "schemeTableau10", (function() {
            return Pm
        })), n.d(e, "interpolateBrBG", (function() {
            return jm
        })), n.d(e, "schemeBrBG", (function() {
            return qm
        })), n.d(e, "interpolatePRGn", (function() {
            return zm
        })), n.d(e, "schemePRGn", (function() {
            return Um
        })), n.d(e, "interpolatePiYG", (function() {
            return Vm
        })), n.d(e, "schemePiYG", (function() {
            return Ym
        })), n.d(e, "interpolatePuOr", (function() {
            return Gm
        })), n.d(e, "schemePuOr", (function() {
            return Hm
        })), n.d(e, "interpolateRdBu", (function() {
            return Wm
        })), n.d(e, "schemeRdBu", (function() {
            return $m
        })), n.d(e, "interpolateRdGy", (function() {
            return Xm
        })), n.d(e, "schemeRdGy", (function() {
            return Km
        })), n.d(e, "interpolateRdYlBu", (function() {
            return Jm
        })), n.d(e, "schemeRdYlBu", (function() {
            return Zm
        })), n.d(e, "interpolateRdYlGn", (function() {
            return t_
        })), n.d(e, "schemeRdYlGn", (function() {
            return Qm
        })), n.d(e, "interpolateSpectral", (function() {
            return n_
        })), n.d(e, "schemeSpectral", (function() {
            return e_
        })), n.d(e, "interpolateBuGn", (function() {
            return i_
        })), n.d(e, "schemeBuGn", (function() {
            return r_
        })), n.d(e, "interpolateBuPu", (function() {
            return o_
        })), n.d(e, "schemeBuPu", (function() {
            return a_
        })), n.d(e, "interpolateGnBu", (function() {
            return u_
        })), n.d(e, "schemeGnBu", (function() {
            return s_
        })), n.d(e, "interpolateOrRd", (function() {
            return f_
        })), n.d(e, "schemeOrRd", (function() {
            return c_
        })), n.d(e, "interpolatePuBuGn", (function() {
            return h_
        })), n.d(e, "schemePuBuGn", (function() {
            return l_
        })), n.d(e, "interpolatePuBu", (function() {
            return p_
        })), n.d(e, "schemePuBu", (function() {
            return d_
        })), n.d(e, "interpolatePuRd", (function() {
            return y_
        })), n.d(e, "schemePuRd", (function() {
            return g_
        })), n.d(e, "interpolateRdPu", (function() {
            return v_
        })), n.d(e, "schemeRdPu", (function() {
            return b_
        })), n.d(e, "interpolateYlGnBu", (function() {
            return __
        })), n.d(e, "schemeYlGnBu", (function() {
            return m_
        })), n.d(e, "interpolateYlGn", (function() {
            return x_
        })), n.d(e, "schemeYlGn", (function() {
            return w_
        })), n.d(e, "interpolateYlOrBr", (function() {
            return E_
        })), n.d(e, "schemeYlOrBr", (function() {
            return k_
        })), n.d(e, "interpolateYlOrRd", (function() {
            return S_
        })), n.d(e, "schemeYlOrRd", (function() {
            return A_
        })), n.d(e, "interpolateBlues", (function() {
            return T_
        })), n.d(e, "schemeBlues", (function() {
            return M_
        })), n.d(e, "interpolateGreens", (function() {
            return C_
        })), n.d(e, "schemeGreens", (function() {
            return D_
        })), n.d(e, "interpolateGreys", (function() {
            return I_
        })), n.d(e, "schemeGreys", (function() {
            return N_
        })), n.d(e, "interpolatePurples", (function() {
            return B_
        })), n.d(e, "schemePurples", (function() {
            return L_
        })), n.d(e, "interpolateReds", (function() {
            return R_
        })), n.d(e, "schemeReds", (function() {
            return O_
        })), n.d(e, "interpolateOranges", (function() {
            return F_
        })), n.d(e, "schemeOranges", (function() {
            return P_
        })), n.d(e, "interpolateCividis", (function() {
            return q_
        })), n.d(e, "interpolateCubehelixDefault", (function() {
            return j_
        })), n.d(e, "interpolateRainbow", (function() {
            return V_
        })), n.d(e, "interpolateWarm", (function() {
            return U_
        })), n.d(e, "interpolateCool", (function() {
            return z_
        })), n.d(e, "interpolateSinebow", (function() {
            return W_
        })), n.d(e, "interpolateTurbo", (function() {
            return K_
        })), n.d(e, "interpolateViridis", (function() {
            return Z_
        })), n.d(e, "interpolateMagma", (function() {
            return J_
        })), n.d(e, "interpolateInferno", (function() {
            return Q_
        })), n.d(e, "interpolatePlasma", (function() {
            return tw
        })), n.d(e, "create", (function() {
            return ew
        })), n.d(e, "creator", (function() {
            return ue
        })), n.d(e, "local", (function() {
            return rw
        })), n.d(e, "matcher", (function() {
            return _t
        })), n.d(e, "mouse", (function() {
            return Fn
        })), n.d(e, "namespace", (function() {
            return Dt
        })), n.d(e, "namespaces", (function() {
            return Tt
        })), n.d(e, "clientPoint", (function() {
            return Rn
        })), n.d(e, "select", (function() {
            return Te
        })), n.d(e, "selectAll", (function() {
            return aw
        })), n.d(e, "selection", (function() {
            return Me
        })), n.d(e, "selector", (function() {
            return bt
        })), n.d(e, "selectorAll", (function() {
            return mt
        })), n.d(e, "style", (function() {
            return jt
        })), n.d(e, "touch", (function() {
            return Pn
        })), n.d(e, "touches", (function() {
            return ow
        })), n.d(e, "window", (function() {
            return Rt
        })), n.d(e, "event", (function() {
            return pe
        })), n.d(e, "customEvent", (function() {
            return _e
        })), n.d(e, "arc", (function() {
            return Sw
        })), n.d(e, "area", (function() {
            return Iw
        })), n.d(e, "line", (function() {
            return Nw
        })), n.d(e, "pie", (function() {
            return Ow
        })), n.d(e, "areaRadial", (function() {
            return Uw
        })), n.d(e, "radialArea", (function() {
            return Uw
        })), n.d(e, "lineRadial", (function() {
            return jw
        })), n.d(e, "radialLine", (function() {
            return jw
        })), n.d(e, "pointRadial", (function() {
            return zw
        })), n.d(e, "linkHorizontal", (function() {
            return Xw
        })), n.d(e, "linkVertical", (function() {
            return Zw
        })), n.d(e, "linkRadial", (function() {
            return Jw
        })), n.d(e, "symbol", (function() {
            return yx
        })), n.d(e, "symbols", (function() {
            return gx
        })), n.d(e, "symbolCircle", (function() {
            return Qw
        })), n.d(e, "symbolCross", (function() {
            return tx
        })), n.d(e, "symbolDiamond", (function() {
            return rx
        })), n.d(e, "symbolSquare", (function() {
            return ux
        })), n.d(e, "symbolStar", (function() {
            return sx
        })), n.d(e, "symbolTriangle", (function() {
            return fx
        })), n.d(e, "symbolWye", (function() {
            return px
        })), n.d(e, "curveBasisClosed", (function() {
            return xx
        })), n.d(e, "curveBasisOpen", (function() {
            return Ex
        })), n.d(e, "curveBasis", (function() {
            return _x
        })), n.d(e, "curveBundle", (function() {
            return Sx
        })), n.d(e, "curveCardinalClosed", (function() {
            return Nx
        })), n.d(e, "curveCardinalOpen", (function() {
            return Lx
        })), n.d(e, "curveCardinal", (function() {
            return Dx
        })), n.d(e, "curveCatmullRomClosed", (function() {
            return Fx
        })), n.d(e, "curveCatmullRomOpen", (function() {
            return jx
        })), n.d(e, "curveCatmullRom", (function() {
            return Rx
        })), n.d(e, "curveLinearClosed", (function() {
            return zx
        })), n.d(e, "curveLinear", (function() {
            return Tw
        })), n.d(e, "curveMonotoneX", (function() {
            return Xx
        })), n.d(e, "curveMonotoneY", (function() {
            return Zx
        })), n.d(e, "curveNatural", (function() {
            return tk
        })), n.d(e, "curveStep", (function() {
            return nk
        })), n.d(e, "curveStepAfter", (function() {
            return ik
        })), n.d(e, "curveStepBefore", (function() {
            return rk
        })), n.d(e, "stack", (function() {
            return uk
        })), n.d(e, "stackOffsetExpand", (function() {
            return ck
        })), n.d(e, "stackOffsetDiverging", (function() {
            return fk
        })), n.d(e, "stackOffsetNone", (function() {
            return ak
        })), n.d(e, "stackOffsetSilhouette", (function() {
            return lk
        })), n.d(e, "stackOffsetWiggle", (function() {
            return hk
        })), n.d(e, "stackOrderAppearance", (function() {
            return dk
        })), n.d(e, "stackOrderAscending", (function() {
            return gk
        })), n.d(e, "stackOrderDescending", (function() {
            return bk
        })), n.d(e, "stackOrderInsideOut", (function() {
            return vk
        })), n.d(e, "stackOrderNone", (function() {
            return ok
        })), n.d(e, "stackOrderReverse", (function() {
            return mk
        })), n.d(e, "timeInterval", (function() {
            return my
        })), n.d(e, "timeMillisecond", (function() {
            return nb
        })), n.d(e, "timeMilliseconds", (function() {
            return rb
        })), n.d(e, "utcMillisecond", (function() {
            return nb
        })), n.d(e, "utcMilliseconds", (function() {
            return rb
        })), n.d(e, "timeSecond", (function() {
            return Qy
        })), n.d(e, "timeSeconds", (function() {
            return tb
        })), n.d(e, "utcSecond", (function() {
            return Qy
        })), n.d(e, "utcSeconds", (function() {
            return tb
        })), n.d(e, "timeMinute", (function() {
            return Xy
        })), n.d(e, "timeMinutes", (function() {
            return Zy
        })), n.d(e, "timeHour", (function() {
            return $y
        })), n.d(e, "timeHours", (function() {
            return Wy
        })), n.d(e, "timeDay", (function() {
            return Vy
        })), n.d(e, "timeDays", (function() {
            return Hy
        })), n.d(e, "timeWeek", (function() {
            return Dy
        })), n.d(e, "timeWeeks", (function() {
            return Ry
        })), n.d(e, "timeSunday", (function() {
            return Dy
        })), n.d(e, "timeSundays", (function() {
            return Ry
        })), n.d(e, "timeMonday", (function() {
            return Cy
        })), n.d(e, "timeMondays", (function() {
            return Py
        })), n.d(e, "timeTuesday", (function() {
            return Ny
        })), n.d(e, "timeTuesdays", (function() {
            return Fy
        })), n.d(e, "timeWednesday", (function() {
            return Iy
        })), n.d(e, "timeWednesdays", (function() {
            return qy
        })), n.d(e, "timeThursday", (function() {
            return Ly
        })), n.d(e, "timeThursdays", (function() {
            return jy
        })), n.d(e, "timeFriday", (function() {
            return By
        })), n.d(e, "timeFridays", (function() {
            return Uy
        })), n.d(e, "timeSaturday", (function() {
            return Oy
        })), n.d(e, "timeSaturdays", (function() {
            return zy
        })), n.d(e, "timeMonth", (function() {
            return Ey
        })), n.d(e, "timeMonths", (function() {
            return Ay
        })), n.d(e, "timeYear", (function() {
            return wy
        })), n.d(e, "timeYears", (function() {
            return xy
        })), n.d(e, "utcMinute", (function() {
            return fm
        })), n.d(e, "utcMinutes", (function() {
            return lm
        })), n.d(e, "utcHour", (function() {
            return sm
        })), n.d(e, "utcHours", (function() {
            return um
        })), n.d(e, "utcDay", (function() {
            return _b
        })), n.d(e, "utcDays", (function() {
            return wb
        })), n.d(e, "utcWeek", (function() {
            return ab
        })), n.d(e, "utcWeeks", (function() {
            return hb
        })), n.d(e, "utcSunday", (function() {
            return ab
        })), n.d(e, "utcSundays", (function() {
            return hb
        })), n.d(e, "utcMonday", (function() {
            return ob
        })), n.d(e, "utcMondays", (function() {
            return db
        })), n.d(e, "utcTuesday", (function() {
            return sb
        })), n.d(e, "utcTuesdays", (function() {
            return pb
        })), n.d(e, "utcWednesday", (function() {
            return ub
        })), n.d(e, "utcWednesdays", (function() {
            return gb
        })), n.d(e, "utcThursday", (function() {
            return cb
        })), n.d(e, "utcThursdays", (function() {
            return yb
        })), n.d(e, "utcFriday", (function() {
            return fb
        })), n.d(e, "utcFridays", (function() {
            return bb
        })), n.d(e, "utcSaturday", (function() {
            return lb
        })), n.d(e, "utcSaturdays", (function() {
            return vb
        })), n.d(e, "utcMonth", (function() {
            return im
        })), n.d(e, "utcMonths", (function() {
            return am
        })), n.d(e, "utcYear", (function() {
            return kb
        })), n.d(e, "utcYears", (function() {
            return Eb
        })), n.d(e, "timeFormatDefaultLocale", (function() {
            return Hv
        })), n.d(e, "timeFormat", (function() {
            return Cb
        })), n.d(e, "timeParse", (function() {
            return Nb
        })), n.d(e, "utcFormat", (function() {
            return Ib
        })), n.d(e, "utcParse", (function() {
            return Lb
        })), n.d(e, "timeFormatLocale", (function() {
            return Tb
        })), n.d(e, "isoFormat", (function() {
            return _k
        })), n.d(e, "isoParse", (function() {
            return wk
        })), n.d(e, "now", (function() {
            return Wn
        })), n.d(e, "timer", (function() {
            return Zn
        })), n.d(e, "timerFlush", (function() {
            return Jn
        })), n.d(e, "timeout", (function() {
            return nr
        })), n.d(e, "interval", (function() {
            return xk
        })), n.d(e, "transition", (function() {
            return Zr
        })), n.d(e, "active", (function() {
            return oi
        })), n.d(e, "interrupt", (function() {
            return _r
        })), n.d(e, "voronoi", (function() {
            return sE
        })), n.d(e, "zoom", (function() {
            return wE
        })), n.d(e, "zoomTransform", (function() {
            return hE
        })), n.d(e, "zoomIdentity", (function() {
            return lE
        }))
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [1, 2],
                    n = [1, 3],
                    r = [1, 4],
                    i = [2, 4],
                    a = [1, 9],
                    o = [1, 11],
                    s = [1, 12],
                    u = [1, 14],
                    c = [1, 15],
                    f = [1, 17],
                    l = [1, 18],
                    h = [1, 19],
                    d = [1, 20],
                    p = [1, 21],
                    g = [1, 22],
                    y = [1, 24],
                    b = [1, 25],
                    v = [1, 4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 24, 26, 28, 29, 30, 41],
                    m = [1, 33],
                    _ = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 24, 26, 30, 41],
                    w = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 24, 26, 29, 30, 41],
                    x = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 24, 26, 28, 30, 41],
                    k = [39, 40, 41],
                    E = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            start: 3,
                            SPACE: 4,
                            NL: 5,
                            SD: 6,
                            document: 7,
                            line: 8,
                            statement: 9,
                            participant: 10,
                            actor: 11,
                            AS: 12,
                            restOfLine: 13,
                            signal: 14,
                            activate: 15,
                            deactivate: 16,
                            note_statement: 17,
                            title: 18,
                            text2: 19,
                            loop: 20,
                            end: 21,
                            rect: 22,
                            opt: 23,
                            alt: 24,
                            else_sections: 25,
                            par: 26,
                            par_sections: 27,
                            and: 28,
                            else: 29,
                            note: 30,
                            placement: 31,
                            over: 32,
                            actor_pair: 33,
                            spaceList: 34,
                            ",": 35,
                            left_of: 36,
                            right_of: 37,
                            signaltype: 38,
                            "+": 39,
                            "-": 40,
                            ACTOR: 41,
                            SOLID_OPEN_ARROW: 42,
                            DOTTED_OPEN_ARROW: 43,
                            SOLID_ARROW: 44,
                            DOTTED_ARROW: 45,
                            SOLID_CROSS: 46,
                            DOTTED_CROSS: 47,
                            TXT: 48,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            4: "SPACE",
                            5: "NL",
                            6: "SD",
                            10: "participant",
                            12: "AS",
                            13: "restOfLine",
                            15: "activate",
                            16: "deactivate",
                            18: "title",
                            20: "loop",
                            21: "end",
                            22: "rect",
                            23: "opt",
                            24: "alt",
                            26: "par",
                            28: "and",
                            29: "else",
                            30: "note",
                            32: "over",
                            35: ",",
                            36: "left_of",
                            37: "right_of",
                            39: "+",
                            40: "-",
                            41: "ACTOR",
                            42: "SOLID_OPEN_ARROW",
                            43: "DOTTED_OPEN_ARROW",
                            44: "SOLID_ARROW",
                            45: "DOTTED_ARROW",
                            46: "SOLID_CROSS",
                            47: "DOTTED_CROSS",
                            48: "TXT"
                        },
                        productions_: [0, [3, 2],
                            [3, 2],
                            [3, 2],
                            [7, 0],
                            [7, 2],
                            [8, 2],
                            [8, 1],
                            [8, 1],
                            [9, 5],
                            [9, 3],
                            [9, 2],
                            [9, 3],
                            [9, 3],
                            [9, 2],
                            [9, 3],
                            [9, 4],
                            [9, 4],
                            [9, 4],
                            [9, 4],
                            [9, 4],
                            [27, 1],
                            [27, 4],
                            [25, 1],
                            [25, 4],
                            [17, 4],
                            [17, 4],
                            [34, 2],
                            [34, 1],
                            [33, 3],
                            [33, 1],
                            [31, 1],
                            [31, 1],
                            [14, 5],
                            [14, 5],
                            [14, 4],
                            [11, 1],
                            [38, 1],
                            [38, 1],
                            [38, 1],
                            [38, 1],
                            [38, 1],
                            [38, 1],
                            [19, 1]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 3:
                                    return r.apply(a[s]), a[s];
                                case 4:
                                    this.$ = [];
                                    break;
                                case 5:
                                    a[s - 1].push(a[s]), this.$ = a[s - 1];
                                    break;
                                case 6:
                                case 7:
                                    this.$ = a[s];
                                    break;
                                case 8:
                                    this.$ = [];
                                    break;
                                case 9:
                                    a[s - 3].description = a[s - 1], this.$ = a[s - 3];
                                    break;
                                case 10:
                                    this.$ = a[s - 1];
                                    break;
                                case 12:
                                    this.$ = {
                                        type: "activeStart",
                                        signalType: r.LINETYPE.ACTIVE_START,
                                        actor: a[s - 1]
                                    };
                                    break;
                                case 13:
                                    this.$ = {
                                        type: "activeEnd",
                                        signalType: r.LINETYPE.ACTIVE_END,
                                        actor: a[s - 1]
                                    };
                                    break;
                                case 15:
                                    this.$ = [{
                                        type: "setTitle",
                                        text: a[s - 1]
                                    }];
                                    break;
                                case 16:
                                    a[s - 1].unshift({
                                        type: "loopStart",
                                        loopText: a[s - 2],
                                        signalType: r.LINETYPE.LOOP_START
                                    }), a[s - 1].push({
                                        type: "loopEnd",
                                        loopText: a[s - 2],
                                        signalType: r.LINETYPE.LOOP_END
                                    }), this.$ = a[s - 1];
                                    break;
                                case 17:
                                    a[s - 1].unshift({
                                        type: "rectStart",
                                        color: a[s - 2],
                                        signalType: r.LINETYPE.RECT_START
                                    }), a[s - 1].push({
                                        type: "rectEnd",
                                        color: a[s - 2],
                                        signalType: r.LINETYPE.RECT_END
                                    }), this.$ = a[s - 1];
                                    break;
                                case 18:
                                    a[s - 1].unshift({
                                        type: "optStart",
                                        optText: a[s - 2],
                                        signalType: r.LINETYPE.OPT_START
                                    }), a[s - 1].push({
                                        type: "optEnd",
                                        optText: a[s - 2],
                                        signalType: r.LINETYPE.OPT_END
                                    }), this.$ = a[s - 1];
                                    break;
                                case 19:
                                    a[s - 1].unshift({
                                        type: "altStart",
                                        altText: a[s - 2],
                                        signalType: r.LINETYPE.ALT_START
                                    }), a[s - 1].push({
                                        type: "altEnd",
                                        signalType: r.LINETYPE.ALT_END
                                    }), this.$ = a[s - 1];
                                    break;
                                case 20:
                                    a[s - 1].unshift({
                                        type: "parStart",
                                        parText: a[s - 2],
                                        signalType: r.LINETYPE.PAR_START
                                    }), a[s - 1].push({
                                        type: "parEnd",
                                        signalType: r.LINETYPE.PAR_END
                                    }), this.$ = a[s - 1];
                                    break;
                                case 22:
                                    this.$ = a[s - 3].concat([{
                                        type: "and",
                                        parText: a[s - 1],
                                        signalType: r.LINETYPE.PAR_AND
                                    }, a[s]]);
                                    break;
                                case 24:
                                    this.$ = a[s - 3].concat([{
                                        type: "else",
                                        altText: a[s - 1],
                                        signalType: r.LINETYPE.ALT_ELSE
                                    }, a[s]]);
                                    break;
                                case 25:
                                    this.$ = [a[s - 1], {
                                        type: "addNote",
                                        placement: a[s - 2],
                                        actor: a[s - 1].actor,
                                        text: a[s]
                                    }];
                                    break;
                                case 26:
                                    a[s - 2] = [].concat(a[s - 1], a[s - 1]).slice(0, 2), a[s - 2][0] = a[s - 2][0].actor, a[s - 2][1] = a[s - 2][1].actor, this.$ = [a[s - 1], {
                                        type: "addNote",
                                        placement: r.PLACEMENT.OVER,
                                        actor: a[s - 2].slice(0, 2),
                                        text: a[s]
                                    }];
                                    break;
                                case 29:
                                    this.$ = [a[s - 2], a[s]];
                                    break;
                                case 30:
                                    this.$ = a[s];
                                    break;
                                case 31:
                                    this.$ = r.PLACEMENT.LEFTOF;
                                    break;
                                case 32:
                                    this.$ = r.PLACEMENT.RIGHTOF;
                                    break;
                                case 33:
                                    this.$ = [a[s - 4], a[s - 1], {
                                        type: "addMessage",
                                        from: a[s - 4].actor,
                                        to: a[s - 1].actor,
                                        signalType: a[s - 3],
                                        msg: a[s]
                                    }, {
                                        type: "activeStart",
                                        signalType: r.LINETYPE.ACTIVE_START,
                                        actor: a[s - 1]
                                    }];
                                    break;
                                case 34:
                                    this.$ = [a[s - 4], a[s - 1], {
                                        type: "addMessage",
                                        from: a[s - 4].actor,
                                        to: a[s - 1].actor,
                                        signalType: a[s - 3],
                                        msg: a[s]
                                    }, {
                                        type: "activeEnd",
                                        signalType: r.LINETYPE.ACTIVE_END,
                                        actor: a[s - 4]
                                    }];
                                    break;
                                case 35:
                                    this.$ = [a[s - 3], a[s - 1], {
                                        type: "addMessage",
                                        from: a[s - 3].actor,
                                        to: a[s - 1].actor,
                                        signalType: a[s - 2],
                                        msg: a[s]
                                    }];
                                    break;
                                case 36:
                                    this.$ = {
                                        type: "addActor",
                                        actor: a[s]
                                    };
                                    break;
                                case 37:
                                    this.$ = r.LINETYPE.SOLID_OPEN;
                                    break;
                                case 38:
                                    this.$ = r.LINETYPE.DOTTED_OPEN;
                                    break;
                                case 39:
                                    this.$ = r.LINETYPE.SOLID;
                                    break;
                                case 40:
                                    this.$ = r.LINETYPE.DOTTED;
                                    break;
                                case 41:
                                    this.$ = r.LINETYPE.SOLID_CROSS;
                                    break;
                                case 42:
                                    this.$ = r.LINETYPE.DOTTED_CROSS;
                                    break;
                                case 43:
                                    this.$ = a[s].substring(1).trim().replace(/\\n/gm, "\n")
                            }
                        },
                        table: [{
                            3: 1,
                            4: e,
                            5: n,
                            6: r
                        }, {
                            1: [3]
                        }, {
                            3: 5,
                            4: e,
                            5: n,
                            6: r
                        }, {
                            3: 6,
                            4: e,
                            5: n,
                            6: r
                        }, t([1, 4, 5, 10, 15, 16, 18, 20, 22, 23, 24, 26, 30, 41], i, {
                            7: 7
                        }), {
                            1: [2, 1]
                        }, {
                            1: [2, 2]
                        }, {
                            1: [2, 3],
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            30: y,
                            41: b
                        }, t(v, [2, 5]), {
                            9: 26,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            30: y,
                            41: b
                        }, t(v, [2, 7]), t(v, [2, 8]), {
                            11: 27,
                            41: b
                        }, {
                            5: [1, 28]
                        }, {
                            11: 29,
                            41: b
                        }, {
                            11: 30,
                            41: b
                        }, {
                            5: [1, 31]
                        }, {
                            19: 32,
                            48: m
                        }, {
                            13: [1, 34]
                        }, {
                            13: [1, 35]
                        }, {
                            13: [1, 36]
                        }, {
                            13: [1, 37]
                        }, {
                            13: [1, 38]
                        }, {
                            38: 39,
                            42: [1, 40],
                            43: [1, 41],
                            44: [1, 42],
                            45: [1, 43],
                            46: [1, 44],
                            47: [1, 45]
                        }, {
                            31: 46,
                            32: [1, 47],
                            36: [1, 48],
                            37: [1, 49]
                        }, t([5, 12, 35, 42, 43, 44, 45, 46, 47, 48], [2, 36]), t(v, [2, 6]), {
                            5: [1, 51],
                            12: [1, 50]
                        }, t(v, [2, 11]), {
                            5: [1, 52]
                        }, {
                            5: [1, 53]
                        }, t(v, [2, 14]), {
                            5: [1, 54]
                        }, {
                            5: [2, 43]
                        }, t(_, i, {
                            7: 55
                        }), t(_, i, {
                            7: 56
                        }), t(_, i, {
                            7: 57
                        }), t(w, i, {
                            25: 58,
                            7: 59
                        }), t(x, i, {
                            27: 60,
                            7: 61
                        }), {
                            11: 64,
                            39: [1, 62],
                            40: [1, 63],
                            41: b
                        }, t(k, [2, 37]), t(k, [2, 38]), t(k, [2, 39]), t(k, [2, 40]), t(k, [2, 41]), t(k, [2, 42]), {
                            11: 65,
                            41: b
                        }, {
                            11: 67,
                            33: 66,
                            41: b
                        }, {
                            41: [2, 31]
                        }, {
                            41: [2, 32]
                        }, {
                            13: [1, 68]
                        }, t(v, [2, 10]), t(v, [2, 12]), t(v, [2, 13]), t(v, [2, 15]), {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            21: [1, 69],
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            30: y,
                            41: b
                        }, {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            21: [1, 70],
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            30: y,
                            41: b
                        }, {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            21: [1, 71],
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            30: y,
                            41: b
                        }, {
                            21: [1, 72]
                        }, {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            21: [2, 23],
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            29: [1, 73],
                            30: y,
                            41: b
                        }, {
                            21: [1, 74]
                        }, {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: s,
                            11: 23,
                            14: 13,
                            15: u,
                            16: c,
                            17: 16,
                            18: f,
                            20: l,
                            21: [2, 21],
                            22: h,
                            23: d,
                            24: p,
                            26: g,
                            28: [1, 75],
                            30: y,
                            41: b
                        }, {
                            11: 76,
                            41: b
                        }, {
                            11: 77,
                            41: b
                        }, {
                            19: 78,
                            48: m
                        }, {
                            19: 79,
                            48: m
                        }, {
                            19: 80,
                            48: m
                        }, {
                            35: [1, 81],
                            48: [2, 30]
                        }, {
                            5: [1, 82]
                        }, t(v, [2, 16]), t(v, [2, 17]), t(v, [2, 18]), t(v, [2, 19]), {
                            13: [1, 83]
                        }, t(v, [2, 20]), {
                            13: [1, 84]
                        }, {
                            19: 85,
                            48: m
                        }, {
                            19: 86,
                            48: m
                        }, {
                            5: [2, 35]
                        }, {
                            5: [2, 25]
                        }, {
                            5: [2, 26]
                        }, {
                            11: 87,
                            41: b
                        }, t(v, [2, 9]), t(w, i, {
                            7: 59,
                            25: 88
                        }), t(x, i, {
                            7: 61,
                            27: 89
                        }), {
                            5: [2, 33]
                        }, {
                            5: [2, 34]
                        }, {
                            48: [2, 29]
                        }, {
                            21: [2, 24]
                        }, {
                            21: [2, 22]
                        }],
                        defaultActions: {
                            5: [2, 1],
                            6: [2, 2],
                            33: [2, 43],
                            48: [2, 31],
                            49: [2, 32],
                            78: [2, 35],
                            79: [2, 25],
                            80: [2, 26],
                            85: [2, 33],
                            86: [2, 34],
                            87: [2, 29],
                            88: [2, 24],
                            89: [2, 22]
                        },
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    A = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {
                            "case-insensitive": !0
                        },
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    return 5;
                                case 1:
                                case 2:
                                case 3:
                                case 4:
                                    break;
                                case 5:
                                    return this.begin("ID"), 10;
                                case 6:
                                    return e.yytext = e.yytext.trim(), this.begin("ALIAS"), 41;
                                case 7:
                                    return this.popState(), this.popState(), this.begin("LINE"), 12;
                                case 8:
                                    return this.popState(), this.popState(), 5;
                                case 9:
                                    return this.begin("LINE"), 20;
                                case 10:
                                    return this.begin("LINE"), 22;
                                case 11:
                                    return this.begin("LINE"), 23;
                                case 12:
                                    return this.begin("LINE"), 24;
                                case 13:
                                    return this.begin("LINE"), 29;
                                case 14:
                                    return this.begin("LINE"), 26;
                                case 15:
                                    return this.begin("LINE"), 28;
                                case 16:
                                    return this.popState(), 13;
                                case 17:
                                    return 21;
                                case 18:
                                    return 36;
                                case 19:
                                    return 37;
                                case 20:
                                    return 32;
                                case 21:
                                    return 30;
                                case 22:
                                    return this.begin("ID"), 15;
                                case 23:
                                    return this.begin("ID"), 16;
                                case 24:
                                    return 18;
                                case 25:
                                    return 6;
                                case 26:
                                    return 35;
                                case 27:
                                    return 5;
                                case 28:
                                    return e.yytext = e.yytext.trim(), 41;
                                case 29:
                                    return 44;
                                case 30:
                                    return 45;
                                case 31:
                                    return 42;
                                case 32:
                                    return 43;
                                case 33:
                                    return 46;
                                case 34:
                                    return 47;
                                case 35:
                                    return 48;
                                case 36:
                                    return 39;
                                case 37:
                                    return 40;
                                case 38:
                                    return 5;
                                case 39:
                                    return "INVALID"
                            }
                        },
                        rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:participant\b)/i, /^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i, /^(?:as\b)/i, /^(?:(?:))/i, /^(?:loop\b)/i, /^(?:rect\b)/i, /^(?:opt\b)/i, /^(?:alt\b)/i, /^(?:else\b)/i, /^(?:par\b)/i, /^(?:and\b)/i, /^(?:[^#\n;]*)/i, /^(?:end\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:activate\b)/i, /^(?:deactivate\b)/i, /^(?:title\b)/i, /^(?:sequenceDiagram\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\+\->:\n,;]+)/i, /^(?:->>)/i, /^(?:-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?::[^#\n;]+)/i, /^(?:\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i],
                        conditions: {
                            LINE: {
                                rules: [2, 3, 16],
                                inclusive: !1
                            },
                            ALIAS: {
                                rules: [2, 3, 7, 8],
                                inclusive: !1
                            },
                            ID: {
                                rules: [2, 3, 6],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
                                inclusive: !0
                            }
                        }
                    };

                function S() {
                    this.yy = {}
                }
                return E.lexer = A, S.prototype = E, E.Parser = S, new S
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e) {
        "function" == typeof Object.create ? t.exports = function(t, e) {
            e && (t.super_ = e, t.prototype = Object.create(e.prototype, {
                constructor: {
                    value: t,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }))
        } : t.exports = function(t, e) {
            if (e) {
                t.super_ = e;
                var n = function() {};
                n.prototype = e.prototype, t.prototype = new n, t.prototype.constructor = t
            }
        }
    }, function(t, e, n) {
        var r = n(8),
            i = r.Buffer;

        function a(t, e) {
            for (var n in t) e[n] = t[n]
        }

        function o(t, e, n) {
            return i(t, e, n)
        }
        i.from && i.alloc && i.allocUnsafe && i.allocUnsafeSlow ? t.exports = r : (a(r, e), e.Buffer = o), o.prototype = Object.create(i.prototype), a(i, o), o.from = function(t, e, n) {
            if ("number" == typeof t) throw new TypeError("Argument must not be a number");
            return i(t, e, n)
        }, o.alloc = function(t, e, n) {
            if ("number" != typeof t) throw new TypeError("Argument must be a number");
            var r = i(t);
            return void 0 !== e ? "string" == typeof n ? r.fill(e, n) : r.fill(e) : r.fill(0), r
        }, o.allocUnsafe = function(t) {
            if ("number" != typeof t) throw new TypeError("Argument must be a number");
            return i(t)
        }, o.allocUnsafeSlow = function(t) {
            if ("number" != typeof t) throw new TypeError("Argument must be a number");
            return r.SlowBuffer(t)
        }
    }, function(t, e, n) {
        var r;
        try {
            r = {
                cloneDeep: n(350),
                constant: n(99),
                defaults: n(176),
                each: n(100),
                filter: n(150),
                find: n(351),
                flatten: n(178),
                forEach: n(148),
                forIn: n(356),
                has: n(106),
                isUndefined: n(161),
                last: n(357),
                map: n(162),
                mapValues: n(358),
                max: n(359),
                merge: n(361),
                min: n(366),
                minBy: n(367),
                now: n(368),
                pick: n(183),
                range: n(184),
                reduce: n(164),
                sortBy: n(375),
                uniqueId: n(185),
                values: n(169),
                zipObject: n(380)
            }
        } catch (t) {}
        r || (r = window._), t.exports = r
    }, function(t, e, n) {
        (function(t) {
            ! function(t, e) {
                "use strict";

                function r(t, e) {
                    if (!t) throw new Error(e || "Assertion failed")
                }

                function i(t, e) {
                    t.super_ = e;
                    var n = function() {};
                    n.prototype = e.prototype, t.prototype = new n, t.prototype.constructor = t
                }

                function a(t, e, n) {
                    if (a.isBN(t)) return t;
                    this.negative = 0, this.words = null, this.length = 0, this.red = null, null !== t && ("le" !== e && "be" !== e || (n = e, e = 10), this._init(t || 0, e || 10, n || "be"))
                }
                var o;
                "object" == typeof t ? t.exports = a : e.BN = a, a.BN = a, a.wordSize = 26;
                try {
                    o = n(457).Buffer
                } catch (t) {}

                function s(t, e, n) {
                    for (var r = 0, i = Math.min(t.length, n), a = e; a < i; a++) {
                        var o = t.charCodeAt(a) - 48;
                        r <<= 4, r |= o >= 49 && o <= 54 ? o - 49 + 10 : o >= 17 && o <= 22 ? o - 17 + 10 : 15 & o
                    }
                    return r
                }

                function u(t, e, n, r) {
                    for (var i = 0, a = Math.min(t.length, n), o = e; o < a; o++) {
                        var s = t.charCodeAt(o) - 48;
                        i *= r, i += s >= 49 ? s - 49 + 10 : s >= 17 ? s - 17 + 10 : s
                    }
                    return i
                }
                a.isBN = function(t) {
                    return t instanceof a || null !== t && "object" == typeof t && t.constructor.wordSize === a.wordSize && Array.isArray(t.words)
                }, a.max = function(t, e) {
                    return t.cmp(e) > 0 ? t : e
                }, a.min = function(t, e) {
                    return t.cmp(e) < 0 ? t : e
                }, a.prototype._init = function(t, e, n) {
                    if ("number" == typeof t) return this._initNumber(t, e, n);
                    if ("object" == typeof t) return this._initArray(t, e, n);
                    "hex" === e && (e = 16), r(e === (0 | e) && e >= 2 && e <= 36);
                    var i = 0;
                    "-" === (t = t.toString().replace(/\s+/g, ""))[0] && i++, 16 === e ? this._parseHex(t, i) : this._parseBase(t, e, i), "-" === t[0] && (this.negative = 1), this.strip(), "le" === n && this._initArray(this.toArray(), e, n)
                }, a.prototype._initNumber = function(t, e, n) {
                    t < 0 && (this.negative = 1, t = -t), t < 67108864 ? (this.words = [67108863 & t], this.length = 1) : t < 4503599627370496 ? (this.words = [67108863 & t, t / 67108864 & 67108863], this.length = 2) : (r(t < 9007199254740992), this.words = [67108863 & t, t / 67108864 & 67108863, 1], this.length = 3), "le" === n && this._initArray(this.toArray(), e, n)
                }, a.prototype._initArray = function(t, e, n) {
                    if (r("number" == typeof t.length), t.length <= 0) return this.words = [0], this.length = 1, this;
                    this.length = Math.ceil(t.length / 3), this.words = new Array(this.length);
                    for (var i = 0; i < this.length; i++) this.words[i] = 0;
                    var a, o, s = 0;
                    if ("be" === n)
                        for (i = t.length - 1, a = 0; i >= 0; i -= 3) o = t[i] | t[i - 1] << 8 | t[i - 2] << 16, this.words[a] |= o << s & 67108863, this.words[a + 1] = o >>> 26 - s & 67108863, (s += 24) >= 26 && (s -= 26, a++);
                    else if ("le" === n)
                        for (i = 0, a = 0; i < t.length; i += 3) o = t[i] | t[i + 1] << 8 | t[i + 2] << 16, this.words[a] |= o << s & 67108863, this.words[a + 1] = o >>> 26 - s & 67108863, (s += 24) >= 26 && (s -= 26, a++);
                    return this.strip()
                }, a.prototype._parseHex = function(t, e) {
                    this.length = Math.ceil((t.length - e) / 6), this.words = new Array(this.length);
                    for (var n = 0; n < this.length; n++) this.words[n] = 0;
                    var r, i, a = 0;
                    for (n = t.length - 6, r = 0; n >= e; n -= 6) i = s(t, n, n + 6), this.words[r] |= i << a & 67108863, this.words[r + 1] |= i >>> 26 - a & 4194303, (a += 24) >= 26 && (a -= 26, r++);
                    n + 6 !== e && (i = s(t, e, n + 6), this.words[r] |= i << a & 67108863, this.words[r + 1] |= i >>> 26 - a & 4194303), this.strip()
                }, a.prototype._parseBase = function(t, e, n) {
                    this.words = [0], this.length = 1;
                    for (var r = 0, i = 1; i <= 67108863; i *= e) r++;
                    r--, i = i / e | 0;
                    for (var a = t.length - n, o = a % r, s = Math.min(a, a - o) + n, c = 0, f = n; f < s; f += r) c = u(t, f, f + r, e), this.imuln(i), this.words[0] + c < 67108864 ? this.words[0] += c : this._iaddn(c);
                    if (0 !== o) {
                        var l = 1;
                        for (c = u(t, f, t.length, e), f = 0; f < o; f++) l *= e;
                        this.imuln(l), this.words[0] + c < 67108864 ? this.words[0] += c : this._iaddn(c)
                    }
                }, a.prototype.copy = function(t) {
                    t.words = new Array(this.length);
                    for (var e = 0; e < this.length; e++) t.words[e] = this.words[e];
                    t.length = this.length, t.negative = this.negative, t.red = this.red
                }, a.prototype.clone = function() {
                    var t = new a(null);
                    return this.copy(t), t
                }, a.prototype._expand = function(t) {
                    for (; this.length < t;) this.words[this.length++] = 0;
                    return this
                }, a.prototype.strip = function() {
                    for (; this.length > 1 && 0 === this.words[this.length - 1];) this.length--;
                    return this._normSign()
                }, a.prototype._normSign = function() {
                    return 1 === this.length && 0 === this.words[0] && (this.negative = 0), this
                }, a.prototype.inspect = function() {
                    return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"
                };
                var c = ["", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000"],
                    f = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
                    l = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];

                function h(t, e, n) {
                    n.negative = e.negative ^ t.negative;
                    var r = t.length + e.length | 0;
                    n.length = r, r = r - 1 | 0;
                    var i = 0 | t.words[0],
                        a = 0 | e.words[0],
                        o = i * a,
                        s = 67108863 & o,
                        u = o / 67108864 | 0;
                    n.words[0] = s;
                    for (var c = 1; c < r; c++) {
                        for (var f = u >>> 26, l = 67108863 & u, h = Math.min(c, e.length - 1), d = Math.max(0, c - t.length + 1); d <= h; d++) {
                            var p = c - d | 0;
                            f += (o = (i = 0 | t.words[p]) * (a = 0 | e.words[d]) + l) / 67108864 | 0, l = 67108863 & o
                        }
                        n.words[c] = 0 | l, u = 0 | f
                    }
                    return 0 !== u ? n.words[c] = 0 | u : n.length--, n.strip()
                }
                a.prototype.toString = function(t, e) {
                    var n;
                    if (e = 0 | e || 1, 16 === (t = t || 10) || "hex" === t) {
                        n = "";
                        for (var i = 0, a = 0, o = 0; o < this.length; o++) {
                            var s = this.words[o],
                                u = (16777215 & (s << i | a)).toString(16);
                            n = 0 !== (a = s >>> 24 - i & 16777215) || o !== this.length - 1 ? c[6 - u.length] + u + n : u + n, (i += 2) >= 26 && (i -= 26, o--)
                        }
                        for (0 !== a && (n = a.toString(16) + n); n.length % e != 0;) n = "0" + n;
                        return 0 !== this.negative && (n = "-" + n), n
                    }
                    if (t === (0 | t) && t >= 2 && t <= 36) {
                        var h = f[t],
                            d = l[t];
                        n = "";
                        var p = this.clone();
                        for (p.negative = 0; !p.isZero();) {
                            var g = p.modn(d).toString(t);
                            n = (p = p.idivn(d)).isZero() ? g + n : c[h - g.length] + g + n
                        }
                        for (this.isZero() && (n = "0" + n); n.length % e != 0;) n = "0" + n;
                        return 0 !== this.negative && (n = "-" + n), n
                    }
                    r(!1, "Base should be between 2 and 36")
                }, a.prototype.toNumber = function() {
                    var t = this.words[0];
                    return 2 === this.length ? t += 67108864 * this.words[1] : 3 === this.length && 1 === this.words[2] ? t += 4503599627370496 + 67108864 * this.words[1] : this.length > 2 && r(!1, "Number can only safely store up to 53 bits"), 0 !== this.negative ? -t : t
                }, a.prototype.toJSON = function() {
                    return this.toString(16)
                }, a.prototype.toBuffer = function(t, e) {
                    return r(void 0 !== o), this.toArrayLike(o, t, e)
                }, a.prototype.toArray = function(t, e) {
                    return this.toArrayLike(Array, t, e)
                }, a.prototype.toArrayLike = function(t, e, n) {
                    var i = this.byteLength(),
                        a = n || Math.max(1, i);
                    r(i <= a, "byte array longer than desired length"), r(a > 0, "Requested array length <= 0"), this.strip();
                    var o, s, u = "le" === e,
                        c = new t(a),
                        f = this.clone();
                    if (u) {
                        for (s = 0; !f.isZero(); s++) o = f.andln(255), f.iushrn(8), c[s] = o;
                        for (; s < a; s++) c[s] = 0
                    } else {
                        for (s = 0; s < a - i; s++) c[s] = 0;
                        for (s = 0; !f.isZero(); s++) o = f.andln(255), f.iushrn(8), c[a - s - 1] = o
                    }
                    return c
                }, Math.clz32 ? a.prototype._countBits = function(t) {
                    return 32 - Math.clz32(t)
                } : a.prototype._countBits = function(t) {
                    var e = t,
                        n = 0;
                    return e >= 4096 && (n += 13, e >>>= 13), e >= 64 && (n += 7, e >>>= 7), e >= 8 && (n += 4, e >>>= 4), e >= 2 && (n += 2, e >>>= 2), n + e
                }, a.prototype._zeroBits = function(t) {
                    if (0 === t) return 26;
                    var e = t,
                        n = 0;
                    return 0 == (8191 & e) && (n += 13, e >>>= 13), 0 == (127 & e) && (n += 7, e >>>= 7), 0 == (15 & e) && (n += 4, e >>>= 4), 0 == (3 & e) && (n += 2, e >>>= 2), 0 == (1 & e) && n++, n
                }, a.prototype.bitLength = function() {
                    var t = this.words[this.length - 1],
                        e = this._countBits(t);
                    return 26 * (this.length - 1) + e
                }, a.prototype.zeroBits = function() {
                    if (this.isZero()) return 0;
                    for (var t = 0, e = 0; e < this.length; e++) {
                        var n = this._zeroBits(this.words[e]);
                        if (t += n, 26 !== n) break
                    }
                    return t
                }, a.prototype.byteLength = function() {
                    return Math.ceil(this.bitLength() / 8)
                }, a.prototype.toTwos = function(t) {
                    return 0 !== this.negative ? this.abs().inotn(t).iaddn(1) : this.clone()
                }, a.prototype.fromTwos = function(t) {
                    return this.testn(t - 1) ? this.notn(t).iaddn(1).ineg() : this.clone()
                }, a.prototype.isNeg = function() {
                    return 0 !== this.negative
                }, a.prototype.neg = function() {
                    return this.clone().ineg()
                }, a.prototype.ineg = function() {
                    return this.isZero() || (this.negative ^= 1), this
                }, a.prototype.iuor = function(t) {
                    for (; this.length < t.length;) this.words[this.length++] = 0;
                    for (var e = 0; e < t.length; e++) this.words[e] = this.words[e] | t.words[e];
                    return this.strip()
                }, a.prototype.ior = function(t) {
                    return r(0 == (this.negative | t.negative)), this.iuor(t)
                }, a.prototype.or = function(t) {
                    return this.length > t.length ? this.clone().ior(t) : t.clone().ior(this)
                }, a.prototype.uor = function(t) {
                    return this.length > t.length ? this.clone().iuor(t) : t.clone().iuor(this)
                }, a.prototype.iuand = function(t) {
                    var e;
                    e = this.length > t.length ? t : this;
                    for (var n = 0; n < e.length; n++) this.words[n] = this.words[n] & t.words[n];
                    return this.length = e.length, this.strip()
                }, a.prototype.iand = function(t) {
                    return r(0 == (this.negative | t.negative)), this.iuand(t)
                }, a.prototype.and = function(t) {
                    return this.length > t.length ? this.clone().iand(t) : t.clone().iand(this)
                }, a.prototype.uand = function(t) {
                    return this.length > t.length ? this.clone().iuand(t) : t.clone().iuand(this)
                }, a.prototype.iuxor = function(t) {
                    var e, n;
                    this.length > t.length ? (e = this, n = t) : (e = t, n = this);
                    for (var r = 0; r < n.length; r++) this.words[r] = e.words[r] ^ n.words[r];
                    if (this !== e)
                        for (; r < e.length; r++) this.words[r] = e.words[r];
                    return this.length = e.length, this.strip()
                }, a.prototype.ixor = function(t) {
                    return r(0 == (this.negative | t.negative)), this.iuxor(t)
                }, a.prototype.xor = function(t) {
                    return this.length > t.length ? this.clone().ixor(t) : t.clone().ixor(this)
                }, a.prototype.uxor = function(t) {
                    return this.length > t.length ? this.clone().iuxor(t) : t.clone().iuxor(this)
                }, a.prototype.inotn = function(t) {
                    r("number" == typeof t && t >= 0);
                    var e = 0 | Math.ceil(t / 26),
                        n = t % 26;
                    this._expand(e), n > 0 && e--;
                    for (var i = 0; i < e; i++) this.words[i] = 67108863 & ~this.words[i];
                    return n > 0 && (this.words[i] = ~this.words[i] & 67108863 >> 26 - n), this.strip()
                }, a.prototype.notn = function(t) {
                    return this.clone().inotn(t)
                }, a.prototype.setn = function(t, e) {
                    r("number" == typeof t && t >= 0);
                    var n = t / 26 | 0,
                        i = t % 26;
                    return this._expand(n + 1), this.words[n] = e ? this.words[n] | 1 << i : this.words[n] & ~(1 << i), this.strip()
                }, a.prototype.iadd = function(t) {
                    var e, n, r;
                    if (0 !== this.negative && 0 === t.negative) return this.negative = 0, e = this.isub(t), this.negative ^= 1, this._normSign();
                    if (0 === this.negative && 0 !== t.negative) return t.negative = 0, e = this.isub(t), t.negative = 1, e._normSign();
                    this.length > t.length ? (n = this, r = t) : (n = t, r = this);
                    for (var i = 0, a = 0; a < r.length; a++) e = (0 | n.words[a]) + (0 | r.words[a]) + i, this.words[a] = 67108863 & e, i = e >>> 26;
                    for (; 0 !== i && a < n.length; a++) e = (0 | n.words[a]) + i, this.words[a] = 67108863 & e, i = e >>> 26;
                    if (this.length = n.length, 0 !== i) this.words[this.length] = i, this.length++;
                    else if (n !== this)
                        for (; a < n.length; a++) this.words[a] = n.words[a];
                    return this
                }, a.prototype.add = function(t) {
                    var e;
                    return 0 !== t.negative && 0 === this.negative ? (t.negative = 0, e = this.sub(t), t.negative ^= 1, e) : 0 === t.negative && 0 !== this.negative ? (this.negative = 0, e = t.sub(this), this.negative = 1, e) : this.length > t.length ? this.clone().iadd(t) : t.clone().iadd(this)
                }, a.prototype.isub = function(t) {
                    if (0 !== t.negative) {
                        t.negative = 0;
                        var e = this.iadd(t);
                        return t.negative = 1, e._normSign()
                    }
                    if (0 !== this.negative) return this.negative = 0, this.iadd(t), this.negative = 1, this._normSign();
                    var n, r, i = this.cmp(t);
                    if (0 === i) return this.negative = 0, this.length = 1, this.words[0] = 0, this;
                    i > 0 ? (n = this, r = t) : (n = t, r = this);
                    for (var a = 0, o = 0; o < r.length; o++) a = (e = (0 | n.words[o]) - (0 | r.words[o]) + a) >> 26, this.words[o] = 67108863 & e;
                    for (; 0 !== a && o < n.length; o++) a = (e = (0 | n.words[o]) + a) >> 26, this.words[o] = 67108863 & e;
                    if (0 === a && o < n.length && n !== this)
                        for (; o < n.length; o++) this.words[o] = n.words[o];
                    return this.length = Math.max(this.length, o), n !== this && (this.negative = 1), this.strip()
                }, a.prototype.sub = function(t) {
                    return this.clone().isub(t)
                };
                var d = function(t, e, n) {
                    var r, i, a, o = t.words,
                        s = e.words,
                        u = n.words,
                        c = 0,
                        f = 0 | o[0],
                        l = 8191 & f,
                        h = f >>> 13,
                        d = 0 | o[1],
                        p = 8191 & d,
                        g = d >>> 13,
                        y = 0 | o[2],
                        b = 8191 & y,
                        v = y >>> 13,
                        m = 0 | o[3],
                        _ = 8191 & m,
                        w = m >>> 13,
                        x = 0 | o[4],
                        k = 8191 & x,
                        E = x >>> 13,
                        A = 0 | o[5],
                        S = 8191 & A,
                        M = A >>> 13,
                        T = 0 | o[6],
                        D = 8191 & T,
                        C = T >>> 13,
                        N = 0 | o[7],
                        I = 8191 & N,
                        L = N >>> 13,
                        B = 0 | o[8],
                        O = 8191 & B,
                        R = B >>> 13,
                        P = 0 | o[9],
                        F = 8191 & P,
                        q = P >>> 13,
                        j = 0 | s[0],
                        U = 8191 & j,
                        z = j >>> 13,
                        Y = 0 | s[1],
                        V = 8191 & Y,
                        H = Y >>> 13,
                        G = 0 | s[2],
                        $ = 8191 & G,
                        W = G >>> 13,
                        K = 0 | s[3],
                        X = 8191 & K,
                        Z = K >>> 13,
                        J = 0 | s[4],
                        Q = 8191 & J,
                        tt = J >>> 13,
                        et = 0 | s[5],
                        nt = 8191 & et,
                        rt = et >>> 13,
                        it = 0 | s[6],
                        at = 8191 & it,
                        ot = it >>> 13,
                        st = 0 | s[7],
                        ut = 8191 & st,
                        ct = st >>> 13,
                        ft = 0 | s[8],
                        lt = 8191 & ft,
                        ht = ft >>> 13,
                        dt = 0 | s[9],
                        pt = 8191 & dt,
                        gt = dt >>> 13;
                    n.negative = t.negative ^ e.negative, n.length = 19;
                    var yt = (c + (r = Math.imul(l, U)) | 0) + ((8191 & (i = (i = Math.imul(l, z)) + Math.imul(h, U) | 0)) << 13) | 0;
                    c = ((a = Math.imul(h, z)) + (i >>> 13) | 0) + (yt >>> 26) | 0, yt &= 67108863, r = Math.imul(p, U), i = (i = Math.imul(p, z)) + Math.imul(g, U) | 0, a = Math.imul(g, z);
                    var bt = (c + (r = r + Math.imul(l, V) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, H) | 0) + Math.imul(h, V) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, H) | 0) + (i >>> 13) | 0) + (bt >>> 26) | 0, bt &= 67108863, r = Math.imul(b, U), i = (i = Math.imul(b, z)) + Math.imul(v, U) | 0, a = Math.imul(v, z), r = r + Math.imul(p, V) | 0, i = (i = i + Math.imul(p, H) | 0) + Math.imul(g, V) | 0, a = a + Math.imul(g, H) | 0;
                    var vt = (c + (r = r + Math.imul(l, $) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, W) | 0) + Math.imul(h, $) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, W) | 0) + (i >>> 13) | 0) + (vt >>> 26) | 0, vt &= 67108863, r = Math.imul(_, U), i = (i = Math.imul(_, z)) + Math.imul(w, U) | 0, a = Math.imul(w, z), r = r + Math.imul(b, V) | 0, i = (i = i + Math.imul(b, H) | 0) + Math.imul(v, V) | 0, a = a + Math.imul(v, H) | 0, r = r + Math.imul(p, $) | 0, i = (i = i + Math.imul(p, W) | 0) + Math.imul(g, $) | 0, a = a + Math.imul(g, W) | 0;
                    var mt = (c + (r = r + Math.imul(l, X) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, Z) | 0) + Math.imul(h, X) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, Z) | 0) + (i >>> 13) | 0) + (mt >>> 26) | 0, mt &= 67108863, r = Math.imul(k, U), i = (i = Math.imul(k, z)) + Math.imul(E, U) | 0, a = Math.imul(E, z), r = r + Math.imul(_, V) | 0, i = (i = i + Math.imul(_, H) | 0) + Math.imul(w, V) | 0, a = a + Math.imul(w, H) | 0, r = r + Math.imul(b, $) | 0, i = (i = i + Math.imul(b, W) | 0) + Math.imul(v, $) | 0, a = a + Math.imul(v, W) | 0, r = r + Math.imul(p, X) | 0, i = (i = i + Math.imul(p, Z) | 0) + Math.imul(g, X) | 0, a = a + Math.imul(g, Z) | 0;
                    var _t = (c + (r = r + Math.imul(l, Q) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, tt) | 0) + Math.imul(h, Q) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, tt) | 0) + (i >>> 13) | 0) + (_t >>> 26) | 0, _t &= 67108863, r = Math.imul(S, U), i = (i = Math.imul(S, z)) + Math.imul(M, U) | 0, a = Math.imul(M, z), r = r + Math.imul(k, V) | 0, i = (i = i + Math.imul(k, H) | 0) + Math.imul(E, V) | 0, a = a + Math.imul(E, H) | 0, r = r + Math.imul(_, $) | 0, i = (i = i + Math.imul(_, W) | 0) + Math.imul(w, $) | 0, a = a + Math.imul(w, W) | 0, r = r + Math.imul(b, X) | 0, i = (i = i + Math.imul(b, Z) | 0) + Math.imul(v, X) | 0, a = a + Math.imul(v, Z) | 0, r = r + Math.imul(p, Q) | 0, i = (i = i + Math.imul(p, tt) | 0) + Math.imul(g, Q) | 0, a = a + Math.imul(g, tt) | 0;
                    var wt = (c + (r = r + Math.imul(l, nt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, rt) | 0) + Math.imul(h, nt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, rt) | 0) + (i >>> 13) | 0) + (wt >>> 26) | 0, wt &= 67108863, r = Math.imul(D, U), i = (i = Math.imul(D, z)) + Math.imul(C, U) | 0, a = Math.imul(C, z), r = r + Math.imul(S, V) | 0, i = (i = i + Math.imul(S, H) | 0) + Math.imul(M, V) | 0, a = a + Math.imul(M, H) | 0, r = r + Math.imul(k, $) | 0, i = (i = i + Math.imul(k, W) | 0) + Math.imul(E, $) | 0, a = a + Math.imul(E, W) | 0, r = r + Math.imul(_, X) | 0, i = (i = i + Math.imul(_, Z) | 0) + Math.imul(w, X) | 0, a = a + Math.imul(w, Z) | 0, r = r + Math.imul(b, Q) | 0, i = (i = i + Math.imul(b, tt) | 0) + Math.imul(v, Q) | 0, a = a + Math.imul(v, tt) | 0, r = r + Math.imul(p, nt) | 0, i = (i = i + Math.imul(p, rt) | 0) + Math.imul(g, nt) | 0, a = a + Math.imul(g, rt) | 0;
                    var xt = (c + (r = r + Math.imul(l, at) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, ot) | 0) + Math.imul(h, at) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, ot) | 0) + (i >>> 13) | 0) + (xt >>> 26) | 0, xt &= 67108863, r = Math.imul(I, U), i = (i = Math.imul(I, z)) + Math.imul(L, U) | 0, a = Math.imul(L, z), r = r + Math.imul(D, V) | 0, i = (i = i + Math.imul(D, H) | 0) + Math.imul(C, V) | 0, a = a + Math.imul(C, H) | 0, r = r + Math.imul(S, $) | 0, i = (i = i + Math.imul(S, W) | 0) + Math.imul(M, $) | 0, a = a + Math.imul(M, W) | 0, r = r + Math.imul(k, X) | 0, i = (i = i + Math.imul(k, Z) | 0) + Math.imul(E, X) | 0, a = a + Math.imul(E, Z) | 0, r = r + Math.imul(_, Q) | 0, i = (i = i + Math.imul(_, tt) | 0) + Math.imul(w, Q) | 0, a = a + Math.imul(w, tt) | 0, r = r + Math.imul(b, nt) | 0, i = (i = i + Math.imul(b, rt) | 0) + Math.imul(v, nt) | 0, a = a + Math.imul(v, rt) | 0, r = r + Math.imul(p, at) | 0, i = (i = i + Math.imul(p, ot) | 0) + Math.imul(g, at) | 0, a = a + Math.imul(g, ot) | 0;
                    var kt = (c + (r = r + Math.imul(l, ut) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, ct) | 0) + Math.imul(h, ut) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, ct) | 0) + (i >>> 13) | 0) + (kt >>> 26) | 0, kt &= 67108863, r = Math.imul(O, U), i = (i = Math.imul(O, z)) + Math.imul(R, U) | 0, a = Math.imul(R, z), r = r + Math.imul(I, V) | 0, i = (i = i + Math.imul(I, H) | 0) + Math.imul(L, V) | 0, a = a + Math.imul(L, H) | 0, r = r + Math.imul(D, $) | 0, i = (i = i + Math.imul(D, W) | 0) + Math.imul(C, $) | 0, a = a + Math.imul(C, W) | 0, r = r + Math.imul(S, X) | 0, i = (i = i + Math.imul(S, Z) | 0) + Math.imul(M, X) | 0, a = a + Math.imul(M, Z) | 0, r = r + Math.imul(k, Q) | 0, i = (i = i + Math.imul(k, tt) | 0) + Math.imul(E, Q) | 0, a = a + Math.imul(E, tt) | 0, r = r + Math.imul(_, nt) | 0, i = (i = i + Math.imul(_, rt) | 0) + Math.imul(w, nt) | 0, a = a + Math.imul(w, rt) | 0, r = r + Math.imul(b, at) | 0, i = (i = i + Math.imul(b, ot) | 0) + Math.imul(v, at) | 0, a = a + Math.imul(v, ot) | 0, r = r + Math.imul(p, ut) | 0, i = (i = i + Math.imul(p, ct) | 0) + Math.imul(g, ut) | 0, a = a + Math.imul(g, ct) | 0;
                    var Et = (c + (r = r + Math.imul(l, lt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, ht) | 0) + Math.imul(h, lt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, ht) | 0) + (i >>> 13) | 0) + (Et >>> 26) | 0, Et &= 67108863, r = Math.imul(F, U), i = (i = Math.imul(F, z)) + Math.imul(q, U) | 0, a = Math.imul(q, z), r = r + Math.imul(O, V) | 0, i = (i = i + Math.imul(O, H) | 0) + Math.imul(R, V) | 0, a = a + Math.imul(R, H) | 0, r = r + Math.imul(I, $) | 0, i = (i = i + Math.imul(I, W) | 0) + Math.imul(L, $) | 0, a = a + Math.imul(L, W) | 0, r = r + Math.imul(D, X) | 0, i = (i = i + Math.imul(D, Z) | 0) + Math.imul(C, X) | 0, a = a + Math.imul(C, Z) | 0, r = r + Math.imul(S, Q) | 0, i = (i = i + Math.imul(S, tt) | 0) + Math.imul(M, Q) | 0, a = a + Math.imul(M, tt) | 0, r = r + Math.imul(k, nt) | 0, i = (i = i + Math.imul(k, rt) | 0) + Math.imul(E, nt) | 0, a = a + Math.imul(E, rt) | 0, r = r + Math.imul(_, at) | 0, i = (i = i + Math.imul(_, ot) | 0) + Math.imul(w, at) | 0, a = a + Math.imul(w, ot) | 0, r = r + Math.imul(b, ut) | 0, i = (i = i + Math.imul(b, ct) | 0) + Math.imul(v, ut) | 0, a = a + Math.imul(v, ct) | 0, r = r + Math.imul(p, lt) | 0, i = (i = i + Math.imul(p, ht) | 0) + Math.imul(g, lt) | 0, a = a + Math.imul(g, ht) | 0;
                    var At = (c + (r = r + Math.imul(l, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(l, gt) | 0) + Math.imul(h, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(h, gt) | 0) + (i >>> 13) | 0) + (At >>> 26) | 0, At &= 67108863, r = Math.imul(F, V), i = (i = Math.imul(F, H)) + Math.imul(q, V) | 0, a = Math.imul(q, H), r = r + Math.imul(O, $) | 0, i = (i = i + Math.imul(O, W) | 0) + Math.imul(R, $) | 0, a = a + Math.imul(R, W) | 0, r = r + Math.imul(I, X) | 0, i = (i = i + Math.imul(I, Z) | 0) + Math.imul(L, X) | 0, a = a + Math.imul(L, Z) | 0, r = r + Math.imul(D, Q) | 0, i = (i = i + Math.imul(D, tt) | 0) + Math.imul(C, Q) | 0, a = a + Math.imul(C, tt) | 0, r = r + Math.imul(S, nt) | 0, i = (i = i + Math.imul(S, rt) | 0) + Math.imul(M, nt) | 0, a = a + Math.imul(M, rt) | 0, r = r + Math.imul(k, at) | 0, i = (i = i + Math.imul(k, ot) | 0) + Math.imul(E, at) | 0, a = a + Math.imul(E, ot) | 0, r = r + Math.imul(_, ut) | 0, i = (i = i + Math.imul(_, ct) | 0) + Math.imul(w, ut) | 0, a = a + Math.imul(w, ct) | 0, r = r + Math.imul(b, lt) | 0, i = (i = i + Math.imul(b, ht) | 0) + Math.imul(v, lt) | 0, a = a + Math.imul(v, ht) | 0;
                    var St = (c + (r = r + Math.imul(p, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(p, gt) | 0) + Math.imul(g, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(g, gt) | 0) + (i >>> 13) | 0) + (St >>> 26) | 0, St &= 67108863, r = Math.imul(F, $), i = (i = Math.imul(F, W)) + Math.imul(q, $) | 0, a = Math.imul(q, W), r = r + Math.imul(O, X) | 0, i = (i = i + Math.imul(O, Z) | 0) + Math.imul(R, X) | 0, a = a + Math.imul(R, Z) | 0, r = r + Math.imul(I, Q) | 0, i = (i = i + Math.imul(I, tt) | 0) + Math.imul(L, Q) | 0, a = a + Math.imul(L, tt) | 0, r = r + Math.imul(D, nt) | 0, i = (i = i + Math.imul(D, rt) | 0) + Math.imul(C, nt) | 0, a = a + Math.imul(C, rt) | 0, r = r + Math.imul(S, at) | 0, i = (i = i + Math.imul(S, ot) | 0) + Math.imul(M, at) | 0, a = a + Math.imul(M, ot) | 0, r = r + Math.imul(k, ut) | 0, i = (i = i + Math.imul(k, ct) | 0) + Math.imul(E, ut) | 0, a = a + Math.imul(E, ct) | 0, r = r + Math.imul(_, lt) | 0, i = (i = i + Math.imul(_, ht) | 0) + Math.imul(w, lt) | 0, a = a + Math.imul(w, ht) | 0;
                    var Mt = (c + (r = r + Math.imul(b, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(b, gt) | 0) + Math.imul(v, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(v, gt) | 0) + (i >>> 13) | 0) + (Mt >>> 26) | 0, Mt &= 67108863, r = Math.imul(F, X), i = (i = Math.imul(F, Z)) + Math.imul(q, X) | 0, a = Math.imul(q, Z), r = r + Math.imul(O, Q) | 0, i = (i = i + Math.imul(O, tt) | 0) + Math.imul(R, Q) | 0, a = a + Math.imul(R, tt) | 0, r = r + Math.imul(I, nt) | 0, i = (i = i + Math.imul(I, rt) | 0) + Math.imul(L, nt) | 0, a = a + Math.imul(L, rt) | 0, r = r + Math.imul(D, at) | 0, i = (i = i + Math.imul(D, ot) | 0) + Math.imul(C, at) | 0, a = a + Math.imul(C, ot) | 0, r = r + Math.imul(S, ut) | 0, i = (i = i + Math.imul(S, ct) | 0) + Math.imul(M, ut) | 0, a = a + Math.imul(M, ct) | 0, r = r + Math.imul(k, lt) | 0, i = (i = i + Math.imul(k, ht) | 0) + Math.imul(E, lt) | 0, a = a + Math.imul(E, ht) | 0;
                    var Tt = (c + (r = r + Math.imul(_, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(_, gt) | 0) + Math.imul(w, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(w, gt) | 0) + (i >>> 13) | 0) + (Tt >>> 26) | 0, Tt &= 67108863, r = Math.imul(F, Q), i = (i = Math.imul(F, tt)) + Math.imul(q, Q) | 0, a = Math.imul(q, tt), r = r + Math.imul(O, nt) | 0, i = (i = i + Math.imul(O, rt) | 0) + Math.imul(R, nt) | 0, a = a + Math.imul(R, rt) | 0, r = r + Math.imul(I, at) | 0, i = (i = i + Math.imul(I, ot) | 0) + Math.imul(L, at) | 0, a = a + Math.imul(L, ot) | 0, r = r + Math.imul(D, ut) | 0, i = (i = i + Math.imul(D, ct) | 0) + Math.imul(C, ut) | 0, a = a + Math.imul(C, ct) | 0, r = r + Math.imul(S, lt) | 0, i = (i = i + Math.imul(S, ht) | 0) + Math.imul(M, lt) | 0, a = a + Math.imul(M, ht) | 0;
                    var Dt = (c + (r = r + Math.imul(k, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(k, gt) | 0) + Math.imul(E, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(E, gt) | 0) + (i >>> 13) | 0) + (Dt >>> 26) | 0, Dt &= 67108863, r = Math.imul(F, nt), i = (i = Math.imul(F, rt)) + Math.imul(q, nt) | 0, a = Math.imul(q, rt), r = r + Math.imul(O, at) | 0, i = (i = i + Math.imul(O, ot) | 0) + Math.imul(R, at) | 0, a = a + Math.imul(R, ot) | 0, r = r + Math.imul(I, ut) | 0, i = (i = i + Math.imul(I, ct) | 0) + Math.imul(L, ut) | 0, a = a + Math.imul(L, ct) | 0, r = r + Math.imul(D, lt) | 0, i = (i = i + Math.imul(D, ht) | 0) + Math.imul(C, lt) | 0, a = a + Math.imul(C, ht) | 0;
                    var Ct = (c + (r = r + Math.imul(S, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(S, gt) | 0) + Math.imul(M, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(M, gt) | 0) + (i >>> 13) | 0) + (Ct >>> 26) | 0, Ct &= 67108863, r = Math.imul(F, at), i = (i = Math.imul(F, ot)) + Math.imul(q, at) | 0, a = Math.imul(q, ot), r = r + Math.imul(O, ut) | 0, i = (i = i + Math.imul(O, ct) | 0) + Math.imul(R, ut) | 0, a = a + Math.imul(R, ct) | 0, r = r + Math.imul(I, lt) | 0, i = (i = i + Math.imul(I, ht) | 0) + Math.imul(L, lt) | 0, a = a + Math.imul(L, ht) | 0;
                    var Nt = (c + (r = r + Math.imul(D, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(D, gt) | 0) + Math.imul(C, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(C, gt) | 0) + (i >>> 13) | 0) + (Nt >>> 26) | 0, Nt &= 67108863, r = Math.imul(F, ut), i = (i = Math.imul(F, ct)) + Math.imul(q, ut) | 0, a = Math.imul(q, ct), r = r + Math.imul(O, lt) | 0, i = (i = i + Math.imul(O, ht) | 0) + Math.imul(R, lt) | 0, a = a + Math.imul(R, ht) | 0;
                    var It = (c + (r = r + Math.imul(I, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(I, gt) | 0) + Math.imul(L, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(L, gt) | 0) + (i >>> 13) | 0) + (It >>> 26) | 0, It &= 67108863, r = Math.imul(F, lt), i = (i = Math.imul(F, ht)) + Math.imul(q, lt) | 0, a = Math.imul(q, ht);
                    var Lt = (c + (r = r + Math.imul(O, pt) | 0) | 0) + ((8191 & (i = (i = i + Math.imul(O, gt) | 0) + Math.imul(R, pt) | 0)) << 13) | 0;
                    c = ((a = a + Math.imul(R, gt) | 0) + (i >>> 13) | 0) + (Lt >>> 26) | 0, Lt &= 67108863;
                    var Bt = (c + (r = Math.imul(F, pt)) | 0) + ((8191 & (i = (i = Math.imul(F, gt)) + Math.imul(q, pt) | 0)) << 13) | 0;
                    return c = ((a = Math.imul(q, gt)) + (i >>> 13) | 0) + (Bt >>> 26) | 0, Bt &= 67108863, u[0] = yt, u[1] = bt, u[2] = vt, u[3] = mt, u[4] = _t, u[5] = wt, u[6] = xt, u[7] = kt, u[8] = Et, u[9] = At, u[10] = St, u[11] = Mt, u[12] = Tt, u[13] = Dt, u[14] = Ct, u[15] = Nt, u[16] = It, u[17] = Lt, u[18] = Bt, 0 !== c && (u[19] = c, n.length++), n
                };

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

                function g(t, e) {
                    this.x = t, this.y = e
                }
                Math.imul || (d = h), a.prototype.mulTo = function(t, e) {
                    var n = this.length + t.length;
                    return 10 === this.length && 10 === t.length ? d(this, t, e) : n < 63 ? h(this, t, e) : n < 1024 ? function(t, e, n) {
                        n.negative = e.negative ^ t.negative, n.length = t.length + e.length;
                        for (var r = 0, i = 0, a = 0; a < n.length - 1; a++) {
                            var o = i;
                            i = 0;
                            for (var s = 67108863 & r, u = Math.min(a, e.length - 1), c = Math.max(0, a - t.length + 1); c <= u; c++) {
                                var f = a - c,
                                    l = (0 | t.words[f]) * (0 | e.words[c]),
                                    h = 67108863 & l;
                                s = 67108863 & (h = h + s | 0), i += (o = (o = o + (l / 67108864 | 0) | 0) + (h >>> 26) | 0) >>> 26, o &= 67108863
                            }
                            n.words[a] = s, r = o, o = i
                        }
                        return 0 !== r ? n.words[a] = r : n.length--, n.strip()
                    }(this, t, e) : p(this, t, e)
                }, g.prototype.makeRBT = function(t) {
                    for (var e = new Array(t), n = a.prototype._countBits(t) - 1, r = 0; r < t; r++) e[r] = this.revBin(r, n, t);
                    return e
                }, g.prototype.revBin = function(t, e, n) {
                    if (0 === t || t === n - 1) return t;
                    for (var r = 0, i = 0; i < e; i++) r |= (1 & t) << e - i - 1, t >>= 1;
                    return r
                }, g.prototype.permute = function(t, e, n, r, i, a) {
                    for (var o = 0; o < a; o++) r[o] = e[t[o]], i[o] = n[t[o]]
                }, g.prototype.transform = function(t, e, n, r, i, a) {
                    this.permute(a, t, e, n, r, i);
                    for (var o = 1; o < i; o <<= 1)
                        for (var s = o << 1, u = Math.cos(2 * Math.PI / s), c = Math.sin(2 * Math.PI / s), f = 0; f < i; f += s)
                            for (var l = u, h = c, d = 0; d < o; d++) {
                                var p = n[f + d],
                                    g = r[f + d],
                                    y = n[f + d + o],
                                    b = r[f + d + o],
                                    v = l * y - h * b;
                                b = l * b + h * y, y = v, n[f + d] = p + y, r[f + d] = g + b, n[f + d + o] = p - y, r[f + d + o] = g - b, d !== s && (v = u * l - c * h, h = u * h + c * l, l = v)
                            }
                }, g.prototype.guessLen13b = function(t, e) {
                    var n = 1 | Math.max(e, t),
                        r = 1 & n,
                        i = 0;
                    for (n = n / 2 | 0; n; n >>>= 1) i++;
                    return 1 << i + 1 + r
                }, g.prototype.conjugate = function(t, e, n) {
                    if (!(n <= 1))
                        for (var r = 0; r < n / 2; r++) {
                            var i = t[r];
                            t[r] = t[n - r - 1], t[n - r - 1] = i, i = e[r], e[r] = -e[n - r - 1], e[n - r - 1] = -i
                        }
                }, g.prototype.normalize13b = function(t, e) {
                    for (var n = 0, r = 0; r < e / 2; r++) {
                        var i = 8192 * Math.round(t[2 * r + 1] / e) + Math.round(t[2 * r] / e) + n;
                        t[r] = 67108863 & i, n = i < 67108864 ? 0 : i / 67108864 | 0
                    }
                    return t
                }, g.prototype.convert13b = function(t, e, n, i) {
                    for (var a = 0, o = 0; o < e; o++) a += 0 | t[o], n[2 * o] = 8191 & a, a >>>= 13, n[2 * o + 1] = 8191 & a, a >>>= 13;
                    for (o = 2 * e; o < i; ++o) n[o] = 0;
                    r(0 === a), r(0 == (-8192 & a))
                }, g.prototype.stub = function(t) {
                    for (var e = new Array(t), n = 0; n < t; n++) e[n] = 0;
                    return e
                }, g.prototype.mulp = function(t, e, n) {
                    var r = 2 * this.guessLen13b(t.length, e.length),
                        i = this.makeRBT(r),
                        a = this.stub(r),
                        o = new Array(r),
                        s = new Array(r),
                        u = new Array(r),
                        c = new Array(r),
                        f = new Array(r),
                        l = new Array(r),
                        h = n.words;
                    h.length = r, this.convert13b(t.words, t.length, o, r), this.convert13b(e.words, e.length, c, r), this.transform(o, a, s, u, r, i), this.transform(c, a, f, l, r, i);
                    for (var d = 0; d < r; d++) {
                        var p = s[d] * f[d] - u[d] * l[d];
                        u[d] = s[d] * l[d] + u[d] * f[d], s[d] = p
                    }
                    return this.conjugate(s, u, r), this.transform(s, u, h, a, r, i), this.conjugate(h, a, r), this.normalize13b(h, r), n.negative = t.negative ^ e.negative, n.length = t.length + e.length, n.strip()
                }, a.prototype.mul = function(t) {
                    var e = new a(null);
                    return e.words = new Array(this.length + t.length), this.mulTo(t, e)
                }, a.prototype.mulf = function(t) {
                    var e = new a(null);
                    return e.words = new Array(this.length + t.length), p(this, t, e)
                }, a.prototype.imul = function(t) {
                    return this.clone().mulTo(t, this)
                }, a.prototype.imuln = function(t) {
                    r("number" == typeof t), r(t < 67108864);
                    for (var e = 0, n = 0; n < this.length; n++) {
                        var i = (0 | this.words[n]) * t,
                            a = (67108863 & i) + (67108863 & e);
                        e >>= 26, e += i / 67108864 | 0, e += a >>> 26, this.words[n] = 67108863 & a
                    }
                    return 0 !== e && (this.words[n] = e, this.length++), this
                }, a.prototype.muln = function(t) {
                    return this.clone().imuln(t)
                }, a.prototype.sqr = function() {
                    return this.mul(this)
                }, a.prototype.isqr = function() {
                    return this.imul(this.clone())
                }, a.prototype.pow = function(t) {
                    var e = function(t) {
                        for (var e = new Array(t.bitLength()), n = 0; n < e.length; n++) {
                            var r = n / 26 | 0,
                                i = n % 26;
                            e[n] = (t.words[r] & 1 << i) >>> i
                        }
                        return e
                    }(t);
                    if (0 === e.length) return new a(1);
                    for (var n = this, r = 0; r < e.length && 0 === e[r]; r++, n = n.sqr());
                    if (++r < e.length)
                        for (var i = n.sqr(); r < e.length; r++, i = i.sqr()) 0 !== e[r] && (n = n.mul(i));
                    return n
                }, a.prototype.iushln = function(t) {
                    r("number" == typeof t && t >= 0);
                    var e, n = t % 26,
                        i = (t - n) / 26,
                        a = 67108863 >>> 26 - n << 26 - n;
                    if (0 !== n) {
                        var o = 0;
                        for (e = 0; e < this.length; e++) {
                            var s = this.words[e] & a,
                                u = (0 | this.words[e]) - s << n;
                            this.words[e] = u | o, o = s >>> 26 - n
                        }
                        o && (this.words[e] = o, this.length++)
                    }
                    if (0 !== i) {
                        for (e = this.length - 1; e >= 0; e--) this.words[e + i] = this.words[e];
                        for (e = 0; e < i; e++) this.words[e] = 0;
                        this.length += i
                    }
                    return this.strip()
                }, a.prototype.ishln = function(t) {
                    return r(0 === this.negative), this.iushln(t)
                }, a.prototype.iushrn = function(t, e, n) {
                    var i;
                    r("number" == typeof t && t >= 0), i = e ? (e - e % 26) / 26 : 0;
                    var a = t % 26,
                        o = Math.min((t - a) / 26, this.length),
                        s = 67108863 ^ 67108863 >>> a << a,
                        u = n;
                    if (i -= o, i = Math.max(0, i), u) {
                        for (var c = 0; c < o; c++) u.words[c] = this.words[c];
                        u.length = o
                    }
                    if (0 === o);
                    else if (this.length > o)
                        for (this.length -= o, c = 0; c < this.length; c++) this.words[c] = this.words[c + o];
                    else this.words[0] = 0, this.length = 1;
                    var f = 0;
                    for (c = this.length - 1; c >= 0 && (0 !== f || c >= i); c--) {
                        var l = 0 | this.words[c];
                        this.words[c] = f << 26 - a | l >>> a, f = l & s
                    }
                    return u && 0 !== f && (u.words[u.length++] = f), 0 === this.length && (this.words[0] = 0, this.length = 1), this.strip()
                }, a.prototype.ishrn = function(t, e, n) {
                    return r(0 === this.negative), this.iushrn(t, e, n)
                }, a.prototype.shln = function(t) {
                    return this.clone().ishln(t)
                }, a.prototype.ushln = function(t) {
                    return this.clone().iushln(t)
                }, a.prototype.shrn = function(t) {
                    return this.clone().ishrn(t)
                }, a.prototype.ushrn = function(t) {
                    return this.clone().iushrn(t)
                }, a.prototype.testn = function(t) {
                    r("number" == typeof t && t >= 0);
                    var e = t % 26,
                        n = (t - e) / 26,
                        i = 1 << e;
                    return !(this.length <= n) && !!(this.words[n] & i)
                }, a.prototype.imaskn = function(t) {
                    r("number" == typeof t && t >= 0);
                    var e = t % 26,
                        n = (t - e) / 26;
                    if (r(0 === this.negative, "imaskn works only with positive numbers"), this.length <= n) return this;
                    if (0 !== e && n++, this.length = Math.min(n, this.length), 0 !== e) {
                        var i = 67108863 ^ 67108863 >>> e << e;
                        this.words[this.length - 1] &= i
                    }
                    return this.strip()
                }, a.prototype.maskn = function(t) {
                    return this.clone().imaskn(t)
                }, a.prototype.iaddn = function(t) {
                    return r("number" == typeof t), r(t < 67108864), t < 0 ? this.isubn(-t) : 0 !== this.negative ? 1 === this.length && (0 | this.words[0]) < t ? (this.words[0] = t - (0 | this.words[0]), this.negative = 0, this) : (this.negative = 0, this.isubn(t), this.negative = 1, this) : this._iaddn(t)
                }, a.prototype._iaddn = function(t) {
                    this.words[0] += t;
                    for (var e = 0; e < this.length && this.words[e] >= 67108864; e++) this.words[e] -= 67108864, e === this.length - 1 ? this.words[e + 1] = 1 : this.words[e + 1]++;
                    return this.length = Math.max(this.length, e + 1), this
                }, a.prototype.isubn = function(t) {
                    if (r("number" == typeof t), r(t < 67108864), t < 0) return this.iaddn(-t);
                    if (0 !== this.negative) return this.negative = 0, this.iaddn(t), this.negative = 1, this;
                    if (this.words[0] -= t, 1 === this.length && this.words[0] < 0) this.words[0] = -this.words[0], this.negative = 1;
                    else
                        for (var e = 0; e < this.length && this.words[e] < 0; e++) this.words[e] += 67108864, this.words[e + 1] -= 1;
                    return this.strip()
                }, a.prototype.addn = function(t) {
                    return this.clone().iaddn(t)
                }, a.prototype.subn = function(t) {
                    return this.clone().isubn(t)
                }, a.prototype.iabs = function() {
                    return this.negative = 0, this
                }, a.prototype.abs = function() {
                    return this.clone().iabs()
                }, a.prototype._ishlnsubmul = function(t, e, n) {
                    var i, a, o = t.length + n;
                    this._expand(o);
                    var s = 0;
                    for (i = 0; i < t.length; i++) {
                        a = (0 | this.words[i + n]) + s;
                        var u = (0 | t.words[i]) * e;
                        s = ((a -= 67108863 & u) >> 26) - (u / 67108864 | 0), this.words[i + n] = 67108863 & a
                    }
                    for (; i < this.length - n; i++) s = (a = (0 | this.words[i + n]) + s) >> 26, this.words[i + n] = 67108863 & a;
                    if (0 === s) return this.strip();
                    for (r(-1 === s), s = 0, i = 0; i < this.length; i++) s = (a = -(0 | this.words[i]) + s) >> 26, this.words[i] = 67108863 & a;
                    return this.negative = 1, this.strip()
                }, a.prototype._wordDiv = function(t, e) {
                    var n = (this.length, t.length),
                        r = this.clone(),
                        i = t,
                        o = 0 | i.words[i.length - 1];
                    0 !== (n = 26 - this._countBits(o)) && (i = i.ushln(n), r.iushln(n), o = 0 | i.words[i.length - 1]);
                    var s, u = r.length - i.length;
                    if ("mod" !== e) {
                        (s = new a(null)).length = u + 1, s.words = new Array(s.length);
                        for (var c = 0; c < s.length; c++) s.words[c] = 0
                    }
                    var f = r.clone()._ishlnsubmul(i, 1, u);
                    0 === f.negative && (r = f, s && (s.words[u] = 1));
                    for (var l = u - 1; l >= 0; l--) {
                        var h = 67108864 * (0 | r.words[i.length + l]) + (0 | r.words[i.length + l - 1]);
                        for (h = Math.min(h / o | 0, 67108863), r._ishlnsubmul(i, h, l); 0 !== r.negative;) h--, r.negative = 0, r._ishlnsubmul(i, 1, l), r.isZero() || (r.negative ^= 1);
                        s && (s.words[l] = h)
                    }
                    return s && s.strip(), r.strip(), "div" !== e && 0 !== n && r.iushrn(n), {
                        div: s || null,
                        mod: r
                    }
                }, a.prototype.divmod = function(t, e, n) {
                    return r(!t.isZero()), this.isZero() ? {
                        div: new a(0),
                        mod: new a(0)
                    } : 0 !== this.negative && 0 === t.negative ? (s = this.neg().divmod(t, e), "mod" !== e && (i = s.div.neg()), "div" !== e && (o = s.mod.neg(), n && 0 !== o.negative && o.iadd(t)), {
                        div: i,
                        mod: o
                    }) : 0 === this.negative && 0 !== t.negative ? (s = this.divmod(t.neg(), e), "mod" !== e && (i = s.div.neg()), {
                        div: i,
                        mod: s.mod
                    }) : 0 != (this.negative & t.negative) ? (s = this.neg().divmod(t.neg(), e), "div" !== e && (o = s.mod.neg(), n && 0 !== o.negative && o.isub(t)), {
                        div: s.div,
                        mod: o
                    }) : t.length > this.length || this.cmp(t) < 0 ? {
                        div: new a(0),
                        mod: this
                    } : 1 === t.length ? "div" === e ? {
                        div: this.divn(t.words[0]),
                        mod: null
                    } : "mod" === e ? {
                        div: null,
                        mod: new a(this.modn(t.words[0]))
                    } : {
                        div: this.divn(t.words[0]),
                        mod: new a(this.modn(t.words[0]))
                    } : this._wordDiv(t, e);
                    var i, o, s
                }, a.prototype.div = function(t) {
                    return this.divmod(t, "div", !1).div
                }, a.prototype.mod = function(t) {
                    return this.divmod(t, "mod", !1).mod
                }, a.prototype.umod = function(t) {
                    return this.divmod(t, "mod", !0).mod
                }, a.prototype.divRound = function(t) {
                    var e = this.divmod(t);
                    if (e.mod.isZero()) return e.div;
                    var n = 0 !== e.div.negative ? e.mod.isub(t) : e.mod,
                        r = t.ushrn(1),
                        i = t.andln(1),
                        a = n.cmp(r);
                    return a < 0 || 1 === i && 0 === a ? e.div : 0 !== e.div.negative ? e.div.isubn(1) : e.div.iaddn(1)
                }, a.prototype.modn = function(t) {
                    r(t <= 67108863);
                    for (var e = (1 << 26) % t, n = 0, i = this.length - 1; i >= 0; i--) n = (e * n + (0 | this.words[i])) % t;
                    return n
                }, a.prototype.idivn = function(t) {
                    r(t <= 67108863);
                    for (var e = 0, n = this.length - 1; n >= 0; n--) {
                        var i = (0 | this.words[n]) + 67108864 * e;
                        this.words[n] = i / t | 0, e = i % t
                    }
                    return this.strip()
                }, a.prototype.divn = function(t) {
                    return this.clone().idivn(t)
                }, a.prototype.egcd = function(t) {
                    r(0 === t.negative), r(!t.isZero());
                    var e = this,
                        n = t.clone();
                    e = 0 !== e.negative ? e.umod(t) : e.clone();
                    for (var i = new a(1), o = new a(0), s = new a(0), u = new a(1), c = 0; e.isEven() && n.isEven();) e.iushrn(1), n.iushrn(1), ++c;
                    for (var f = n.clone(), l = e.clone(); !e.isZero();) {
                        for (var h = 0, d = 1; 0 == (e.words[0] & d) && h < 26; ++h, d <<= 1);
                        if (h > 0)
                            for (e.iushrn(h); h-- > 0;)(i.isOdd() || o.isOdd()) && (i.iadd(f), o.isub(l)), i.iushrn(1), o.iushrn(1);
                        for (var p = 0, g = 1; 0 == (n.words[0] & g) && p < 26; ++p, g <<= 1);
                        if (p > 0)
                            for (n.iushrn(p); p-- > 0;)(s.isOdd() || u.isOdd()) && (s.iadd(f), u.isub(l)), s.iushrn(1), u.iushrn(1);
                        e.cmp(n) >= 0 ? (e.isub(n), i.isub(s), o.isub(u)) : (n.isub(e), s.isub(i), u.isub(o))
                    }
                    return {
                        a: s,
                        b: u,
                        gcd: n.iushln(c)
                    }
                }, a.prototype._invmp = function(t) {
                    r(0 === t.negative), r(!t.isZero());
                    var e = this,
                        n = t.clone();
                    e = 0 !== e.negative ? e.umod(t) : e.clone();
                    for (var i, o = new a(1), s = new a(0), u = n.clone(); e.cmpn(1) > 0 && n.cmpn(1) > 0;) {
                        for (var c = 0, f = 1; 0 == (e.words[0] & f) && c < 26; ++c, f <<= 1);
                        if (c > 0)
                            for (e.iushrn(c); c-- > 0;) o.isOdd() && o.iadd(u), o.iushrn(1);
                        for (var l = 0, h = 1; 0 == (n.words[0] & h) && l < 26; ++l, h <<= 1);
                        if (l > 0)
                            for (n.iushrn(l); l-- > 0;) s.isOdd() && s.iadd(u), s.iushrn(1);
                        e.cmp(n) >= 0 ? (e.isub(n), o.isub(s)) : (n.isub(e), s.isub(o))
                    }
                    return (i = 0 === e.cmpn(1) ? o : s).cmpn(0) < 0 && i.iadd(t), i
                }, a.prototype.gcd = function(t) {
                    if (this.isZero()) return t.abs();
                    if (t.isZero()) return this.abs();
                    var e = this.clone(),
                        n = t.clone();
                    e.negative = 0, n.negative = 0;
                    for (var r = 0; e.isEven() && n.isEven(); r++) e.iushrn(1), n.iushrn(1);
                    for (;;) {
                        for (; e.isEven();) e.iushrn(1);
                        for (; n.isEven();) n.iushrn(1);
                        var i = e.cmp(n);
                        if (i < 0) {
                            var a = e;
                            e = n, n = a
                        } else if (0 === i || 0 === n.cmpn(1)) break;
                        e.isub(n)
                    }
                    return n.iushln(r)
                }, a.prototype.invm = function(t) {
                    return this.egcd(t).a.umod(t)
                }, a.prototype.isEven = function() {
                    return 0 == (1 & this.words[0])
                }, a.prototype.isOdd = function() {
                    return 1 == (1 & this.words[0])
                }, a.prototype.andln = function(t) {
                    return this.words[0] & t
                }, a.prototype.bincn = function(t) {
                    r("number" == typeof t);
                    var e = t % 26,
                        n = (t - e) / 26,
                        i = 1 << e;
                    if (this.length <= n) return this._expand(n + 1), this.words[n] |= i, this;
                    for (var a = i, o = n; 0 !== a && o < this.length; o++) {
                        var s = 0 | this.words[o];
                        a = (s += a) >>> 26, s &= 67108863, this.words[o] = s
                    }
                    return 0 !== a && (this.words[o] = a, this.length++), this
                }, a.prototype.isZero = function() {
                    return 1 === this.length && 0 === this.words[0]
                }, a.prototype.cmpn = function(t) {
                    var e, n = t < 0;
                    if (0 !== this.negative && !n) return -1;
                    if (0 === this.negative && n) return 1;
                    if (this.strip(), this.length > 1) e = 1;
                    else {
                        n && (t = -t), r(t <= 67108863, "Number is too big");
                        var i = 0 | this.words[0];
                        e = i === t ? 0 : i < t ? -1 : 1
                    }
                    return 0 !== this.negative ? 0 | -e : e
                }, a.prototype.cmp = function(t) {
                    if (0 !== this.negative && 0 === t.negative) return -1;
                    if (0 === this.negative && 0 !== t.negative) return 1;
                    var e = this.ucmp(t);
                    return 0 !== this.negative ? 0 | -e : e
                }, a.prototype.ucmp = function(t) {
                    if (this.length > t.length) return 1;
                    if (this.length < t.length) return -1;
                    for (var e = 0, n = this.length - 1; n >= 0; n--) {
                        var r = 0 | this.words[n],
                            i = 0 | t.words[n];
                        if (r !== i) {
                            r < i ? e = -1 : r > i && (e = 1);
                            break
                        }
                    }
                    return e
                }, a.prototype.gtn = function(t) {
                    return 1 === this.cmpn(t)
                }, a.prototype.gt = function(t) {
                    return 1 === this.cmp(t)
                }, a.prototype.gten = function(t) {
                    return this.cmpn(t) >= 0
                }, a.prototype.gte = function(t) {
                    return this.cmp(t) >= 0
                }, a.prototype.ltn = function(t) {
                    return -1 === this.cmpn(t)
                }, a.prototype.lt = function(t) {
                    return -1 === this.cmp(t)
                }, a.prototype.lten = function(t) {
                    return this.cmpn(t) <= 0
                }, a.prototype.lte = function(t) {
                    return this.cmp(t) <= 0
                }, a.prototype.eqn = function(t) {
                    return 0 === this.cmpn(t)
                }, a.prototype.eq = function(t) {
                    return 0 === this.cmp(t)
                }, a.red = function(t) {
                    return new x(t)
                }, a.prototype.toRed = function(t) {
                    return r(!this.red, "Already a number in reduction context"), r(0 === this.negative, "red works only with positives"), t.convertTo(this)._forceRed(t)
                }, a.prototype.fromRed = function() {
                    return r(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this)
                }, a.prototype._forceRed = function(t) {
                    return this.red = t, this
                }, a.prototype.forceRed = function(t) {
                    return r(!this.red, "Already a number in reduction context"), this._forceRed(t)
                }, a.prototype.redAdd = function(t) {
                    return r(this.red, "redAdd works only with red numbers"), this.red.add(this, t)
                }, a.prototype.redIAdd = function(t) {
                    return r(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, t)
                }, a.prototype.redSub = function(t) {
                    return r(this.red, "redSub works only with red numbers"), this.red.sub(this, t)
                }, a.prototype.redISub = function(t) {
                    return r(this.red, "redISub works only with red numbers"), this.red.isub(this, t)
                }, a.prototype.redShl = function(t) {
                    return r(this.red, "redShl works only with red numbers"), this.red.shl(this, t)
                }, a.prototype.redMul = function(t) {
                    return r(this.red, "redMul works only with red numbers"), this.red._verify2(this, t), this.red.mul(this, t)
                }, a.prototype.redIMul = function(t) {
                    return r(this.red, "redMul works only with red numbers"), this.red._verify2(this, t), this.red.imul(this, t)
                }, a.prototype.redSqr = function() {
                    return r(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this)
                }, a.prototype.redISqr = function() {
                    return r(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this)
                }, a.prototype.redSqrt = function() {
                    return r(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this)
                }, a.prototype.redInvm = function() {
                    return r(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this)
                }, a.prototype.redNeg = function() {
                    return r(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this)
                }, a.prototype.redPow = function(t) {
                    return r(this.red && !t.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, t)
                };
                var y = {
                    k256: null,
                    p224: null,
                    p192: null,
                    p25519: null
                };

                function b(t, e) {
                    this.name = t, this.p = new a(e, 16), this.n = this.p.bitLength(), this.k = new a(1).iushln(this.n).isub(this.p), this.tmp = this._tmp()
                }

                function v() {
                    b.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")
                }

                function m() {
                    b.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")
                }

                function _() {
                    b.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")
                }

                function w() {
                    b.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")
                }

                function x(t) {
                    if ("string" == typeof t) {
                        var e = a._prime(t);
                        this.m = e.p, this.prime = e
                    } else r(t.gtn(1), "modulus must be greater than 1"), this.m = t, this.prime = null
                }

                function k(t) {
                    x.call(this, t), this.shift = this.m.bitLength(), this.shift % 26 != 0 && (this.shift += 26 - this.shift % 26), this.r = new a(1).iushln(this.shift), this.r2 = this.imod(this.r.sqr()), this.rinv = this.r._invmp(this.m), this.minv = this.rinv.mul(this.r).isubn(1).div(this.m), this.minv = this.minv.umod(this.r), this.minv = this.r.sub(this.minv)
                }
                b.prototype._tmp = function() {
                    var t = new a(null);
                    return t.words = new Array(Math.ceil(this.n / 13)), t
                }, b.prototype.ireduce = function(t) {
                    var e, n = t;
                    do {
                        this.split(n, this.tmp), e = (n = (n = this.imulK(n)).iadd(this.tmp)).bitLength()
                    } while (e > this.n);
                    var r = e < this.n ? -1 : n.ucmp(this.p);
                    return 0 === r ? (n.words[0] = 0, n.length = 1) : r > 0 ? n.isub(this.p) : n.strip(), n
                }, b.prototype.split = function(t, e) {
                    t.iushrn(this.n, 0, e)
                }, b.prototype.imulK = function(t) {
                    return t.imul(this.k)
                }, i(v, b), v.prototype.split = function(t, e) {
                    for (var n = Math.min(t.length, 9), r = 0; r < n; r++) e.words[r] = t.words[r];
                    if (e.length = n, t.length <= 9) return t.words[0] = 0, void(t.length = 1);
                    var i = t.words[9];
                    for (e.words[e.length++] = 4194303 & i, r = 10; r < t.length; r++) {
                        var a = 0 | t.words[r];
                        t.words[r - 10] = (4194303 & a) << 4 | i >>> 22, i = a
                    }
                    i >>>= 22, t.words[r - 10] = i, 0 === i && t.length > 10 ? t.length -= 10 : t.length -= 9
                }, v.prototype.imulK = function(t) {
                    t.words[t.length] = 0, t.words[t.length + 1] = 0, t.length += 2;
                    for (var e = 0, n = 0; n < t.length; n++) {
                        var r = 0 | t.words[n];
                        e += 977 * r, t.words[n] = 67108863 & e, e = 64 * r + (e / 67108864 | 0)
                    }
                    return 0 === t.words[t.length - 1] && (t.length--, 0 === t.words[t.length - 1] && t.length--), t
                }, i(m, b), i(_, b), i(w, b), w.prototype.imulK = function(t) {
                    for (var e = 0, n = 0; n < t.length; n++) {
                        var r = 19 * (0 | t.words[n]) + e,
                            i = 67108863 & r;
                        r >>>= 26, t.words[n] = i, e = r
                    }
                    return 0 !== e && (t.words[t.length++] = e), t
                }, a._prime = function(t) {
                    if (y[t]) return y[t];
                    var e;
                    if ("k256" === t) e = new v;
                    else if ("p224" === t) e = new m;
                    else if ("p192" === t) e = new _;
                    else {
                        if ("p25519" !== t) throw new Error("Unknown prime " + t);
                        e = new w
                    }
                    return y[t] = e, e
                }, x.prototype._verify1 = function(t) {
                    r(0 === t.negative, "red works only with positives"), r(t.red, "red works only with red numbers")
                }, x.prototype._verify2 = function(t, e) {
                    r(0 == (t.negative | e.negative), "red works only with positives"), r(t.red && t.red === e.red, "red works only with red numbers")
                }, x.prototype.imod = function(t) {
                    return this.prime ? this.prime.ireduce(t)._forceRed(this) : t.umod(this.m)._forceRed(this)
                }, x.prototype.neg = function(t) {
                    return t.isZero() ? t.clone() : this.m.sub(t)._forceRed(this)
                }, x.prototype.add = function(t, e) {
                    this._verify2(t, e);
                    var n = t.add(e);
                    return n.cmp(this.m) >= 0 && n.isub(this.m), n._forceRed(this)
                }, x.prototype.iadd = function(t, e) {
                    this._verify2(t, e);
                    var n = t.iadd(e);
                    return n.cmp(this.m) >= 0 && n.isub(this.m), n
                }, x.prototype.sub = function(t, e) {
                    this._verify2(t, e);
                    var n = t.sub(e);
                    return n.cmpn(0) < 0 && n.iadd(this.m), n._forceRed(this)
                }, x.prototype.isub = function(t, e) {
                    this._verify2(t, e);
                    var n = t.isub(e);
                    return n.cmpn(0) < 0 && n.iadd(this.m), n
                }, x.prototype.shl = function(t, e) {
                    return this._verify1(t), this.imod(t.ushln(e))
                }, x.prototype.imul = function(t, e) {
                    return this._verify2(t, e), this.imod(t.imul(e))
                }, x.prototype.mul = function(t, e) {
                    return this._verify2(t, e), this.imod(t.mul(e))
                }, x.prototype.isqr = function(t) {
                    return this.imul(t, t.clone())
                }, x.prototype.sqr = function(t) {
                    return this.mul(t, t)
                }, x.prototype.sqrt = function(t) {
                    if (t.isZero()) return t.clone();
                    var e = this.m.andln(3);
                    if (r(e % 2 == 1), 3 === e) {
                        var n = this.m.add(new a(1)).iushrn(2);
                        return this.pow(t, n)
                    }
                    for (var i = this.m.subn(1), o = 0; !i.isZero() && 0 === i.andln(1);) o++, i.iushrn(1);
                    r(!i.isZero());
                    var s = new a(1).toRed(this),
                        u = s.redNeg(),
                        c = this.m.subn(1).iushrn(1),
                        f = this.m.bitLength();
                    for (f = new a(2 * f * f).toRed(this); 0 !== this.pow(f, c).cmp(u);) f.redIAdd(u);
                    for (var l = this.pow(f, i), h = this.pow(t, i.addn(1).iushrn(1)), d = this.pow(t, i), p = o; 0 !== d.cmp(s);) {
                        for (var g = d, y = 0; 0 !== g.cmp(s); y++) g = g.redSqr();
                        r(y < p);
                        var b = this.pow(l, new a(1).iushln(p - y - 1));
                        h = h.redMul(b), l = b.redSqr(), d = d.redMul(l), p = y
                    }
                    return h
                }, x.prototype.invm = function(t) {
                    var e = t._invmp(this.m);
                    return 0 !== e.negative ? (e.negative = 0, this.imod(e).redNeg()) : this.imod(e)
                }, x.prototype.pow = function(t, e) {
                    if (e.isZero()) return new a(1).toRed(this);
                    if (0 === e.cmpn(1)) return t.clone();
                    var n = new Array(16);
                    n[0] = new a(1).toRed(this), n[1] = t;
                    for (var r = 2; r < n.length; r++) n[r] = this.mul(n[r - 1], t);
                    var i = n[0],
                        o = 0,
                        s = 0,
                        u = e.bitLength() % 26;
                    for (0 === u && (u = 26), r = e.length - 1; r >= 0; r--) {
                        for (var c = e.words[r], f = u - 1; f >= 0; f--) {
                            var l = c >> f & 1;
                            i !== n[0] && (i = this.sqr(i)), 0 !== l || 0 !== o ? (o <<= 1, o |= l, (4 === ++s || 0 === r && 0 === f) && (i = this.mul(i, n[o]), s = 0, o = 0)) : s = 0
                        }
                        u = 26
                    }
                    return i
                }, x.prototype.convertTo = function(t) {
                    var e = t.umod(this.m);
                    return e === t ? e.clone() : e
                }, x.prototype.convertFrom = function(t) {
                    var e = t.clone();
                    return e.red = null, e
                }, a.mont = function(t) {
                    return new k(t)
                }, i(k, x), k.prototype.convertTo = function(t) {
                    return this.imod(t.ushln(this.shift))
                }, k.prototype.convertFrom = function(t) {
                    var e = this.imod(t.mul(this.rinv));
                    return e.red = null, e
                }, k.prototype.imul = function(t, e) {
                    if (t.isZero() || e.isZero()) return t.words[0] = 0, t.length = 1, t;
                    var n = t.imul(e),
                        r = n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),
                        i = n.isub(r).iushrn(this.shift),
                        a = i;
                    return i.cmp(this.m) >= 0 ? a = i.isub(this.m) : i.cmpn(0) < 0 && (a = i.iadd(this.m)), a._forceRed(this)
                }, k.prototype.mul = function(t, e) {
                    if (t.isZero() || e.isZero()) return new a(0)._forceRed(this);
                    var n = t.mul(e),
                        r = n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),
                        i = n.isub(r).iushrn(this.shift),
                        o = i;
                    return i.cmp(this.m) >= 0 ? o = i.isub(this.m) : i.cmpn(0) < 0 && (o = i.iadd(this.m)), o._forceRed(this)
                }, k.prototype.invm = function(t) {
                    return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)
                }
            }(t, this)
        }).call(this, n(9)(t))
    }, function(t, e) {
        var n = Array.isArray;
        t.exports = n
    }, function(t, e) {
        var n, r, i = t.exports = {};

        function a() {
            throw new Error("setTimeout has not been defined")
        }

        function o() {
            throw new Error("clearTimeout has not been defined")
        }

        function s(t) {
            if (n === setTimeout) return setTimeout(t, 0);
            if ((n === a || !n) && setTimeout) return n = setTimeout, setTimeout(t, 0);
            try {
                return n(t, 0)
            } catch (e) {
                try {
                    return n.call(null, t, 0)
                } catch (e) {
                    return n.call(this, t, 0)
                }
            }
        }! function() {
            try {
                n = "function" == typeof setTimeout ? setTimeout : a
            } catch (t) {
                n = a
            }
            try {
                r = "function" == typeof clearTimeout ? clearTimeout : o
            } catch (t) {
                r = o
            }
        }();
        var u, c = [],
            f = !1,
            l = -1;

        function h() {
            f && u && (f = !1, u.length ? c = u.concat(c) : l = -1, c.length && d())
        }

        function d() {
            if (!f) {
                var t = s(h);
                f = !0;
                for (var e = c.length; e;) {
                    for (u = c, c = []; ++l < e;) u && u[l].run();
                    l = -1, e = c.length
                }
                u = null, f = !1,
                    function(t) {
                        if (r === clearTimeout) return clearTimeout(t);
                        if ((r === o || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t);
                        try {
                            r(t)
                        } catch (e) {
                            try {
                                return r.call(null, t)
                            } catch (e) {
                                return r.call(this, t)
                            }
                        }
                    }(t)
            }
        }

        function p(t, e) {
            this.fun = t, this.array = e
        }

        function g() {}
        i.nextTick = function(t) {
            var e = new Array(arguments.length - 1);
            if (arguments.length > 1)
                for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
            c.push(new p(t, e)), 1 !== c.length || f || s(d)
        }, p.prototype.run = function() {
            this.fun.apply(null, this.array)
        }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = g, i.addListener = g, i.once = g, i.off = g, i.removeListener = g, i.removeAllListeners = g, i.emit = g, i.prependListener = g, i.prependOnceListener = g, i.listeners = function(t) {
            return []
        }, i.binding = function(t) {
            throw new Error("process.binding is not supported")
        }, i.cwd = function() {
            return "/"
        }, i.chdir = function(t) {
            throw new Error("process.chdir is not supported")
        }, i.umask = function() {
            return 0
        }
    }, function(t, e, n) {
        "use strict";
        (function(t) {
            /*!
             * The buffer module from node.js, for the browser.
             *
             * @author   Feross Aboukhadijeh <http://feross.org>
             * @license  MIT
             */
            var r = n(421),
                i = n(422),
                a = n(191);

            function o() {
                return u.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
            }

            function s(t, e) {
                if (o() < e) throw new RangeError("Invalid typed array length");
                return u.TYPED_ARRAY_SUPPORT ? (t = new Uint8Array(e)).__proto__ = u.prototype : (null === t && (t = new u(e)), t.length = e), t
            }

            function u(t, e, n) {
                if (!(u.TYPED_ARRAY_SUPPORT || this instanceof u)) return new u(t, e, n);
                if ("number" == typeof t) {
                    if ("string" == typeof e) throw new Error("If encoding is specified then the first argument must be a string");
                    return l(this, t)
                }
                return c(this, t, e, n)
            }

            function c(t, e, n, r) {
                if ("number" == typeof e) throw new TypeError('"value" argument must not be a number');
                return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer ? function(t, e, n, r) {
                    if (e.byteLength, n < 0 || e.byteLength < n) throw new RangeError("'offset' is out of bounds");
                    if (e.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds");
                    e = void 0 === n && void 0 === r ? new Uint8Array(e) : void 0 === r ? new Uint8Array(e, n) : new Uint8Array(e, n, r);
                    u.TYPED_ARRAY_SUPPORT ? (t = e).__proto__ = u.prototype : t = h(t, e);
                    return t
                }(t, e, n, r) : "string" == typeof e ? function(t, e, n) {
                    "string" == typeof n && "" !== n || (n = "utf8");
                    if (!u.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding');
                    var r = 0 | p(e, n),
                        i = (t = s(t, r)).write(e, n);
                    i !== r && (t = t.slice(0, i));
                    return t
                }(t, e, n) : function(t, e) {
                    if (u.isBuffer(e)) {
                        var n = 0 | d(e.length);
                        return 0 === (t = s(t, n)).length ? t : (e.copy(t, 0, 0, n), t)
                    }
                    if (e) {
                        if ("undefined" != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || "length" in e) return "number" != typeof e.length || (r = e.length) != r ? s(t, 0) : h(t, e);
                        if ("Buffer" === e.type && a(e.data)) return h(t, e.data)
                    }
                    var r;
                    throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
                }(t, e)
            }

            function f(t) {
                if ("number" != typeof t) throw new TypeError('"size" argument must be a number');
                if (t < 0) throw new RangeError('"size" argument must not be negative')
            }

            function l(t, e) {
                if (f(e), t = s(t, e < 0 ? 0 : 0 | d(e)), !u.TYPED_ARRAY_SUPPORT)
                    for (var n = 0; n < e; ++n) t[n] = 0;
                return t
            }

            function h(t, e) {
                var n = e.length < 0 ? 0 : 0 | d(e.length);
                t = s(t, n);
                for (var r = 0; r < n; r += 1) t[r] = 255 & e[r];
                return t
            }

            function d(t) {
                if (t >= o()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + o().toString(16) + " bytes");
                return 0 | t
            }

            function p(t, e) {
                if (u.isBuffer(t)) return t.length;
                if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(t) || t instanceof ArrayBuffer)) return t.byteLength;
                "string" != typeof t && (t = "" + t);
                var n = t.length;
                if (0 === n) return 0;
                for (var r = !1;;) switch (e) {
                    case "ascii":
                    case "latin1":
                    case "binary":
                        return n;
                    case "utf8":
                    case "utf-8":
                    case void 0:
                        return U(t).length;
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                        return 2 * n;
                    case "hex":
                        return n >>> 1;
                    case "base64":
                        return z(t).length;
                    default:
                        if (r) return U(t).length;
                        e = ("" + e).toLowerCase(), r = !0
                }
            }

            function g(t, e, n) {
                var r = !1;
                if ((void 0 === e || e < 0) && (e = 0), e > this.length) return "";
                if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return "";
                if ((n >>>= 0) <= (e >>>= 0)) return "";
                for (t || (t = "utf8");;) switch (t) {
                    case "hex":
                        return C(this, e, n);
                    case "utf8":
                    case "utf-8":
                        return S(this, e, n);
                    case "ascii":
                        return T(this, e, n);
                    case "latin1":
                    case "binary":
                        return D(this, e, n);
                    case "base64":
                        return A(this, e, n);
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                        return N(this, e, n);
                    default:
                        if (r) throw new TypeError("Unknown encoding: " + t);
                        t = (t + "").toLowerCase(), r = !0
                }
            }

            function y(t, e, n) {
                var r = t[e];
                t[e] = t[n], t[n] = r
            }

            function b(t, e, n, r, i) {
                if (0 === t.length) return -1;
                if ("string" == typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : t.length - 1), n < 0 && (n = t.length + n), n >= t.length) {
                    if (i) return -1;
                    n = t.length - 1
                } else if (n < 0) {
                    if (!i) return -1;
                    n = 0
                }
                if ("string" == typeof e && (e = u.from(e, r)), u.isBuffer(e)) return 0 === e.length ? -1 : v(t, e, n, r, i);
                if ("number" == typeof e) return e &= 255, u.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, e, n) : Uint8Array.prototype.lastIndexOf.call(t, e, n) : v(t, [e], n, r, i);
                throw new TypeError("val must be string, number or Buffer")
            }

            function v(t, e, n, r, i) {
                var a, o = 1,
                    s = t.length,
                    u = e.length;
                if (void 0 !== r && ("ucs2" === (r = String(r).toLowerCase()) || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) {
                    if (t.length < 2 || e.length < 2) return -1;
                    o = 2, s /= 2, u /= 2, n /= 2
                }

                function c(t, e) {
                    return 1 === o ? t[e] : t.readUInt16BE(e * o)
                }
                if (i) {
                    var f = -1;
                    for (a = n; a < s; a++)
                        if (c(t, a) === c(e, -1 === f ? 0 : a - f)) {
                            if (-1 === f && (f = a), a - f + 1 === u) return f * o
                        } else -1 !== f && (a -= a - f), f = -1
                } else
                    for (n + u > s && (n = s - u), a = n; a >= 0; a--) {
                        for (var l = !0, h = 0; h < u; h++)
                            if (c(t, a + h) !== c(e, h)) {
                                l = !1;
                                break
                            } if (l) return a
                    }
                return -1
            }

            function m(t, e, n, r) {
                n = Number(n) || 0;
                var i = t.length - n;
                r ? (r = Number(r)) > i && (r = i) : r = i;
                var a = e.length;
                if (a % 2 != 0) throw new TypeError("Invalid hex string");
                r > a / 2 && (r = a / 2);
                for (var o = 0; o < r; ++o) {
                    var s = parseInt(e.substr(2 * o, 2), 16);
                    if (isNaN(s)) return o;
                    t[n + o] = s
                }
                return o
            }

            function _(t, e, n, r) {
                return Y(U(e, t.length - n), t, n, r)
            }

            function w(t, e, n, r) {
                return Y(function(t) {
                    for (var e = [], n = 0; n < t.length; ++n) e.push(255 & t.charCodeAt(n));
                    return e
                }(e), t, n, r)
            }

            function x(t, e, n, r) {
                return w(t, e, n, r)
            }

            function k(t, e, n, r) {
                return Y(z(e), t, n, r)
            }

            function E(t, e, n, r) {
                return Y(function(t, e) {
                    for (var n, r, i, a = [], o = 0; o < t.length && !((e -= 2) < 0); ++o) n = t.charCodeAt(o), r = n >> 8, i = n % 256, a.push(i), a.push(r);
                    return a
                }(e, t.length - n), t, n, r)
            }

            function A(t, e, n) {
                return 0 === e && n === t.length ? r.fromByteArray(t) : r.fromByteArray(t.slice(e, n))
            }

            function S(t, e, n) {
                n = Math.min(t.length, n);
                for (var r = [], i = e; i < n;) {
                    var a, o, s, u, c = t[i],
                        f = null,
                        l = c > 239 ? 4 : c > 223 ? 3 : c > 191 ? 2 : 1;
                    if (i + l <= n) switch (l) {
                        case 1:
                            c < 128 && (f = c);
                            break;
                        case 2:
                            128 == (192 & (a = t[i + 1])) && (u = (31 & c) << 6 | 63 & a) > 127 && (f = u);
                            break;
                        case 3:
                            a = t[i + 1], o = t[i + 2], 128 == (192 & a) && 128 == (192 & o) && (u = (15 & c) << 12 | (63 & a) << 6 | 63 & o) > 2047 && (u < 55296 || u > 57343) && (f = u);
                            break;
                        case 4:
                            a = t[i + 1], o = t[i + 2], s = t[i + 3], 128 == (192 & a) && 128 == (192 & o) && 128 == (192 & s) && (u = (15 & c) << 18 | (63 & a) << 12 | (63 & o) << 6 | 63 & s) > 65535 && u < 1114112 && (f = u)
                    }
                    null === f ? (f = 65533, l = 1) : f > 65535 && (f -= 65536, r.push(f >>> 10 & 1023 | 55296), f = 56320 | 1023 & f), r.push(f), i += l
                }
                return function(t) {
                    var e = t.length;
                    if (e <= M) return String.fromCharCode.apply(String, t);
                    var n = "",
                        r = 0;
                    for (; r < e;) n += String.fromCharCode.apply(String, t.slice(r, r += M));
                    return n
                }(r)
            }
            e.Buffer = u, e.SlowBuffer = function(t) {
                +t != t && (t = 0);
                return u.alloc(+t)
            }, e.INSPECT_MAX_BYTES = 50, u.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function() {
                try {
                    var t = new Uint8Array(1);
                    return t.__proto__ = {
                        __proto__: Uint8Array.prototype,
                        foo: function() {
                            return 42
                        }
                    }, 42 === t.foo() && "function" == typeof t.subarray && 0 === t.subarray(1, 1).byteLength
                } catch (t) {
                    return !1
                }
            }(), e.kMaxLength = o(), u.poolSize = 8192, u._augment = function(t) {
                return t.__proto__ = u.prototype, t
            }, u.from = function(t, e, n) {
                return c(null, t, e, n)
            }, u.TYPED_ARRAY_SUPPORT && (u.prototype.__proto__ = Uint8Array.prototype, u.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && u[Symbol.species] === u && Object.defineProperty(u, Symbol.species, {
                value: null,
                configurable: !0
            })), u.alloc = function(t, e, n) {
                return function(t, e, n, r) {
                    return f(e), e <= 0 ? s(t, e) : void 0 !== n ? "string" == typeof r ? s(t, e).fill(n, r) : s(t, e).fill(n) : s(t, e)
                }(null, t, e, n)
            }, u.allocUnsafe = function(t) {
                return l(null, t)
            }, u.allocUnsafeSlow = function(t) {
                return l(null, t)
            }, u.isBuffer = function(t) {
                return !(null == t || !t._isBuffer)
            }, u.compare = function(t, e) {
                if (!u.isBuffer(t) || !u.isBuffer(e)) throw new TypeError("Arguments must be Buffers");
                if (t === e) return 0;
                for (var n = t.length, r = e.length, i = 0, a = Math.min(n, r); i < a; ++i)
                    if (t[i] !== e[i]) {
                        n = t[i], r = e[i];
                        break
                    } return n < r ? -1 : r < n ? 1 : 0
            }, u.isEncoding = function(t) {
                switch (String(t).toLowerCase()) {
                    case "hex":
                    case "utf8":
                    case "utf-8":
                    case "ascii":
                    case "latin1":
                    case "binary":
                    case "base64":
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                        return !0;
                    default:
                        return !1
                }
            }, u.concat = function(t, e) {
                if (!a(t)) throw new TypeError('"list" argument must be an Array of Buffers');
                if (0 === t.length) return u.alloc(0);
                var n;
                if (void 0 === e)
                    for (e = 0, n = 0; n < t.length; ++n) e += t[n].length;
                var r = u.allocUnsafe(e),
                    i = 0;
                for (n = 0; n < t.length; ++n) {
                    var o = t[n];
                    if (!u.isBuffer(o)) throw new TypeError('"list" argument must be an Array of Buffers');
                    o.copy(r, i), i += o.length
                }
                return r
            }, u.byteLength = p, u.prototype._isBuffer = !0, u.prototype.swap16 = function() {
                var t = this.length;
                if (t % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits");
                for (var e = 0; e < t; e += 2) y(this, e, e + 1);
                return this
            }, u.prototype.swap32 = function() {
                var t = this.length;
                if (t % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits");
                for (var e = 0; e < t; e += 4) y(this, e, e + 3), y(this, e + 1, e + 2);
                return this
            }, u.prototype.swap64 = function() {
                var t = this.length;
                if (t % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits");
                for (var e = 0; e < t; e += 8) y(this, e, e + 7), y(this, e + 1, e + 6), y(this, e + 2, e + 5), y(this, e + 3, e + 4);
                return this
            }, u.prototype.toString = function() {
                var t = 0 | this.length;
                return 0 === t ? "" : 0 === arguments.length ? S(this, 0, t) : g.apply(this, arguments)
            }, u.prototype.equals = function(t) {
                if (!u.isBuffer(t)) throw new TypeError("Argument must be a Buffer");
                return this === t || 0 === u.compare(this, t)
            }, u.prototype.inspect = function() {
                var t = "",
                    n = e.INSPECT_MAX_BYTES;
                return this.length > 0 && (t = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (t += " ... ")), "<Buffer " + t + ">"
            }, u.prototype.compare = function(t, e, n, r, i) {
                if (!u.isBuffer(t)) throw new TypeError("Argument must be a Buffer");
                if (void 0 === e && (e = 0), void 0 === n && (n = t ? t.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), e < 0 || n > t.length || r < 0 || i > this.length) throw new RangeError("out of range index");
                if (r >= i && e >= n) return 0;
                if (r >= i) return -1;
                if (e >= n) return 1;
                if (this === t) return 0;
                for (var a = (i >>>= 0) - (r >>>= 0), o = (n >>>= 0) - (e >>>= 0), s = Math.min(a, o), c = this.slice(r, i), f = t.slice(e, n), l = 0; l < s; ++l)
                    if (c[l] !== f[l]) {
                        a = c[l], o = f[l];
                        break
                    } return a < o ? -1 : o < a ? 1 : 0
            }, u.prototype.includes = function(t, e, n) {
                return -1 !== this.indexOf(t, e, n)
            }, u.prototype.indexOf = function(t, e, n) {
                return b(this, t, e, n, !0)
            }, u.prototype.lastIndexOf = function(t, e, n) {
                return b(this, t, e, n, !1)
            }, u.prototype.write = function(t, e, n, r) {
                if (void 0 === e) r = "utf8", n = this.length, e = 0;
                else if (void 0 === n && "string" == typeof e) r = e, n = this.length, e = 0;
                else {
                    if (!isFinite(e)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                    e |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0)
                }
                var i = this.length - e;
                if ((void 0 === n || n > i) && (n = i), t.length > 0 && (n < 0 || e < 0) || e > this.length) throw new RangeError("Attempt to write outside buffer bounds");
                r || (r = "utf8");
                for (var a = !1;;) switch (r) {
                    case "hex":
                        return m(this, t, e, n);
                    case "utf8":
                    case "utf-8":
                        return _(this, t, e, n);
                    case "ascii":
                        return w(this, t, e, n);
                    case "latin1":
                    case "binary":
                        return x(this, t, e, n);
                    case "base64":
                        return k(this, t, e, n);
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                        return E(this, t, e, n);
                    default:
                        if (a) throw new TypeError("Unknown encoding: " + r);
                        r = ("" + r).toLowerCase(), a = !0
                }
            }, u.prototype.toJSON = function() {
                return {
                    type: "Buffer",
                    data: Array.prototype.slice.call(this._arr || this, 0)
                }
            };
            var M = 4096;

            function T(t, e, n) {
                var r = "";
                n = Math.min(t.length, n);
                for (var i = e; i < n; ++i) r += String.fromCharCode(127 & t[i]);
                return r
            }

            function D(t, e, n) {
                var r = "";
                n = Math.min(t.length, n);
                for (var i = e; i < n; ++i) r += String.fromCharCode(t[i]);
                return r
            }

            function C(t, e, n) {
                var r = t.length;
                (!e || e < 0) && (e = 0), (!n || n < 0 || n > r) && (n = r);
                for (var i = "", a = e; a < n; ++a) i += j(t[a]);
                return i
            }

            function N(t, e, n) {
                for (var r = t.slice(e, n), i = "", a = 0; a < r.length; a += 2) i += String.fromCharCode(r[a] + 256 * r[a + 1]);
                return i
            }

            function I(t, e, n) {
                if (t % 1 != 0 || t < 0) throw new RangeError("offset is not uint");
                if (t + e > n) throw new RangeError("Trying to access beyond buffer length")
            }

            function L(t, e, n, r, i, a) {
                if (!u.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance');
                if (e > i || e < a) throw new RangeError('"value" argument is out of bounds');
                if (n + r > t.length) throw new RangeError("Index out of range")
            }

            function B(t, e, n, r) {
                e < 0 && (e = 65535 + e + 1);
                for (var i = 0, a = Math.min(t.length - n, 2); i < a; ++i) t[n + i] = (e & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i)
            }

            function O(t, e, n, r) {
                e < 0 && (e = 4294967295 + e + 1);
                for (var i = 0, a = Math.min(t.length - n, 4); i < a; ++i) t[n + i] = e >>> 8 * (r ? i : 3 - i) & 255
            }

            function R(t, e, n, r, i, a) {
                if (n + r > t.length) throw new RangeError("Index out of range");
                if (n < 0) throw new RangeError("Index out of range")
            }

            function P(t, e, n, r, a) {
                return a || R(t, 0, n, 4), i.write(t, e, n, r, 23, 4), n + 4
            }

            function F(t, e, n, r, a) {
                return a || R(t, 0, n, 8), i.write(t, e, n, r, 52, 8), n + 8
            }
            u.prototype.slice = function(t, e) {
                var n, r = this.length;
                if ((t = ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), (e = void 0 === e ? r : ~~e) < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), e < t && (e = t), u.TYPED_ARRAY_SUPPORT)(n = this.subarray(t, e)).__proto__ = u.prototype;
                else {
                    var i = e - t;
                    n = new u(i, void 0);
                    for (var a = 0; a < i; ++a) n[a] = this[a + t]
                }
                return n
            }, u.prototype.readUIntLE = function(t, e, n) {
                t |= 0, e |= 0, n || I(t, e, this.length);
                for (var r = this[t], i = 1, a = 0; ++a < e && (i *= 256);) r += this[t + a] * i;
                return r
            }, u.prototype.readUIntBE = function(t, e, n) {
                t |= 0, e |= 0, n || I(t, e, this.length);
                for (var r = this[t + --e], i = 1; e > 0 && (i *= 256);) r += this[t + --e] * i;
                return r
            }, u.prototype.readUInt8 = function(t, e) {
                return e || I(t, 1, this.length), this[t]
            }, u.prototype.readUInt16LE = function(t, e) {
                return e || I(t, 2, this.length), this[t] | this[t + 1] << 8
            }, u.prototype.readUInt16BE = function(t, e) {
                return e || I(t, 2, this.length), this[t] << 8 | this[t + 1]
            }, u.prototype.readUInt32LE = function(t, e) {
                return e || I(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3]
            }, u.prototype.readUInt32BE = function(t, e) {
                return e || I(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3])
            }, u.prototype.readIntLE = function(t, e, n) {
                t |= 0, e |= 0, n || I(t, e, this.length);
                for (var r = this[t], i = 1, a = 0; ++a < e && (i *= 256);) r += this[t + a] * i;
                return r >= (i *= 128) && (r -= Math.pow(2, 8 * e)), r
            }, u.prototype.readIntBE = function(t, e, n) {
                t |= 0, e |= 0, n || I(t, e, this.length);
                for (var r = e, i = 1, a = this[t + --r]; r > 0 && (i *= 256);) a += this[t + --r] * i;
                return a >= (i *= 128) && (a -= Math.pow(2, 8 * e)), a
            }, u.prototype.readInt8 = function(t, e) {
                return e || I(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t]
            }, u.prototype.readInt16LE = function(t, e) {
                e || I(t, 2, this.length);
                var n = this[t] | this[t + 1] << 8;
                return 32768 & n ? 4294901760 | n : n
            }, u.prototype.readInt16BE = function(t, e) {
                e || I(t, 2, this.length);
                var n = this[t + 1] | this[t] << 8;
                return 32768 & n ? 4294901760 | n : n
            }, u.prototype.readInt32LE = function(t, e) {
                return e || I(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24
            }, u.prototype.readInt32BE = function(t, e) {
                return e || I(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]
            }, u.prototype.readFloatLE = function(t, e) {
                return e || I(t, 4, this.length), i.read(this, t, !0, 23, 4)
            }, u.prototype.readFloatBE = function(t, e) {
                return e || I(t, 4, this.length), i.read(this, t, !1, 23, 4)
            }, u.prototype.readDoubleLE = function(t, e) {
                return e || I(t, 8, this.length), i.read(this, t, !0, 52, 8)
            }, u.prototype.readDoubleBE = function(t, e) {
                return e || I(t, 8, this.length), i.read(this, t, !1, 52, 8)
            }, u.prototype.writeUIntLE = function(t, e, n, r) {
                (t = +t, e |= 0, n |= 0, r) || L(this, t, e, n, Math.pow(2, 8 * n) - 1, 0);
                var i = 1,
                    a = 0;
                for (this[e] = 255 & t; ++a < n && (i *= 256);) this[e + a] = t / i & 255;
                return e + n
            }, u.prototype.writeUIntBE = function(t, e, n, r) {
                (t = +t, e |= 0, n |= 0, r) || L(this, t, e, n, Math.pow(2, 8 * n) - 1, 0);
                var i = n - 1,
                    a = 1;
                for (this[e + i] = 255 & t; --i >= 0 && (a *= 256);) this[e + i] = t / a & 255;
                return e + n
            }, u.prototype.writeUInt8 = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 1, 255, 0), u.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), this[e] = 255 & t, e + 1
            }, u.prototype.writeUInt16LE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 2, 65535, 0), u.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : B(this, t, e, !0), e + 2
            }, u.prototype.writeUInt16BE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 2, 65535, 0), u.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : B(this, t, e, !1), e + 2
            }, u.prototype.writeUInt32LE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 4, 4294967295, 0), u.TYPED_ARRAY_SUPPORT ? (this[e + 3] = t >>> 24, this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t) : O(this, t, e, !0), e + 4
            }, u.prototype.writeUInt32BE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 4, 4294967295, 0), u.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : O(this, t, e, !1), e + 4
            }, u.prototype.writeIntLE = function(t, e, n, r) {
                if (t = +t, e |= 0, !r) {
                    var i = Math.pow(2, 8 * n - 1);
                    L(this, t, e, n, i - 1, -i)
                }
                var a = 0,
                    o = 1,
                    s = 0;
                for (this[e] = 255 & t; ++a < n && (o *= 256);) t < 0 && 0 === s && 0 !== this[e + a - 1] && (s = 1), this[e + a] = (t / o >> 0) - s & 255;
                return e + n
            }, u.prototype.writeIntBE = function(t, e, n, r) {
                if (t = +t, e |= 0, !r) {
                    var i = Math.pow(2, 8 * n - 1);
                    L(this, t, e, n, i - 1, -i)
                }
                var a = n - 1,
                    o = 1,
                    s = 0;
                for (this[e + a] = 255 & t; --a >= 0 && (o *= 256);) t < 0 && 0 === s && 0 !== this[e + a + 1] && (s = 1), this[e + a] = (t / o >> 0) - s & 255;
                return e + n
            }, u.prototype.writeInt8 = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 1, 127, -128), u.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1
            }, u.prototype.writeInt16LE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 2, 32767, -32768), u.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : B(this, t, e, !0), e + 2
            }, u.prototype.writeInt16BE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 2, 32767, -32768), u.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : B(this, t, e, !1), e + 2
            }, u.prototype.writeInt32LE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 4, 2147483647, -2147483648), u.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24) : O(this, t, e, !0), e + 4
            }, u.prototype.writeInt32BE = function(t, e, n) {
                return t = +t, e |= 0, n || L(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), u.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : O(this, t, e, !1), e + 4
            }, u.prototype.writeFloatLE = function(t, e, n) {
                return P(this, t, e, !0, n)
            }, u.prototype.writeFloatBE = function(t, e, n) {
                return P(this, t, e, !1, n)
            }, u.prototype.writeDoubleLE = function(t, e, n) {
                return F(this, t, e, !0, n)
            }, u.prototype.writeDoubleBE = function(t, e, n) {
                return F(this, t, e, !1, n)
            }, u.prototype.copy = function(t, e, n, r) {
                if (n || (n = 0), r || 0 === r || (r = this.length), e >= t.length && (e = t.length), e || (e = 0), r > 0 && r < n && (r = n), r === n) return 0;
                if (0 === t.length || 0 === this.length) return 0;
                if (e < 0) throw new RangeError("targetStart out of bounds");
                if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds");
                if (r < 0) throw new RangeError("sourceEnd out of bounds");
                r > this.length && (r = this.length), t.length - e < r - n && (r = t.length - e + n);
                var i, a = r - n;
                if (this === t && n < e && e < r)
                    for (i = a - 1; i >= 0; --i) t[i + e] = this[i + n];
                else if (a < 1e3 || !u.TYPED_ARRAY_SUPPORT)
                    for (i = 0; i < a; ++i) t[i + e] = this[i + n];
                else Uint8Array.prototype.set.call(t, this.subarray(n, n + a), e);
                return a
            }, u.prototype.fill = function(t, e, n, r) {
                if ("string" == typeof t) {
                    if ("string" == typeof e ? (r = e, e = 0, n = this.length) : "string" == typeof n && (r = n, n = this.length), 1 === t.length) {
                        var i = t.charCodeAt(0);
                        i < 256 && (t = i)
                    }
                    if (void 0 !== r && "string" != typeof r) throw new TypeError("encoding must be a string");
                    if ("string" == typeof r && !u.isEncoding(r)) throw new TypeError("Unknown encoding: " + r)
                } else "number" == typeof t && (t &= 255);
                if (e < 0 || this.length < e || this.length < n) throw new RangeError("Out of range index");
                if (n <= e) return this;
                var a;
                if (e >>>= 0, n = void 0 === n ? this.length : n >>> 0, t || (t = 0), "number" == typeof t)
                    for (a = e; a < n; ++a) this[a] = t;
                else {
                    var o = u.isBuffer(t) ? t : U(new u(t, r).toString()),
                        s = o.length;
                    for (a = 0; a < n - e; ++a) this[a + e] = o[a % s]
                }
                return this
            };
            var q = /[^+\/0-9A-Za-z-_]/g;

            function j(t) {
                return t < 16 ? "0" + t.toString(16) : t.toString(16)
            }

            function U(t, e) {
                var n;
                e = e || 1 / 0;
                for (var r = t.length, i = null, a = [], o = 0; o < r; ++o) {
                    if ((n = t.charCodeAt(o)) > 55295 && n < 57344) {
                        if (!i) {
                            if (n > 56319) {
                                (e -= 3) > -1 && a.push(239, 191, 189);
                                continue
                            }
                            if (o + 1 === r) {
                                (e -= 3) > -1 && a.push(239, 191, 189);
                                continue
                            }
                            i = n;
                            continue
                        }
                        if (n < 56320) {
                            (e -= 3) > -1 && a.push(239, 191, 189), i = n;
                            continue
                        }
                        n = 65536 + (i - 55296 << 10 | n - 56320)
                    } else i && (e -= 3) > -1 && a.push(239, 191, 189);
                    if (i = null, n < 128) {
                        if ((e -= 1) < 0) break;
                        a.push(n)
                    } else if (n < 2048) {
                        if ((e -= 2) < 0) break;
                        a.push(n >> 6 | 192, 63 & n | 128)
                    } else if (n < 65536) {
                        if ((e -= 3) < 0) break;
                        a.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
                    } else {
                        if (!(n < 1114112)) throw new Error("Invalid code point");
                        if ((e -= 4) < 0) break;
                        a.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128)
                    }
                }
                return a
            }

            function z(t) {
                return r.toByteArray(function(t) {
                    if ((t = function(t) {
                            return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
                        }(t).replace(q, "")).length < 2) return "";
                    for (; t.length % 4 != 0;) t += "=";
                    return t
                }(t))
            }

            function Y(t, e, n, r) {
                for (var i = 0; i < r && !(i + n >= e.length || i >= t.length); ++i) e[i + n] = t[i];
                return i
            }
        }).call(this, n(12))
    }, function(t, e) {
        t.exports = function(t) {
            return t.webpackPolyfill || (t.deprecate = function() {}, t.paths = [], t.children || (t.children = []), Object.defineProperty(t, "loaded", {
                enumerable: !0,
                get: function() {
                    return t.l
                }
            }), Object.defineProperty(t, "id", {
                enumerable: !0,
                get: function() {
                    return t.i
                }
            }), t.webpackPolyfill = 1), t
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(19).Graph;

        function a(t, e, n, i) {
            var a;
            do {
                a = r.uniqueId(i)
            } while (t.hasNode(a));
            return n.dummy = e, t.setNode(a, n), a
        }

        function o(t) {
            return r.max(r.map(t.nodes(), (function(e) {
                var n = t.node(e).rank;
                if (!r.isUndefined(n)) return n
            })))
        }
        t.exports = {
            addDummyNode: a,
            simplify: function(t) {
                var e = (new i).setGraph(t.graph());
                return r.forEach(t.nodes(), (function(n) {
                    e.setNode(n, t.node(n))
                })), r.forEach(t.edges(), (function(n) {
                    var r = e.edge(n.v, n.w) || {
                            weight: 0,
                            minlen: 1
                        },
                        i = t.edge(n);
                    e.setEdge(n.v, n.w, {
                        weight: r.weight + i.weight,
                        minlen: Math.max(r.minlen, i.minlen)
                    })
                })), e
            },
            asNonCompoundGraph: function(t) {
                var e = new i({
                    multigraph: t.isMultigraph()
                }).setGraph(t.graph());
                return r.forEach(t.nodes(), (function(n) {
                    t.children(n).length || e.setNode(n, t.node(n))
                })), r.forEach(t.edges(), (function(n) {
                    e.setEdge(n, t.edge(n))
                })), e
            },
            successorWeights: function(t) {
                var e = r.map(t.nodes(), (function(e) {
                    var n = {};
                    return r.forEach(t.outEdges(e), (function(e) {
                        n[e.w] = (n[e.w] || 0) + t.edge(e).weight
                    })), n
                }));
                return r.zipObject(t.nodes(), e)
            },
            predecessorWeights: function(t) {
                var e = r.map(t.nodes(), (function(e) {
                    var n = {};
                    return r.forEach(t.inEdges(e), (function(e) {
                        n[e.v] = (n[e.v] || 0) + t.edge(e).weight
                    })), n
                }));
                return r.zipObject(t.nodes(), e)
            },
            intersectRect: function(t, e) {
                var n, r, i = t.x,
                    a = t.y,
                    o = e.x - i,
                    s = e.y - a,
                    u = t.width / 2,
                    c = t.height / 2;
                if (!o && !s) throw new Error("Not possible to find intersection inside of the rectangle");
                Math.abs(s) * u > Math.abs(o) * c ? (s < 0 && (c = -c), n = c * o / s, r = c) : (o < 0 && (u = -u), n = u, r = u * s / o);
                return {
                    x: i + n,
                    y: a + r
                }
            },
            buildLayerMatrix: function(t) {
                var e = r.map(r.range(o(t) + 1), (function() {
                    return []
                }));
                return r.forEach(t.nodes(), (function(n) {
                    var i = t.node(n),
                        a = i.rank;
                    r.isUndefined(a) || (e[a][i.order] = n)
                })), e
            },
            normalizeRanks: function(t) {
                var e = r.min(r.map(t.nodes(), (function(e) {
                    return t.node(e).rank
                })));
                r.forEach(t.nodes(), (function(n) {
                    var i = t.node(n);
                    r.has(i, "rank") && (i.rank -= e)
                }))
            },
            removeEmptyRanks: function(t) {
                var e = r.min(r.map(t.nodes(), (function(e) {
                        return t.node(e).rank
                    }))),
                    n = [];
                r.forEach(t.nodes(), (function(r) {
                    var i = t.node(r).rank - e;
                    n[i] || (n[i] = []), n[i].push(r)
                }));
                var i = 0,
                    a = t.graph().nodeRankFactor;
                r.forEach(n, (function(e, n) {
                    r.isUndefined(e) && n % a != 0 ? --i : i && r.forEach(e, (function(e) {
                        t.node(e).rank += i
                    }))
                }))
            },
            addBorderNode: function(t, e, n, r) {
                var i = {
                    width: 0,
                    height: 0
                };
                arguments.length >= 4 && (i.rank = n, i.order = r);
                return a(t, "border", i, e)
            },
            maxRank: o,
            partition: function(t, e) {
                var n = {
                    lhs: [],
                    rhs: []
                };
                return r.forEach(t, (function(t) {
                    e(t) ? n.lhs.push(t) : n.rhs.push(t)
                })), n
            },
            time: function(t, e) {
                var n = r.now();
                try {
                    return e()
                } finally {
                    console.log(t + " time: " + (r.now() - n) + "ms")
                }
            },
            notime: function(t, e) {
                return e()
            }
        }
    }, function(t, e, n) {
        /**
         * @license
         * Copyright (c) 2012-2013 Chris Pettitt
         *
         * Permission is hereby granted, free of charge, to any person obtaining a copy
         * of this software and associated documentation files (the "Software"), to deal
         * in the Software without restriction, including without limitation the rights
         * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         * copies of the Software, and to permit persons to whom the Software is
         * furnished to do so, subject to the following conditions:
         *
         * The above copyright notice and this permission notice shall be included in
         * all copies or substantial portions of the Software.
         *
         * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
         * THE SOFTWARE.
         */
        t.exports = {
            graphlib: n(348),
            dagre: n(175),
            intersect: n(405),
            render: n(407),
            util: n(15),
            version: n(419)
        }
    }, function(t, e) {
        var n;
        n = function() {
            return this
        }();
        try {
            n = n || new Function("return this")()
        } catch (t) {
            "object" == typeof window && (n = window)
        }
        t.exports = n
    }, function(t, e, n) {
        var r;
        try {
            r = {
                clone: n(237),
                constant: n(99),
                each: n(100),
                filter: n(150),
                has: n(106),
                isArray: n(6),
                isEmpty: n(313),
                isFunction: n(37),
                isUndefined: n(161),
                keys: n(27),
                map: n(162),
                reduce: n(164),
                size: n(316),
                transform: n(322),
                union: n(323),
                values: n(169)
            }
        } catch (t) {}
        r || (r = window._), t.exports = r
    }, function(t, e) {
        t.exports = function(t) {
            var e = typeof t;
            return null != t && ("object" == e || "function" == e)
        }
    }, function(t, e, n) {
        var r = n(43);
        t.exports = {
            isSubgraph: function(t, e) {
                return !!t.children(e).length
            },
            edgeToId: function(t) {
                return a(t.v) + ":" + a(t.w) + ":" + a(t.name)
            },
            applyStyle: function(t, e) {
                e && t.attr("style", e)
            },
            applyClass: function(t, e, n) {
                e && t.attr("class", e).attr("class", n + " " + t.attr("class"))
            },
            applyTransition: function(t, e) {
                var n = e.graph();
                if (r.isPlainObject(n)) {
                    var i = n.transition;
                    if (r.isFunction(i)) return i(t)
                }
                return t
            }
        };
        var i = /:/g;

        function a(t) {
            return t ? String(t).replace(i, "\\:") : ""
        }
    }, function(t, e) {
        function n(t, e) {
            if (!t) throw new Error(e || "Assertion failed")
        }
        t.exports = n, n.equal = function(t, e, n) {
            if (t != e) throw new Error(n || "Assertion failed: " + t + " != " + e)
        }
    }, function(t, e, n) {
        "use strict";
        var r = e,
            i = n(5),
            a = n(16),
            o = n(215);
        r.assert = a, r.toArray = o.toArray, r.zero2 = o.zero2, r.toHex = o.toHex, r.encode = o.encode, r.getNAF = function(t, e, n) {
            var r = new Array(Math.max(t.bitLength(), n) + 1);
            r.fill(0);
            for (var i = 1 << e + 1, a = t.clone(), o = 0; o < r.length; o++) {
                var s, u = a.andln(i - 1);
                a.isOdd() ? (s = u > (i >> 1) - 1 ? (i >> 1) - u : u, a.isubn(s)) : s = 0, r[o] = s, a.iushrn(1)
            }
            return r
        }, r.getJSF = function(t, e) {
            var n = [
                [],
                []
            ];
            t = t.clone(), e = e.clone();
            for (var r = 0, i = 0; t.cmpn(-r) > 0 || e.cmpn(-i) > 0;) {
                var a, o, s, u = t.andln(3) + r & 3,
                    c = e.andln(3) + i & 3;
                if (3 === u && (u = -1), 3 === c && (c = -1), 0 == (1 & u)) a = 0;
                else a = 3 !== (s = t.andln(7) + r & 7) && 5 !== s || 2 !== c ? u : -u;
                if (n[0].push(a), 0 == (1 & c)) o = 0;
                else o = 3 !== (s = e.andln(7) + i & 7) && 5 !== s || 2 !== u ? c : -c;
                n[1].push(o), 2 * r === a + 1 && (r = 1 - r), 2 * i === o + 1 && (i = 1 - i), t.iushrn(1), e.iushrn(1)
            }
            return n
        }, r.cachedProperty = function(t, e, n) {
            var r = "_" + e;
            t.prototype[e] = function() {
                return void 0 !== this[r] ? this[r] : this[r] = n.call(this)
            }
        }, r.parseBytes = function(t) {
            return "string" == typeof t ? r.toArray(t, "hex") : t
        }, r.intFromLE = function(t) {
            return new i(t, "hex", "le")
        }
    }, function(t, e, n) {
        var r = n(131),
            i = "object" == typeof self && self && self.Object === Object && self,
            a = r || i || Function("return this")();
        t.exports = a
    }, function(t, e, n) {
        var r;
        try {
            r = n(25)
        } catch (t) {}
        r || (r = window.graphlib), t.exports = r
    }, function(t, e) {
        t.exports = function(t) {
            return null != t && "object" == typeof t
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(16),
            i = n(2);

        function a(t, e) {
            return 55296 == (64512 & t.charCodeAt(e)) && (!(e < 0 || e + 1 >= t.length) && 56320 == (64512 & t.charCodeAt(e + 1)))
        }

        function o(t) {
            return (t >>> 24 | t >>> 8 & 65280 | t << 8 & 16711680 | (255 & t) << 24) >>> 0
        }

        function s(t) {
            return 1 === t.length ? "0" + t : t
        }

        function u(t) {
            return 7 === t.length ? "0" + t : 6 === t.length ? "00" + t : 5 === t.length ? "000" + t : 4 === t.length ? "0000" + t : 3 === t.length ? "00000" + t : 2 === t.length ? "000000" + t : 1 === t.length ? "0000000" + t : t
        }
        e.inherits = i, e.toArray = function(t, e) {
            if (Array.isArray(t)) return t.slice();
            if (!t) return [];
            var n = [];
            if ("string" == typeof t)
                if (e) {
                    if ("hex" === e)
                        for ((t = t.replace(/[^a-z0-9]+/gi, "")).length % 2 != 0 && (t = "0" + t), i = 0; i < t.length; i += 2) n.push(parseInt(t[i] + t[i + 1], 16))
                } else
                    for (var r = 0, i = 0; i < t.length; i++) {
                        var o = t.charCodeAt(i);
                        o < 128 ? n[r++] = o : o < 2048 ? (n[r++] = o >> 6 | 192, n[r++] = 63 & o | 128) : a(t, i) ? (o = 65536 + ((1023 & o) << 10) + (1023 & t.charCodeAt(++i)), n[r++] = o >> 18 | 240, n[r++] = o >> 12 & 63 | 128, n[r++] = o >> 6 & 63 | 128, n[r++] = 63 & o | 128) : (n[r++] = o >> 12 | 224, n[r++] = o >> 6 & 63 | 128, n[r++] = 63 & o | 128)
                    } else
                        for (i = 0; i < t.length; i++) n[i] = 0 | t[i];
            return n
        }, e.toHex = function(t) {
            for (var e = "", n = 0; n < t.length; n++) e += s(t[n].toString(16));
            return e
        }, e.htonl = o, e.toHex32 = function(t, e) {
            for (var n = "", r = 0; r < t.length; r++) {
                var i = t[r];
                "little" === e && (i = o(i)), n += u(i.toString(16))
            }
            return n
        }, e.zero2 = s, e.zero8 = u, e.join32 = function(t, e, n, i) {
            var a = n - e;
            r(a % 4 == 0);
            for (var o = new Array(a / 4), s = 0, u = e; s < o.length; s++, u += 4) {
                var c;
                c = "big" === i ? t[u] << 24 | t[u + 1] << 16 | t[u + 2] << 8 | t[u + 3] : t[u + 3] << 24 | t[u + 2] << 16 | t[u + 1] << 8 | t[u], o[s] = c >>> 0
            }
            return o
        }, e.split32 = function(t, e) {
            for (var n = new Array(4 * t.length), r = 0, i = 0; r < t.length; r++, i += 4) {
                var a = t[r];
                "big" === e ? (n[i] = a >>> 24, n[i + 1] = a >>> 16 & 255, n[i + 2] = a >>> 8 & 255, n[i + 3] = 255 & a) : (n[i + 3] = a >>> 24, n[i + 2] = a >>> 16 & 255, n[i + 1] = a >>> 8 & 255, n[i] = 255 & a)
            }
            return n
        }, e.rotr32 = function(t, e) {
            return t >>> e | t << 32 - e
        }, e.rotl32 = function(t, e) {
            return t << e | t >>> 32 - e
        }, e.sum32 = function(t, e) {
            return t + e >>> 0
        }, e.sum32_3 = function(t, e, n) {
            return t + e + n >>> 0
        }, e.sum32_4 = function(t, e, n, r) {
            return t + e + n + r >>> 0
        }, e.sum32_5 = function(t, e, n, r, i) {
            return t + e + n + r + i >>> 0
        }, e.sum64 = function(t, e, n, r) {
            var i = t[e],
                a = r + t[e + 1] >>> 0,
                o = (a < r ? 1 : 0) + n + i;
            t[e] = o >>> 0, t[e + 1] = a
        }, e.sum64_hi = function(t, e, n, r) {
            return (e + r >>> 0 < e ? 1 : 0) + t + n >>> 0
        }, e.sum64_lo = function(t, e, n, r) {
            return e + r >>> 0
        }, e.sum64_4_hi = function(t, e, n, r, i, a, o, s) {
            var u = 0,
                c = e;
            return u += (c = c + r >>> 0) < e ? 1 : 0, u += (c = c + a >>> 0) < a ? 1 : 0, t + n + i + o + (u += (c = c + s >>> 0) < s ? 1 : 0) >>> 0
        }, e.sum64_4_lo = function(t, e, n, r, i, a, o, s) {
            return e + r + a + s >>> 0
        }, e.sum64_5_hi = function(t, e, n, r, i, a, o, s, u, c) {
            var f = 0,
                l = e;
            return f += (l = l + r >>> 0) < e ? 1 : 0, f += (l = l + a >>> 0) < a ? 1 : 0, f += (l = l + s >>> 0) < s ? 1 : 0, t + n + i + o + u + (f += (l = l + c >>> 0) < c ? 1 : 0) >>> 0
        }, e.sum64_5_lo = function(t, e, n, r, i, a, o, s, u, c) {
            return e + r + a + s + c >>> 0
        }, e.rotr64_hi = function(t, e, n) {
            return (e << 32 - n | t >>> n) >>> 0
        }, e.rotr64_lo = function(t, e, n) {
            return (t << 32 - n | e >>> n) >>> 0
        }, e.shr64_hi = function(t, e, n) {
            return t >>> n
        }, e.shr64_lo = function(t, e, n) {
            return (t << 32 - n | e >>> n) >>> 0
        }
    }, function(t, e, n) {
        (function(t) {
            t.exports = function() {
                "use strict";
                var e, r;

                function i() {
                    return e.apply(null, arguments)
                }

                function a(t) {
                    return t instanceof Array || "[object Array]" === Object.prototype.toString.call(t)
                }

                function o(t) {
                    return null != t && "[object Object]" === Object.prototype.toString.call(t)
                }

                function s(t) {
                    return void 0 === t
                }

                function u(t) {
                    return "number" == typeof t || "[object Number]" === Object.prototype.toString.call(t)
                }

                function c(t) {
                    return t instanceof Date || "[object Date]" === Object.prototype.toString.call(t)
                }

                function f(t, e) {
                    var n, r = [];
                    for (n = 0; n < t.length; ++n) r.push(e(t[n], n));
                    return r
                }

                function l(t, e) {
                    return Object.prototype.hasOwnProperty.call(t, e)
                }

                function h(t, e) {
                    for (var n in e) l(e, n) && (t[n] = e[n]);
                    return l(e, "toString") && (t.toString = e.toString), l(e, "valueOf") && (t.valueOf = e.valueOf), t
                }

                function d(t, e, n, r) {
                    return Me(t, e, n, r, !0).utc()
                }

                function p(t) {
                    return null == t._pf && (t._pf = {
                        empty: !1,
                        unusedTokens: [],
                        unusedInput: [],
                        overflow: -2,
                        charsLeftOver: 0,
                        nullInput: !1,
                        invalidMonth: null,
                        invalidFormat: !1,
                        userInvalidated: !1,
                        iso: !1,
                        parsedDateParts: [],
                        meridiem: null,
                        rfc2822: !1,
                        weekdayMismatch: !1
                    }), t._pf
                }

                function g(t) {
                    if (null == t._isValid) {
                        var e = p(t),
                            n = r.call(e.parsedDateParts, (function(t) {
                                return null != t
                            })),
                            i = !isNaN(t._d.getTime()) && e.overflow < 0 && !e.empty && !e.invalidMonth && !e.invalidWeekday && !e.weekdayMismatch && !e.nullInput && !e.invalidFormat && !e.userInvalidated && (!e.meridiem || e.meridiem && n);
                        if (t._strict && (i = i && 0 === e.charsLeftOver && 0 === e.unusedTokens.length && void 0 === e.bigHour), null != Object.isFrozen && Object.isFrozen(t)) return i;
                        t._isValid = i
                    }
                    return t._isValid
                }

                function y(t) {
                    var e = d(NaN);
                    return null != t ? h(p(e), t) : p(e).userInvalidated = !0, e
                }
                r = Array.prototype.some ? Array.prototype.some : function(t) {
                    for (var e = Object(this), n = e.length >>> 0, r = 0; r < n; r++)
                        if (r in e && t.call(this, e[r], r, e)) return !0;
                    return !1
                };
                var b = i.momentProperties = [];

                function v(t, e) {
                    var n, r, i;
                    if (s(e._isAMomentObject) || (t._isAMomentObject = e._isAMomentObject), s(e._i) || (t._i = e._i), s(e._f) || (t._f = e._f), s(e._l) || (t._l = e._l), s(e._strict) || (t._strict = e._strict), s(e._tzm) || (t._tzm = e._tzm), s(e._isUTC) || (t._isUTC = e._isUTC), s(e._offset) || (t._offset = e._offset), s(e._pf) || (t._pf = p(e)), s(e._locale) || (t._locale = e._locale), 0 < b.length)
                        for (n = 0; n < b.length; n++) s(i = e[r = b[n]]) || (t[r] = i);
                    return t
                }
                var m = !1;

                function _(t) {
                    v(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === m && (m = !0, i.updateOffset(this), m = !1)
                }

                function w(t) {
                    return t instanceof _ || null != t && null != t._isAMomentObject
                }

                function x(t) {
                    return t < 0 ? Math.ceil(t) || 0 : Math.floor(t)
                }

                function k(t) {
                    var e = +t,
                        n = 0;
                    return 0 !== e && isFinite(e) && (n = x(e)), n
                }

                function E(t, e, n) {
                    var r, i = Math.min(t.length, e.length),
                        a = Math.abs(t.length - e.length),
                        o = 0;
                    for (r = 0; r < i; r++)(n && t[r] !== e[r] || !n && k(t[r]) !== k(e[r])) && o++;
                    return o + a
                }

                function A(t) {
                    !1 === i.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t)
                }

                function S(t, e) {
                    var n = !0;
                    return h((function() {
                        if (null != i.deprecationHandler && i.deprecationHandler(null, t), n) {
                            for (var r, a = [], o = 0; o < arguments.length; o++) {
                                if (r = "", "object" == typeof arguments[o]) {
                                    for (var s in r += "\n[" + o + "] ", arguments[0]) r += s + ": " + arguments[0][s] + ", ";
                                    r = r.slice(0, -2)
                                } else r = arguments[o];
                                a.push(r)
                            }
                            A(t + "\nArguments: " + Array.prototype.slice.call(a).join("") + "\n" + (new Error).stack), n = !1
                        }
                        return e.apply(this, arguments)
                    }), e)
                }
                var M, T = {};

                function D(t, e) {
                    null != i.deprecationHandler && i.deprecationHandler(t, e), T[t] || (A(e), T[t] = !0)
                }

                function C(t) {
                    return t instanceof Function || "[object Function]" === Object.prototype.toString.call(t)
                }

                function N(t, e) {
                    var n, r = h({}, t);
                    for (n in e) l(e, n) && (o(t[n]) && o(e[n]) ? (r[n] = {}, h(r[n], t[n]), h(r[n], e[n])) : null != e[n] ? r[n] = e[n] : delete r[n]);
                    for (n in t) l(t, n) && !l(e, n) && o(t[n]) && (r[n] = h({}, r[n]));
                    return r
                }

                function I(t) {
                    null != t && this.set(t)
                }
                i.suppressDeprecationWarnings = !1, i.deprecationHandler = null, M = Object.keys ? Object.keys : function(t) {
                    var e, n = [];
                    for (e in t) l(t, e) && n.push(e);
                    return n
                };
                var L = {};

                function B(t, e) {
                    var n = t.toLowerCase();
                    L[n] = L[n + "s"] = L[e] = t
                }

                function O(t) {
                    return "string" == typeof t ? L[t] || L[t.toLowerCase()] : void 0
                }

                function R(t) {
                    var e, n, r = {};
                    for (n in t) l(t, n) && (e = O(n)) && (r[e] = t[n]);
                    return r
                }
                var P = {};

                function F(t, e) {
                    P[t] = e
                }

                function q(t, e, n) {
                    var r = "" + Math.abs(t),
                        i = e - r.length;
                    return (0 <= t ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
                }
                var j = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
                    U = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
                    z = {},
                    Y = {};

                function V(t, e, n, r) {
                    var i = r;
                    "string" == typeof r && (i = function() {
                        return this[r]()
                    }), t && (Y[t] = i), e && (Y[e[0]] = function() {
                        return q(i.apply(this, arguments), e[1], e[2])
                    }), n && (Y[n] = function() {
                        return this.localeData().ordinal(i.apply(this, arguments), t)
                    })
                }

                function H(t, e) {
                    return t.isValid() ? (e = G(e, t.localeData()), z[e] = z[e] || function(t) {
                        var e, n, r, i = t.match(j);
                        for (e = 0, n = i.length; e < n; e++) Y[i[e]] ? i[e] = Y[i[e]] : i[e] = (r = i[e]).match(/\[[\s\S]/) ? r.replace(/^\[|\]$/g, "") : r.replace(/\\/g, "");
                        return function(e) {
                            var r, a = "";
                            for (r = 0; r < n; r++) a += C(i[r]) ? i[r].call(e, t) : i[r];
                            return a
                        }
                    }(e), z[e](t)) : t.localeData().invalidDate()
                }

                function G(t, e) {
                    var n = 5;

                    function r(t) {
                        return e.longDateFormat(t) || t
                    }
                    for (U.lastIndex = 0; 0 <= n && U.test(t);) t = t.replace(U, r), U.lastIndex = 0, n -= 1;
                    return t
                }
                var $ = /\d/,
                    W = /\d\d/,
                    K = /\d{3}/,
                    X = /\d{4}/,
                    Z = /[+-]?\d{6}/,
                    J = /\d\d?/,
                    Q = /\d\d\d\d?/,
                    tt = /\d\d\d\d\d\d?/,
                    et = /\d{1,3}/,
                    nt = /\d{1,4}/,
                    rt = /[+-]?\d{1,6}/,
                    it = /\d+/,
                    at = /[+-]?\d+/,
                    ot = /Z|[+-]\d\d:?\d\d/gi,
                    st = /Z|[+-]\d\d(?::?\d\d)?/gi,
                    ut = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
                    ct = {};

                function ft(t, e, n) {
                    ct[t] = C(e) ? e : function(t, r) {
                        return t && n ? n : e
                    }
                }

                function lt(t, e) {
                    return l(ct, t) ? ct[t](e._strict, e._locale) : new RegExp(ht(t.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (function(t, e, n, r, i) {
                        return e || n || r || i
                    }))))
                }

                function ht(t) {
                    return t.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
                }
                var dt = {};

                function pt(t, e) {
                    var n, r = e;
                    for ("string" == typeof t && (t = [t]), u(e) && (r = function(t, n) {
                            n[e] = k(t)
                        }), n = 0; n < t.length; n++) dt[t[n]] = r
                }

                function gt(t, e) {
                    pt(t, (function(t, n, r, i) {
                        r._w = r._w || {}, e(t, r._w, r, i)
                    }))
                }
                var yt = 0,
                    bt = 1,
                    vt = 2,
                    mt = 3,
                    _t = 4,
                    wt = 5,
                    xt = 6,
                    kt = 7,
                    Et = 8;

                function At(t) {
                    return St(t) ? 366 : 365
                }

                function St(t) {
                    return t % 4 == 0 && t % 100 != 0 || t % 400 == 0
                }
                V("Y", 0, 0, (function() {
                    var t = this.year();
                    return t <= 9999 ? "" + t : "+" + t
                })), V(0, ["YY", 2], 0, (function() {
                    return this.year() % 100
                })), V(0, ["YYYY", 4], 0, "year"), V(0, ["YYYYY", 5], 0, "year"), V(0, ["YYYYYY", 6, !0], 0, "year"), B("year", "y"), F("year", 1), ft("Y", at), ft("YY", J, W), ft("YYYY", nt, X), ft("YYYYY", rt, Z), ft("YYYYYY", rt, Z), pt(["YYYYY", "YYYYYY"], yt), pt("YYYY", (function(t, e) {
                    e[yt] = 2 === t.length ? i.parseTwoDigitYear(t) : k(t)
                })), pt("YY", (function(t, e) {
                    e[yt] = i.parseTwoDigitYear(t)
                })), pt("Y", (function(t, e) {
                    e[yt] = parseInt(t, 10)
                })), i.parseTwoDigitYear = function(t) {
                    return k(t) + (68 < k(t) ? 1900 : 2e3)
                };
                var Mt, Tt = Dt("FullYear", !0);

                function Dt(t, e) {
                    return function(n) {
                        return null != n ? (Nt(this, t, n), i.updateOffset(this, e), this) : Ct(this, t)
                    }
                }

                function Ct(t, e) {
                    return t.isValid() ? t._d["get" + (t._isUTC ? "UTC" : "") + e]() : NaN
                }

                function Nt(t, e, n) {
                    t.isValid() && !isNaN(n) && ("FullYear" === e && St(t.year()) && 1 === t.month() && 29 === t.date() ? t._d["set" + (t._isUTC ? "UTC" : "") + e](n, t.month(), It(n, t.month())) : t._d["set" + (t._isUTC ? "UTC" : "") + e](n))
                }

                function It(t, e) {
                    if (isNaN(t) || isNaN(e)) return NaN;
                    var n = (e % 12 + 12) % 12;
                    return t += (e - n) / 12, 1 === n ? St(t) ? 29 : 28 : 31 - n % 7 % 2
                }
                Mt = Array.prototype.indexOf ? Array.prototype.indexOf : function(t) {
                    var e;
                    for (e = 0; e < this.length; ++e)
                        if (this[e] === t) return e;
                    return -1
                }, V("M", ["MM", 2], "Mo", (function() {
                    return this.month() + 1
                })), V("MMM", 0, 0, (function(t) {
                    return this.localeData().monthsShort(this, t)
                })), V("MMMM", 0, 0, (function(t) {
                    return this.localeData().months(this, t)
                })), B("month", "M"), F("month", 8), ft("M", J), ft("MM", J, W), ft("MMM", (function(t, e) {
                    return e.monthsShortRegex(t)
                })), ft("MMMM", (function(t, e) {
                    return e.monthsRegex(t)
                })), pt(["M", "MM"], (function(t, e) {
                    e[bt] = k(t) - 1
                })), pt(["MMM", "MMMM"], (function(t, e, n, r) {
                    var i = n._locale.monthsParse(t, r, n._strict);
                    null != i ? e[bt] = i : p(n).invalidMonth = t
                }));
                var Lt = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
                    Bt = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
                    Ot = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");

                function Rt(t, e) {
                    var n;
                    if (!t.isValid()) return t;
                    if ("string" == typeof e)
                        if (/^\d+$/.test(e)) e = k(e);
                        else if (!u(e = t.localeData().monthsParse(e))) return t;
                    return n = Math.min(t.date(), It(t.year(), e)), t._d["set" + (t._isUTC ? "UTC" : "") + "Month"](e, n), t
                }

                function Pt(t) {
                    return null != t ? (Rt(this, t), i.updateOffset(this, !0), this) : Ct(this, "Month")
                }
                var Ft = ut,
                    qt = ut;

                function jt() {
                    function t(t, e) {
                        return e.length - t.length
                    }
                    var e, n, r = [],
                        i = [],
                        a = [];
                    for (e = 0; e < 12; e++) n = d([2e3, e]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), a.push(this.months(n, "")), a.push(this.monthsShort(n, ""));
                    for (r.sort(t), i.sort(t), a.sort(t), e = 0; e < 12; e++) r[e] = ht(r[e]), i[e] = ht(i[e]);
                    for (e = 0; e < 24; e++) a[e] = ht(a[e]);
                    this._monthsRegex = new RegExp("^(" + a.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + r.join("|") + ")", "i")
                }

                function Ut(t) {
                    var e = new Date(Date.UTC.apply(null, arguments));
                    return t < 100 && 0 <= t && isFinite(e.getUTCFullYear()) && e.setUTCFullYear(t), e
                }

                function zt(t, e, n) {
                    var r = 7 + e - n;
                    return -(7 + Ut(t, 0, r).getUTCDay() - e) % 7 + r - 1
                }

                function Yt(t, e, n, r, i) {
                    var a, o, s = 1 + 7 * (e - 1) + (7 + n - r) % 7 + zt(t, r, i);
                    return s <= 0 ? o = At(a = t - 1) + s : s > At(t) ? (a = t + 1, o = s - At(t)) : (a = t, o = s), {
                        year: a,
                        dayOfYear: o
                    }
                }

                function Vt(t, e, n) {
                    var r, i, a = zt(t.year(), e, n),
                        o = Math.floor((t.dayOfYear() - a - 1) / 7) + 1;
                    return o < 1 ? r = o + Ht(i = t.year() - 1, e, n) : o > Ht(t.year(), e, n) ? (r = o - Ht(t.year(), e, n), i = t.year() + 1) : (i = t.year(), r = o), {
                        week: r,
                        year: i
                    }
                }

                function Ht(t, e, n) {
                    var r = zt(t, e, n),
                        i = zt(t + 1, e, n);
                    return (At(t) - r + i) / 7
                }
                V("w", ["ww", 2], "wo", "week"), V("W", ["WW", 2], "Wo", "isoWeek"), B("week", "w"), B("isoWeek", "W"), F("week", 5), F("isoWeek", 5), ft("w", J), ft("ww", J, W), ft("W", J), ft("WW", J, W), gt(["w", "ww", "W", "WW"], (function(t, e, n, r) {
                    e[r.substr(0, 1)] = k(t)
                })), V("d", 0, "do", "day"), V("dd", 0, 0, (function(t) {
                    return this.localeData().weekdaysMin(this, t)
                })), V("ddd", 0, 0, (function(t) {
                    return this.localeData().weekdaysShort(this, t)
                })), V("dddd", 0, 0, (function(t) {
                    return this.localeData().weekdays(this, t)
                })), V("e", 0, 0, "weekday"), V("E", 0, 0, "isoWeekday"), B("day", "d"), B("weekday", "e"), B("isoWeekday", "E"), F("day", 11), F("weekday", 11), F("isoWeekday", 11), ft("d", J), ft("e", J), ft("E", J), ft("dd", (function(t, e) {
                    return e.weekdaysMinRegex(t)
                })), ft("ddd", (function(t, e) {
                    return e.weekdaysShortRegex(t)
                })), ft("dddd", (function(t, e) {
                    return e.weekdaysRegex(t)
                })), gt(["dd", "ddd", "dddd"], (function(t, e, n, r) {
                    var i = n._locale.weekdaysParse(t, r, n._strict);
                    null != i ? e.d = i : p(n).invalidWeekday = t
                })), gt(["d", "e", "E"], (function(t, e, n, r) {
                    e[r] = k(t)
                }));
                var Gt = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
                    $t = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
                    Wt = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
                    Kt = ut,
                    Xt = ut,
                    Zt = ut;

                function Jt() {
                    function t(t, e) {
                        return e.length - t.length
                    }
                    var e, n, r, i, a, o = [],
                        s = [],
                        u = [],
                        c = [];
                    for (e = 0; e < 7; e++) n = d([2e3, 1]).day(e), r = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), a = this.weekdays(n, ""), o.push(r), s.push(i), u.push(a), c.push(r), c.push(i), c.push(a);
                    for (o.sort(t), s.sort(t), u.sort(t), c.sort(t), e = 0; e < 7; e++) s[e] = ht(s[e]), u[e] = ht(u[e]), c[e] = ht(c[e]);
                    this._weekdaysRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + u.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + o.join("|") + ")", "i")
                }

                function Qt() {
                    return this.hours() % 12 || 12
                }

                function te(t, e) {
                    V(t, 0, 0, (function() {
                        return this.localeData().meridiem(this.hours(), this.minutes(), e)
                    }))
                }

                function ee(t, e) {
                    return e._meridiemParse
                }
                V("H", ["HH", 2], 0, "hour"), V("h", ["hh", 2], 0, Qt), V("k", ["kk", 2], 0, (function() {
                    return this.hours() || 24
                })), V("hmm", 0, 0, (function() {
                    return "" + Qt.apply(this) + q(this.minutes(), 2)
                })), V("hmmss", 0, 0, (function() {
                    return "" + Qt.apply(this) + q(this.minutes(), 2) + q(this.seconds(), 2)
                })), V("Hmm", 0, 0, (function() {
                    return "" + this.hours() + q(this.minutes(), 2)
                })), V("Hmmss", 0, 0, (function() {
                    return "" + this.hours() + q(this.minutes(), 2) + q(this.seconds(), 2)
                })), te("a", !0), te("A", !1), B("hour", "h"), F("hour", 13), ft("a", ee), ft("A", ee), ft("H", J), ft("h", J), ft("k", J), ft("HH", J, W), ft("hh", J, W), ft("kk", J, W), ft("hmm", Q), ft("hmmss", tt), ft("Hmm", Q), ft("Hmmss", tt), pt(["H", "HH"], mt), pt(["k", "kk"], (function(t, e, n) {
                    var r = k(t);
                    e[mt] = 24 === r ? 0 : r
                })), pt(["a", "A"], (function(t, e, n) {
                    n._isPm = n._locale.isPM(t), n._meridiem = t
                })), pt(["h", "hh"], (function(t, e, n) {
                    e[mt] = k(t), p(n).bigHour = !0
                })), pt("hmm", (function(t, e, n) {
                    var r = t.length - 2;
                    e[mt] = k(t.substr(0, r)), e[_t] = k(t.substr(r)), p(n).bigHour = !0
                })), pt("hmmss", (function(t, e, n) {
                    var r = t.length - 4,
                        i = t.length - 2;
                    e[mt] = k(t.substr(0, r)), e[_t] = k(t.substr(r, 2)), e[wt] = k(t.substr(i)), p(n).bigHour = !0
                })), pt("Hmm", (function(t, e, n) {
                    var r = t.length - 2;
                    e[mt] = k(t.substr(0, r)), e[_t] = k(t.substr(r))
                })), pt("Hmmss", (function(t, e, n) {
                    var r = t.length - 4,
                        i = t.length - 2;
                    e[mt] = k(t.substr(0, r)), e[_t] = k(t.substr(r, 2)), e[wt] = k(t.substr(i))
                }));
                var ne, re = Dt("Hours", !0),
                    ie = {
                        calendar: {
                            sameDay: "[Today at] LT",
                            nextDay: "[Tomorrow at] LT",
                            nextWeek: "dddd [at] LT",
                            lastDay: "[Yesterday at] LT",
                            lastWeek: "[Last] dddd [at] LT",
                            sameElse: "L"
                        },
                        longDateFormat: {
                            LTS: "h:mm:ss A",
                            LT: "h:mm A",
                            L: "MM/DD/YYYY",
                            LL: "MMMM D, YYYY",
                            LLL: "MMMM D, YYYY h:mm A",
                            LLLL: "dddd, MMMM D, YYYY h:mm A"
                        },
                        invalidDate: "Invalid date",
                        ordinal: "%d",
                        dayOfMonthOrdinalParse: /\d{1,2}/,
                        relativeTime: {
                            future: "in %s",
                            past: "%s ago",
                            s: "a few seconds",
                            ss: "%d seconds",
                            m: "a minute",
                            mm: "%d minutes",
                            h: "an hour",
                            hh: "%d hours",
                            d: "a day",
                            dd: "%d days",
                            M: "a month",
                            MM: "%d months",
                            y: "a year",
                            yy: "%d years"
                        },
                        months: Bt,
                        monthsShort: Ot,
                        week: {
                            dow: 0,
                            doy: 6
                        },
                        weekdays: Gt,
                        weekdaysMin: Wt,
                        weekdaysShort: $t,
                        meridiemParse: /[ap]\.?m?\.?/i
                    },
                    ae = {},
                    oe = {};

                function se(t) {
                    return t ? t.toLowerCase().replace("_", "-") : t
                }

                function ue(e) {
                    var r = null;
                    if (!ae[e] && void 0 !== t && t && t.exports) try {
                        r = ne._abbr, n(235)("./" + e), ce(r)
                    } catch (e) {}
                    return ae[e]
                }

                function ce(t, e) {
                    var n;
                    return t && ((n = s(e) ? le(t) : fe(t, e)) ? ne = n : "undefined" != typeof console && console.warn && console.warn("Locale " + t + " not found. Did you forget to load it?")), ne._abbr
                }

                function fe(t, e) {
                    if (null !== e) {
                        var n, r = ie;
                        if (e.abbr = t, null != ae[t]) D("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), r = ae[t]._config;
                        else if (null != e.parentLocale)
                            if (null != ae[e.parentLocale]) r = ae[e.parentLocale]._config;
                            else {
                                if (null == (n = ue(e.parentLocale))) return oe[e.parentLocale] || (oe[e.parentLocale] = []), oe[e.parentLocale].push({
                                    name: t,
                                    config: e
                                }), null;
                                r = n._config
                            } return ae[t] = new I(N(r, e)), oe[t] && oe[t].forEach((function(t) {
                            fe(t.name, t.config)
                        })), ce(t), ae[t]
                    }
                    return delete ae[t], null
                }

                function le(t) {
                    var e;
                    if (t && t._locale && t._locale._abbr && (t = t._locale._abbr), !t) return ne;
                    if (!a(t)) {
                        if (e = ue(t)) return e;
                        t = [t]
                    }
                    return function(t) {
                        for (var e, n, r, i, a = 0; a < t.length;) {
                            for (e = (i = se(t[a]).split("-")).length, n = (n = se(t[a + 1])) ? n.split("-") : null; 0 < e;) {
                                if (r = ue(i.slice(0, e).join("-"))) return r;
                                if (n && n.length >= e && E(i, n, !0) >= e - 1) break;
                                e--
                            }
                            a++
                        }
                        return ne
                    }(t)
                }

                function he(t) {
                    var e, n = t._a;
                    return n && -2 === p(t).overflow && (e = n[bt] < 0 || 11 < n[bt] ? bt : n[vt] < 1 || n[vt] > It(n[yt], n[bt]) ? vt : n[mt] < 0 || 24 < n[mt] || 24 === n[mt] && (0 !== n[_t] || 0 !== n[wt] || 0 !== n[xt]) ? mt : n[_t] < 0 || 59 < n[_t] ? _t : n[wt] < 0 || 59 < n[wt] ? wt : n[xt] < 0 || 999 < n[xt] ? xt : -1, p(t)._overflowDayOfYear && (e < yt || vt < e) && (e = vt), p(t)._overflowWeeks && -1 === e && (e = kt), p(t)._overflowWeekday && -1 === e && (e = Et), p(t).overflow = e), t
                }

                function de(t, e, n) {
                    return null != t ? t : null != e ? e : n
                }

                function pe(t) {
                    var e, n, r, a, o, s = [];
                    if (!t._d) {
                        var u, c;
                        for (u = t, c = new Date(i.now()), r = u._useUTC ? [c.getUTCFullYear(), c.getUTCMonth(), c.getUTCDate()] : [c.getFullYear(), c.getMonth(), c.getDate()], t._w && null == t._a[vt] && null == t._a[bt] && function(t) {
                                var e, n, r, i, a, o, s, u;
                                if (null != (e = t._w).GG || null != e.W || null != e.E) a = 1, o = 4, n = de(e.GG, t._a[yt], Vt(Te(), 1, 4).year), r = de(e.W, 1), ((i = de(e.E, 1)) < 1 || 7 < i) && (u = !0);
                                else {
                                    a = t._locale._week.dow, o = t._locale._week.doy;
                                    var c = Vt(Te(), a, o);
                                    n = de(e.gg, t._a[yt], c.year), r = de(e.w, c.week), null != e.d ? ((i = e.d) < 0 || 6 < i) && (u = !0) : null != e.e ? (i = e.e + a, (e.e < 0 || 6 < e.e) && (u = !0)) : i = a
                                }
                                r < 1 || r > Ht(n, a, o) ? p(t)._overflowWeeks = !0 : null != u ? p(t)._overflowWeekday = !0 : (s = Yt(n, r, i, a, o), t._a[yt] = s.year, t._dayOfYear = s.dayOfYear)
                            }(t), null != t._dayOfYear && (o = de(t._a[yt], r[yt]), (t._dayOfYear > At(o) || 0 === t._dayOfYear) && (p(t)._overflowDayOfYear = !0), n = Ut(o, 0, t._dayOfYear), t._a[bt] = n.getUTCMonth(), t._a[vt] = n.getUTCDate()), e = 0; e < 3 && null == t._a[e]; ++e) t._a[e] = s[e] = r[e];
                        for (; e < 7; e++) t._a[e] = s[e] = null == t._a[e] ? 2 === e ? 1 : 0 : t._a[e];
                        24 === t._a[mt] && 0 === t._a[_t] && 0 === t._a[wt] && 0 === t._a[xt] && (t._nextDay = !0, t._a[mt] = 0), t._d = (t._useUTC ? Ut : function(t, e, n, r, i, a, o) {
                            var s = new Date(t, e, n, r, i, a, o);
                            return t < 100 && 0 <= t && isFinite(s.getFullYear()) && s.setFullYear(t), s
                        }).apply(null, s), a = t._useUTC ? t._d.getUTCDay() : t._d.getDay(), null != t._tzm && t._d.setUTCMinutes(t._d.getUTCMinutes() - t._tzm), t._nextDay && (t._a[mt] = 24), t._w && void 0 !== t._w.d && t._w.d !== a && (p(t).weekdayMismatch = !0)
                    }
                }
                var ge = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
                    ye = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
                    be = /Z|[+-]\d\d(?::?\d\d)?/,
                    ve = [
                        ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
                        ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
                        ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
                        ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
                        ["YYYY-DDD", /\d{4}-\d{3}/],
                        ["YYYY-MM", /\d{4}-\d\d/, !1],
                        ["YYYYYYMMDD", /[+-]\d{10}/],
                        ["YYYYMMDD", /\d{8}/],
                        ["GGGG[W]WWE", /\d{4}W\d{3}/],
                        ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
                        ["YYYYDDD", /\d{7}/]
                    ],
                    me = [
                        ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
                        ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
                        ["HH:mm:ss", /\d\d:\d\d:\d\d/],
                        ["HH:mm", /\d\d:\d\d/],
                        ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
                        ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
                        ["HHmmss", /\d\d\d\d\d\d/],
                        ["HHmm", /\d\d\d\d/],
                        ["HH", /\d\d/]
                    ],
                    _e = /^\/?Date\((\-?\d+)/i;

                function we(t) {
                    var e, n, r, i, a, o, s = t._i,
                        u = ge.exec(s) || ye.exec(s);
                    if (u) {
                        for (p(t).iso = !0, e = 0, n = ve.length; e < n; e++)
                            if (ve[e][1].exec(u[1])) {
                                i = ve[e][0], r = !1 !== ve[e][2];
                                break
                            } if (null == i) return void(t._isValid = !1);
                        if (u[3]) {
                            for (e = 0, n = me.length; e < n; e++)
                                if (me[e][1].exec(u[3])) {
                                    a = (u[2] || " ") + me[e][0];
                                    break
                                } if (null == a) return void(t._isValid = !1)
                        }
                        if (!r && null != a) return void(t._isValid = !1);
                        if (u[4]) {
                            if (!be.exec(u[4])) return void(t._isValid = !1);
                            o = "Z"
                        }
                        t._f = i + (a || "") + (o || ""), Ae(t)
                    } else t._isValid = !1
                }
                var xe = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
                    ke = {
                        UT: 0,
                        GMT: 0,
                        EDT: -240,
                        EST: -300,
                        CDT: -300,
                        CST: -360,
                        MDT: -360,
                        MST: -420,
                        PDT: -420,
                        PST: -480
                    };

                function Ee(t) {
                    var e, n, r, i = xe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim());
                    if (i) {
                        var a = function(t, e, n, r, i, a) {
                            var o = [function(t) {
                                var e = parseInt(t, 10);
                                return e <= 49 ? 2e3 + e : e <= 999 ? 1900 + e : e
                            }(t), Ot.indexOf(e), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)];
                            return a && o.push(parseInt(a, 10)), o
                        }(i[4], i[3], i[2], i[5], i[6], i[7]);
                        if (n = a, r = t, (e = i[1]) && $t.indexOf(e) !== new Date(n[0], n[1], n[2]).getDay() && (p(r).weekdayMismatch = !0, !(r._isValid = !1))) return;
                        t._a = a, t._tzm = function(t, e, n) {
                            if (t) return ke[t];
                            if (e) return 0;
                            var r = parseInt(n, 10),
                                i = r % 100;
                            return (r - i) / 100 * 60 + i
                        }(i[8], i[9], i[10]), t._d = Ut.apply(null, t._a), t._d.setUTCMinutes(t._d.getUTCMinutes() - t._tzm), p(t).rfc2822 = !0
                    } else t._isValid = !1
                }

                function Ae(t) {
                    if (t._f !== i.ISO_8601)
                        if (t._f !== i.RFC_2822) {
                            t._a = [], p(t).empty = !0;
                            var e, n, r, a, o, s, u, c, f = "" + t._i,
                                h = f.length,
                                d = 0;
                            for (r = G(t._f, t._locale).match(j) || [], e = 0; e < r.length; e++) a = r[e], (n = (f.match(lt(a, t)) || [])[0]) && (0 < (o = f.substr(0, f.indexOf(n))).length && p(t).unusedInput.push(o), f = f.slice(f.indexOf(n) + n.length), d += n.length), Y[a] ? (n ? p(t).empty = !1 : p(t).unusedTokens.push(a), s = a, c = t, null != (u = n) && l(dt, s) && dt[s](u, c._a, c, s)) : t._strict && !n && p(t).unusedTokens.push(a);
                            p(t).charsLeftOver = h - d, 0 < f.length && p(t).unusedInput.push(f), t._a[mt] <= 12 && !0 === p(t).bigHour && 0 < t._a[mt] && (p(t).bigHour = void 0), p(t).parsedDateParts = t._a.slice(0), p(t).meridiem = t._meridiem, t._a[mt] = function(t, e, n) {
                                var r;
                                return null == n ? e : null != t.meridiemHour ? t.meridiemHour(e, n) : (null != t.isPM && ((r = t.isPM(n)) && e < 12 && (e += 12), r || 12 !== e || (e = 0)), e)
                            }(t._locale, t._a[mt], t._meridiem), pe(t), he(t)
                        } else Ee(t);
                    else we(t)
                }

                function Se(t) {
                    var e, n, r, l, d = t._i,
                        b = t._f;
                    return t._locale = t._locale || le(t._l), null === d || void 0 === b && "" === d ? y({
                        nullInput: !0
                    }) : ("string" == typeof d && (t._i = d = t._locale.preparse(d)), w(d) ? new _(he(d)) : (c(d) ? t._d = d : a(b) ? function(t) {
                        var e, n, r, i, a;
                        if (0 === t._f.length) return p(t).invalidFormat = !0, t._d = new Date(NaN);
                        for (i = 0; i < t._f.length; i++) a = 0, e = v({}, t), null != t._useUTC && (e._useUTC = t._useUTC), e._f = t._f[i], Ae(e), g(e) && (a += p(e).charsLeftOver, a += 10 * p(e).unusedTokens.length, p(e).score = a, (null == r || a < r) && (r = a, n = e));
                        h(t, n || e)
                    }(t) : b ? Ae(t) : s(n = (e = t)._i) ? e._d = new Date(i.now()) : c(n) ? e._d = new Date(n.valueOf()) : "string" == typeof n ? (r = e, null === (l = _e.exec(r._i)) ? (we(r), !1 === r._isValid && (delete r._isValid, Ee(r), !1 === r._isValid && (delete r._isValid, i.createFromInputFallback(r)))) : r._d = new Date(+l[1])) : a(n) ? (e._a = f(n.slice(0), (function(t) {
                        return parseInt(t, 10)
                    })), pe(e)) : o(n) ? function(t) {
                        if (!t._d) {
                            var e = R(t._i);
                            t._a = f([e.year, e.month, e.day || e.date, e.hour, e.minute, e.second, e.millisecond], (function(t) {
                                return t && parseInt(t, 10)
                            })), pe(t)
                        }
                    }(e) : u(n) ? e._d = new Date(n) : i.createFromInputFallback(e), g(t) || (t._d = null), t))
                }

                function Me(t, e, n, r, i) {
                    var s, u = {};
                    return !0 !== n && !1 !== n || (r = n, n = void 0), (o(t) && function(t) {
                        if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(t).length;
                        var e;
                        for (e in t)
                            if (t.hasOwnProperty(e)) return !1;
                        return !0
                    }(t) || a(t) && 0 === t.length) && (t = void 0), u._isAMomentObject = !0, u._useUTC = u._isUTC = i, u._l = n, u._i = t, u._f = e, u._strict = r, (s = new _(he(Se(u))))._nextDay && (s.add(1, "d"), s._nextDay = void 0), s
                }

                function Te(t, e, n, r) {
                    return Me(t, e, n, r, !1)
                }
                i.createFromInputFallback = S("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", (function(t) {
                    t._d = new Date(t._i + (t._useUTC ? " UTC" : ""))
                })), i.ISO_8601 = function() {}, i.RFC_2822 = function() {};
                var De = S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", (function() {
                        var t = Te.apply(null, arguments);
                        return this.isValid() && t.isValid() ? t < this ? this : t : y()
                    })),
                    Ce = S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", (function() {
                        var t = Te.apply(null, arguments);
                        return this.isValid() && t.isValid() ? this < t ? this : t : y()
                    }));

                function Ne(t, e) {
                    var n, r;
                    if (1 === e.length && a(e[0]) && (e = e[0]), !e.length) return Te();
                    for (n = e[0], r = 1; r < e.length; ++r) e[r].isValid() && !e[r][t](n) || (n = e[r]);
                    return n
                }
                var Ie = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];

                function Le(t) {
                    var e = R(t),
                        n = e.year || 0,
                        r = e.quarter || 0,
                        i = e.month || 0,
                        a = e.week || 0,
                        o = e.day || 0,
                        s = e.hour || 0,
                        u = e.minute || 0,
                        c = e.second || 0,
                        f = e.millisecond || 0;
                    this._isValid = function(t) {
                        for (var e in t)
                            if (-1 === Mt.call(Ie, e) || null != t[e] && isNaN(t[e])) return !1;
                        for (var n = !1, r = 0; r < Ie.length; ++r)
                            if (t[Ie[r]]) {
                                if (n) return !1;
                                parseFloat(t[Ie[r]]) !== k(t[Ie[r]]) && (n = !0)
                            } return !0
                    }(e), this._milliseconds = +f + 1e3 * c + 6e4 * u + 1e3 * s * 60 * 60, this._days = +o + 7 * a, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = le(), this._bubble()
                }

                function Be(t) {
                    return t instanceof Le
                }

                function Oe(t) {
                    return t < 0 ? -1 * Math.round(-1 * t) : Math.round(t)
                }

                function Re(t, e) {
                    V(t, 0, 0, (function() {
                        var t = this.utcOffset(),
                            n = "+";
                        return t < 0 && (t = -t, n = "-"), n + q(~~(t / 60), 2) + e + q(~~t % 60, 2)
                    }))
                }
                Re("Z", ":"), Re("ZZ", ""), ft("Z", st), ft("ZZ", st), pt(["Z", "ZZ"], (function(t, e, n) {
                    n._useUTC = !0, n._tzm = Fe(st, t)
                }));
                var Pe = /([\+\-]|\d\d)/gi;

                function Fe(t, e) {
                    var n = (e || "").match(t);
                    if (null === n) return null;
                    var r = ((n[n.length - 1] || []) + "").match(Pe) || ["-", 0, 0],
                        i = 60 * r[1] + k(r[2]);
                    return 0 === i ? 0 : "+" === r[0] ? i : -i
                }

                function qe(t, e) {
                    var n, r;
                    return e._isUTC ? (n = e.clone(), r = (w(t) || c(t) ? t.valueOf() : Te(t).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + r), i.updateOffset(n, !1), n) : Te(t).local()
                }

                function je(t) {
                    return 15 * -Math.round(t._d.getTimezoneOffset() / 15)
                }

                function Ue() {
                    return !!this.isValid() && this._isUTC && 0 === this._offset
                }
                i.updateOffset = function() {};
                var ze = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
                    Ye = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;

                function Ve(t, e) {
                    var n, r, i, a = t,
                        o = null;
                    return Be(t) ? a = {
                        ms: t._milliseconds,
                        d: t._days,
                        M: t._months
                    } : u(t) ? (a = {}, e ? a[e] = t : a.milliseconds = t) : (o = ze.exec(t)) ? (n = "-" === o[1] ? -1 : 1, a = {
                        y: 0,
                        d: k(o[vt]) * n,
                        h: k(o[mt]) * n,
                        m: k(o[_t]) * n,
                        s: k(o[wt]) * n,
                        ms: k(Oe(1e3 * o[xt])) * n
                    }) : (o = Ye.exec(t)) ? (n = "-" === o[1] ? -1 : (o[1], 1), a = {
                        y: He(o[2], n),
                        M: He(o[3], n),
                        w: He(o[4], n),
                        d: He(o[5], n),
                        h: He(o[6], n),
                        m: He(o[7], n),
                        s: He(o[8], n)
                    }) : null == a ? a = {} : "object" == typeof a && ("from" in a || "to" in a) && (i = function(t, e) {
                        var n;
                        return t.isValid() && e.isValid() ? (e = qe(e, t), t.isBefore(e) ? n = Ge(t, e) : ((n = Ge(e, t)).milliseconds = -n.milliseconds, n.months = -n.months), n) : {
                            milliseconds: 0,
                            months: 0
                        }
                    }(Te(a.from), Te(a.to)), (a = {}).ms = i.milliseconds, a.M = i.months), r = new Le(a), Be(t) && l(t, "_locale") && (r._locale = t._locale), r
                }

                function He(t, e) {
                    var n = t && parseFloat(t.replace(",", "."));
                    return (isNaN(n) ? 0 : n) * e
                }

                function Ge(t, e) {
                    var n = {
                        milliseconds: 0,
                        months: 0
                    };
                    return n.months = e.month() - t.month() + 12 * (e.year() - t.year()), t.clone().add(n.months, "M").isAfter(e) && --n.months, n.milliseconds = +e - +t.clone().add(n.months, "M"), n
                }

                function $e(t, e) {
                    return function(n, r) {
                        var i;
                        return null === r || isNaN(+r) || (D(e, "moment()." + e + "(period, number) is deprecated. Please use moment()." + e + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), i = n, n = r, r = i), We(this, Ve(n = "string" == typeof n ? +n : n, r), t), this
                    }
                }

                function We(t, e, n, r) {
                    var a = e._milliseconds,
                        o = Oe(e._days),
                        s = Oe(e._months);
                    t.isValid() && (r = null == r || r, s && Rt(t, Ct(t, "Month") + s * n), o && Nt(t, "Date", Ct(t, "Date") + o * n), a && t._d.setTime(t._d.valueOf() + a * n), r && i.updateOffset(t, o || s))
                }
                Ve.fn = Le.prototype, Ve.invalid = function() {
                    return Ve(NaN)
                };
                var Ke = $e(1, "add"),
                    Xe = $e(-1, "subtract");

                function Ze(t, e) {
                    var n = 12 * (e.year() - t.year()) + (e.month() - t.month()),
                        r = t.clone().add(n, "months");
                    return -(n + (e - r < 0 ? (e - r) / (r - t.clone().add(n - 1, "months")) : (e - r) / (t.clone().add(n + 1, "months") - r))) || 0
                }

                function Je(t) {
                    var e;
                    return void 0 === t ? this._locale._abbr : (null != (e = le(t)) && (this._locale = e), this)
                }
                i.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", i.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
                var Qe = S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", (function(t) {
                    return void 0 === t ? this.localeData() : this.locale(t)
                }));

                function tn() {
                    return this._locale
                }

                function en(t, e) {
                    V(0, [t, t.length], 0, e)
                }

                function nn(t, e, n, r, i) {
                    var a;
                    return null == t ? Vt(this, r, i).year : ((a = Ht(t, r, i)) < e && (e = a), function(t, e, n, r, i) {
                        var a = Yt(t, e, n, r, i),
                            o = Ut(a.year, 0, a.dayOfYear);
                        return this.year(o.getUTCFullYear()), this.month(o.getUTCMonth()), this.date(o.getUTCDate()), this
                    }.call(this, t, e, n, r, i))
                }
                V(0, ["gg", 2], 0, (function() {
                    return this.weekYear() % 100
                })), V(0, ["GG", 2], 0, (function() {
                    return this.isoWeekYear() % 100
                })), en("gggg", "weekYear"), en("ggggg", "weekYear"), en("GGGG", "isoWeekYear"), en("GGGGG", "isoWeekYear"), B("weekYear", "gg"), B("isoWeekYear", "GG"), F("weekYear", 1), F("isoWeekYear", 1), ft("G", at), ft("g", at), ft("GG", J, W), ft("gg", J, W), ft("GGGG", nt, X), ft("gggg", nt, X), ft("GGGGG", rt, Z), ft("ggggg", rt, Z), gt(["gggg", "ggggg", "GGGG", "GGGGG"], (function(t, e, n, r) {
                    e[r.substr(0, 2)] = k(t)
                })), gt(["gg", "GG"], (function(t, e, n, r) {
                    e[r] = i.parseTwoDigitYear(t)
                })), V("Q", 0, "Qo", "quarter"), B("quarter", "Q"), F("quarter", 7), ft("Q", $), pt("Q", (function(t, e) {
                    e[bt] = 3 * (k(t) - 1)
                })), V("D", ["DD", 2], "Do", "date"), B("date", "D"), F("date", 9), ft("D", J), ft("DD", J, W), ft("Do", (function(t, e) {
                    return t ? e._dayOfMonthOrdinalParse || e._ordinalParse : e._dayOfMonthOrdinalParseLenient
                })), pt(["D", "DD"], vt), pt("Do", (function(t, e) {
                    e[vt] = k(t.match(J)[0])
                }));
                var rn = Dt("Date", !0);
                V("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), B("dayOfYear", "DDD"), F("dayOfYear", 4), ft("DDD", et), ft("DDDD", K), pt(["DDD", "DDDD"], (function(t, e, n) {
                    n._dayOfYear = k(t)
                })), V("m", ["mm", 2], 0, "minute"), B("minute", "m"), F("minute", 14), ft("m", J), ft("mm", J, W), pt(["m", "mm"], _t);
                var an = Dt("Minutes", !1);
                V("s", ["ss", 2], 0, "second"), B("second", "s"), F("second", 15), ft("s", J), ft("ss", J, W), pt(["s", "ss"], wt);
                var on, sn = Dt("Seconds", !1);
                for (V("S", 0, 0, (function() {
                        return ~~(this.millisecond() / 100)
                    })), V(0, ["SS", 2], 0, (function() {
                        return ~~(this.millisecond() / 10)
                    })), V(0, ["SSS", 3], 0, "millisecond"), V(0, ["SSSS", 4], 0, (function() {
                        return 10 * this.millisecond()
                    })), V(0, ["SSSSS", 5], 0, (function() {
                        return 100 * this.millisecond()
                    })), V(0, ["SSSSSS", 6], 0, (function() {
                        return 1e3 * this.millisecond()
                    })), V(0, ["SSSSSSS", 7], 0, (function() {
                        return 1e4 * this.millisecond()
                    })), V(0, ["SSSSSSSS", 8], 0, (function() {
                        return 1e5 * this.millisecond()
                    })), V(0, ["SSSSSSSSS", 9], 0, (function() {
                        return 1e6 * this.millisecond()
                    })), B("millisecond", "ms"), F("millisecond", 16), ft("S", et, $), ft("SS", et, W), ft("SSS", et, K), on = "SSSS"; on.length <= 9; on += "S") ft(on, it);

                function un(t, e) {
                    e[xt] = k(1e3 * ("0." + t))
                }
                for (on = "S"; on.length <= 9; on += "S") pt(on, un);
                var cn = Dt("Milliseconds", !1);
                V("z", 0, 0, "zoneAbbr"), V("zz", 0, 0, "zoneName");
                var fn = _.prototype;

                function ln(t) {
                    return t
                }
                fn.add = Ke, fn.calendar = function(t, e) {
                    var n = t || Te(),
                        r = qe(n, this).startOf("day"),
                        a = i.calendarFormat(this, r) || "sameElse",
                        o = e && (C(e[a]) ? e[a].call(this, n) : e[a]);
                    return this.format(o || this.localeData().calendar(a, this, Te(n)))
                }, fn.clone = function() {
                    return new _(this)
                }, fn.diff = function(t, e, n) {
                    var r, i, a;
                    if (!this.isValid()) return NaN;
                    if (!(r = qe(t, this)).isValid()) return NaN;
                    switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), e = O(e)) {
                        case "year":
                            a = Ze(this, r) / 12;
                            break;
                        case "month":
                            a = Ze(this, r);
                            break;
                        case "quarter":
                            a = Ze(this, r) / 3;
                            break;
                        case "second":
                            a = (this - r) / 1e3;
                            break;
                        case "minute":
                            a = (this - r) / 6e4;
                            break;
                        case "hour":
                            a = (this - r) / 36e5;
                            break;
                        case "day":
                            a = (this - r - i) / 864e5;
                            break;
                        case "week":
                            a = (this - r - i) / 6048e5;
                            break;
                        default:
                            a = this - r
                    }
                    return n ? a : x(a)
                }, fn.endOf = function(t) {
                    return void 0 === (t = O(t)) || "millisecond" === t ? this : ("date" === t && (t = "day"), this.startOf(t).add(1, "isoWeek" === t ? "week" : t).subtract(1, "ms"))
                }, fn.format = function(t) {
                    t || (t = this.isUtc() ? i.defaultFormatUtc : i.defaultFormat);
                    var e = H(this, t);
                    return this.localeData().postformat(e)
                }, fn.from = function(t, e) {
                    return this.isValid() && (w(t) && t.isValid() || Te(t).isValid()) ? Ve({
                        to: this,
                        from: t
                    }).locale(this.locale()).humanize(!e) : this.localeData().invalidDate()
                }, fn.fromNow = function(t) {
                    return this.from(Te(), t)
                }, fn.to = function(t, e) {
                    return this.isValid() && (w(t) && t.isValid() || Te(t).isValid()) ? Ve({
                        from: this,
                        to: t
                    }).locale(this.locale()).humanize(!e) : this.localeData().invalidDate()
                }, fn.toNow = function(t) {
                    return this.to(Te(), t)
                }, fn.get = function(t) {
                    return C(this[t = O(t)]) ? this[t]() : this
                }, fn.invalidAt = function() {
                    return p(this).overflow
                }, fn.isAfter = function(t, e) {
                    var n = w(t) ? t : Te(t);
                    return !(!this.isValid() || !n.isValid()) && ("millisecond" === (e = O(s(e) ? "millisecond" : e)) ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(e).valueOf())
                }, fn.isBefore = function(t, e) {
                    var n = w(t) ? t : Te(t);
                    return !(!this.isValid() || !n.isValid()) && ("millisecond" === (e = O(s(e) ? "millisecond" : e)) ? this.valueOf() < n.valueOf() : this.clone().endOf(e).valueOf() < n.valueOf())
                }, fn.isBetween = function(t, e, n, r) {
                    return ("(" === (r = r || "()")[0] ? this.isAfter(t, n) : !this.isBefore(t, n)) && (")" === r[1] ? this.isBefore(e, n) : !this.isAfter(e, n))
                }, fn.isSame = function(t, e) {
                    var n, r = w(t) ? t : Te(t);
                    return !(!this.isValid() || !r.isValid()) && ("millisecond" === (e = O(e || "millisecond")) ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(e).valueOf() <= n && n <= this.clone().endOf(e).valueOf()))
                }, fn.isSameOrAfter = function(t, e) {
                    return this.isSame(t, e) || this.isAfter(t, e)
                }, fn.isSameOrBefore = function(t, e) {
                    return this.isSame(t, e) || this.isBefore(t, e)
                }, fn.isValid = function() {
                    return g(this)
                }, fn.lang = Qe, fn.locale = Je, fn.localeData = tn, fn.max = Ce, fn.min = De, fn.parsingFlags = function() {
                    return h({}, p(this))
                }, fn.set = function(t, e) {
                    if ("object" == typeof t)
                        for (var n = function(t) {
                                var e = [];
                                for (var n in t) e.push({
                                    unit: n,
                                    priority: P[n]
                                });
                                return e.sort((function(t, e) {
                                    return t.priority - e.priority
                                })), e
                            }(t = R(t)), r = 0; r < n.length; r++) this[n[r].unit](t[n[r].unit]);
                    else if (C(this[t = O(t)])) return this[t](e);
                    return this
                }, fn.startOf = function(t) {
                    switch (t = O(t)) {
                        case "year":
                            this.month(0);
                        case "quarter":
                        case "month":
                            this.date(1);
                        case "week":
                        case "isoWeek":
                        case "day":
                        case "date":
                            this.hours(0);
                        case "hour":
                            this.minutes(0);
                        case "minute":
                            this.seconds(0);
                        case "second":
                            this.milliseconds(0)
                    }
                    return "week" === t && this.weekday(0), "isoWeek" === t && this.isoWeekday(1), "quarter" === t && this.month(3 * Math.floor(this.month() / 3)), this
                }, fn.subtract = Xe, fn.toArray = function() {
                    var t = this;
                    return [t.year(), t.month(), t.date(), t.hour(), t.minute(), t.second(), t.millisecond()]
                }, fn.toObject = function() {
                    var t = this;
                    return {
                        years: t.year(),
                        months: t.month(),
                        date: t.date(),
                        hours: t.hours(),
                        minutes: t.minutes(),
                        seconds: t.seconds(),
                        milliseconds: t.milliseconds()
                    }
                }, fn.toDate = function() {
                    return new Date(this.valueOf())
                }, fn.toISOString = function(t) {
                    if (!this.isValid()) return null;
                    var e = !0 !== t,
                        n = e ? this.clone().utc() : this;
                    return n.year() < 0 || 9999 < n.year() ? H(n, e ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : C(Date.prototype.toISOString) ? e ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", H(n, "Z")) : H(n, e ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ")
                }, fn.inspect = function() {
                    if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
                    var t = "moment",
                        e = "";
                    this.isLocal() || (t = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", e = "Z");
                    var n = "[" + t + '("]',
                        r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
                        i = e + '[")]';
                    return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
                }, fn.toJSON = function() {
                    return this.isValid() ? this.toISOString() : null
                }, fn.toString = function() {
                    return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
                }, fn.unix = function() {
                    return Math.floor(this.valueOf() / 1e3)
                }, fn.valueOf = function() {
                    return this._d.valueOf() - 6e4 * (this._offset || 0)
                }, fn.creationData = function() {
                    return {
                        input: this._i,
                        format: this._f,
                        locale: this._locale,
                        isUTC: this._isUTC,
                        strict: this._strict
                    }
                }, fn.year = Tt, fn.isLeapYear = function() {
                    return St(this.year())
                }, fn.weekYear = function(t) {
                    return nn.call(this, t, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
                }, fn.isoWeekYear = function(t) {
                    return nn.call(this, t, this.isoWeek(), this.isoWeekday(), 1, 4)
                }, fn.quarter = fn.quarters = function(t) {
                    return null == t ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (t - 1) + this.month() % 3)
                }, fn.month = Pt, fn.daysInMonth = function() {
                    return It(this.year(), this.month())
                }, fn.week = fn.weeks = function(t) {
                    var e = this.localeData().week(this);
                    return null == t ? e : this.add(7 * (t - e), "d")
                }, fn.isoWeek = fn.isoWeeks = function(t) {
                    var e = Vt(this, 1, 4).week;
                    return null == t ? e : this.add(7 * (t - e), "d")
                }, fn.weeksInYear = function() {
                    var t = this.localeData()._week;
                    return Ht(this.year(), t.dow, t.doy)
                }, fn.isoWeeksInYear = function() {
                    return Ht(this.year(), 1, 4)
                }, fn.date = rn, fn.day = fn.days = function(t) {
                    if (!this.isValid()) return null != t ? this : NaN;
                    var e, n, r = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
                    return null != t ? (e = t, n = this.localeData(), t = "string" != typeof e ? e : isNaN(e) ? "number" == typeof(e = n.weekdaysParse(e)) ? e : null : parseInt(e, 10), this.add(t - r, "d")) : r
                }, fn.weekday = function(t) {
                    if (!this.isValid()) return null != t ? this : NaN;
                    var e = (this.day() + 7 - this.localeData()._week.dow) % 7;
                    return null == t ? e : this.add(t - e, "d")
                }, fn.isoWeekday = function(t) {
                    if (!this.isValid()) return null != t ? this : NaN;
                    if (null != t) {
                        var e = (n = t, r = this.localeData(), "string" == typeof n ? r.weekdaysParse(n) % 7 || 7 : isNaN(n) ? null : n);
                        return this.day(this.day() % 7 ? e : e - 7)
                    }
                    return this.day() || 7;
                    var n, r
                }, fn.dayOfYear = function(t) {
                    var e = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
                    return null == t ? e : this.add(t - e, "d")
                }, fn.hour = fn.hours = re, fn.minute = fn.minutes = an, fn.second = fn.seconds = sn, fn.millisecond = fn.milliseconds = cn, fn.utcOffset = function(t, e, n) {
                    var r, a = this._offset || 0;
                    if (!this.isValid()) return null != t ? this : NaN;
                    if (null != t) {
                        if ("string" == typeof t) {
                            if (null === (t = Fe(st, t))) return this
                        } else Math.abs(t) < 16 && !n && (t *= 60);
                        return !this._isUTC && e && (r = je(this)), this._offset = t, this._isUTC = !0, null != r && this.add(r, "m"), a !== t && (!e || this._changeInProgress ? We(this, Ve(t - a, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, i.updateOffset(this, !0), this._changeInProgress = null)), this
                    }
                    return this._isUTC ? a : je(this)
                }, fn.utc = function(t) {
                    return this.utcOffset(0, t)
                }, fn.local = function(t) {
                    return this._isUTC && (this.utcOffset(0, t), this._isUTC = !1, t && this.subtract(je(this), "m")), this
                }, fn.parseZone = function() {
                    if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
                    else if ("string" == typeof this._i) {
                        var t = Fe(ot, this._i);
                        null != t ? this.utcOffset(t) : this.utcOffset(0, !0)
                    }
                    return this
                }, fn.hasAlignedHourOffset = function(t) {
                    return !!this.isValid() && (t = t ? Te(t).utcOffset() : 0, (this.utcOffset() - t) % 60 == 0)
                }, fn.isDST = function() {
                    return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
                }, fn.isLocal = function() {
                    return !!this.isValid() && !this._isUTC
                }, fn.isUtcOffset = function() {
                    return !!this.isValid() && this._isUTC
                }, fn.isUtc = Ue, fn.isUTC = Ue, fn.zoneAbbr = function() {
                    return this._isUTC ? "UTC" : ""
                }, fn.zoneName = function() {
                    return this._isUTC ? "Coordinated Universal Time" : ""
                }, fn.dates = S("dates accessor is deprecated. Use date instead.", rn), fn.months = S("months accessor is deprecated. Use month instead", Pt), fn.years = S("years accessor is deprecated. Use year instead", Tt), fn.zone = S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", (function(t, e) {
                    return null != t ? ("string" != typeof t && (t = -t), this.utcOffset(t, e), this) : -this.utcOffset()
                })), fn.isDSTShifted = S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", (function() {
                    if (!s(this._isDSTShifted)) return this._isDSTShifted;
                    var t = {};
                    if (v(t, this), (t = Se(t))._a) {
                        var e = t._isUTC ? d(t._a) : Te(t._a);
                        this._isDSTShifted = this.isValid() && 0 < E(t._a, e.toArray())
                    } else this._isDSTShifted = !1;
                    return this._isDSTShifted
                }));
                var hn = I.prototype;

                function dn(t, e, n, r) {
                    var i = le(),
                        a = d().set(r, e);
                    return i[n](a, t)
                }

                function pn(t, e, n) {
                    if (u(t) && (e = t, t = void 0), t = t || "", null != e) return dn(t, e, n, "month");
                    var r, i = [];
                    for (r = 0; r < 12; r++) i[r] = dn(t, r, n, "month");
                    return i
                }

                function gn(t, e, n, r) {
                    "boolean" == typeof t ? u(e) && (n = e, e = void 0) : (e = t, t = !1, u(n = e) && (n = e, e = void 0)), e = e || "";
                    var i, a = le(),
                        o = t ? a._week.dow : 0;
                    if (null != n) return dn(e, (n + o) % 7, r, "day");
                    var s = [];
                    for (i = 0; i < 7; i++) s[i] = dn(e, (i + o) % 7, r, "day");
                    return s
                }
                hn.calendar = function(t, e, n) {
                    var r = this._calendar[t] || this._calendar.sameElse;
                    return C(r) ? r.call(e, n) : r
                }, hn.longDateFormat = function(t) {
                    var e = this._longDateFormat[t],
                        n = this._longDateFormat[t.toUpperCase()];
                    return e || !n ? e : (this._longDateFormat[t] = n.replace(/MMMM|MM|DD|dddd/g, (function(t) {
                        return t.slice(1)
                    })), this._longDateFormat[t])
                }, hn.invalidDate = function() {
                    return this._invalidDate
                }, hn.ordinal = function(t) {
                    return this._ordinal.replace("%d", t)
                }, hn.preparse = ln, hn.postformat = ln, hn.relativeTime = function(t, e, n, r) {
                    var i = this._relativeTime[n];
                    return C(i) ? i(t, e, n, r) : i.replace(/%d/i, t)
                }, hn.pastFuture = function(t, e) {
                    var n = this._relativeTime[0 < t ? "future" : "past"];
                    return C(n) ? n(e) : n.replace(/%s/i, e)
                }, hn.set = function(t) {
                    var e, n;
                    for (n in t) C(e = t[n]) ? this[n] = e : this["_" + n] = e;
                    this._config = t, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
                }, hn.months = function(t, e) {
                    return t ? a(this._months) ? this._months[t.month()] : this._months[(this._months.isFormat || Lt).test(e) ? "format" : "standalone"][t.month()] : a(this._months) ? this._months : this._months.standalone
                }, hn.monthsShort = function(t, e) {
                    return t ? a(this._monthsShort) ? this._monthsShort[t.month()] : this._monthsShort[Lt.test(e) ? "format" : "standalone"][t.month()] : a(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
                }, hn.monthsParse = function(t, e, n) {
                    var r, i, a;
                    if (this._monthsParseExact) return function(t, e, n) {
                        var r, i, a, o = t.toLocaleLowerCase();
                        if (!this._monthsParse)
                            for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r) a = d([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(a, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(a, "").toLocaleLowerCase();
                        return n ? "MMM" === e ? -1 !== (i = Mt.call(this._shortMonthsParse, o)) ? i : null : -1 !== (i = Mt.call(this._longMonthsParse, o)) ? i : null : "MMM" === e ? -1 !== (i = Mt.call(this._shortMonthsParse, o)) ? i : -1 !== (i = Mt.call(this._longMonthsParse, o)) ? i : null : -1 !== (i = Mt.call(this._longMonthsParse, o)) ? i : -1 !== (i = Mt.call(this._shortMonthsParse, o)) ? i : null
                    }.call(this, t, e, n);
                    for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
                        if (i = d([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (a = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(a.replace(".", ""), "i")), n && "MMMM" === e && this._longMonthsParse[r].test(t)) return r;
                        if (n && "MMM" === e && this._shortMonthsParse[r].test(t)) return r;
                        if (!n && this._monthsParse[r].test(t)) return r
                    }
                }, hn.monthsRegex = function(t) {
                    return this._monthsParseExact ? (l(this, "_monthsRegex") || jt.call(this), t ? this._monthsStrictRegex : this._monthsRegex) : (l(this, "_monthsRegex") || (this._monthsRegex = qt), this._monthsStrictRegex && t ? this._monthsStrictRegex : this._monthsRegex)
                }, hn.monthsShortRegex = function(t) {
                    return this._monthsParseExact ? (l(this, "_monthsRegex") || jt.call(this), t ? this._monthsShortStrictRegex : this._monthsShortRegex) : (l(this, "_monthsShortRegex") || (this._monthsShortRegex = Ft), this._monthsShortStrictRegex && t ? this._monthsShortStrictRegex : this._monthsShortRegex)
                }, hn.week = function(t) {
                    return Vt(t, this._week.dow, this._week.doy).week
                }, hn.firstDayOfYear = function() {
                    return this._week.doy
                }, hn.firstDayOfWeek = function() {
                    return this._week.dow
                }, hn.weekdays = function(t, e) {
                    return t ? a(this._weekdays) ? this._weekdays[t.day()] : this._weekdays[this._weekdays.isFormat.test(e) ? "format" : "standalone"][t.day()] : a(this._weekdays) ? this._weekdays : this._weekdays.standalone
                }, hn.weekdaysMin = function(t) {
                    return t ? this._weekdaysMin[t.day()] : this._weekdaysMin
                }, hn.weekdaysShort = function(t) {
                    return t ? this._weekdaysShort[t.day()] : this._weekdaysShort
                }, hn.weekdaysParse = function(t, e, n) {
                    var r, i, a;
                    if (this._weekdaysParseExact) return function(t, e, n) {
                        var r, i, a, o = t.toLocaleLowerCase();
                        if (!this._weekdaysParse)
                            for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r) a = d([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(a, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(a, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(a, "").toLocaleLowerCase();
                        return n ? "dddd" === e ? -1 !== (i = Mt.call(this._weekdaysParse, o)) ? i : null : "ddd" === e ? -1 !== (i = Mt.call(this._shortWeekdaysParse, o)) ? i : null : -1 !== (i = Mt.call(this._minWeekdaysParse, o)) ? i : null : "dddd" === e ? -1 !== (i = Mt.call(this._weekdaysParse, o)) ? i : -1 !== (i = Mt.call(this._shortWeekdaysParse, o)) ? i : -1 !== (i = Mt.call(this._minWeekdaysParse, o)) ? i : null : "ddd" === e ? -1 !== (i = Mt.call(this._shortWeekdaysParse, o)) ? i : -1 !== (i = Mt.call(this._weekdaysParse, o)) ? i : -1 !== (i = Mt.call(this._minWeekdaysParse, o)) ? i : null : -1 !== (i = Mt.call(this._minWeekdaysParse, o)) ? i : -1 !== (i = Mt.call(this._weekdaysParse, o)) ? i : -1 !== (i = Mt.call(this._shortWeekdaysParse, o)) ? i : null
                    }.call(this, t, e, n);
                    for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
                        if (i = d([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[r] || (a = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(a.replace(".", ""), "i")), n && "dddd" === e && this._fullWeekdaysParse[r].test(t)) return r;
                        if (n && "ddd" === e && this._shortWeekdaysParse[r].test(t)) return r;
                        if (n && "dd" === e && this._minWeekdaysParse[r].test(t)) return r;
                        if (!n && this._weekdaysParse[r].test(t)) return r
                    }
                }, hn.weekdaysRegex = function(t) {
                    return this._weekdaysParseExact ? (l(this, "_weekdaysRegex") || Jt.call(this), t ? this._weekdaysStrictRegex : this._weekdaysRegex) : (l(this, "_weekdaysRegex") || (this._weekdaysRegex = Kt), this._weekdaysStrictRegex && t ? this._weekdaysStrictRegex : this._weekdaysRegex)
                }, hn.weekdaysShortRegex = function(t) {
                    return this._weekdaysParseExact ? (l(this, "_weekdaysRegex") || Jt.call(this), t ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (l(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Xt), this._weekdaysShortStrictRegex && t ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
                }, hn.weekdaysMinRegex = function(t) {
                    return this._weekdaysParseExact ? (l(this, "_weekdaysRegex") || Jt.call(this), t ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (l(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Zt), this._weekdaysMinStrictRegex && t ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
                }, hn.isPM = function(t) {
                    return "p" === (t + "").toLowerCase().charAt(0)
                }, hn.meridiem = function(t, e, n) {
                    return 11 < t ? n ? "pm" : "PM" : n ? "am" : "AM"
                }, ce("en", {
                    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
                    ordinal: function(t) {
                        var e = t % 10;
                        return t + (1 === k(t % 100 / 10) ? "th" : 1 === e ? "st" : 2 === e ? "nd" : 3 === e ? "rd" : "th")
                    }
                }), i.lang = S("moment.lang is deprecated. Use moment.locale instead.", ce), i.langData = S("moment.langData is deprecated. Use moment.localeData instead.", le);
                var yn = Math.abs;

                function bn(t, e, n, r) {
                    var i = Ve(e, n);
                    return t._milliseconds += r * i._milliseconds, t._days += r * i._days, t._months += r * i._months, t._bubble()
                }

                function vn(t) {
                    return t < 0 ? Math.floor(t) : Math.ceil(t)
                }

                function mn(t) {
                    return 4800 * t / 146097
                }

                function _n(t) {
                    return 146097 * t / 4800
                }

                function wn(t) {
                    return function() {
                        return this.as(t)
                    }
                }
                var xn = wn("ms"),
                    kn = wn("s"),
                    En = wn("m"),
                    An = wn("h"),
                    Sn = wn("d"),
                    Mn = wn("w"),
                    Tn = wn("M"),
                    Dn = wn("y");

                function Cn(t) {
                    return function() {
                        return this.isValid() ? this._data[t] : NaN
                    }
                }
                var Nn = Cn("milliseconds"),
                    In = Cn("seconds"),
                    Ln = Cn("minutes"),
                    Bn = Cn("hours"),
                    On = Cn("days"),
                    Rn = Cn("months"),
                    Pn = Cn("years"),
                    Fn = Math.round,
                    qn = {
                        ss: 44,
                        s: 45,
                        m: 45,
                        h: 22,
                        d: 26,
                        M: 11
                    },
                    jn = Math.abs;

                function Un(t) {
                    return (0 < t) - (t < 0) || +t
                }

                function zn() {
                    if (!this.isValid()) return this.localeData().invalidDate();
                    var t, e, n = jn(this._milliseconds) / 1e3,
                        r = jn(this._days),
                        i = jn(this._months);
                    e = x((t = x(n / 60)) / 60), n %= 60, t %= 60;
                    var a = x(i / 12),
                        o = i %= 12,
                        s = r,
                        u = e,
                        c = t,
                        f = n ? n.toFixed(3).replace(/\.?0+$/, "") : "",
                        l = this.asSeconds();
                    if (!l) return "P0D";
                    var h = l < 0 ? "-" : "",
                        d = Un(this._months) !== Un(l) ? "-" : "",
                        p = Un(this._days) !== Un(l) ? "-" : "",
                        g = Un(this._milliseconds) !== Un(l) ? "-" : "";
                    return h + "P" + (a ? d + a + "Y" : "") + (o ? d + o + "M" : "") + (s ? p + s + "D" : "") + (u || c || f ? "T" : "") + (u ? g + u + "H" : "") + (c ? g + c + "M" : "") + (f ? g + f + "S" : "")
                }
                var Yn = Le.prototype;
                return Yn.isValid = function() {
                    return this._isValid
                }, Yn.abs = function() {
                    var t = this._data;
                    return this._milliseconds = yn(this._milliseconds), this._days = yn(this._days), this._months = yn(this._months), t.milliseconds = yn(t.milliseconds), t.seconds = yn(t.seconds), t.minutes = yn(t.minutes), t.hours = yn(t.hours), t.months = yn(t.months), t.years = yn(t.years), this
                }, Yn.add = function(t, e) {
                    return bn(this, t, e, 1)
                }, Yn.subtract = function(t, e) {
                    return bn(this, t, e, -1)
                }, Yn.as = function(t) {
                    if (!this.isValid()) return NaN;
                    var e, n, r = this._milliseconds;
                    if ("month" === (t = O(t)) || "year" === t) return e = this._days + r / 864e5, n = this._months + mn(e), "month" === t ? n : n / 12;
                    switch (e = this._days + Math.round(_n(this._months)), t) {
                        case "week":
                            return e / 7 + r / 6048e5;
                        case "day":
                            return e + r / 864e5;
                        case "hour":
                            return 24 * e + r / 36e5;
                        case "minute":
                            return 1440 * e + r / 6e4;
                        case "second":
                            return 86400 * e + r / 1e3;
                        case "millisecond":
                            return Math.floor(864e5 * e) + r;
                        default:
                            throw new Error("Unknown unit " + t)
                    }
                }, Yn.asMilliseconds = xn, Yn.asSeconds = kn, Yn.asMinutes = En, Yn.asHours = An, Yn.asDays = Sn, Yn.asWeeks = Mn, Yn.asMonths = Tn, Yn.asYears = Dn, Yn.valueOf = function() {
                    return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * k(this._months / 12) : NaN
                }, Yn._bubble = function() {
                    var t, e, n, r, i, a = this._milliseconds,
                        o = this._days,
                        s = this._months,
                        u = this._data;
                    return 0 <= a && 0 <= o && 0 <= s || a <= 0 && o <= 0 && s <= 0 || (a += 864e5 * vn(_n(s) + o), s = o = 0), u.milliseconds = a % 1e3, t = x(a / 1e3), u.seconds = t % 60, e = x(t / 60), u.minutes = e % 60, n = x(e / 60), u.hours = n % 24, s += i = x(mn(o += x(n / 24))), o -= vn(_n(i)), r = x(s / 12), s %= 12, u.days = o, u.months = s, u.years = r, this
                }, Yn.clone = function() {
                    return Ve(this)
                }, Yn.get = function(t) {
                    return t = O(t), this.isValid() ? this[t + "s"]() : NaN
                }, Yn.milliseconds = Nn, Yn.seconds = In, Yn.minutes = Ln, Yn.hours = Bn, Yn.days = On, Yn.weeks = function() {
                    return x(this.days() / 7)
                }, Yn.months = Rn, Yn.years = Pn, Yn.humanize = function(t) {
                    if (!this.isValid()) return this.localeData().invalidDate();
                    var e, n, r, i, a, o, s, u, c, f, l = this.localeData(),
                        h = (e = !t, n = l, r = Ve(this).abs(), i = Fn(r.as("s")), a = Fn(r.as("m")), o = Fn(r.as("h")), s = Fn(r.as("d")), u = Fn(r.as("M")), c = Fn(r.as("y")), (f = i <= qn.ss && ["s", i] || i < qn.s && ["ss", i] || a <= 1 && ["m"] || a < qn.m && ["mm", a] || o <= 1 && ["h"] || o < qn.h && ["hh", o] || s <= 1 && ["d"] || s < qn.d && ["dd", s] || u <= 1 && ["M"] || u < qn.M && ["MM", u] || c <= 1 && ["y"] || ["yy", c])[2] = e, f[3] = 0 < +this, f[4] = n, function(t, e, n, r, i) {
                            return i.relativeTime(e || 1, !!n, t, r)
                        }.apply(null, f));
                    return t && (h = l.pastFuture(+this, h)), l.postformat(h)
                }, Yn.toISOString = zn, Yn.toString = zn, Yn.toJSON = zn, Yn.locale = Je, Yn.localeData = tn, Yn.toIsoString = S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", zn), Yn.lang = Qe, V("X", 0, 0, "unix"), V("x", 0, 0, "valueOf"), ft("x", at), ft("X", /[+-]?\d+(\.\d{1,3})?/), pt("X", (function(t, e, n) {
                    n._d = new Date(1e3 * parseFloat(t, 10))
                })), pt("x", (function(t, e, n) {
                    n._d = new Date(k(t))
                })), i.version = "2.22.1", e = Te, i.fn = fn, i.min = function() {
                    return Ne("isBefore", [].slice.call(arguments, 0))
                }, i.max = function() {
                    return Ne("isAfter", [].slice.call(arguments, 0))
                }, i.now = function() {
                    return Date.now ? Date.now() : +new Date
                }, i.utc = d, i.unix = function(t) {
                    return Te(1e3 * t)
                }, i.months = function(t, e) {
                    return pn(t, e, "months")
                }, i.isDate = c, i.locale = ce, i.invalid = y, i.duration = Ve, i.isMoment = w, i.weekdays = function(t, e, n) {
                    return gn(t, e, n, "weekdays")
                }, i.parseZone = function() {
                    return Te.apply(null, arguments).parseZone()
                }, i.localeData = le, i.isDuration = Be, i.monthsShort = function(t, e) {
                    return pn(t, e, "monthsShort")
                }, i.weekdaysMin = function(t, e, n) {
                    return gn(t, e, n, "weekdaysMin")
                }, i.defineLocale = fe, i.updateLocale = function(t, e) {
                    if (null != e) {
                        var n, r, i = ie;
                        null != (r = ue(t)) && (i = r._config), (n = new I(e = N(i, e))).parentLocale = ae[t], ae[t] = n, ce(t)
                    } else null != ae[t] && (null != ae[t].parentLocale ? ae[t] = ae[t].parentLocale : null != ae[t] && delete ae[t]);
                    return ae[t]
                }, i.locales = function() {
                    return M(ae)
                }, i.weekdaysShort = function(t, e, n) {
                    return gn(t, e, n, "weekdaysShort")
                }, i.normalizeUnits = O, i.relativeTimeRounding = function(t) {
                    return void 0 === t ? Fn : "function" == typeof t && (Fn = t, !0)
                }, i.relativeTimeThreshold = function(t, e) {
                    return void 0 !== qn[t] && (void 0 === e ? qn[t] : (qn[t] = e, "s" === t && (qn.ss = e - 1), !0))
                }, i.calendarFormat = function(t, e) {
                    var n = t.diff(e, "days", !0);
                    return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
                }, i.prototype = fn, i.HTML5_FMT = {
                    DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
                    DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
                    DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
                    DATE: "YYYY-MM-DD",
                    TIME: "HH:mm",
                    TIME_SECONDS: "HH:mm:ss",
                    TIME_MS: "HH:mm:ss.SSS",
                    WEEK: "YYYY-[W]WW",
                    MONTH: "YYYY-MM"
                }, i
            }()
        }).call(this, n(9)(t))
    }, function(t, e, n) {
        var r = n(37),
            i = n(93);
        t.exports = function(t) {
            return null != t && i(t.length) && !r(t)
        }
    }, function(t, e, n) {
        var r = n(293),
            i = n(303),
            a = n(34),
            o = n(6),
            s = n(310);
        t.exports = function(t) {
            return "function" == typeof t ? t : null == t ? a : "object" == typeof t ? o(t) ? i(t[0], t[1]) : r(t) : s(t)
        }
    }, function(t, e, n) {
        var r = n(236);
        t.exports = {
            Graph: r.Graph,
            json: n(338),
            alg: n(339),
            version: r.version
        }
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [6, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20],
                    n = [1, 9],
                    r = [1, 10],
                    i = [1, 11],
                    a = [1, 12],
                    o = [1, 13],
                    s = [1, 14],
                    u = [1, 16],
                    c = [1, 17],
                    f = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            start: 3,
                            gantt: 4,
                            document: 5,
                            EOF: 6,
                            line: 7,
                            SPACE: 8,
                            statement: 9,
                            NL: 10,
                            dateFormat: 11,
                            inclusiveEndDates: 12,
                            axisFormat: 13,
                            excludes: 14,
                            title: 15,
                            section: 16,
                            clickStatement: 17,
                            taskTxt: 18,
                            taskData: 19,
                            click: 20,
                            callbackname: 21,
                            callbackargs: 22,
                            href: 23,
                            clickStatementDebug: 24,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            4: "gantt",
                            6: "EOF",
                            8: "SPACE",
                            10: "NL",
                            11: "dateFormat",
                            12: "inclusiveEndDates",
                            13: "axisFormat",
                            14: "excludes",
                            15: "title",
                            16: "section",
                            18: "taskTxt",
                            19: "taskData",
                            20: "click",
                            21: "callbackname",
                            22: "callbackargs",
                            23: "href"
                        },
                        productions_: [0, [3, 3],
                            [5, 0],
                            [5, 2],
                            [7, 2],
                            [7, 1],
                            [7, 1],
                            [7, 1],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 2],
                            [17, 2],
                            [17, 3],
                            [17, 3],
                            [17, 4],
                            [17, 3],
                            [17, 4],
                            [17, 2],
                            [24, 2],
                            [24, 3],
                            [24, 3],
                            [24, 4],
                            [24, 3],
                            [24, 4],
                            [24, 2]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 1:
                                    return a[s - 1];
                                case 2:
                                    this.$ = [];
                                    break;
                                case 3:
                                    a[s - 1].push(a[s]), this.$ = a[s - 1];
                                    break;
                                case 4:
                                case 5:
                                    this.$ = a[s];
                                    break;
                                case 6:
                                case 7:
                                    this.$ = [];
                                    break;
                                case 8:
                                    r.setDateFormat(a[s].substr(11)), this.$ = a[s].substr(11);
                                    break;
                                case 9:
                                    r.enableInclusiveEndDates(), this.$ = a[s].substr(18);
                                    break;
                                case 10:
                                    r.setAxisFormat(a[s].substr(11)), this.$ = a[s].substr(11);
                                    break;
                                case 11:
                                    r.setExcludes(a[s].substr(9)), this.$ = a[s].substr(9);
                                    break;
                                case 12:
                                    r.setTitle(a[s].substr(6)), this.$ = a[s].substr(6);
                                    break;
                                case 13:
                                    r.addSection(a[s].substr(8)), this.$ = a[s].substr(8);
                                    break;
                                case 15:
                                    r.addTask(a[s - 1], a[s]), this.$ = "task";
                                    break;
                                case 16:
                                    this.$ = a[s - 1], r.setClickEvent(a[s - 1], a[s], null);
                                    break;
                                case 17:
                                    this.$ = a[s - 2], r.setClickEvent(a[s - 2], a[s - 1], a[s]);
                                    break;
                                case 18:
                                    this.$ = a[s - 2], r.setClickEvent(a[s - 2], a[s - 1], null), r.setLink(a[s - 2], a[s]);
                                    break;
                                case 19:
                                    this.$ = a[s - 3], r.setClickEvent(a[s - 3], a[s - 2], a[s - 1]), r.setLink(a[s - 3], a[s]);
                                    break;
                                case 20:
                                    this.$ = a[s - 2], r.setClickEvent(a[s - 2], a[s], null), r.setLink(a[s - 2], a[s - 1]);
                                    break;
                                case 21:
                                    this.$ = a[s - 3], r.setClickEvent(a[s - 3], a[s - 1], a[s]), r.setLink(a[s - 3], a[s - 2]);
                                    break;
                                case 22:
                                    this.$ = a[s - 1], r.setLink(a[s - 1], a[s]);
                                    break;
                                case 23:
                                case 29:
                                    this.$ = a[s - 1] + " " + a[s];
                                    break;
                                case 24:
                                case 25:
                                case 27:
                                    this.$ = a[s - 2] + " " + a[s - 1] + " " + a[s];
                                    break;
                                case 26:
                                case 28:
                                    this.$ = a[s - 3] + " " + a[s - 2] + " " + a[s - 1] + " " + a[s]
                            }
                        },
                        table: [{
                            3: 1,
                            4: [1, 2]
                        }, {
                            1: [3]
                        }, t(e, [2, 2], {
                            5: 3
                        }), {
                            6: [1, 4],
                            7: 5,
                            8: [1, 6],
                            9: 7,
                            10: [1, 8],
                            11: n,
                            12: r,
                            13: i,
                            14: a,
                            15: o,
                            16: s,
                            17: 15,
                            18: u,
                            20: c
                        }, t(e, [2, 7], {
                            1: [2, 1]
                        }), t(e, [2, 3]), {
                            9: 18,
                            11: n,
                            12: r,
                            13: i,
                            14: a,
                            15: o,
                            16: s,
                            17: 15,
                            18: u,
                            20: c
                        }, t(e, [2, 5]), t(e, [2, 6]), t(e, [2, 8]), t(e, [2, 9]), t(e, [2, 10]), t(e, [2, 11]), t(e, [2, 12]), t(e, [2, 13]), t(e, [2, 14]), {
                            19: [1, 19]
                        }, {
                            21: [1, 20],
                            23: [1, 21]
                        }, t(e, [2, 4]), t(e, [2, 15]), t(e, [2, 16], {
                            22: [1, 22],
                            23: [1, 23]
                        }), t(e, [2, 22], {
                            21: [1, 24]
                        }), t(e, [2, 17], {
                            23: [1, 25]
                        }), t(e, [2, 18]), t(e, [2, 20], {
                            22: [1, 26]
                        }), t(e, [2, 19]), t(e, [2, 21])],
                        defaultActions: {},
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    l = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {
                            "case-insensitive": !0
                        },
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    return 10;
                                case 1:
                                case 2:
                                case 3:
                                    break;
                                case 4:
                                    this.begin("href");
                                    break;
                                case 5:
                                    this.popState();
                                    break;
                                case 6:
                                    return 23;
                                case 7:
                                    this.begin("callbackname");
                                    break;
                                case 8:
                                    this.popState();
                                    break;
                                case 9:
                                    this.popState(), this.begin("callbackargs");
                                    break;
                                case 10:
                                    return 21;
                                case 11:
                                    this.popState();
                                    break;
                                case 12:
                                    return 22;
                                case 13:
                                    this.begin("click");
                                    break;
                                case 14:
                                    this.popState();
                                    break;
                                case 15:
                                    return 20;
                                case 16:
                                    return 4;
                                case 17:
                                    return 11;
                                case 18:
                                    return 12;
                                case 19:
                                    return 13;
                                case 20:
                                    return 14;
                                case 21:
                                    return "date";
                                case 22:
                                    return 15;
                                case 23:
                                    return 16;
                                case 24:
                                    return 18;
                                case 25:
                                    return 19;
                                case 26:
                                    return ":";
                                case 27:
                                    return 6;
                                case 28:
                                    return "INVALID"
                            }
                        },
                        rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:href[\s]+["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:call[\s]+)/i, /^(?:\([\s]*\))/i, /^(?:\()/i, /^(?:[^(]*)/i, /^(?:\))/i, /^(?:[^)]*)/i, /^(?:click[\s]+)/i, /^(?:[\s\n])/i, /^(?:[^\s\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:inclusiveEndDates\b)/i, /^(?:axisFormat\s[^#\n;]+)/i, /^(?:excludes\s[^#\n;]+)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],
                        conditions: {
                            callbackargs: {
                                rules: [11, 12],
                                inclusive: !1
                            },
                            callbackname: {
                                rules: [8, 9, 10],
                                inclusive: !1
                            },
                            href: {
                                rules: [5, 6],
                                inclusive: !1
                            },
                            click: {
                                rules: [14, 15],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 2, 3, 4, 7, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28],
                                inclusive: !0
                            }
                        }
                    };

                function h() {
                    this.yy = {}
                }
                return f.lexer = l, h.prototype = f, f.Parser = h, new h
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e, n) {
        var r = n(134),
            i = n(95),
            a = n(23);
        t.exports = function(t) {
            return a(t) ? r(t) : i(t)
        }
    }, function(t, e) {}, function(t, e, n) {
        (function(t) {
            function n(t, e) {
                for (var n = 0, r = t.length - 1; r >= 0; r--) {
                    var i = t[r];
                    "." === i ? t.splice(r, 1) : ".." === i ? (t.splice(r, 1), n++) : n && (t.splice(r, 1), n--)
                }
                if (e)
                    for (; n--; n) t.unshift("..");
                return t
            }

            function r(t, e) {
                if (t.filter) return t.filter(e);
                for (var n = [], r = 0; r < t.length; r++) e(t[r], r, t) && n.push(t[r]);
                return n
            }
            e.resolve = function() {
                for (var e = "", i = !1, a = arguments.length - 1; a >= -1 && !i; a--) {
                    var o = a >= 0 ? arguments[a] : t.cwd();
                    if ("string" != typeof o) throw new TypeError("Arguments to path.resolve must be strings");
                    o && (e = o + "/" + e, i = "/" === o.charAt(0))
                }
                return (i ? "/" : "") + (e = n(r(e.split("/"), (function(t) {
                    return !!t
                })), !i).join("/")) || "."
            }, e.normalize = function(t) {
                var a = e.isAbsolute(t),
                    o = "/" === i(t, -1);
                return (t = n(r(t.split("/"), (function(t) {
                    return !!t
                })), !a).join("/")) || a || (t = "."), t && o && (t += "/"), (a ? "/" : "") + t
            }, e.isAbsolute = function(t) {
                return "/" === t.charAt(0)
            }, e.join = function() {
                var t = Array.prototype.slice.call(arguments, 0);
                return e.normalize(r(t, (function(t, e) {
                    if ("string" != typeof t) throw new TypeError("Arguments to path.join must be strings");
                    return t
                })).join("/"))
            }, e.relative = function(t, n) {
                function r(t) {
                    for (var e = 0; e < t.length && "" === t[e]; e++);
                    for (var n = t.length - 1; n >= 0 && "" === t[n]; n--);
                    return e > n ? [] : t.slice(e, n - e + 1)
                }
                t = e.resolve(t).substr(1), n = e.resolve(n).substr(1);
                for (var i = r(t.split("/")), a = r(n.split("/")), o = Math.min(i.length, a.length), s = o, u = 0; u < o; u++)
                    if (i[u] !== a[u]) {
                        s = u;
                        break
                    } var c = [];
                for (u = s; u < i.length; u++) c.push("..");
                return (c = c.concat(a.slice(s))).join("/")
            }, e.sep = "/", e.delimiter = ":", e.dirname = function(t) {
                if ("string" != typeof t && (t += ""), 0 === t.length) return ".";
                for (var e = t.charCodeAt(0), n = 47 === e, r = -1, i = !0, a = t.length - 1; a >= 1; --a)
                    if (47 === (e = t.charCodeAt(a))) {
                        if (!i) {
                            r = a;
                            break
                        }
                    } else i = !1;
                return -1 === r ? n ? "/" : "." : n && 1 === r ? "/" : t.slice(0, r)
            }, e.basename = function(t, e) {
                var n = function(t) {
                    "string" != typeof t && (t += "");
                    var e, n = 0,
                        r = -1,
                        i = !0;
                    for (e = t.length - 1; e >= 0; --e)
                        if (47 === t.charCodeAt(e)) {
                            if (!i) {
                                n = e + 1;
                                break
                            }
                        } else -1 === r && (i = !1, r = e + 1);
                    return -1 === r ? "" : t.slice(n, r)
                }(t);
                return e && n.substr(-1 * e.length) === e && (n = n.substr(0, n.length - e.length)), n
            }, e.extname = function(t) {
                "string" != typeof t && (t += "");
                for (var e = -1, n = 0, r = -1, i = !0, a = 0, o = t.length - 1; o >= 0; --o) {
                    var s = t.charCodeAt(o);
                    if (47 !== s) - 1 === r && (i = !1, r = o + 1), 46 === s ? -1 === e ? e = o : 1 !== a && (a = 1) : -1 !== e && (a = -1);
                    else if (!i) {
                        n = o + 1;
                        break
                    }
                }
                return -1 === e || -1 === r || 0 === a || 1 === a && e === r - 1 && e === n + 1 ? "" : t.slice(e, r)
            };
            var i = "b" === "ab".substr(-1) ? function(t, e, n) {
                return t.substr(e, n)
            } : function(t, e, n) {
                return e < 0 && (e = t.length + e), t.substr(e, n)
            }
        }).call(this, n(7))
    }, function(t, e, n) {
        var r;
        if (!r) try {
            r = n(0)
        } catch (t) {}
        r || (r = window.d3), t.exports = r
    }, function(t, e, n) {
        var r = n(3).Buffer,
            i = n(112).Transform,
            a = n(117).StringDecoder;

        function o(t) {
            i.call(this), this.hashMode = "string" == typeof t, this.hashMode ? this[t] = this._finalOrDigest : this.final = this._finalOrDigest, this._final && (this.__final = this._final, this._final = null), this._decoder = null, this._encoding = null
        }
        n(2)(o, i), o.prototype.update = function(t, e, n) {
            "string" == typeof t && (t = r.from(t, e));
            var i = this._update(t);
            return this.hashMode ? this : (n && (i = this._toString(i, n)), i)
        }, o.prototype.setAutoPadding = function() {}, o.prototype.getAuthTag = function() {
            throw new Error("trying to get auth tag in unsupported state")
        }, o.prototype.setAuthTag = function() {
            throw new Error("trying to set auth tag in unsupported state")
        }, o.prototype.setAAD = function() {
            throw new Error("trying to set aad in unsupported state")
        }, o.prototype._transform = function(t, e, n) {
            var r;
            try {
                this.hashMode ? this._update(t) : this.push(this._update(t))
            } catch (t) {
                r = t
            } finally {
                n(r)
            }
        }, o.prototype._flush = function(t) {
            var e;
            try {
                this.push(this.__final())
            } catch (t) {
                e = t
            }
            t(e)
        }, o.prototype._finalOrDigest = function(t) {
            var e = this.__final() || r.alloc(0);
            return t && (e = this._toString(e, t, !0)), e
        }, o.prototype._toString = function(t, e, n) {
            if (this._decoder || (this._decoder = new a(e), this._encoding = e), this._encoding !== e) throw new Error("can't switch encodings");
            var r = this._decoder.write(t);
            return n && (r += this._decoder.end()), r
        }, t.exports = o
    }, function(t, e, n) {
        var r = n(248),
            i = n(253);
        t.exports = function(t, e) {
            var n = i(t, e);
            return r(n) ? n : void 0
        }
    }, function(t, e, n) {
        var r = n(38),
            i = n(249),
            a = n(250),
            o = "[object Null]",
            s = "[object Undefined]",
            u = r ? r.toStringTag : void 0;
        t.exports = function(t) {
            return null == t ? void 0 === t ? s : o : u && u in Object(t) ? i(t) : a(t)
        }
    }, function(t, e) {
        t.exports = function(t) {
            return t
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(78),
            i = Object.keys || function(t) {
                var e = [];
                for (var n in t) e.push(n);
                return e
            };
        t.exports = l;
        var a = n(54);
        a.inherits = n(2);
        var o = n(193),
            s = n(116);
        a.inherits(l, o);
        for (var u = i(s.prototype), c = 0; c < u.length; c++) {
            var f = u[c];
            l.prototype[f] || (l.prototype[f] = s.prototype[f])
        }

        function l(t) {
            if (!(this instanceof l)) return new l(t);
            o.call(this, t), s.call(this, t), t && !1 === t.readable && (this.readable = !1), t && !1 === t.writable && (this.writable = !1), this.allowHalfOpen = !0, t && !1 === t.allowHalfOpen && (this.allowHalfOpen = !1), this.once("end", h)
        }

        function h() {
            this.allowHalfOpen || this._writableState.ended || r.nextTick(d, this)
        }

        function d(t) {
            t.end()
        }
        Object.defineProperty(l.prototype, "writableHighWaterMark", {
            enumerable: !1,
            get: function() {
                return this._writableState.highWaterMark
            }
        }), Object.defineProperty(l.prototype, "destroyed", {
            get: function() {
                return void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed && this._writableState.destroyed)
            },
            set: function(t) {
                void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed = t, this._writableState.destroyed = t)
            }
        }), l.prototype._destroy = function(t, e) {
            this.push(null), this.end(), r.nextTick(e, t)
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return t === e || t != t && e != e
        }
    }, function(t, e, n) {
        var r = n(33),
            i = n(14),
            a = "[object AsyncFunction]",
            o = "[object Function]",
            s = "[object GeneratorFunction]",
            u = "[object Proxy]";
        t.exports = function(t) {
            if (!i(t)) return !1;
            var e = r(t);
            return e == o || e == s || e == a || e == u
        }
    }, function(t, e, n) {
        var r = n(18).Symbol;
        t.exports = r
    }, function(t, e, n) {
        (function(t) {
            var r = n(18),
                i = n(269),
                a = e && !e.nodeType && e,
                o = a && "object" == typeof t && t && !t.nodeType && t,
                s = o && o.exports === a ? r.Buffer : void 0,
                u = (s ? s.isBuffer : void 0) || i;
            t.exports = u
        }).call(this, n(9)(t))
    }, function(t, e, n) {
        var r = n(134),
            i = n(273),
            a = n(23);
        t.exports = function(t) {
            return a(t) ? r(t, !0) : i(t)
        }
    }, function(t, e, n) {
        var r = n(278),
            i = n(90),
            a = n(279),
            o = n(143),
            s = n(280),
            u = n(33),
            c = n(132),
            f = c(r),
            l = c(i),
            h = c(a),
            d = c(o),
            p = c(s),
            g = u;
        (r && "[object DataView]" != g(new r(new ArrayBuffer(1))) || i && "[object Map]" != g(new i) || a && "[object Promise]" != g(a.resolve()) || o && "[object Set]" != g(new o) || s && "[object WeakMap]" != g(new s)) && (g = function(t) {
            var e = u(t),
                n = "[object Object]" == e ? t.constructor : void 0,
                r = n ? c(n) : "";
            if (r) switch (r) {
                case f:
                    return "[object DataView]";
                case l:
                    return "[object Map]";
                case h:
                    return "[object Promise]";
                case d:
                    return "[object Set]";
                case p:
                    return "[object WeakMap]"
            }
            return e
        }), t.exports = g
    }, function(t, e, n) {
        var r = n(33),
            i = n(20),
            a = "[object Symbol]";
        t.exports = function(t) {
            return "symbol" == typeof t || i(t) && r(t) == a
        }
    }, function(t, e, n) {
        var r;
        try {
            r = {
                defaults: n(176),
                each: n(100),
                isFunction: n(37),
                isPlainObject: n(180),
                pick: n(183),
                has: n(106),
                range: n(184),
                uniqueId: n(185)
            }
        } catch (t) {}
        r || (r = window._), t.exports = r
    }, function(t, e, n) {
        "use strict";
        (function(e, r) {
            var i = 65536,
                a = 4294967295;
            var o = n(3).Buffer,
                s = e.crypto || e.msCrypto;
            s && s.getRandomValues ? t.exports = function(t, e) {
                if (t > a) throw new RangeError("requested too many random bytes");
                var n = o.allocUnsafe(t);
                if (t > 0)
                    if (t > i)
                        for (var u = 0; u < t; u += i) s.getRandomValues(n.slice(u, u + i));
                    else s.getRandomValues(n);
                if ("function" == typeof e) return r.nextTick((function() {
                    e(null, n)
                }));
                return n
            } : t.exports = function() {
                throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")
            }
        }).call(this, n(12), n(7))
    }, function(t, e, n) {
        var r = n(3).Buffer;

        function i(t, e) {
            this._block = r.alloc(t), this._finalSize = e, this._blockSize = t, this._len = 0
        }
        i.prototype.update = function(t, e) {
            "string" == typeof t && (e = e || "utf8", t = r.from(t, e));
            for (var n = this._block, i = this._blockSize, a = t.length, o = this._len, s = 0; s < a;) {
                for (var u = o % i, c = Math.min(a - s, i - u), f = 0; f < c; f++) n[u + f] = t[s + f];
                s += c, (o += c) % i == 0 && this._update(n)
            }
            return this._len += a, this
        }, i.prototype.digest = function(t) {
            var e = this._len % this._blockSize;
            this._block[e] = 128, this._block.fill(0, e + 1), e >= this._finalSize && (this._update(this._block), this._block.fill(0));
            var n = 8 * this._len;
            if (n <= 4294967295) this._block.writeUInt32BE(n, this._blockSize - 4);
            else {
                var r = (4294967295 & n) >>> 0,
                    i = (n - r) / 4294967296;
                this._block.writeUInt32BE(i, this._blockSize - 8), this._block.writeUInt32BE(r, this._blockSize - 4)
            }
            this._update(this._block);
            var a = this._hash();
            return t ? a.toString(t) : a
        }, i.prototype._update = function() {
            throw new Error("_update must be implemented by subclass")
        }, t.exports = i
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [1, 13],
                    n = [1, 16],
                    r = [1, 14],
                    i = [1, 15],
                    a = [1, 17],
                    o = [1, 18],
                    s = [1, 20],
                    u = [1, 21],
                    c = [1, 22],
                    f = [6, 8],
                    l = [1, 31],
                    h = [1, 32],
                    d = [1, 33],
                    p = [1, 34],
                    g = [1, 35],
                    y = [1, 36],
                    b = [6, 8, 14, 20, 28, 31, 32, 33, 34, 35, 36],
                    v = [6, 8, 12, 14, 20, 24, 28, 31, 32, 33, 34, 35, 36, 52, 53, 54],
                    m = [28, 52, 53, 54],
                    _ = [28, 35, 36, 52, 53, 54],
                    w = [28, 31, 32, 33, 34, 52, 53, 54],
                    x = [6, 8, 14],
                    k = [1, 59],
                    E = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            mermaidDoc: 3,
                            graphConfig: 4,
                            CLASS_DIAGRAM: 5,
                            NEWLINE: 6,
                            statements: 7,
                            EOF: 8,
                            statement: 9,
                            className: 10,
                            alphaNumToken: 11,
                            GENERICTYPE: 12,
                            relationStatement: 13,
                            LABEL: 14,
                            classStatement: 15,
                            methodStatement: 16,
                            annotationStatement: 17,
                            clickStatement: 18,
                            CLASS: 19,
                            STRUCT_START: 20,
                            members: 21,
                            STRUCT_STOP: 22,
                            ANNOTATION_START: 23,
                            ANNOTATION_END: 24,
                            MEMBER: 25,
                            SEPARATOR: 26,
                            relation: 27,
                            STR: 28,
                            relationType: 29,
                            lineType: 30,
                            AGGREGATION: 31,
                            EXTENSION: 32,
                            COMPOSITION: 33,
                            DEPENDENCY: 34,
                            LINE: 35,
                            DOTTED_LINE: 36,
                            CALLBACK: 37,
                            LINK: 38,
                            commentToken: 39,
                            textToken: 40,
                            graphCodeTokens: 41,
                            textNoTagsToken: 42,
                            TAGSTART: 43,
                            TAGEND: 44,
                            "==": 45,
                            "--": 46,
                            PCT: 47,
                            DEFAULT: 48,
                            SPACE: 49,
                            MINUS: 50,
                            keywords: 51,
                            UNICODE_TEXT: 52,
                            NUM: 53,
                            ALPHA: 54,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            5: "CLASS_DIAGRAM",
                            6: "NEWLINE",
                            8: "EOF",
                            12: "GENERICTYPE",
                            14: "LABEL",
                            19: "CLASS",
                            20: "STRUCT_START",
                            22: "STRUCT_STOP",
                            23: "ANNOTATION_START",
                            24: "ANNOTATION_END",
                            25: "MEMBER",
                            26: "SEPARATOR",
                            28: "STR",
                            31: "AGGREGATION",
                            32: "EXTENSION",
                            33: "COMPOSITION",
                            34: "DEPENDENCY",
                            35: "LINE",
                            36: "DOTTED_LINE",
                            37: "CALLBACK",
                            38: "LINK",
                            41: "graphCodeTokens",
                            43: "TAGSTART",
                            44: "TAGEND",
                            45: "==",
                            46: "--",
                            47: "PCT",
                            48: "DEFAULT",
                            49: "SPACE",
                            50: "MINUS",
                            51: "keywords",
                            52: "UNICODE_TEXT",
                            53: "NUM",
                            54: "ALPHA"
                        },
                        productions_: [0, [3, 1],
                            [4, 4],
                            [7, 1],
                            [7, 2],
                            [7, 3],
                            [10, 2],
                            [10, 1],
                            [10, 3],
                            [10, 2],
                            [9, 1],
                            [9, 2],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [15, 2],
                            [15, 5],
                            [17, 4],
                            [21, 1],
                            [21, 2],
                            [16, 1],
                            [16, 2],
                            [16, 1],
                            [16, 1],
                            [13, 3],
                            [13, 4],
                            [13, 4],
                            [13, 5],
                            [27, 3],
                            [27, 2],
                            [27, 2],
                            [27, 1],
                            [29, 1],
                            [29, 1],
                            [29, 1],
                            [29, 1],
                            [30, 1],
                            [30, 1],
                            [18, 3],
                            [18, 4],
                            [18, 3],
                            [18, 4],
                            [39, 1],
                            [39, 1],
                            [40, 1],
                            [40, 1],
                            [40, 1],
                            [40, 1],
                            [40, 1],
                            [40, 1],
                            [40, 1],
                            [42, 1],
                            [42, 1],
                            [42, 1],
                            [42, 1],
                            [11, 1],
                            [11, 1],
                            [11, 1]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 6:
                                    this.$ = a[s - 1] + a[s];
                                    break;
                                case 7:
                                    this.$ = a[s];
                                    break;
                                case 8:
                                    this.$ = a[s - 2] + "~" + a[s - 1] + a[s];
                                    break;
                                case 9:
                                    this.$ = a[s - 1] + "~" + a[s];
                                    break;
                                case 10:
                                    r.addRelation(a[s]);
                                    break;
                                case 11:
                                    a[s - 1].title = r.cleanupLabel(a[s]), r.addRelation(a[s - 1]);
                                    break;
                                case 16:
                                    r.addClass(a[s]);
                                    break;
                                case 17:
                                    r.addClass(a[s - 3]), r.addMembers(a[s - 3], a[s - 1]);
                                    break;
                                case 18:
                                    r.addAnnotation(a[s], a[s - 2]);
                                    break;
                                case 19:
                                    this.$ = [a[s]];
                                    break;
                                case 20:
                                    a[s].push(a[s - 1]), this.$ = a[s];
                                    break;
                                case 21:
                                    break;
                                case 22:
                                    r.addMember(a[s - 1], r.cleanupLabel(a[s]));
                                    break;
                                case 23:
                                case 24:
                                    break;
                                case 25:
                                    this.$ = {
                                        id1: a[s - 2],
                                        id2: a[s],
                                        relation: a[s - 1],
                                        relationTitle1: "none",
                                        relationTitle2: "none"
                                    };
                                    break;
                                case 26:
                                    this.$ = {
                                        id1: a[s - 3],
                                        id2: a[s],
                                        relation: a[s - 1],
                                        relationTitle1: a[s - 2],
                                        relationTitle2: "none"
                                    };
                                    break;
                                case 27:
                                    this.$ = {
                                        id1: a[s - 3],
                                        id2: a[s],
                                        relation: a[s - 2],
                                        relationTitle1: "none",
                                        relationTitle2: a[s - 1]
                                    };
                                    break;
                                case 28:
                                    this.$ = {
                                        id1: a[s - 4],
                                        id2: a[s],
                                        relation: a[s - 2],
                                        relationTitle1: a[s - 3],
                                        relationTitle2: a[s - 1]
                                    };
                                    break;
                                case 29:
                                    this.$ = {
                                        type1: a[s - 2],
                                        type2: a[s],
                                        lineType: a[s - 1]
                                    };
                                    break;
                                case 30:
                                    this.$ = {
                                        type1: "none",
                                        type2: a[s],
                                        lineType: a[s - 1]
                                    };
                                    break;
                                case 31:
                                    this.$ = {
                                        type1: a[s - 1],
                                        type2: "none",
                                        lineType: a[s]
                                    };
                                    break;
                                case 32:
                                    this.$ = {
                                        type1: "none",
                                        type2: "none",
                                        lineType: a[s]
                                    };
                                    break;
                                case 33:
                                    this.$ = r.relationType.AGGREGATION;
                                    break;
                                case 34:
                                    this.$ = r.relationType.EXTENSION;
                                    break;
                                case 35:
                                    this.$ = r.relationType.COMPOSITION;
                                    break;
                                case 36:
                                    this.$ = r.relationType.DEPENDENCY;
                                    break;
                                case 37:
                                    this.$ = r.lineType.LINE;
                                    break;
                                case 38:
                                    this.$ = r.lineType.DOTTED_LINE;
                                    break;
                                case 39:
                                    this.$ = a[s - 2], r.setClickEvent(a[s - 1], a[s], void 0);
                                    break;
                                case 40:
                                    this.$ = a[s - 3], r.setClickEvent(a[s - 2], a[s - 1], a[s]);
                                    break;
                                case 41:
                                    this.$ = a[s - 2], r.setLink(a[s - 1], a[s], void 0);
                                    break;
                                case 42:
                                    this.$ = a[s - 3], r.setLink(a[s - 2], a[s - 1], a[s])
                            }
                        },
                        table: [{
                            3: 1,
                            4: 2,
                            5: [1, 3]
                        }, {
                            1: [3]
                        }, {
                            1: [2, 1]
                        }, {
                            6: [1, 4]
                        }, {
                            7: 5,
                            9: 6,
                            10: 12,
                            11: 19,
                            13: 7,
                            15: 8,
                            16: 9,
                            17: 10,
                            18: 11,
                            19: e,
                            23: n,
                            25: r,
                            26: i,
                            37: a,
                            38: o,
                            52: s,
                            53: u,
                            54: c
                        }, {
                            8: [1, 23]
                        }, {
                            6: [1, 24],
                            8: [2, 3]
                        }, t(f, [2, 10], {
                            14: [1, 25]
                        }), t(f, [2, 12]), t(f, [2, 13]), t(f, [2, 14]), t(f, [2, 15]), t(f, [2, 21], {
                            27: 26,
                            29: 29,
                            30: 30,
                            14: [1, 28],
                            28: [1, 27],
                            31: l,
                            32: h,
                            33: d,
                            34: p,
                            35: g,
                            36: y
                        }), {
                            10: 37,
                            11: 19,
                            52: s,
                            53: u,
                            54: c
                        }, t(f, [2, 23]), t(f, [2, 24]), {
                            11: 38,
                            52: s,
                            53: u,
                            54: c
                        }, {
                            10: 39,
                            11: 19,
                            52: s,
                            53: u,
                            54: c
                        }, {
                            10: 40,
                            11: 19,
                            52: s,
                            53: u,
                            54: c
                        }, t(b, [2, 7], {
                            11: 19,
                            10: 41,
                            12: [1, 42],
                            52: s,
                            53: u,
                            54: c
                        }), t(v, [2, 56]), t(v, [2, 57]), t(v, [2, 58]), {
                            1: [2, 2]
                        }, {
                            7: 43,
                            8: [2, 4],
                            9: 6,
                            10: 12,
                            11: 19,
                            13: 7,
                            15: 8,
                            16: 9,
                            17: 10,
                            18: 11,
                            19: e,
                            23: n,
                            25: r,
                            26: i,
                            37: a,
                            38: o,
                            52: s,
                            53: u,
                            54: c
                        }, t(f, [2, 11]), {
                            10: 44,
                            11: 19,
                            28: [1, 45],
                            52: s,
                            53: u,
                            54: c
                        }, {
                            27: 46,
                            29: 29,
                            30: 30,
                            31: l,
                            32: h,
                            33: d,
                            34: p,
                            35: g,
                            36: y
                        }, t(f, [2, 22]), {
                            30: 47,
                            35: g,
                            36: y
                        }, t(m, [2, 32], {
                            29: 48,
                            31: l,
                            32: h,
                            33: d,
                            34: p
                        }), t(_, [2, 33]), t(_, [2, 34]), t(_, [2, 35]), t(_, [2, 36]), t(w, [2, 37]), t(w, [2, 38]), t(f, [2, 16], {
                            20: [1, 49]
                        }), {
                            24: [1, 50]
                        }, {
                            28: [1, 51]
                        }, {
                            28: [1, 52]
                        }, t(b, [2, 6]), t(b, [2, 9], {
                            11: 19,
                            10: 53,
                            52: s,
                            53: u,
                            54: c
                        }), {
                            8: [2, 5]
                        }, t(x, [2, 25]), {
                            10: 54,
                            11: 19,
                            52: s,
                            53: u,
                            54: c
                        }, {
                            10: 55,
                            11: 19,
                            28: [1, 56],
                            52: s,
                            53: u,
                            54: c
                        }, t(m, [2, 31], {
                            29: 57,
                            31: l,
                            32: h,
                            33: d,
                            34: p
                        }), t(m, [2, 30]), {
                            21: 58,
                            25: k
                        }, {
                            10: 60,
                            11: 19,
                            52: s,
                            53: u,
                            54: c
                        }, t(f, [2, 39], {
                            28: [1, 61]
                        }), t(f, [2, 41], {
                            28: [1, 62]
                        }), t(b, [2, 8]), t(x, [2, 27]), t(x, [2, 26]), {
                            10: 63,
                            11: 19,
                            52: s,
                            53: u,
                            54: c
                        }, t(m, [2, 29]), {
                            22: [1, 64]
                        }, {
                            21: 65,
                            22: [2, 19],
                            25: k
                        }, t(f, [2, 18]), t(f, [2, 40]), t(f, [2, 42]), t(x, [2, 28]), t(f, [2, 17]), {
                            22: [2, 20]
                        }],
                        defaultActions: {
                            2: [2, 1],
                            23: [2, 2],
                            43: [2, 5],
                            65: [2, 20]
                        },
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    A = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {},
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    break;
                                case 1:
                                    return 6;
                                case 2:
                                    break;
                                case 3:
                                    return 5;
                                case 4:
                                    return this.begin("struct"), 20;
                                case 5:
                                    return "EOF_IN_STRUCT";
                                case 6:
                                    return "OPEN_IN_STRUCT";
                                case 7:
                                    return this.popState(), 22;
                                case 8:
                                    break;
                                case 9:
                                    return "MEMBER";
                                case 10:
                                    return 19;
                                case 11:
                                    return 37;
                                case 12:
                                    return 38;
                                case 13:
                                    return 23;
                                case 14:
                                    return 24;
                                case 15:
                                    this.begin("generic");
                                    break;
                                case 16:
                                    this.popState();
                                    break;
                                case 17:
                                    return "GENERICTYPE";
                                case 18:
                                    this.begin("string");
                                    break;
                                case 19:
                                    this.popState();
                                    break;
                                case 20:
                                    return "STR";
                                case 21:
                                case 22:
                                    return 32;
                                case 23:
                                case 24:
                                    return 34;
                                case 25:
                                    return 33;
                                case 26:
                                    return 31;
                                case 27:
                                    return 35;
                                case 28:
                                    return 36;
                                case 29:
                                    return 14;
                                case 30:
                                    return 50;
                                case 31:
                                    return "DOT";
                                case 32:
                                    return "PLUS";
                                case 33:
                                    return 47;
                                case 34:
                                case 35:
                                    return "EQUALS";
                                case 36:
                                    return 54;
                                case 37:
                                    return "PUNCTUATION";
                                case 38:
                                    return 53;
                                case 39:
                                    return 52;
                                case 40:
                                    return 49;
                                case 41:
                                    return 8
                            }
                        },
                        rules: [/^(?:%%[^\n]*\n*)/, /^(?:\n+)/, /^(?:\s+)/, /^(?:classDiagram\b)/, /^(?:[\{])/, /^(?:$)/, /^(?:[\{])/, /^(?:\})/, /^(?:[\n])/, /^(?:[^\{\}\n]*)/, /^(?:class\b)/, /^(?:callback\b)/, /^(?:link\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:[~])/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:\s*<\|)/, /^(?:\s*\|>)/, /^(?:\s*>)/, /^(?:\s*<)/, /^(?:\s*\*)/, /^(?:\s*o\b)/, /^(?:--)/, /^(?:\.\.)/, /^(?::[^\n;]+)/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\w+)/, /^(?:[!"#$%&'*+,-.`?\\\/])/, /^(?:[0-9]+)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\s)/, /^(?:$)/],
                        conditions: {
                            string: {
                                rules: [19, 20],
                                inclusive: !1
                            },
                            generic: {
                                rules: [16, 17],
                                inclusive: !1
                            },
                            struct: {
                                rules: [5, 6, 7, 8, 9],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41],
                                inclusive: !0
                            }
                        }
                    };

                function S() {
                    this.yy = {}
                }
                return E.lexer = A, S.prototype = E, E.Parser = S, new S
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [1, 2],
                    n = [1, 3],
                    r = [1, 4],
                    i = [2, 4],
                    a = [1, 9],
                    o = [1, 11],
                    s = [1, 13],
                    u = [1, 14],
                    c = [1, 15],
                    f = [1, 16],
                    l = [1, 21],
                    h = [1, 17],
                    d = [1, 18],
                    p = [1, 19],
                    g = [1, 20],
                    y = [1, 22],
                    b = [1, 4, 5, 13, 14, 16, 18, 19, 21, 22, 23, 24, 25, 28],
                    v = [1, 4, 5, 11, 12, 13, 14, 16, 18, 19, 21, 22, 23, 24, 25, 28],
                    m = [4, 5, 13, 14, 16, 18, 19, 21, 22, 23, 24, 25, 28],
                    _ = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            start: 3,
                            SPACE: 4,
                            NL: 5,
                            SD: 6,
                            document: 7,
                            line: 8,
                            statement: 9,
                            idStatement: 10,
                            DESCR: 11,
                            "--\x3e": 12,
                            HIDE_EMPTY: 13,
                            scale: 14,
                            WIDTH: 15,
                            COMPOSIT_STATE: 16,
                            STRUCT_START: 17,
                            STRUCT_STOP: 18,
                            STATE_DESCR: 19,
                            AS: 20,
                            ID: 21,
                            FORK: 22,
                            JOIN: 23,
                            CONCURRENT: 24,
                            note: 25,
                            notePosition: 26,
                            NOTE_TEXT: 27,
                            EDGE_STATE: 28,
                            left_of: 29,
                            right_of: 30,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            4: "SPACE",
                            5: "NL",
                            6: "SD",
                            11: "DESCR",
                            12: "--\x3e",
                            13: "HIDE_EMPTY",
                            14: "scale",
                            15: "WIDTH",
                            16: "COMPOSIT_STATE",
                            17: "STRUCT_START",
                            18: "STRUCT_STOP",
                            19: "STATE_DESCR",
                            20: "AS",
                            21: "ID",
                            22: "FORK",
                            23: "JOIN",
                            24: "CONCURRENT",
                            25: "note",
                            27: "NOTE_TEXT",
                            28: "EDGE_STATE",
                            29: "left_of",
                            30: "right_of"
                        },
                        productions_: [0, [3, 2],
                            [3, 2],
                            [3, 2],
                            [7, 0],
                            [7, 2],
                            [8, 2],
                            [8, 1],
                            [8, 1],
                            [9, 1],
                            [9, 2],
                            [9, 3],
                            [9, 4],
                            [9, 1],
                            [9, 2],
                            [9, 1],
                            [9, 4],
                            [9, 3],
                            [9, 6],
                            [9, 1],
                            [9, 1],
                            [9, 1],
                            [9, 4],
                            [9, 4],
                            [10, 1],
                            [10, 1],
                            [26, 1],
                            [26, 1]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 3:
                                    return r.setRootDoc(a[s]), a[s];
                                case 4:
                                    this.$ = [];
                                    break;
                                case 5:
                                    "nl" != a[s] && (a[s - 1].push(a[s]), this.$ = a[s - 1]);
                                    break;
                                case 6:
                                case 7:
                                    this.$ = a[s];
                                    break;
                                case 8:
                                    this.$ = "nl";
                                    break;
                                case 9:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s],
                                        type: "default",
                                        description: ""
                                    };
                                    break;
                                case 10:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s - 1],
                                        type: "default",
                                        description: a[s].trim()
                                    };
                                    break;
                                case 11:
                                    this.$ = {
                                        stmt: "relation",
                                        state1: {
                                            stmt: "state",
                                            id: a[s - 2],
                                            type: "default",
                                            description: ""
                                        },
                                        state2: {
                                            stmt: "state",
                                            id: a[s],
                                            type: "default",
                                            description: ""
                                        }
                                    };
                                    break;
                                case 12:
                                    this.$ = {
                                        stmt: "relation",
                                        state1: {
                                            stmt: "state",
                                            id: a[s - 3],
                                            type: "default",
                                            description: ""
                                        },
                                        state2: {
                                            stmt: "state",
                                            id: a[s - 1],
                                            type: "default",
                                            description: ""
                                        },
                                        description: a[s].substr(1).trim()
                                    };
                                    break;
                                case 16:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s - 3],
                                        type: "default",
                                        description: "",
                                        doc: a[s - 1]
                                    };
                                    break;
                                case 17:
                                    var u = a[s],
                                        c = a[s - 2].trim();
                                    if (a[s].match(":")) {
                                        var f = a[s].split(":");
                                        u = f[0], c = [c, f[1]]
                                    }
                                    this.$ = {
                                        stmt: "state",
                                        id: u,
                                        type: "default",
                                        description: c
                                    };
                                    break;
                                case 18:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s - 3],
                                        type: "default",
                                        description: a[s - 5],
                                        doc: a[s - 1]
                                    };
                                    break;
                                case 19:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s],
                                        type: "fork"
                                    };
                                    break;
                                case 20:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s],
                                        type: "join"
                                    };
                                    break;
                                case 21:
                                    this.$ = {
                                        stmt: "state",
                                        id: r.getDividerId(),
                                        type: "divider"
                                    };
                                    break;
                                case 22:
                                    this.$ = {
                                        stmt: "state",
                                        id: a[s - 1].trim(),
                                        note: {
                                            position: a[s - 2].trim(),
                                            text: a[s].trim()
                                        }
                                    };
                                    break;
                                case 24:
                                case 25:
                                    this.$ = a[s]
                            }
                        },
                        table: [{
                            3: 1,
                            4: e,
                            5: n,
                            6: r
                        }, {
                            1: [3]
                        }, {
                            3: 5,
                            4: e,
                            5: n,
                            6: r
                        }, {
                            3: 6,
                            4: e,
                            5: n,
                            6: r
                        }, t([1, 4, 5, 13, 14, 16, 19, 21, 22, 23, 24, 25, 28], i, {
                            7: 7
                        }), {
                            1: [2, 1]
                        }, {
                            1: [2, 2]
                        }, {
                            1: [2, 3],
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: 12,
                            13: s,
                            14: u,
                            16: c,
                            19: f,
                            21: l,
                            22: h,
                            23: d,
                            24: p,
                            25: g,
                            28: y
                        }, t(b, [2, 5]), {
                            9: 23,
                            10: 12,
                            13: s,
                            14: u,
                            16: c,
                            19: f,
                            21: l,
                            22: h,
                            23: d,
                            24: p,
                            25: g,
                            28: y
                        }, t(b, [2, 7]), t(b, [2, 8]), t(b, [2, 9], {
                            11: [1, 24],
                            12: [1, 25]
                        }), t(b, [2, 13]), {
                            15: [1, 26]
                        }, t(b, [2, 15], {
                            17: [1, 27]
                        }), {
                            20: [1, 28]
                        }, t(b, [2, 19]), t(b, [2, 20]), t(b, [2, 21]), {
                            26: 29,
                            27: [1, 30],
                            29: [1, 31],
                            30: [1, 32]
                        }, t(v, [2, 24]), t(v, [2, 25]), t(b, [2, 6]), t(b, [2, 10]), {
                            10: 33,
                            21: l,
                            28: y
                        }, t(b, [2, 14]), t(m, i, {
                            7: 34
                        }), {
                            21: [1, 35]
                        }, {
                            21: [1, 36]
                        }, {
                            20: [1, 37]
                        }, {
                            21: [2, 26]
                        }, {
                            21: [2, 27]
                        }, t(b, [2, 11], {
                            11: [1, 38]
                        }), {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: 12,
                            13: s,
                            14: u,
                            16: c,
                            18: [1, 39],
                            19: f,
                            21: l,
                            22: h,
                            23: d,
                            24: p,
                            25: g,
                            28: y
                        }, t(b, [2, 17], {
                            17: [1, 40]
                        }), {
                            27: [1, 41]
                        }, {
                            21: [1, 42]
                        }, t(b, [2, 12]), t(b, [2, 16]), t(m, i, {
                            7: 43
                        }), t(b, [2, 22]), t(b, [2, 23]), {
                            4: a,
                            5: o,
                            8: 8,
                            9: 10,
                            10: 12,
                            13: s,
                            14: u,
                            16: c,
                            18: [1, 44],
                            19: f,
                            21: l,
                            22: h,
                            23: d,
                            24: p,
                            25: g,
                            28: y
                        }, t(b, [2, 18])],
                        defaultActions: {
                            5: [2, 1],
                            6: [2, 2],
                            31: [2, 26],
                            32: [2, 27]
                        },
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    w = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {
                            "case-insensitive": !0
                        },
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    return 5;
                                case 1:
                                case 2:
                                case 3:
                                case 4:
                                    break;
                                case 5:
                                    return this.pushState("SCALE"), 14;
                                case 6:
                                    return 15;
                                case 7:
                                    this.popState();
                                    break;
                                case 8:
                                    this.pushState("STATE");
                                    break;
                                case 9:
                                    return this.popState(), e.yytext = e.yytext.slice(0, -8).trim(), 22;
                                case 10:
                                    return this.popState(), e.yytext = e.yytext.slice(0, -8).trim(), 23;
                                case 11:
                                    return this.popState(), e.yytext = e.yytext.slice(0, -8).trim(), 22;
                                case 12:
                                    return this.popState(), e.yytext = e.yytext.slice(0, -8).trim(), 23;
                                case 13:
                                    this.begin("STATE_STRING");
                                    break;
                                case 14:
                                    return this.popState(), this.pushState("STATE_ID"), "AS";
                                case 15:
                                    return this.popState(), "ID";
                                case 16:
                                    this.popState();
                                    break;
                                case 17:
                                    return "STATE_DESCR";
                                case 18:
                                    return 16;
                                case 19:
                                    this.popState();
                                    break;
                                case 20:
                                    return this.popState(), this.pushState("struct"), 17;
                                case 21:
                                    return this.popState(), 18;
                                case 22:
                                    break;
                                case 23:
                                    return this.begin("NOTE"), 25;
                                case 24:
                                    return this.popState(), this.pushState("NOTE_ID"), 29;
                                case 25:
                                    return this.popState(), this.pushState("NOTE_ID"), 30;
                                case 26:
                                    this.popState(), this.pushState("FLOATING_NOTE");
                                    break;
                                case 27:
                                    return this.popState(), this.pushState("FLOATING_NOTE_ID"), "AS";
                                case 28:
                                    break;
                                case 29:
                                    return "NOTE_TEXT";
                                case 30:
                                    return this.popState(), "ID";
                                case 31:
                                    return this.popState(), this.pushState("NOTE_TEXT"), 21;
                                case 32:
                                    return this.popState(), e.yytext = e.yytext.substr(2).trim(), 27;
                                case 33:
                                    return this.popState(), e.yytext = e.yytext.slice(0, -8).trim(), 27;
                                case 34:
                                    return 6;
                                case 35:
                                    return 13;
                                case 36:
                                    return 28;
                                case 37:
                                    return 21;
                                case 38:
                                    return e.yytext = e.yytext.trim(), 11;
                                case 39:
                                    return 12;
                                case 40:
                                    return 24;
                                case 41:
                                    return 5;
                                case 42:
                                    return "INVALID"
                            }
                        },
                        rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:state\s+)/i, /^(?:.*<<fork>>)/i, /^(?:.*<<join>>)/i, /^(?:.*\[\[fork\]\])/i, /^(?:.*\[\[join\]\])/i, /^(?:["])/i, /^(?:as\s*)/i, /^(?:[^\n\{]*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n\s\{]+)/i, /^(?:\n)/i, /^(?:\{)/i, /^(?:\})/i, /^(?:[\n])/i, /^(?:note\s+)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:")/i, /^(?:\s*as\s*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n]*)/i, /^(?:\s*[^:\n\s\-]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:\s*[^:;]+end note\b)/i, /^(?:stateDiagram\s+)/i, /^(?:hide empty description\b)/i, /^(?:\[\*\])/i, /^(?:[^:\n\s\-\{]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?:$)/i, /^(?:.)/i],
                        conditions: {
                            LINE: {
                                rules: [2, 3],
                                inclusive: !1
                            },
                            struct: {
                                rules: [2, 3, 8, 21, 22, 23, 36, 37, 38, 39, 40],
                                inclusive: !1
                            },
                            FLOATING_NOTE_ID: {
                                rules: [30],
                                inclusive: !1
                            },
                            FLOATING_NOTE: {
                                rules: [27, 28, 29],
                                inclusive: !1
                            },
                            NOTE_TEXT: {
                                rules: [32, 33],
                                inclusive: !1
                            },
                            NOTE_ID: {
                                rules: [31],
                                inclusive: !1
                            },
                            NOTE: {
                                rules: [24, 25, 26],
                                inclusive: !1
                            },
                            SCALE: {
                                rules: [6, 7],
                                inclusive: !1
                            },
                            ALIAS: {
                                rules: [],
                                inclusive: !1
                            },
                            STATE_ID: {
                                rules: [15],
                                inclusive: !1
                            },
                            STATE_STRING: {
                                rules: [16, 17],
                                inclusive: !1
                            },
                            FORK_STATE: {
                                rules: [],
                                inclusive: !1
                            },
                            STATE: {
                                rules: [2, 3, 9, 10, 11, 12, 13, 14, 18, 19, 20],
                                inclusive: !1
                            },
                            ID: {
                                rules: [2, 3],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 3, 4, 5, 8, 20, 23, 34, 35, 36, 37, 38, 39, 41, 42],
                                inclusive: !0
                            }
                        }
                    };

                function x() {
                    this.yy = {}
                }
                return _.lexer = w, x.prototype = _, _.Parser = x, new x
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e, n) {
        (function(t, n) {
            (function() {
                var r, i = 200,
                    a = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",
                    o = "Expected a function",
                    s = "__lodash_hash_undefined__",
                    u = 500,
                    c = "__lodash_placeholder__",
                    f = 1,
                    l = 2,
                    h = 4,
                    d = 1,
                    p = 2,
                    g = 1,
                    y = 2,
                    b = 4,
                    v = 8,
                    m = 16,
                    _ = 32,
                    w = 64,
                    x = 128,
                    k = 256,
                    E = 512,
                    A = 30,
                    S = "...",
                    M = 800,
                    T = 16,
                    D = 1,
                    C = 2,
                    N = 1 / 0,
                    I = 9007199254740991,
                    L = 17976931348623157e292,
                    B = NaN,
                    O = 4294967295,
                    R = O - 1,
                    P = O >>> 1,
                    F = [
                        ["ary", x],
                        ["bind", g],
                        ["bindKey", y],
                        ["curry", v],
                        ["curryRight", m],
                        ["flip", E],
                        ["partial", _],
                        ["partialRight", w],
                        ["rearg", k]
                    ],
                    q = "[object Arguments]",
                    j = "[object Array]",
                    U = "[object AsyncFunction]",
                    z = "[object Boolean]",
                    Y = "[object Date]",
                    V = "[object DOMException]",
                    H = "[object Error]",
                    G = "[object Function]",
                    $ = "[object GeneratorFunction]",
                    W = "[object Map]",
                    K = "[object Number]",
                    X = "[object Null]",
                    Z = "[object Object]",
                    J = "[object Proxy]",
                    Q = "[object RegExp]",
                    tt = "[object Set]",
                    et = "[object String]",
                    nt = "[object Symbol]",
                    rt = "[object Undefined]",
                    it = "[object WeakMap]",
                    at = "[object WeakSet]",
                    ot = "[object ArrayBuffer]",
                    st = "[object DataView]",
                    ut = "[object Float32Array]",
                    ct = "[object Float64Array]",
                    ft = "[object Int8Array]",
                    lt = "[object Int16Array]",
                    ht = "[object Int32Array]",
                    dt = "[object Uint8Array]",
                    pt = "[object Uint8ClampedArray]",
                    gt = "[object Uint16Array]",
                    yt = "[object Uint32Array]",
                    bt = /\b__p \+= '';/g,
                    vt = /\b(__p \+=) '' \+/g,
                    mt = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
                    _t = /&(?:amp|lt|gt|quot|#39);/g,
                    wt = /[&<>"']/g,
                    xt = RegExp(_t.source),
                    kt = RegExp(wt.source),
                    Et = /<%-([\s\S]+?)%>/g,
                    At = /<%([\s\S]+?)%>/g,
                    St = /<%=([\s\S]+?)%>/g,
                    Mt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
                    Tt = /^\w*$/,
                    Dt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
                    Ct = /[\\^$.*+?()[\]{}|]/g,
                    Nt = RegExp(Ct.source),
                    It = /^\s+|\s+$/g,
                    Lt = /^\s+/,
                    Bt = /\s+$/,
                    Ot = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
                    Rt = /\{\n\/\* \[wrapped with (.+)\] \*/,
                    Pt = /,? & /,
                    Ft = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
                    qt = /\\(\\)?/g,
                    jt = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
                    Ut = /\w*$/,
                    zt = /^[-+]0x[0-9a-f]+$/i,
                    Yt = /^0b[01]+$/i,
                    Vt = /^\[object .+?Constructor\]$/,
                    Ht = /^0o[0-7]+$/i,
                    Gt = /^(?:0|[1-9]\d*)$/,
                    $t = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
                    Wt = /($^)/,
                    Kt = /['\n\r\u2028\u2029\\]/g,
                    Xt = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
                    Zt = "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
                    Jt = "[\\ud800-\\udfff]",
                    Qt = "[" + Zt + "]",
                    te = "[" + Xt + "]",
                    ee = "\\d+",
                    ne = "[\\u2700-\\u27bf]",
                    re = "[a-z\\xdf-\\xf6\\xf8-\\xff]",
                    ie = "[^\\ud800-\\udfff" + Zt + ee + "\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",
                    ae = "\\ud83c[\\udffb-\\udfff]",
                    oe = "[^\\ud800-\\udfff]",
                    se = "(?:\\ud83c[\\udde6-\\uddff]){2}",
                    ue = "[\\ud800-\\udbff][\\udc00-\\udfff]",
                    ce = "[A-Z\\xc0-\\xd6\\xd8-\\xde]",
                    fe = "(?:" + re + "|" + ie + ")",
                    le = "(?:" + ce + "|" + ie + ")",
                    he = "(?:" + te + "|" + ae + ")" + "?",
                    de = "[\\ufe0e\\ufe0f]?" + he + ("(?:\\u200d(?:" + [oe, se, ue].join("|") + ")[\\ufe0e\\ufe0f]?" + he + ")*"),
                    pe = "(?:" + [ne, se, ue].join("|") + ")" + de,
                    ge = "(?:" + [oe + te + "?", te, se, ue, Jt].join("|") + ")",
                    ye = RegExp("['’]", "g"),
                    be = RegExp(te, "g"),
                    ve = RegExp(ae + "(?=" + ae + ")|" + ge + de, "g"),
                    me = RegExp([ce + "?" + re + "+(?:['’](?:d|ll|m|re|s|t|ve))?(?=" + [Qt, ce, "$"].join("|") + ")", le + "+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=" + [Qt, ce + fe, "$"].join("|") + ")", ce + "?" + fe + "+(?:['’](?:d|ll|m|re|s|t|ve))?", ce + "+(?:['’](?:D|LL|M|RE|S|T|VE))?", "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", ee, pe].join("|"), "g"),
                    _e = RegExp("[\\u200d\\ud800-\\udfff" + Xt + "\\ufe0e\\ufe0f]"),
                    we = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
                    xe = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"],
                    ke = -1,
                    Ee = {};
                Ee[ut] = Ee[ct] = Ee[ft] = Ee[lt] = Ee[ht] = Ee[dt] = Ee[pt] = Ee[gt] = Ee[yt] = !0, Ee[q] = Ee[j] = Ee[ot] = Ee[z] = Ee[st] = Ee[Y] = Ee[H] = Ee[G] = Ee[W] = Ee[K] = Ee[Z] = Ee[Q] = Ee[tt] = Ee[et] = Ee[it] = !1;
                var Ae = {};
                Ae[q] = Ae[j] = Ae[ot] = Ae[st] = Ae[z] = Ae[Y] = Ae[ut] = Ae[ct] = Ae[ft] = Ae[lt] = Ae[ht] = Ae[W] = Ae[K] = Ae[Z] = Ae[Q] = Ae[tt] = Ae[et] = Ae[nt] = Ae[dt] = Ae[pt] = Ae[gt] = Ae[yt] = !0, Ae[H] = Ae[G] = Ae[it] = !1;
                var Se = {
                        "\\": "\\",
                        "'": "'",
                        "\n": "n",
                        "\r": "r",
                        "\u2028": "u2028",
                        "\u2029": "u2029"
                    },
                    Me = parseFloat,
                    Te = parseInt,
                    De = "object" == typeof t && t && t.Object === Object && t,
                    Ce = "object" == typeof self && self && self.Object === Object && self,
                    Ne = De || Ce || Function("return this")(),
                    Ie = e && !e.nodeType && e,
                    Le = Ie && "object" == typeof n && n && !n.nodeType && n,
                    Be = Le && Le.exports === Ie,
                    Oe = Be && De.process,
                    Re = function() {
                        try {
                            var t = Le && Le.require && Le.require("util").types;
                            return t || Oe && Oe.binding && Oe.binding("util")
                        } catch (t) {}
                    }(),
                    Pe = Re && Re.isArrayBuffer,
                    Fe = Re && Re.isDate,
                    qe = Re && Re.isMap,
                    je = Re && Re.isRegExp,
                    Ue = Re && Re.isSet,
                    ze = Re && Re.isTypedArray;

                function Ye(t, e, n) {
                    switch (n.length) {
                        case 0:
                            return t.call(e);
                        case 1:
                            return t.call(e, n[0]);
                        case 2:
                            return t.call(e, n[0], n[1]);
                        case 3:
                            return t.call(e, n[0], n[1], n[2])
                    }
                    return t.apply(e, n)
                }

                function Ve(t, e, n, r) {
                    for (var i = -1, a = null == t ? 0 : t.length; ++i < a;) {
                        var o = t[i];
                        e(r, o, n(o), t)
                    }
                    return r
                }

                function He(t, e) {
                    for (var n = -1, r = null == t ? 0 : t.length; ++n < r && !1 !== e(t[n], n, t););
                    return t
                }

                function Ge(t, e) {
                    for (var n = null == t ? 0 : t.length; n-- && !1 !== e(t[n], n, t););
                    return t
                }

                function $e(t, e) {
                    for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
                        if (!e(t[n], n, t)) return !1;
                    return !0
                }

                function We(t, e) {
                    for (var n = -1, r = null == t ? 0 : t.length, i = 0, a = []; ++n < r;) {
                        var o = t[n];
                        e(o, n, t) && (a[i++] = o)
                    }
                    return a
                }

                function Ke(t, e) {
                    return !!(null == t ? 0 : t.length) && on(t, e, 0) > -1
                }

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

                function Ze(t, e) {
                    for (var n = -1, r = null == t ? 0 : t.length, i = Array(r); ++n < r;) i[n] = e(t[n], n, t);
                    return i
                }

                function Je(t, e) {
                    for (var n = -1, r = e.length, i = t.length; ++n < r;) t[i + n] = e[n];
                    return t
                }

                function Qe(t, e, n, r) {
                    var i = -1,
                        a = null == t ? 0 : t.length;
                    for (r && a && (n = t[++i]); ++i < a;) n = e(n, t[i], i, t);
                    return n
                }

                function tn(t, e, n, r) {
                    var i = null == t ? 0 : t.length;
                    for (r && i && (n = t[--i]); i--;) n = e(n, t[i], i, t);
                    return n
                }

                function en(t, e) {
                    for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
                        if (e(t[n], n, t)) return !0;
                    return !1
                }
                var nn = fn("length");

                function rn(t, e, n) {
                    var r;
                    return n(t, (function(t, n, i) {
                        if (e(t, n, i)) return r = n, !1
                    })), r
                }

                function an(t, e, n, r) {
                    for (var i = t.length, a = n + (r ? 1 : -1); r ? a-- : ++a < i;)
                        if (e(t[a], a, t)) return a;
                    return -1
                }

                function on(t, e, n) {
                    return e == e ? function(t, e, n) {
                        var r = n - 1,
                            i = t.length;
                        for (; ++r < i;)
                            if (t[r] === e) return r;
                        return -1
                    }(t, e, n) : an(t, un, n)
                }

                function sn(t, e, n, r) {
                    for (var i = n - 1, a = t.length; ++i < a;)
                        if (r(t[i], e)) return i;
                    return -1
                }

                function un(t) {
                    return t != t
                }

                function cn(t, e) {
                    var n = null == t ? 0 : t.length;
                    return n ? dn(t, e) / n : B
                }

                function fn(t) {
                    return function(e) {
                        return null == e ? r : e[t]
                    }
                }

                function ln(t) {
                    return function(e) {
                        return null == t ? r : t[e]
                    }
                }

                function hn(t, e, n, r, i) {
                    return i(t, (function(t, i, a) {
                        n = r ? (r = !1, t) : e(n, t, i, a)
                    })), n
                }

                function dn(t, e) {
                    for (var n, i = -1, a = t.length; ++i < a;) {
                        var o = e(t[i]);
                        o !== r && (n = n === r ? o : n + o)
                    }
                    return n
                }

                function pn(t, e) {
                    for (var n = -1, r = Array(t); ++n < t;) r[n] = e(n);
                    return r
                }

                function gn(t) {
                    return function(e) {
                        return t(e)
                    }
                }

                function yn(t, e) {
                    return Ze(e, (function(e) {
                        return t[e]
                    }))
                }

                function bn(t, e) {
                    return t.has(e)
                }

                function vn(t, e) {
                    for (var n = -1, r = t.length; ++n < r && on(e, t[n], 0) > -1;);
                    return n
                }

                function mn(t, e) {
                    for (var n = t.length; n-- && on(e, t[n], 0) > -1;);
                    return n
                }
                var _n = ln({
                        "À": "A",
                        "Á": "A",
                        "Â": "A",
                        "Ã": "A",
                        "Ä": "A",
                        "Å": "A",
                        "à": "a",
                        "á": "a",
                        "â": "a",
                        "ã": "a",
                        "ä": "a",
                        "å": "a",
                        "Ç": "C",
                        "ç": "c",
                        "Ð": "D",
                        "ð": "d",
                        "È": "E",
                        "É": "E",
                        "Ê": "E",
                        "Ë": "E",
                        "è": "e",
                        "é": "e",
                        "ê": "e",
                        "ë": "e",
                        "Ì": "I",
                        "Í": "I",
                        "Î": "I",
                        "Ï": "I",
                        "ì": "i",
                        "í": "i",
                        "î": "i",
                        "ï": "i",
                        "Ñ": "N",
                        "ñ": "n",
                        "Ò": "O",
                        "Ó": "O",
                        "Ô": "O",
                        "Õ": "O",
                        "Ö": "O",
                        "Ø": "O",
                        "ò": "o",
                        "ó": "o",
                        "ô": "o",
                        "õ": "o",
                        "ö": "o",
                        "ø": "o",
                        "Ù": "U",
                        "Ú": "U",
                        "Û": "U",
                        "Ü": "U",
                        "ù": "u",
                        "ú": "u",
                        "û": "u",
                        "ü": "u",
                        "Ý": "Y",
                        "ý": "y",
                        "ÿ": "y",
                        "Æ": "Ae",
                        "æ": "ae",
                        "Þ": "Th",
                        "þ": "th",
                        "ß": "ss",
                        "Ā": "A",
                        "Ă": "A",
                        "Ą": "A",
                        "ā": "a",
                        "ă": "a",
                        "ą": "a",
                        "Ć": "C",
                        "Ĉ": "C",
                        "Ċ": "C",
                        "Č": "C",
                        "ć": "c",
                        "ĉ": "c",
                        "ċ": "c",
                        "č": "c",
                        "Ď": "D",
                        "Đ": "D",
                        "ď": "d",
                        "đ": "d",
                        "Ē": "E",
                        "Ĕ": "E",
                        "Ė": "E",
                        "Ę": "E",
                        "Ě": "E",
                        "ē": "e",
                        "ĕ": "e",
                        "ė": "e",
                        "ę": "e",
                        "ě": "e",
                        "Ĝ": "G",
                        "Ğ": "G",
                        "Ġ": "G",
                        "Ģ": "G",
                        "ĝ": "g",
                        "ğ": "g",
                        "ġ": "g",
                        "ģ": "g",
                        "Ĥ": "H",
                        "Ħ": "H",
                        "ĥ": "h",
                        "ħ": "h",
                        "Ĩ": "I",
                        "Ī": "I",
                        "Ĭ": "I",
                        "Į": "I",
                        "İ": "I",
                        "ĩ": "i",
                        "ī": "i",
                        "ĭ": "i",
                        "į": "i",
                        "ı": "i",
                        "Ĵ": "J",
                        "ĵ": "j",
                        "Ķ": "K",
                        "ķ": "k",
                        "ĸ": "k",
                        "Ĺ": "L",
                        "Ļ": "L",
                        "Ľ": "L",
                        "Ŀ": "L",
                        "Ł": "L",
                        "ĺ": "l",
                        "ļ": "l",
                        "ľ": "l",
                        "ŀ": "l",
                        "ł": "l",
                        "Ń": "N",
                        "Ņ": "N",
                        "Ň": "N",
                        "Ŋ": "N",
                        "ń": "n",
                        "ņ": "n",
                        "ň": "n",
                        "ŋ": "n",
                        "Ō": "O",
                        "Ŏ": "O",
                        "Ő": "O",
                        "ō": "o",
                        "ŏ": "o",
                        "ő": "o",
                        "Ŕ": "R",
                        "Ŗ": "R",
                        "Ř": "R",
                        "ŕ": "r",
                        "ŗ": "r",
                        "ř": "r",
                        "Ś": "S",
                        "Ŝ": "S",
                        "Ş": "S",
                        "Š": "S",
                        "ś": "s",
                        "ŝ": "s",
                        "ş": "s",
                        "š": "s",
                        "Ţ": "T",
                        "Ť": "T",
                        "Ŧ": "T",
                        "ţ": "t",
                        "ť": "t",
                        "ŧ": "t",
                        "Ũ": "U",
                        "Ū": "U",
                        "Ŭ": "U",
                        "Ů": "U",
                        "Ű": "U",
                        "Ų": "U",
                        "ũ": "u",
                        "ū": "u",
                        "ŭ": "u",
                        "ů": "u",
                        "ű": "u",
                        "ų": "u",
                        "Ŵ": "W",
                        "ŵ": "w",
                        "Ŷ": "Y",
                        "ŷ": "y",
                        "Ÿ": "Y",
                        "Ź": "Z",
                        "Ż": "Z",
                        "Ž": "Z",
                        "ź": "z",
                        "ż": "z",
                        "ž": "z",
                        "IJ": "IJ",
                        "ij": "ij",
                        "Œ": "Oe",
                        "œ": "oe",
                        "ʼn": "'n",
                        "ſ": "s"
                    }),
                    wn = ln({
                        "&": "&amp;",
                        "<": "&lt;",
                        ">": "&gt;",
                        '"': "&quot;",
                        "'": "&#39;"
                    });

                function xn(t) {
                    return "\\" + Se[t]
                }

                function kn(t) {
                    return _e.test(t)
                }

                function En(t) {
                    var e = -1,
                        n = Array(t.size);
                    return t.forEach((function(t, r) {
                        n[++e] = [r, t]
                    })), n
                }

                function An(t, e) {
                    return function(n) {
                        return t(e(n))
                    }
                }

                function Sn(t, e) {
                    for (var n = -1, r = t.length, i = 0, a = []; ++n < r;) {
                        var o = t[n];
                        o !== e && o !== c || (t[n] = c, a[i++] = n)
                    }
                    return a
                }

                function Mn(t) {
                    var e = -1,
                        n = Array(t.size);
                    return t.forEach((function(t) {
                        n[++e] = t
                    })), n
                }

                function Tn(t) {
                    var e = -1,
                        n = Array(t.size);
                    return t.forEach((function(t) {
                        n[++e] = [t, t]
                    })), n
                }

                function Dn(t) {
                    return kn(t) ? function(t) {
                        var e = ve.lastIndex = 0;
                        for (; ve.test(t);) ++e;
                        return e
                    }(t) : nn(t)
                }

                function Cn(t) {
                    return kn(t) ? function(t) {
                        return t.match(ve) || []
                    }(t) : function(t) {
                        return t.split("")
                    }(t)
                }
                var Nn = ln({
                    "&amp;": "&",
                    "&lt;": "<",
                    "&gt;": ">",
                    "&quot;": '"',
                    "&#39;": "'"
                });
                var In = function t(e) {
                    var n, Xt = (e = null == e ? Ne : In.defaults(Ne.Object(), e, In.pick(Ne, xe))).Array,
                        Zt = e.Date,
                        Jt = e.Error,
                        Qt = e.Function,
                        te = e.Math,
                        ee = e.Object,
                        ne = e.RegExp,
                        re = e.String,
                        ie = e.TypeError,
                        ae = Xt.prototype,
                        oe = Qt.prototype,
                        se = ee.prototype,
                        ue = e["__core-js_shared__"],
                        ce = oe.toString,
                        fe = se.hasOwnProperty,
                        le = 0,
                        he = (n = /[^.]+$/.exec(ue && ue.keys && ue.keys.IE_PROTO || "")) ? "Symbol(src)_1." + n : "",
                        de = se.toString,
                        pe = ce.call(ee),
                        ge = Ne._,
                        ve = ne("^" + ce.call(fe).replace(Ct, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                        _e = Be ? e.Buffer : r,
                        Se = e.Symbol,
                        De = e.Uint8Array,
                        Ce = _e ? _e.allocUnsafe : r,
                        Ie = An(ee.getPrototypeOf, ee),
                        Le = ee.create,
                        Oe = se.propertyIsEnumerable,
                        Re = ae.splice,
                        nn = Se ? Se.isConcatSpreadable : r,
                        ln = Se ? Se.iterator : r,
                        Ln = Se ? Se.toStringTag : r,
                        Bn = function() {
                            try {
                                var t = Fa(ee, "defineProperty");
                                return t({}, "", {}), t
                            } catch (t) {}
                        }(),
                        On = e.clearTimeout !== Ne.clearTimeout && e.clearTimeout,
                        Rn = Zt && Zt.now !== Ne.Date.now && Zt.now,
                        Pn = e.setTimeout !== Ne.setTimeout && e.setTimeout,
                        Fn = te.ceil,
                        qn = te.floor,
                        jn = ee.getOwnPropertySymbols,
                        Un = _e ? _e.isBuffer : r,
                        zn = e.isFinite,
                        Yn = ae.join,
                        Vn = An(ee.keys, ee),
                        Hn = te.max,
                        Gn = te.min,
                        $n = Zt.now,
                        Wn = e.parseInt,
                        Kn = te.random,
                        Xn = ae.reverse,
                        Zn = Fa(e, "DataView"),
                        Jn = Fa(e, "Map"),
                        Qn = Fa(e, "Promise"),
                        tr = Fa(e, "Set"),
                        er = Fa(e, "WeakMap"),
                        nr = Fa(ee, "create"),
                        rr = er && new er,
                        ir = {},
                        ar = fo(Zn),
                        or = fo(Jn),
                        sr = fo(Qn),
                        ur = fo(tr),
                        cr = fo(er),
                        fr = Se ? Se.prototype : r,
                        lr = fr ? fr.valueOf : r,
                        hr = fr ? fr.toString : r;

                    function dr(t) {
                        if (Ts(t) && !bs(t) && !(t instanceof br)) {
                            if (t instanceof yr) return t;
                            if (fe.call(t, "__wrapped__")) return lo(t)
                        }
                        return new yr(t)
                    }
                    var pr = function() {
                        function t() {}
                        return function(e) {
                            if (!Ms(e)) return {};
                            if (Le) return Le(e);
                            t.prototype = e;
                            var n = new t;
                            return t.prototype = r, n
                        }
                    }();

                    function gr() {}

                    function yr(t, e) {
                        this.__wrapped__ = t, this.__actions__ = [], this.__chain__ = !!e, this.__index__ = 0, this.__values__ = r
                    }

                    function br(t) {
                        this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = O, this.__views__ = []
                    }

                    function vr(t) {
                        var e = -1,
                            n = null == t ? 0 : t.length;
                        for (this.clear(); ++e < n;) {
                            var r = t[e];
                            this.set(r[0], r[1])
                        }
                    }

                    function mr(t) {
                        var e = -1,
                            n = null == t ? 0 : t.length;
                        for (this.clear(); ++e < n;) {
                            var r = t[e];
                            this.set(r[0], r[1])
                        }
                    }

                    function _r(t) {
                        var e = -1,
                            n = null == t ? 0 : t.length;
                        for (this.clear(); ++e < n;) {
                            var r = t[e];
                            this.set(r[0], r[1])
                        }
                    }

                    function wr(t) {
                        var e = -1,
                            n = null == t ? 0 : t.length;
                        for (this.__data__ = new _r; ++e < n;) this.add(t[e])
                    }

                    function xr(t) {
                        var e = this.__data__ = new mr(t);
                        this.size = e.size
                    }

                    function kr(t, e) {
                        var n = bs(t),
                            r = !n && ys(t),
                            i = !n && !r && ws(t),
                            a = !n && !r && !i && Rs(t),
                            o = n || r || i || a,
                            s = o ? pn(t.length, re) : [],
                            u = s.length;
                        for (var c in t) !e && !fe.call(t, c) || o && ("length" == c || i && ("offset" == c || "parent" == c) || a && ("buffer" == c || "byteLength" == c || "byteOffset" == c) || Ha(c, u)) || s.push(c);
                        return s
                    }

                    function Er(t) {
                        var e = t.length;
                        return e ? t[wi(0, e - 1)] : r
                    }

                    function Ar(t, e) {
                        return so(na(t), Br(e, 0, t.length))
                    }

                    function Sr(t) {
                        return so(na(t))
                    }

                    function Mr(t, e, n) {
                        (n === r || ds(t[e], n)) && (n !== r || e in t) || Ir(t, e, n)
                    }

                    function Tr(t, e, n) {
                        var i = t[e];
                        fe.call(t, e) && ds(i, n) && (n !== r || e in t) || Ir(t, e, n)
                    }

                    function Dr(t, e) {
                        for (var n = t.length; n--;)
                            if (ds(t[n][0], e)) return n;
                        return -1
                    }

                    function Cr(t, e, n, r) {
                        return qr(t, (function(t, i, a) {
                            e(r, t, n(t), a)
                        })), r
                    }

                    function Nr(t, e) {
                        return t && ra(e, iu(e), t)
                    }

                    function Ir(t, e, n) {
                        "__proto__" == e && Bn ? Bn(t, e, {
                            configurable: !0,
                            enumerable: !0,
                            value: n,
                            writable: !0
                        }) : t[e] = n
                    }

                    function Lr(t, e) {
                        for (var n = -1, i = e.length, a = Xt(i), o = null == t; ++n < i;) a[n] = o ? r : Qs(t, e[n]);
                        return a
                    }

                    function Br(t, e, n) {
                        return t == t && (n !== r && (t = t <= n ? t : n), e !== r && (t = t >= e ? t : e)), t
                    }

                    function Or(t, e, n, i, a, o) {
                        var s, u = e & f,
                            c = e & l,
                            d = e & h;
                        if (n && (s = a ? n(t, i, a, o) : n(t)), s !== r) return s;
                        if (!Ms(t)) return t;
                        var p = bs(t);
                        if (p) {
                            if (s = function(t) {
                                    var e = t.length,
                                        n = new t.constructor(e);
                                    e && "string" == typeof t[0] && fe.call(t, "index") && (n.index = t.index, n.input = t.input);
                                    return n
                                }(t), !u) return na(t, s)
                        } else {
                            var g = Ua(t),
                                y = g == G || g == $;
                            if (ws(t)) return Xi(t, u);
                            if (g == Z || g == q || y && !a) {
                                if (s = c || y ? {} : Ya(t), !u) return c ? function(t, e) {
                                    return ra(t, ja(t), e)
                                }(t, function(t, e) {
                                    return t && ra(e, au(e), t)
                                }(s, t)) : function(t, e) {
                                    return ra(t, qa(t), e)
                                }(t, Nr(s, t))
                            } else {
                                if (!Ae[g]) return a ? t : {};
                                s = function(t, e, n) {
                                    var r = t.constructor;
                                    switch (e) {
                                        case ot:
                                            return Zi(t);
                                        case z:
                                        case Y:
                                            return new r(+t);
                                        case st:
                                            return function(t, e) {
                                                var n = e ? Zi(t.buffer) : t.buffer;
                                                return new t.constructor(n, t.byteOffset, t.byteLength)
                                            }(t, n);
                                        case ut:
                                        case ct:
                                        case ft:
                                        case lt:
                                        case ht:
                                        case dt:
                                        case pt:
                                        case gt:
                                        case yt:
                                            return Ji(t, n);
                                        case W:
                                            return new r;
                                        case K:
                                        case et:
                                            return new r(t);
                                        case Q:
                                            return function(t) {
                                                var e = new t.constructor(t.source, Ut.exec(t));
                                                return e.lastIndex = t.lastIndex, e
                                            }(t);
                                        case tt:
                                            return new r;
                                        case nt:
                                            return i = t, lr ? ee(lr.call(i)) : {}
                                    }
                                    var i
                                }(t, g, u)
                            }
                        }
                        o || (o = new xr);
                        var b = o.get(t);
                        if (b) return b;
                        o.set(t, s), Ls(t) ? t.forEach((function(r) {
                            s.add(Or(r, e, n, r, t, o))
                        })) : Ds(t) && t.forEach((function(r, i) {
                            s.set(i, Or(r, e, n, i, t, o))
                        }));
                        var v = p ? r : (d ? c ? Na : Ca : c ? au : iu)(t);
                        return He(v || t, (function(r, i) {
                            v && (r = t[i = r]), Tr(s, i, Or(r, e, n, i, t, o))
                        })), s
                    }

                    function Rr(t, e, n) {
                        var i = n.length;
                        if (null == t) return !i;
                        for (t = ee(t); i--;) {
                            var a = n[i],
                                o = e[a],
                                s = t[a];
                            if (s === r && !(a in t) || !o(s)) return !1
                        }
                        return !0
                    }

                    function Pr(t, e, n) {
                        if ("function" != typeof t) throw new ie(o);
                        return ro((function() {
                            t.apply(r, n)
                        }), e)
                    }

                    function Fr(t, e, n, r) {
                        var a = -1,
                            o = Ke,
                            s = !0,
                            u = t.length,
                            c = [],
                            f = e.length;
                        if (!u) return c;
                        n && (e = Ze(e, gn(n))), r ? (o = Xe, s = !1) : e.length >= i && (o = bn, s = !1, e = new wr(e));
                        t: for (; ++a < u;) {
                            var l = t[a],
                                h = null == n ? l : n(l);
                            if (l = r || 0 !== l ? l : 0, s && h == h) {
                                for (var d = f; d--;)
                                    if (e[d] === h) continue t;
                                c.push(l)
                            } else o(e, h, r) || c.push(l)
                        }
                        return c
                    }
                    dr.templateSettings = {
                        escape: Et,
                        evaluate: At,
                        interpolate: St,
                        variable: "",
                        imports: {
                            _: dr
                        }
                    }, dr.prototype = gr.prototype, dr.prototype.constructor = dr, yr.prototype = pr(gr.prototype), yr.prototype.constructor = yr, br.prototype = pr(gr.prototype), br.prototype.constructor = br, vr.prototype.clear = function() {
                        this.__data__ = nr ? nr(null) : {}, this.size = 0
                    }, vr.prototype.delete = function(t) {
                        var e = this.has(t) && delete this.__data__[t];
                        return this.size -= e ? 1 : 0, e
                    }, vr.prototype.get = function(t) {
                        var e = this.__data__;
                        if (nr) {
                            var n = e[t];
                            return n === s ? r : n
                        }
                        return fe.call(e, t) ? e[t] : r
                    }, vr.prototype.has = function(t) {
                        var e = this.__data__;
                        return nr ? e[t] !== r : fe.call(e, t)
                    }, vr.prototype.set = function(t, e) {
                        var n = this.__data__;
                        return this.size += this.has(t) ? 0 : 1, n[t] = nr && e === r ? s : e, this
                    }, mr.prototype.clear = function() {
                        this.__data__ = [], this.size = 0
                    }, mr.prototype.delete = function(t) {
                        var e = this.__data__,
                            n = Dr(e, t);
                        return !(n < 0) && (n == e.length - 1 ? e.pop() : Re.call(e, n, 1), --this.size, !0)
                    }, mr.prototype.get = function(t) {
                        var e = this.__data__,
                            n = Dr(e, t);
                        return n < 0 ? r : e[n][1]
                    }, mr.prototype.has = function(t) {
                        return Dr(this.__data__, t) > -1
                    }, mr.prototype.set = function(t, e) {
                        var n = this.__data__,
                            r = Dr(n, t);
                        return r < 0 ? (++this.size, n.push([t, e])) : n[r][1] = e, this
                    }, _r.prototype.clear = function() {
                        this.size = 0, this.__data__ = {
                            hash: new vr,
                            map: new(Jn || mr),
                            string: new vr
                        }
                    }, _r.prototype.delete = function(t) {
                        var e = Ra(this, t).delete(t);
                        return this.size -= e ? 1 : 0, e
                    }, _r.prototype.get = function(t) {
                        return Ra(this, t).get(t)
                    }, _r.prototype.has = function(t) {
                        return Ra(this, t).has(t)
                    }, _r.prototype.set = function(t, e) {
                        var n = Ra(this, t),
                            r = n.size;
                        return n.set(t, e), this.size += n.size == r ? 0 : 1, this
                    }, wr.prototype.add = wr.prototype.push = function(t) {
                        return this.__data__.set(t, s), this
                    }, wr.prototype.has = function(t) {
                        return this.__data__.has(t)
                    }, xr.prototype.clear = function() {
                        this.__data__ = new mr, this.size = 0
                    }, xr.prototype.delete = function(t) {
                        var e = this.__data__,
                            n = e.delete(t);
                        return this.size = e.size, n
                    }, xr.prototype.get = function(t) {
                        return this.__data__.get(t)
                    }, xr.prototype.has = function(t) {
                        return this.__data__.has(t)
                    }, xr.prototype.set = function(t, e) {
                        var n = this.__data__;
                        if (n instanceof mr) {
                            var r = n.__data__;
                            if (!Jn || r.length < i - 1) return r.push([t, e]), this.size = ++n.size, this;
                            n = this.__data__ = new _r(r)
                        }
                        return n.set(t, e), this.size = n.size, this
                    };
                    var qr = oa($r),
                        jr = oa(Wr, !0);

                    function Ur(t, e) {
                        var n = !0;
                        return qr(t, (function(t, r, i) {
                            return n = !!e(t, r, i)
                        })), n
                    }

                    function zr(t, e, n) {
                        for (var i = -1, a = t.length; ++i < a;) {
                            var o = t[i],
                                s = e(o);
                            if (null != s && (u === r ? s == s && !Os(s) : n(s, u))) var u = s,
                                c = o
                        }
                        return c
                    }

                    function Yr(t, e) {
                        var n = [];
                        return qr(t, (function(t, r, i) {
                            e(t, r, i) && n.push(t)
                        })), n
                    }

                    function Vr(t, e, n, r, i) {
                        var a = -1,
                            o = t.length;
                        for (n || (n = Va), i || (i = []); ++a < o;) {
                            var s = t[a];
                            e > 0 && n(s) ? e > 1 ? Vr(s, e - 1, n, r, i) : Je(i, s) : r || (i[i.length] = s)
                        }
                        return i
                    }
                    var Hr = sa(),
                        Gr = sa(!0);

                    function $r(t, e) {
                        return t && Hr(t, e, iu)
                    }

                    function Wr(t, e) {
                        return t && Gr(t, e, iu)
                    }

                    function Kr(t, e) {
                        return We(e, (function(e) {
                            return Es(t[e])
                        }))
                    }

                    function Xr(t, e) {
                        for (var n = 0, i = (e = Gi(e, t)).length; null != t && n < i;) t = t[co(e[n++])];
                        return n && n == i ? t : r
                    }

                    function Zr(t, e, n) {
                        var r = e(t);
                        return bs(t) ? r : Je(r, n(t))
                    }

                    function Jr(t) {
                        return null == t ? t === r ? rt : X : Ln && Ln in ee(t) ? function(t) {
                            var e = fe.call(t, Ln),
                                n = t[Ln];
                            try {
                                t[Ln] = r;
                                var i = !0
                            } catch (t) {}
                            var a = de.call(t);
                            i && (e ? t[Ln] = n : delete t[Ln]);
                            return a
                        }(t) : function(t) {
                            return de.call(t)
                        }(t)
                    }

                    function Qr(t, e) {
                        return t > e
                    }

                    function ti(t, e) {
                        return null != t && fe.call(t, e)
                    }

                    function ei(t, e) {
                        return null != t && e in ee(t)
                    }

                    function ni(t, e, n) {
                        for (var i = n ? Xe : Ke, a = t[0].length, o = t.length, s = o, u = Xt(o), c = 1 / 0, f = []; s--;) {
                            var l = t[s];
                            s && e && (l = Ze(l, gn(e))), c = Gn(l.length, c), u[s] = !n && (e || a >= 120 && l.length >= 120) ? new wr(s && l) : r
                        }
                        l = t[0];
                        var h = -1,
                            d = u[0];
                        t: for (; ++h < a && f.length < c;) {
                            var p = l[h],
                                g = e ? e(p) : p;
                            if (p = n || 0 !== p ? p : 0, !(d ? bn(d, g) : i(f, g, n))) {
                                for (s = o; --s;) {
                                    var y = u[s];
                                    if (!(y ? bn(y, g) : i(t[s], g, n))) continue t
                                }
                                d && d.push(g), f.push(p)
                            }
                        }
                        return f
                    }

                    function ri(t, e, n) {
                        var i = null == (t = to(t, e = Gi(e, t))) ? t : t[co(ko(e))];
                        return null == i ? r : Ye(i, t, n)
                    }

                    function ii(t) {
                        return Ts(t) && Jr(t) == q
                    }

                    function ai(t, e, n, i, a) {
                        return t === e || (null == t || null == e || !Ts(t) && !Ts(e) ? t != t && e != e : function(t, e, n, i, a, o) {
                            var s = bs(t),
                                u = bs(e),
                                c = s ? j : Ua(t),
                                f = u ? j : Ua(e),
                                l = (c = c == q ? Z : c) == Z,
                                h = (f = f == q ? Z : f) == Z,
                                g = c == f;
                            if (g && ws(t)) {
                                if (!ws(e)) return !1;
                                s = !0, l = !1
                            }
                            if (g && !l) return o || (o = new xr), s || Rs(t) ? Ta(t, e, n, i, a, o) : function(t, e, n, r, i, a, o) {
                                switch (n) {
                                    case st:
                                        if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1;
                                        t = t.buffer, e = e.buffer;
                                    case ot:
                                        return !(t.byteLength != e.byteLength || !a(new De(t), new De(e)));
                                    case z:
                                    case Y:
                                    case K:
                                        return ds(+t, +e);
                                    case H:
                                        return t.name == e.name && t.message == e.message;
                                    case Q:
                                    case et:
                                        return t == e + "";
                                    case W:
                                        var s = En;
                                    case tt:
                                        var u = r & d;
                                        if (s || (s = Mn), t.size != e.size && !u) return !1;
                                        var c = o.get(t);
                                        if (c) return c == e;
                                        r |= p, o.set(t, e);
                                        var f = Ta(s(t), s(e), r, i, a, o);
                                        return o.delete(t), f;
                                    case nt:
                                        if (lr) return lr.call(t) == lr.call(e)
                                }
                                return !1
                            }(t, e, c, n, i, a, o);
                            if (!(n & d)) {
                                var y = l && fe.call(t, "__wrapped__"),
                                    b = h && fe.call(e, "__wrapped__");
                                if (y || b) {
                                    var v = y ? t.value() : t,
                                        m = b ? e.value() : e;
                                    return o || (o = new xr), a(v, m, n, i, o)
                                }
                            }
                            if (!g) return !1;
                            return o || (o = new xr),
                                function(t, e, n, i, a, o) {
                                    var s = n & d,
                                        u = Ca(t),
                                        c = u.length,
                                        f = Ca(e).length;
                                    if (c != f && !s) return !1;
                                    var l = c;
                                    for (; l--;) {
                                        var h = u[l];
                                        if (!(s ? h in e : fe.call(e, h))) return !1
                                    }
                                    var p = o.get(t);
                                    if (p && o.get(e)) return p == e;
                                    var g = !0;
                                    o.set(t, e), o.set(e, t);
                                    var y = s;
                                    for (; ++l < c;) {
                                        h = u[l];
                                        var b = t[h],
                                            v = e[h];
                                        if (i) var m = s ? i(v, b, h, e, t, o) : i(b, v, h, t, e, o);
                                        if (!(m === r ? b === v || a(b, v, n, i, o) : m)) {
                                            g = !1;
                                            break
                                        }
                                        y || (y = "constructor" == h)
                                    }
                                    if (g && !y) {
                                        var _ = t.constructor,
                                            w = e.constructor;
                                        _ != w && "constructor" in t && "constructor" in e && !("function" == typeof _ && _ instanceof _ && "function" == typeof w && w instanceof w) && (g = !1)
                                    }
                                    return o.delete(t), o.delete(e), g
                                }(t, e, n, i, a, o)
                        }(t, e, n, i, ai, a))
                    }

                    function oi(t, e, n, i) {
                        var a = n.length,
                            o = a,
                            s = !i;
                        if (null == t) return !o;
                        for (t = ee(t); a--;) {
                            var u = n[a];
                            if (s && u[2] ? u[1] !== t[u[0]] : !(u[0] in t)) return !1
                        }
                        for (; ++a < o;) {
                            var c = (u = n[a])[0],
                                f = t[c],
                                l = u[1];
                            if (s && u[2]) {
                                if (f === r && !(c in t)) return !1
                            } else {
                                var h = new xr;
                                if (i) var g = i(f, l, c, t, e, h);
                                if (!(g === r ? ai(l, f, d | p, i, h) : g)) return !1
                            }
                        }
                        return !0
                    }

                    function si(t) {
                        return !(!Ms(t) || (e = t, he && he in e)) && (Es(t) ? ve : Vt).test(fo(t));
                        var e
                    }

                    function ui(t) {
                        return "function" == typeof t ? t : null == t ? Cu : "object" == typeof t ? bs(t) ? pi(t[0], t[1]) : di(t) : qu(t)
                    }

                    function ci(t) {
                        if (!Xa(t)) return Vn(t);
                        var e = [];
                        for (var n in ee(t)) fe.call(t, n) && "constructor" != n && e.push(n);
                        return e
                    }

                    function fi(t) {
                        if (!Ms(t)) return function(t) {
                            var e = [];
                            if (null != t)
                                for (var n in ee(t)) e.push(n);
                            return e
                        }(t);
                        var e = Xa(t),
                            n = [];
                        for (var r in t)("constructor" != r || !e && fe.call(t, r)) && n.push(r);
                        return n
                    }

                    function li(t, e) {
                        return t < e
                    }

                    function hi(t, e) {
                        var n = -1,
                            r = ms(t) ? Xt(t.length) : [];
                        return qr(t, (function(t, i, a) {
                            r[++n] = e(t, i, a)
                        })), r
                    }

                    function di(t) {
                        var e = Pa(t);
                        return 1 == e.length && e[0][2] ? Ja(e[0][0], e[0][1]) : function(n) {
                            return n === t || oi(n, t, e)
                        }
                    }

                    function pi(t, e) {
                        return $a(t) && Za(e) ? Ja(co(t), e) : function(n) {
                            var i = Qs(n, t);
                            return i === r && i === e ? tu(n, t) : ai(e, i, d | p)
                        }
                    }

                    function gi(t, e, n, i, a) {
                        t !== e && Hr(e, (function(o, s) {
                            if (a || (a = new xr), Ms(o)) ! function(t, e, n, i, a, o, s) {
                                var u = eo(t, n),
                                    c = eo(e, n),
                                    f = s.get(c);
                                if (f) return void Mr(t, n, f);
                                var l = o ? o(u, c, n + "", t, e, s) : r,
                                    h = l === r;
                                if (h) {
                                    var d = bs(c),
                                        p = !d && ws(c),
                                        g = !d && !p && Rs(c);
                                    l = c, d || p || g ? bs(u) ? l = u : _s(u) ? l = na(u) : p ? (h = !1, l = Xi(c, !0)) : g ? (h = !1, l = Ji(c, !0)) : l = [] : Ns(c) || ys(c) ? (l = u, ys(u) ? l = Vs(u) : Ms(u) && !Es(u) || (l = Ya(c))) : h = !1
                                }
                                h && (s.set(c, l), a(l, c, i, o, s), s.delete(c));
                                Mr(t, n, l)
                            }(t, e, s, n, gi, i, a);
                            else {
                                var u = i ? i(eo(t, s), o, s + "", t, e, a) : r;
                                u === r && (u = o), Mr(t, s, u)
                            }
                        }), au)
                    }

                    function yi(t, e) {
                        var n = t.length;
                        if (n) return Ha(e += e < 0 ? n : 0, n) ? t[e] : r
                    }

                    function bi(t, e, n) {
                        var r = -1;
                        return e = Ze(e.length ? e : [Cu], gn(Oa())),
                            function(t, e) {
                                var n = t.length;
                                for (t.sort(e); n--;) t[n] = t[n].value;
                                return t
                            }(hi(t, (function(t, n, i) {
                                return {
                                    criteria: Ze(e, (function(e) {
                                        return e(t)
                                    })),
                                    index: ++r,
                                    value: t
                                }
                            })), (function(t, e) {
                                return function(t, e, n) {
                                    var r = -1,
                                        i = t.criteria,
                                        a = e.criteria,
                                        o = i.length,
                                        s = n.length;
                                    for (; ++r < o;) {
                                        var u = Qi(i[r], a[r]);
                                        if (u) {
                                            if (r >= s) return u;
                                            var c = n[r];
                                            return u * ("desc" == c ? -1 : 1)
                                        }
                                    }
                                    return t.index - e.index
                                }(t, e, n)
                            }))
                    }

                    function vi(t, e, n) {
                        for (var r = -1, i = e.length, a = {}; ++r < i;) {
                            var o = e[r],
                                s = Xr(t, o);
                            n(s, o) && Si(a, Gi(o, t), s)
                        }
                        return a
                    }

                    function mi(t, e, n, r) {
                        var i = r ? sn : on,
                            a = -1,
                            o = e.length,
                            s = t;
                        for (t === e && (e = na(e)), n && (s = Ze(t, gn(n))); ++a < o;)
                            for (var u = 0, c = e[a], f = n ? n(c) : c;
                                (u = i(s, f, u, r)) > -1;) s !== t && Re.call(s, u, 1), Re.call(t, u, 1);
                        return t
                    }

                    function _i(t, e) {
                        for (var n = t ? e.length : 0, r = n - 1; n--;) {
                            var i = e[n];
                            if (n == r || i !== a) {
                                var a = i;
                                Ha(i) ? Re.call(t, i, 1) : Fi(t, i)
                            }
                        }
                        return t
                    }

                    function wi(t, e) {
                        return t + qn(Kn() * (e - t + 1))
                    }

                    function xi(t, e) {
                        var n = "";
                        if (!t || e < 1 || e > I) return n;
                        do {
                            e % 2 && (n += t), (e = qn(e / 2)) && (t += t)
                        } while (e);
                        return n
                    }

                    function ki(t, e) {
                        return io(Qa(t, e, Cu), t + "")
                    }

                    function Ei(t) {
                        return Er(du(t))
                    }

                    function Ai(t, e) {
                        var n = du(t);
                        return so(n, Br(e, 0, n.length))
                    }

                    function Si(t, e, n, i) {
                        if (!Ms(t)) return t;
                        for (var a = -1, o = (e = Gi(e, t)).length, s = o - 1, u = t; null != u && ++a < o;) {
                            var c = co(e[a]),
                                f = n;
                            if (a != s) {
                                var l = u[c];
                                (f = i ? i(l, c, u) : r) === r && (f = Ms(l) ? l : Ha(e[a + 1]) ? [] : {})
                            }
                            Tr(u, c, f), u = u[c]
                        }
                        return t
                    }
                    var Mi = rr ? function(t, e) {
                            return rr.set(t, e), t
                        } : Cu,
                        Ti = Bn ? function(t, e) {
                            return Bn(t, "toString", {
                                configurable: !0,
                                enumerable: !1,
                                value: Mu(e),
                                writable: !0
                            })
                        } : Cu;

                    function Di(t) {
                        return so(du(t))
                    }

                    function Ci(t, e, n) {
                        var r = -1,
                            i = t.length;
                        e < 0 && (e = -e > i ? 0 : i + e), (n = n > i ? i : n) < 0 && (n += i), i = e > n ? 0 : n - e >>> 0, e >>>= 0;
                        for (var a = Xt(i); ++r < i;) a[r] = t[r + e];
                        return a
                    }

                    function Ni(t, e) {
                        var n;
                        return qr(t, (function(t, r, i) {
                            return !(n = e(t, r, i))
                        })), !!n
                    }

                    function Ii(t, e, n) {
                        var r = 0,
                            i = null == t ? r : t.length;
                        if ("number" == typeof e && e == e && i <= P) {
                            for (; r < i;) {
                                var a = r + i >>> 1,
                                    o = t[a];
                                null !== o && !Os(o) && (n ? o <= e : o < e) ? r = a + 1 : i = a
                            }
                            return i
                        }
                        return Li(t, e, Cu, n)
                    }

                    function Li(t, e, n, i) {
                        e = n(e);
                        for (var a = 0, o = null == t ? 0 : t.length, s = e != e, u = null === e, c = Os(e), f = e === r; a < o;) {
                            var l = qn((a + o) / 2),
                                h = n(t[l]),
                                d = h !== r,
                                p = null === h,
                                g = h == h,
                                y = Os(h);
                            if (s) var b = i || g;
                            else b = f ? g && (i || d) : u ? g && d && (i || !p) : c ? g && d && !p && (i || !y) : !p && !y && (i ? h <= e : h < e);
                            b ? a = l + 1 : o = l
                        }
                        return Gn(o, R)
                    }

                    function Bi(t, e) {
                        for (var n = -1, r = t.length, i = 0, a = []; ++n < r;) {
                            var o = t[n],
                                s = e ? e(o) : o;
                            if (!n || !ds(s, u)) {
                                var u = s;
                                a[i++] = 0 === o ? 0 : o
                            }
                        }
                        return a
                    }

                    function Oi(t) {
                        return "number" == typeof t ? t : Os(t) ? B : +t
                    }

                    function Ri(t) {
                        if ("string" == typeof t) return t;
                        if (bs(t)) return Ze(t, Ri) + "";
                        if (Os(t)) return hr ? hr.call(t) : "";
                        var e = t + "";
                        return "0" == e && 1 / t == -N ? "-0" : e
                    }

                    function Pi(t, e, n) {
                        var r = -1,
                            a = Ke,
                            o = t.length,
                            s = !0,
                            u = [],
                            c = u;
                        if (n) s = !1, a = Xe;
                        else if (o >= i) {
                            var f = e ? null : xa(t);
                            if (f) return Mn(f);
                            s = !1, a = bn, c = new wr
                        } else c = e ? [] : u;
                        t: for (; ++r < o;) {
                            var l = t[r],
                                h = e ? e(l) : l;
                            if (l = n || 0 !== l ? l : 0, s && h == h) {
                                for (var d = c.length; d--;)
                                    if (c[d] === h) continue t;
                                e && c.push(h), u.push(l)
                            } else a(c, h, n) || (c !== u && c.push(h), u.push(l))
                        }
                        return u
                    }

                    function Fi(t, e) {
                        return null == (t = to(t, e = Gi(e, t))) || delete t[co(ko(e))]
                    }

                    function qi(t, e, n, r) {
                        return Si(t, e, n(Xr(t, e)), r)
                    }

                    function ji(t, e, n, r) {
                        for (var i = t.length, a = r ? i : -1;
                            (r ? a-- : ++a < i) && e(t[a], a, t););
                        return n ? Ci(t, r ? 0 : a, r ? a + 1 : i) : Ci(t, r ? a + 1 : 0, r ? i : a)
                    }

                    function Ui(t, e) {
                        var n = t;
                        return n instanceof br && (n = n.value()), Qe(e, (function(t, e) {
                            return e.func.apply(e.thisArg, Je([t], e.args))
                        }), n)
                    }

                    function zi(t, e, n) {
                        var r = t.length;
                        if (r < 2) return r ? Pi(t[0]) : [];
                        for (var i = -1, a = Xt(r); ++i < r;)
                            for (var o = t[i], s = -1; ++s < r;) s != i && (a[i] = Fr(a[i] || o, t[s], e, n));
                        return Pi(Vr(a, 1), e, n)
                    }

                    function Yi(t, e, n) {
                        for (var i = -1, a = t.length, o = e.length, s = {}; ++i < a;) {
                            var u = i < o ? e[i] : r;
                            n(s, t[i], u)
                        }
                        return s
                    }

                    function Vi(t) {
                        return _s(t) ? t : []
                    }

                    function Hi(t) {
                        return "function" == typeof t ? t : Cu
                    }

                    function Gi(t, e) {
                        return bs(t) ? t : $a(t, e) ? [t] : uo(Hs(t))
                    }
                    var $i = ki;

                    function Wi(t, e, n) {
                        var i = t.length;
                        return n = n === r ? i : n, !e && n >= i ? t : Ci(t, e, n)
                    }
                    var Ki = On || function(t) {
                        return Ne.clearTimeout(t)
                    };

                    function Xi(t, e) {
                        if (e) return t.slice();
                        var n = t.length,
                            r = Ce ? Ce(n) : new t.constructor(n);
                        return t.copy(r), r
                    }

                    function Zi(t) {
                        var e = new t.constructor(t.byteLength);
                        return new De(e).set(new De(t)), e
                    }

                    function Ji(t, e) {
                        var n = e ? Zi(t.buffer) : t.buffer;
                        return new t.constructor(n, t.byteOffset, t.length)
                    }

                    function Qi(t, e) {
                        if (t !== e) {
                            var n = t !== r,
                                i = null === t,
                                a = t == t,
                                o = Os(t),
                                s = e !== r,
                                u = null === e,
                                c = e == e,
                                f = Os(e);
                            if (!u && !f && !o && t > e || o && s && c && !u && !f || i && s && c || !n && c || !a) return 1;
                            if (!i && !o && !f && t < e || f && n && a && !i && !o || u && n && a || !s && a || !c) return -1
                        }
                        return 0
                    }

                    function ta(t, e, n, r) {
                        for (var i = -1, a = t.length, o = n.length, s = -1, u = e.length, c = Hn(a - o, 0), f = Xt(u + c), l = !r; ++s < u;) f[s] = e[s];
                        for (; ++i < o;)(l || i < a) && (f[n[i]] = t[i]);
                        for (; c--;) f[s++] = t[i++];
                        return f
                    }

                    function ea(t, e, n, r) {
                        for (var i = -1, a = t.length, o = -1, s = n.length, u = -1, c = e.length, f = Hn(a - s, 0), l = Xt(f + c), h = !r; ++i < f;) l[i] = t[i];
                        for (var d = i; ++u < c;) l[d + u] = e[u];
                        for (; ++o < s;)(h || i < a) && (l[d + n[o]] = t[i++]);
                        return l
                    }

                    function na(t, e) {
                        var n = -1,
                            r = t.length;
                        for (e || (e = Xt(r)); ++n < r;) e[n] = t[n];
                        return e
                    }

                    function ra(t, e, n, i) {
                        var a = !n;
                        n || (n = {});
                        for (var o = -1, s = e.length; ++o < s;) {
                            var u = e[o],
                                c = i ? i(n[u], t[u], u, n, t) : r;
                            c === r && (c = t[u]), a ? Ir(n, u, c) : Tr(n, u, c)
                        }
                        return n
                    }

                    function ia(t, e) {
                        return function(n, r) {
                            var i = bs(n) ? Ve : Cr,
                                a = e ? e() : {};
                            return i(n, t, Oa(r, 2), a)
                        }
                    }

                    function aa(t) {
                        return ki((function(e, n) {
                            var i = -1,
                                a = n.length,
                                o = a > 1 ? n[a - 1] : r,
                                s = a > 2 ? n[2] : r;
                            for (o = t.length > 3 && "function" == typeof o ? (a--, o) : r, s && Ga(n[0], n[1], s) && (o = a < 3 ? r : o, a = 1), e = ee(e); ++i < a;) {
                                var u = n[i];
                                u && t(e, u, i, o)
                            }
                            return e
                        }))
                    }

                    function oa(t, e) {
                        return function(n, r) {
                            if (null == n) return n;
                            if (!ms(n)) return t(n, r);
                            for (var i = n.length, a = e ? i : -1, o = ee(n);
                                (e ? a-- : ++a < i) && !1 !== r(o[a], a, o););
                            return n
                        }
                    }

                    function sa(t) {
                        return function(e, n, r) {
                            for (var i = -1, a = ee(e), o = r(e), s = o.length; s--;) {
                                var u = o[t ? s : ++i];
                                if (!1 === n(a[u], u, a)) break
                            }
                            return e
                        }
                    }

                    function ua(t) {
                        return function(e) {
                            var n = kn(e = Hs(e)) ? Cn(e) : r,
                                i = n ? n[0] : e.charAt(0),
                                a = n ? Wi(n, 1).join("") : e.slice(1);
                            return i[t]() + a
                        }
                    }

                    function ca(t) {
                        return function(e) {
                            return Qe(Eu(yu(e).replace(ye, "")), t, "")
                        }
                    }

                    function fa(t) {
                        return function() {
                            var e = arguments;
                            switch (e.length) {
                                case 0:
                                    return new t;
                                case 1:
                                    return new t(e[0]);
                                case 2:
                                    return new t(e[0], e[1]);
                                case 3:
                                    return new t(e[0], e[1], e[2]);
                                case 4:
                                    return new t(e[0], e[1], e[2], e[3]);
                                case 5:
                                    return new t(e[0], e[1], e[2], e[3], e[4]);
                                case 6:
                                    return new t(e[0], e[1], e[2], e[3], e[4], e[5]);
                                case 7:
                                    return new t(e[0], e[1], e[2], e[3], e[4], e[5], e[6])
                            }
                            var n = pr(t.prototype),
                                r = t.apply(n, e);
                            return Ms(r) ? r : n
                        }
                    }

                    function la(t) {
                        return function(e, n, i) {
                            var a = ee(e);
                            if (!ms(e)) {
                                var o = Oa(n, 3);
                                e = iu(e), n = function(t) {
                                    return o(a[t], t, a)
                                }
                            }
                            var s = t(e, n, i);
                            return s > -1 ? a[o ? e[s] : s] : r
                        }
                    }

                    function ha(t) {
                        return Da((function(e) {
                            var n = e.length,
                                i = n,
                                a = yr.prototype.thru;
                            for (t && e.reverse(); i--;) {
                                var s = e[i];
                                if ("function" != typeof s) throw new ie(o);
                                if (a && !u && "wrapper" == La(s)) var u = new yr([], !0)
                            }
                            for (i = u ? i : n; ++i < n;) {
                                var c = La(s = e[i]),
                                    f = "wrapper" == c ? Ia(s) : r;
                                u = f && Wa(f[0]) && f[1] == (x | v | _ | k) && !f[4].length && 1 == f[9] ? u[La(f[0])].apply(u, f[3]) : 1 == s.length && Wa(s) ? u[c]() : u.thru(s)
                            }
                            return function() {
                                var t = arguments,
                                    r = t[0];
                                if (u && 1 == t.length && bs(r)) return u.plant(r).value();
                                for (var i = 0, a = n ? e[i].apply(this, t) : r; ++i < n;) a = e[i].call(this, a);
                                return a
                            }
                        }))
                    }

                    function da(t, e, n, i, a, o, s, u, c, f) {
                        var l = e & x,
                            h = e & g,
                            d = e & y,
                            p = e & (v | m),
                            b = e & E,
                            _ = d ? r : fa(t);
                        return function g() {
                            for (var y = arguments.length, v = Xt(y), m = y; m--;) v[m] = arguments[m];
                            if (p) var w = Ba(g),
                                x = function(t, e) {
                                    for (var n = t.length, r = 0; n--;) t[n] === e && ++r;
                                    return r
                                }(v, w);
                            if (i && (v = ta(v, i, a, p)), o && (v = ea(v, o, s, p)), y -= x, p && y < f) {
                                var k = Sn(v, w);
                                return _a(t, e, da, g.placeholder, n, v, k, u, c, f - y)
                            }
                            var E = h ? n : this,
                                A = d ? E[t] : t;
                            return y = v.length, u ? v = function(t, e) {
                                var n = t.length,
                                    i = Gn(e.length, n),
                                    a = na(t);
                                for (; i--;) {
                                    var o = e[i];
                                    t[i] = Ha(o, n) ? a[o] : r
                                }
                                return t
                            }(v, u) : b && y > 1 && v.reverse(), l && c < y && (v.length = c), this && this !== Ne && this instanceof g && (A = _ || fa(A)), A.apply(E, v)
                        }
                    }

                    function pa(t, e) {
                        return function(n, r) {
                            return function(t, e, n, r) {
                                return $r(t, (function(t, i, a) {
                                    e(r, n(t), i, a)
                                })), r
                            }(n, t, e(r), {})
                        }
                    }

                    function ga(t, e) {
                        return function(n, i) {
                            var a;
                            if (n === r && i === r) return e;
                            if (n !== r && (a = n), i !== r) {
                                if (a === r) return i;
                                "string" == typeof n || "string" == typeof i ? (n = Ri(n), i = Ri(i)) : (n = Oi(n), i = Oi(i)), a = t(n, i)
                            }
                            return a
                        }
                    }

                    function ya(t) {
                        return Da((function(e) {
                            return e = Ze(e, gn(Oa())), ki((function(n) {
                                var r = this;
                                return t(e, (function(t) {
                                    return Ye(t, r, n)
                                }))
                            }))
                        }))
                    }

                    function ba(t, e) {
                        var n = (e = e === r ? " " : Ri(e)).length;
                        if (n < 2) return n ? xi(e, t) : e;
                        var i = xi(e, Fn(t / Dn(e)));
                        return kn(e) ? Wi(Cn(i), 0, t).join("") : i.slice(0, t)
                    }

                    function va(t) {
                        return function(e, n, i) {
                            return i && "number" != typeof i && Ga(e, n, i) && (n = i = r), e = js(e), n === r ? (n = e, e = 0) : n = js(n),
                                function(t, e, n, r) {
                                    for (var i = -1, a = Hn(Fn((e - t) / (n || 1)), 0), o = Xt(a); a--;) o[r ? a : ++i] = t, t += n;
                                    return o
                                }(e, n, i = i === r ? e < n ? 1 : -1 : js(i), t)
                        }
                    }

                    function ma(t) {
                        return function(e, n) {
                            return "string" == typeof e && "string" == typeof n || (e = Ys(e), n = Ys(n)), t(e, n)
                        }
                    }

                    function _a(t, e, n, i, a, o, s, u, c, f) {
                        var l = e & v;
                        e |= l ? _ : w, (e &= ~(l ? w : _)) & b || (e &= ~(g | y));
                        var h = [t, e, a, l ? o : r, l ? s : r, l ? r : o, l ? r : s, u, c, f],
                            d = n.apply(r, h);
                        return Wa(t) && no(d, h), d.placeholder = i, ao(d, t, e)
                    }

                    function wa(t) {
                        var e = te[t];
                        return function(t, n) {
                            if (t = Ys(t), (n = null == n ? 0 : Gn(Us(n), 292)) && zn(t)) {
                                var r = (Hs(t) + "e").split("e");
                                return +((r = (Hs(e(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
                            }
                            return e(t)
                        }
                    }
                    var xa = tr && 1 / Mn(new tr([, -0]))[1] == N ? function(t) {
                        return new tr(t)
                    } : Ou;

                    function ka(t) {
                        return function(e) {
                            var n = Ua(e);
                            return n == W ? En(e) : n == tt ? Tn(e) : function(t, e) {
                                return Ze(e, (function(e) {
                                    return [e, t[e]]
                                }))
                            }(e, t(e))
                        }
                    }

                    function Ea(t, e, n, i, a, s, u, f) {
                        var l = e & y;
                        if (!l && "function" != typeof t) throw new ie(o);
                        var h = i ? i.length : 0;
                        if (h || (e &= ~(_ | w), i = a = r), u = u === r ? u : Hn(Us(u), 0), f = f === r ? f : Us(f), h -= a ? a.length : 0, e & w) {
                            var d = i,
                                p = a;
                            i = a = r
                        }
                        var E = l ? r : Ia(t),
                            A = [t, e, n, i, a, d, p, s, u, f];
                        if (E && function(t, e) {
                                var n = t[1],
                                    r = e[1],
                                    i = n | r,
                                    a = i < (g | y | x),
                                    o = r == x && n == v || r == x && n == k && t[7].length <= e[8] || r == (x | k) && e[7].length <= e[8] && n == v;
                                if (!a && !o) return t;
                                r & g && (t[2] = e[2], i |= n & g ? 0 : b);
                                var s = e[3];
                                if (s) {
                                    var u = t[3];
                                    t[3] = u ? ta(u, s, e[4]) : s, t[4] = u ? Sn(t[3], c) : e[4]
                                }(s = e[5]) && (u = t[5], t[5] = u ? ea(u, s, e[6]) : s, t[6] = u ? Sn(t[5], c) : e[6]);
                                (s = e[7]) && (t[7] = s);
                                r & x && (t[8] = null == t[8] ? e[8] : Gn(t[8], e[8]));
                                null == t[9] && (t[9] = e[9]);
                                t[0] = e[0], t[1] = i
                            }(A, E), t = A[0], e = A[1], n = A[2], i = A[3], a = A[4], !(f = A[9] = A[9] === r ? l ? 0 : t.length : Hn(A[9] - h, 0)) && e & (v | m) && (e &= ~(v | m)), e && e != g) S = e == v || e == m ? function(t, e, n) {
                            var i = fa(t);
                            return function a() {
                                for (var o = arguments.length, s = Xt(o), u = o, c = Ba(a); u--;) s[u] = arguments[u];
                                var f = o < 3 && s[0] !== c && s[o - 1] !== c ? [] : Sn(s, c);
                                return (o -= f.length) < n ? _a(t, e, da, a.placeholder, r, s, f, r, r, n - o) : Ye(this && this !== Ne && this instanceof a ? i : t, this, s)
                            }
                        }(t, e, f) : e != _ && e != (g | _) || a.length ? da.apply(r, A) : function(t, e, n, r) {
                            var i = e & g,
                                a = fa(t);
                            return function e() {
                                for (var o = -1, s = arguments.length, u = -1, c = r.length, f = Xt(c + s), l = this && this !== Ne && this instanceof e ? a : t; ++u < c;) f[u] = r[u];
                                for (; s--;) f[u++] = arguments[++o];
                                return Ye(l, i ? n : this, f)
                            }
                        }(t, e, n, i);
                        else var S = function(t, e, n) {
                            var r = e & g,
                                i = fa(t);
                            return function e() {
                                return (this && this !== Ne && this instanceof e ? i : t).apply(r ? n : this, arguments)
                            }
                        }(t, e, n);
                        return ao((E ? Mi : no)(S, A), t, e)
                    }

                    function Aa(t, e, n, i) {
                        return t === r || ds(t, se[n]) && !fe.call(i, n) ? e : t
                    }

                    function Sa(t, e, n, i, a, o) {
                        return Ms(t) && Ms(e) && (o.set(e, t), gi(t, e, r, Sa, o), o.delete(e)), t
                    }

                    function Ma(t) {
                        return Ns(t) ? r : t
                    }

                    function Ta(t, e, n, i, a, o) {
                        var s = n & d,
                            u = t.length,
                            c = e.length;
                        if (u != c && !(s && c > u)) return !1;
                        var f = o.get(t);
                        if (f && o.get(e)) return f == e;
                        var l = -1,
                            h = !0,
                            g = n & p ? new wr : r;
                        for (o.set(t, e), o.set(e, t); ++l < u;) {
                            var y = t[l],
                                b = e[l];
                            if (i) var v = s ? i(b, y, l, e, t, o) : i(y, b, l, t, e, o);
                            if (v !== r) {
                                if (v) continue;
                                h = !1;
                                break
                            }
                            if (g) {
                                if (!en(e, (function(t, e) {
                                        if (!bn(g, e) && (y === t || a(y, t, n, i, o))) return g.push(e)
                                    }))) {
                                    h = !1;
                                    break
                                }
                            } else if (y !== b && !a(y, b, n, i, o)) {
                                h = !1;
                                break
                            }
                        }
                        return o.delete(t), o.delete(e), h
                    }

                    function Da(t) {
                        return io(Qa(t, r, vo), t + "")
                    }

                    function Ca(t) {
                        return Zr(t, iu, qa)
                    }

                    function Na(t) {
                        return Zr(t, au, ja)
                    }
                    var Ia = rr ? function(t) {
                        return rr.get(t)
                    } : Ou;

                    function La(t) {
                        for (var e = t.name + "", n = ir[e], r = fe.call(ir, e) ? n.length : 0; r--;) {
                            var i = n[r],
                                a = i.func;
                            if (null == a || a == t) return i.name
                        }
                        return e
                    }

                    function Ba(t) {
                        return (fe.call(dr, "placeholder") ? dr : t).placeholder
                    }

                    function Oa() {
                        var t = dr.iteratee || Nu;
                        return t = t === Nu ? ui : t, arguments.length ? t(arguments[0], arguments[1]) : t
                    }

                    function Ra(t, e) {
                        var n, r, i = t.__data__;
                        return ("string" == (r = typeof(n = e)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== n : null === n) ? i["string" == typeof e ? "string" : "hash"] : i.map
                    }

                    function Pa(t) {
                        for (var e = iu(t), n = e.length; n--;) {
                            var r = e[n],
                                i = t[r];
                            e[n] = [r, i, Za(i)]
                        }
                        return e
                    }

                    function Fa(t, e) {
                        var n = function(t, e) {
                            return null == t ? r : t[e]
                        }(t, e);
                        return si(n) ? n : r
                    }
                    var qa = jn ? function(t) {
                            return null == t ? [] : (t = ee(t), We(jn(t), (function(e) {
                                return Oe.call(t, e)
                            })))
                        } : zu,
                        ja = jn ? function(t) {
                            for (var e = []; t;) Je(e, qa(t)), t = Ie(t);
                            return e
                        } : zu,
                        Ua = Jr;

                    function za(t, e, n) {
                        for (var r = -1, i = (e = Gi(e, t)).length, a = !1; ++r < i;) {
                            var o = co(e[r]);
                            if (!(a = null != t && n(t, o))) break;
                            t = t[o]
                        }
                        return a || ++r != i ? a : !!(i = null == t ? 0 : t.length) && Ss(i) && Ha(o, i) && (bs(t) || ys(t))
                    }

                    function Ya(t) {
                        return "function" != typeof t.constructor || Xa(t) ? {} : pr(Ie(t))
                    }

                    function Va(t) {
                        return bs(t) || ys(t) || !!(nn && t && t[nn])
                    }

                    function Ha(t, e) {
                        var n = typeof t;
                        return !!(e = null == e ? I : e) && ("number" == n || "symbol" != n && Gt.test(t)) && t > -1 && t % 1 == 0 && t < e
                    }

                    function Ga(t, e, n) {
                        if (!Ms(n)) return !1;
                        var r = typeof e;
                        return !!("number" == r ? ms(n) && Ha(e, n.length) : "string" == r && e in n) && ds(n[e], t)
                    }

                    function $a(t, e) {
                        if (bs(t)) return !1;
                        var n = typeof t;
                        return !("number" != n && "symbol" != n && "boolean" != n && null != t && !Os(t)) || (Tt.test(t) || !Mt.test(t) || null != e && t in ee(e))
                    }

                    function Wa(t) {
                        var e = La(t),
                            n = dr[e];
                        if ("function" != typeof n || !(e in br.prototype)) return !1;
                        if (t === n) return !0;
                        var r = Ia(n);
                        return !!r && t === r[0]
                    }(Zn && Ua(new Zn(new ArrayBuffer(1))) != st || Jn && Ua(new Jn) != W || Qn && "[object Promise]" != Ua(Qn.resolve()) || tr && Ua(new tr) != tt || er && Ua(new er) != it) && (Ua = function(t) {
                        var e = Jr(t),
                            n = e == Z ? t.constructor : r,
                            i = n ? fo(n) : "";
                        if (i) switch (i) {
                            case ar:
                                return st;
                            case or:
                                return W;
                            case sr:
                                return "[object Promise]";
                            case ur:
                                return tt;
                            case cr:
                                return it
                        }
                        return e
                    });
                    var Ka = ue ? Es : Yu;

                    function Xa(t) {
                        var e = t && t.constructor;
                        return t === ("function" == typeof e && e.prototype || se)
                    }

                    function Za(t) {
                        return t == t && !Ms(t)
                    }

                    function Ja(t, e) {
                        return function(n) {
                            return null != n && (n[t] === e && (e !== r || t in ee(n)))
                        }
                    }

                    function Qa(t, e, n) {
                        return e = Hn(e === r ? t.length - 1 : e, 0),
                            function() {
                                for (var r = arguments, i = -1, a = Hn(r.length - e, 0), o = Xt(a); ++i < a;) o[i] = r[e + i];
                                i = -1;
                                for (var s = Xt(e + 1); ++i < e;) s[i] = r[i];
                                return s[e] = n(o), Ye(t, this, s)
                            }
                    }

                    function to(t, e) {
                        return e.length < 2 ? t : Xr(t, Ci(e, 0, -1))
                    }

                    function eo(t, e) {
                        if (("constructor" !== e || "function" != typeof t[e]) && "__proto__" != e) return t[e]
                    }
                    var no = oo(Mi),
                        ro = Pn || function(t, e) {
                            return Ne.setTimeout(t, e)
                        },
                        io = oo(Ti);

                    function ao(t, e, n) {
                        var r = e + "";
                        return io(t, function(t, e) {
                            var n = e.length;
                            if (!n) return t;
                            var r = n - 1;
                            return e[r] = (n > 1 ? "& " : "") + e[r], e = e.join(n > 2 ? ", " : " "), t.replace(Ot, "{\n/* [wrapped with " + e + "] */\n")
                        }(r, function(t, e) {
                            return He(F, (function(n) {
                                var r = "_." + n[0];
                                e & n[1] && !Ke(t, r) && t.push(r)
                            })), t.sort()
                        }(function(t) {
                            var e = t.match(Rt);
                            return e ? e[1].split(Pt) : []
                        }(r), n)))
                    }

                    function oo(t) {
                        var e = 0,
                            n = 0;
                        return function() {
                            var i = $n(),
                                a = T - (i - n);
                            if (n = i, a > 0) {
                                if (++e >= M) return arguments[0]
                            } else e = 0;
                            return t.apply(r, arguments)
                        }
                    }

                    function so(t, e) {
                        var n = -1,
                            i = t.length,
                            a = i - 1;
                        for (e = e === r ? i : e; ++n < e;) {
                            var o = wi(n, a),
                                s = t[o];
                            t[o] = t[n], t[n] = s
                        }
                        return t.length = e, t
                    }
                    var uo = function(t) {
                        var e = ss(t, (function(t) {
                                return n.size === u && n.clear(), t
                            })),
                            n = e.cache;
                        return e
                    }((function(t) {
                        var e = [];
                        return 46 === t.charCodeAt(0) && e.push(""), t.replace(Dt, (function(t, n, r, i) {
                            e.push(r ? i.replace(qt, "$1") : n || t)
                        })), e
                    }));

                    function co(t) {
                        if ("string" == typeof t || Os(t)) return t;
                        var e = t + "";
                        return "0" == e && 1 / t == -N ? "-0" : e
                    }

                    function fo(t) {
                        if (null != t) {
                            try {
                                return ce.call(t)
                            } catch (t) {}
                            try {
                                return t + ""
                            } catch (t) {}
                        }
                        return ""
                    }

                    function lo(t) {
                        if (t instanceof br) return t.clone();
                        var e = new yr(t.__wrapped__, t.__chain__);
                        return e.__actions__ = na(t.__actions__), e.__index__ = t.__index__, e.__values__ = t.__values__, e
                    }
                    var ho = ki((function(t, e) {
                            return _s(t) ? Fr(t, Vr(e, 1, _s, !0)) : []
                        })),
                        po = ki((function(t, e) {
                            var n = ko(e);
                            return _s(n) && (n = r), _s(t) ? Fr(t, Vr(e, 1, _s, !0), Oa(n, 2)) : []
                        })),
                        go = ki((function(t, e) {
                            var n = ko(e);
                            return _s(n) && (n = r), _s(t) ? Fr(t, Vr(e, 1, _s, !0), r, n) : []
                        }));

                    function yo(t, e, n) {
                        var r = null == t ? 0 : t.length;
                        if (!r) return -1;
                        var i = null == n ? 0 : Us(n);
                        return i < 0 && (i = Hn(r + i, 0)), an(t, Oa(e, 3), i)
                    }

                    function bo(t, e, n) {
                        var i = null == t ? 0 : t.length;
                        if (!i) return -1;
                        var a = i - 1;
                        return n !== r && (a = Us(n), a = n < 0 ? Hn(i + a, 0) : Gn(a, i - 1)), an(t, Oa(e, 3), a, !0)
                    }

                    function vo(t) {
                        return (null == t ? 0 : t.length) ? Vr(t, 1) : []
                    }

                    function mo(t) {
                        return t && t.length ? t[0] : r
                    }
                    var _o = ki((function(t) {
                            var e = Ze(t, Vi);
                            return e.length && e[0] === t[0] ? ni(e) : []
                        })),
                        wo = ki((function(t) {
                            var e = ko(t),
                                n = Ze(t, Vi);
                            return e === ko(n) ? e = r : n.pop(), n.length && n[0] === t[0] ? ni(n, Oa(e, 2)) : []
                        })),
                        xo = ki((function(t) {
                            var e = ko(t),
                                n = Ze(t, Vi);
                            return (e = "function" == typeof e ? e : r) && n.pop(), n.length && n[0] === t[0] ? ni(n, r, e) : []
                        }));

                    function ko(t) {
                        var e = null == t ? 0 : t.length;
                        return e ? t[e - 1] : r
                    }
                    var Eo = ki(Ao);

                    function Ao(t, e) {
                        return t && t.length && e && e.length ? mi(t, e) : t
                    }
                    var So = Da((function(t, e) {
                        var n = null == t ? 0 : t.length,
                            r = Lr(t, e);
                        return _i(t, Ze(e, (function(t) {
                            return Ha(t, n) ? +t : t
                        })).sort(Qi)), r
                    }));

                    function Mo(t) {
                        return null == t ? t : Xn.call(t)
                    }
                    var To = ki((function(t) {
                            return Pi(Vr(t, 1, _s, !0))
                        })),
                        Do = ki((function(t) {
                            var e = ko(t);
                            return _s(e) && (e = r), Pi(Vr(t, 1, _s, !0), Oa(e, 2))
                        })),
                        Co = ki((function(t) {
                            var e = ko(t);
                            return e = "function" == typeof e ? e : r, Pi(Vr(t, 1, _s, !0), r, e)
                        }));

                    function No(t) {
                        if (!t || !t.length) return [];
                        var e = 0;
                        return t = We(t, (function(t) {
                            if (_s(t)) return e = Hn(t.length, e), !0
                        })), pn(e, (function(e) {
                            return Ze(t, fn(e))
                        }))
                    }

                    function Io(t, e) {
                        if (!t || !t.length) return [];
                        var n = No(t);
                        return null == e ? n : Ze(n, (function(t) {
                            return Ye(e, r, t)
                        }))
                    }
                    var Lo = ki((function(t, e) {
                            return _s(t) ? Fr(t, e) : []
                        })),
                        Bo = ki((function(t) {
                            return zi(We(t, _s))
                        })),
                        Oo = ki((function(t) {
                            var e = ko(t);
                            return _s(e) && (e = r), zi(We(t, _s), Oa(e, 2))
                        })),
                        Ro = ki((function(t) {
                            var e = ko(t);
                            return e = "function" == typeof e ? e : r, zi(We(t, _s), r, e)
                        })),
                        Po = ki(No);
                    var Fo = ki((function(t) {
                        var e = t.length,
                            n = e > 1 ? t[e - 1] : r;
                        return n = "function" == typeof n ? (t.pop(), n) : r, Io(t, n)
                    }));

                    function qo(t) {
                        var e = dr(t);
                        return e.__chain__ = !0, e
                    }

                    function jo(t, e) {
                        return e(t)
                    }
                    var Uo = Da((function(t) {
                        var e = t.length,
                            n = e ? t[0] : 0,
                            i = this.__wrapped__,
                            a = function(e) {
                                return Lr(e, t)
                            };
                        return !(e > 1 || this.__actions__.length) && i instanceof br && Ha(n) ? ((i = i.slice(n, +n + (e ? 1 : 0))).__actions__.push({
                            func: jo,
                            args: [a],
                            thisArg: r
                        }), new yr(i, this.__chain__).thru((function(t) {
                            return e && !t.length && t.push(r), t
                        }))) : this.thru(a)
                    }));
                    var zo = ia((function(t, e, n) {
                        fe.call(t, n) ? ++t[n] : Ir(t, n, 1)
                    }));
                    var Yo = la(yo),
                        Vo = la(bo);

                    function Ho(t, e) {
                        return (bs(t) ? He : qr)(t, Oa(e, 3))
                    }

                    function Go(t, e) {
                        return (bs(t) ? Ge : jr)(t, Oa(e, 3))
                    }
                    var $o = ia((function(t, e, n) {
                        fe.call(t, n) ? t[n].push(e) : Ir(t, n, [e])
                    }));
                    var Wo = ki((function(t, e, n) {
                            var r = -1,
                                i = "function" == typeof e,
                                a = ms(t) ? Xt(t.length) : [];
                            return qr(t, (function(t) {
                                a[++r] = i ? Ye(e, t, n) : ri(t, e, n)
                            })), a
                        })),
                        Ko = ia((function(t, e, n) {
                            Ir(t, n, e)
                        }));

                    function Xo(t, e) {
                        return (bs(t) ? Ze : hi)(t, Oa(e, 3))
                    }
                    var Zo = ia((function(t, e, n) {
                        t[n ? 0 : 1].push(e)
                    }), (function() {
                        return [
                            [],
                            []
                        ]
                    }));
                    var Jo = ki((function(t, e) {
                            if (null == t) return [];
                            var n = e.length;
                            return n > 1 && Ga(t, e[0], e[1]) ? e = [] : n > 2 && Ga(e[0], e[1], e[2]) && (e = [e[0]]), bi(t, Vr(e, 1), [])
                        })),
                        Qo = Rn || function() {
                            return Ne.Date.now()
                        };

                    function ts(t, e, n) {
                        return e = n ? r : e, e = t && null == e ? t.length : e, Ea(t, x, r, r, r, r, e)
                    }

                    function es(t, e) {
                        var n;
                        if ("function" != typeof e) throw new ie(o);
                        return t = Us(t),
                            function() {
                                return --t > 0 && (n = e.apply(this, arguments)), t <= 1 && (e = r), n
                            }
                    }
                    var ns = ki((function(t, e, n) {
                            var r = g;
                            if (n.length) {
                                var i = Sn(n, Ba(ns));
                                r |= _
                            }
                            return Ea(t, r, e, n, i)
                        })),
                        rs = ki((function(t, e, n) {
                            var r = g | y;
                            if (n.length) {
                                var i = Sn(n, Ba(rs));
                                r |= _
                            }
                            return Ea(e, r, t, n, i)
                        }));

                    function is(t, e, n) {
                        var i, a, s, u, c, f, l = 0,
                            h = !1,
                            d = !1,
                            p = !0;
                        if ("function" != typeof t) throw new ie(o);

                        function g(e) {
                            var n = i,
                                o = a;
                            return i = a = r, l = e, u = t.apply(o, n)
                        }

                        function y(t) {
                            var n = t - f;
                            return f === r || n >= e || n < 0 || d && t - l >= s
                        }

                        function b() {
                            var t = Qo();
                            if (y(t)) return v(t);
                            c = ro(b, function(t) {
                                var n = e - (t - f);
                                return d ? Gn(n, s - (t - l)) : n
                            }(t))
                        }

                        function v(t) {
                            return c = r, p && i ? g(t) : (i = a = r, u)
                        }

                        function m() {
                            var t = Qo(),
                                n = y(t);
                            if (i = arguments, a = this, f = t, n) {
                                if (c === r) return function(t) {
                                    return l = t, c = ro(b, e), h ? g(t) : u
                                }(f);
                                if (d) return Ki(c), c = ro(b, e), g(f)
                            }
                            return c === r && (c = ro(b, e)), u
                        }
                        return e = Ys(e) || 0, Ms(n) && (h = !!n.leading, s = (d = "maxWait" in n) ? Hn(Ys(n.maxWait) || 0, e) : s, p = "trailing" in n ? !!n.trailing : p), m.cancel = function() {
                            c !== r && Ki(c), l = 0, i = f = a = c = r
                        }, m.flush = function() {
                            return c === r ? u : v(Qo())
                        }, m
                    }
                    var as = ki((function(t, e) {
                            return Pr(t, 1, e)
                        })),
                        os = ki((function(t, e, n) {
                            return Pr(t, Ys(e) || 0, n)
                        }));

                    function ss(t, e) {
                        if ("function" != typeof t || null != e && "function" != typeof e) throw new ie(o);
                        var n = function() {
                            var r = arguments,
                                i = e ? e.apply(this, r) : r[0],
                                a = n.cache;
                            if (a.has(i)) return a.get(i);
                            var o = t.apply(this, r);
                            return n.cache = a.set(i, o) || a, o
                        };
                        return n.cache = new(ss.Cache || _r), n
                    }

                    function us(t) {
                        if ("function" != typeof t) throw new ie(o);
                        return function() {
                            var e = arguments;
                            switch (e.length) {
                                case 0:
                                    return !t.call(this);
                                case 1:
                                    return !t.call(this, e[0]);
                                case 2:
                                    return !t.call(this, e[0], e[1]);
                                case 3:
                                    return !t.call(this, e[0], e[1], e[2])
                            }
                            return !t.apply(this, e)
                        }
                    }
                    ss.Cache = _r;
                    var cs = $i((function(t, e) {
                            var n = (e = 1 == e.length && bs(e[0]) ? Ze(e[0], gn(Oa())) : Ze(Vr(e, 1), gn(Oa()))).length;
                            return ki((function(r) {
                                for (var i = -1, a = Gn(r.length, n); ++i < a;) r[i] = e[i].call(this, r[i]);
                                return Ye(t, this, r)
                            }))
                        })),
                        fs = ki((function(t, e) {
                            var n = Sn(e, Ba(fs));
                            return Ea(t, _, r, e, n)
                        })),
                        ls = ki((function(t, e) {
                            var n = Sn(e, Ba(ls));
                            return Ea(t, w, r, e, n)
                        })),
                        hs = Da((function(t, e) {
                            return Ea(t, k, r, r, r, e)
                        }));

                    function ds(t, e) {
                        return t === e || t != t && e != e
                    }
                    var ps = ma(Qr),
                        gs = ma((function(t, e) {
                            return t >= e
                        })),
                        ys = ii(function() {
                            return arguments
                        }()) ? ii : function(t) {
                            return Ts(t) && fe.call(t, "callee") && !Oe.call(t, "callee")
                        },
                        bs = Xt.isArray,
                        vs = Pe ? gn(Pe) : function(t) {
                            return Ts(t) && Jr(t) == ot
                        };

                    function ms(t) {
                        return null != t && Ss(t.length) && !Es(t)
                    }

                    function _s(t) {
                        return Ts(t) && ms(t)
                    }
                    var ws = Un || Yu,
                        xs = Fe ? gn(Fe) : function(t) {
                            return Ts(t) && Jr(t) == Y
                        };

                    function ks(t) {
                        if (!Ts(t)) return !1;
                        var e = Jr(t);
                        return e == H || e == V || "string" == typeof t.message && "string" == typeof t.name && !Ns(t)
                    }

                    function Es(t) {
                        if (!Ms(t)) return !1;
                        var e = Jr(t);
                        return e == G || e == $ || e == U || e == J
                    }

                    function As(t) {
                        return "number" == typeof t && t == Us(t)
                    }

                    function Ss(t) {
                        return "number" == typeof t && t > -1 && t % 1 == 0 && t <= I
                    }

                    function Ms(t) {
                        var e = typeof t;
                        return null != t && ("object" == e || "function" == e)
                    }

                    function Ts(t) {
                        return null != t && "object" == typeof t
                    }
                    var Ds = qe ? gn(qe) : function(t) {
                        return Ts(t) && Ua(t) == W
                    };

                    function Cs(t) {
                        return "number" == typeof t || Ts(t) && Jr(t) == K
                    }

                    function Ns(t) {
                        if (!Ts(t) || Jr(t) != Z) return !1;
                        var e = Ie(t);
                        if (null === e) return !0;
                        var n = fe.call(e, "constructor") && e.constructor;
                        return "function" == typeof n && n instanceof n && ce.call(n) == pe
                    }
                    var Is = je ? gn(je) : function(t) {
                        return Ts(t) && Jr(t) == Q
                    };
                    var Ls = Ue ? gn(Ue) : function(t) {
                        return Ts(t) && Ua(t) == tt
                    };

                    function Bs(t) {
                        return "string" == typeof t || !bs(t) && Ts(t) && Jr(t) == et
                    }

                    function Os(t) {
                        return "symbol" == typeof t || Ts(t) && Jr(t) == nt
                    }
                    var Rs = ze ? gn(ze) : function(t) {
                        return Ts(t) && Ss(t.length) && !!Ee[Jr(t)]
                    };
                    var Ps = ma(li),
                        Fs = ma((function(t, e) {
                            return t <= e
                        }));

                    function qs(t) {
                        if (!t) return [];
                        if (ms(t)) return Bs(t) ? Cn(t) : na(t);
                        if (ln && t[ln]) return function(t) {
                            for (var e, n = []; !(e = t.next()).done;) n.push(e.value);
                            return n
                        }(t[ln]());
                        var e = Ua(t);
                        return (e == W ? En : e == tt ? Mn : du)(t)
                    }

                    function js(t) {
                        return t ? (t = Ys(t)) === N || t === -N ? (t < 0 ? -1 : 1) * L : t == t ? t : 0 : 0 === t ? t : 0
                    }

                    function Us(t) {
                        var e = js(t),
                            n = e % 1;
                        return e == e ? n ? e - n : e : 0
                    }

                    function zs(t) {
                        return t ? Br(Us(t), 0, O) : 0
                    }

                    function Ys(t) {
                        if ("number" == typeof t) return t;
                        if (Os(t)) return B;
                        if (Ms(t)) {
                            var e = "function" == typeof t.valueOf ? t.valueOf() : t;
                            t = Ms(e) ? e + "" : e
                        }
                        if ("string" != typeof t) return 0 === t ? t : +t;
                        t = t.replace(It, "");
                        var n = Yt.test(t);
                        return n || Ht.test(t) ? Te(t.slice(2), n ? 2 : 8) : zt.test(t) ? B : +t
                    }

                    function Vs(t) {
                        return ra(t, au(t))
                    }

                    function Hs(t) {
                        return null == t ? "" : Ri(t)
                    }
                    var Gs = aa((function(t, e) {
                            if (Xa(e) || ms(e)) ra(e, iu(e), t);
                            else
                                for (var n in e) fe.call(e, n) && Tr(t, n, e[n])
                        })),
                        $s = aa((function(t, e) {
                            ra(e, au(e), t)
                        })),
                        Ws = aa((function(t, e, n, r) {
                            ra(e, au(e), t, r)
                        })),
                        Ks = aa((function(t, e, n, r) {
                            ra(e, iu(e), t, r)
                        })),
                        Xs = Da(Lr);
                    var Zs = ki((function(t, e) {
                            t = ee(t);
                            var n = -1,
                                i = e.length,
                                a = i > 2 ? e[2] : r;
                            for (a && Ga(e[0], e[1], a) && (i = 1); ++n < i;)
                                for (var o = e[n], s = au(o), u = -1, c = s.length; ++u < c;) {
                                    var f = s[u],
                                        l = t[f];
                                    (l === r || ds(l, se[f]) && !fe.call(t, f)) && (t[f] = o[f])
                                }
                            return t
                        })),
                        Js = ki((function(t) {
                            return t.push(r, Sa), Ye(su, r, t)
                        }));

                    function Qs(t, e, n) {
                        var i = null == t ? r : Xr(t, e);
                        return i === r ? n : i
                    }

                    function tu(t, e) {
                        return null != t && za(t, e, ei)
                    }
                    var eu = pa((function(t, e, n) {
                            null != e && "function" != typeof e.toString && (e = de.call(e)), t[e] = n
                        }), Mu(Cu)),
                        nu = pa((function(t, e, n) {
                            null != e && "function" != typeof e.toString && (e = de.call(e)), fe.call(t, e) ? t[e].push(n) : t[e] = [n]
                        }), Oa),
                        ru = ki(ri);

                    function iu(t) {
                        return ms(t) ? kr(t) : ci(t)
                    }

                    function au(t) {
                        return ms(t) ? kr(t, !0) : fi(t)
                    }
                    var ou = aa((function(t, e, n) {
                            gi(t, e, n)
                        })),
                        su = aa((function(t, e, n, r) {
                            gi(t, e, n, r)
                        })),
                        uu = Da((function(t, e) {
                            var n = {};
                            if (null == t) return n;
                            var r = !1;
                            e = Ze(e, (function(e) {
                                return e = Gi(e, t), r || (r = e.length > 1), e
                            })), ra(t, Na(t), n), r && (n = Or(n, f | l | h, Ma));
                            for (var i = e.length; i--;) Fi(n, e[i]);
                            return n
                        }));
                    var cu = Da((function(t, e) {
                        return null == t ? {} : function(t, e) {
                            return vi(t, e, (function(e, n) {
                                return tu(t, n)
                            }))
                        }(t, e)
                    }));

                    function fu(t, e) {
                        if (null == t) return {};
                        var n = Ze(Na(t), (function(t) {
                            return [t]
                        }));
                        return e = Oa(e), vi(t, n, (function(t, n) {
                            return e(t, n[0])
                        }))
                    }
                    var lu = ka(iu),
                        hu = ka(au);

                    function du(t) {
                        return null == t ? [] : yn(t, iu(t))
                    }
                    var pu = ca((function(t, e, n) {
                        return e = e.toLowerCase(), t + (n ? gu(e) : e)
                    }));

                    function gu(t) {
                        return ku(Hs(t).toLowerCase())
                    }

                    function yu(t) {
                        return (t = Hs(t)) && t.replace($t, _n).replace(be, "")
                    }
                    var bu = ca((function(t, e, n) {
                            return t + (n ? "-" : "") + e.toLowerCase()
                        })),
                        vu = ca((function(t, e, n) {
                            return t + (n ? " " : "") + e.toLowerCase()
                        })),
                        mu = ua("toLowerCase");
                    var _u = ca((function(t, e, n) {
                        return t + (n ? "_" : "") + e.toLowerCase()
                    }));
                    var wu = ca((function(t, e, n) {
                        return t + (n ? " " : "") + ku(e)
                    }));
                    var xu = ca((function(t, e, n) {
                            return t + (n ? " " : "") + e.toUpperCase()
                        })),
                        ku = ua("toUpperCase");

                    function Eu(t, e, n) {
                        return t = Hs(t), (e = n ? r : e) === r ? function(t) {
                            return we.test(t)
                        }(t) ? function(t) {
                            return t.match(me) || []
                        }(t) : function(t) {
                            return t.match(Ft) || []
                        }(t) : t.match(e) || []
                    }
                    var Au = ki((function(t, e) {
                            try {
                                return Ye(t, r, e)
                            } catch (t) {
                                return ks(t) ? t : new Jt(t)
                            }
                        })),
                        Su = Da((function(t, e) {
                            return He(e, (function(e) {
                                e = co(e), Ir(t, e, ns(t[e], t))
                            })), t
                        }));

                    function Mu(t) {
                        return function() {
                            return t
                        }
                    }
                    var Tu = ha(),
                        Du = ha(!0);

                    function Cu(t) {
                        return t
                    }

                    function Nu(t) {
                        return ui("function" == typeof t ? t : Or(t, f))
                    }
                    var Iu = ki((function(t, e) {
                            return function(n) {
                                return ri(n, t, e)
                            }
                        })),
                        Lu = ki((function(t, e) {
                            return function(n) {
                                return ri(t, n, e)
                            }
                        }));

                    function Bu(t, e, n) {
                        var r = iu(e),
                            i = Kr(e, r);
                        null != n || Ms(e) && (i.length || !r.length) || (n = e, e = t, t = this, i = Kr(e, iu(e)));
                        var a = !(Ms(n) && "chain" in n && !n.chain),
                            o = Es(t);
                        return He(i, (function(n) {
                            var r = e[n];
                            t[n] = r, o && (t.prototype[n] = function() {
                                var e = this.__chain__;
                                if (a || e) {
                                    var n = t(this.__wrapped__),
                                        i = n.__actions__ = na(this.__actions__);
                                    return i.push({
                                        func: r,
                                        args: arguments,
                                        thisArg: t
                                    }), n.__chain__ = e, n
                                }
                                return r.apply(t, Je([this.value()], arguments))
                            })
                        })), t
                    }

                    function Ou() {}
                    var Ru = ya(Ze),
                        Pu = ya($e),
                        Fu = ya(en);

                    function qu(t) {
                        return $a(t) ? fn(co(t)) : function(t) {
                            return function(e) {
                                return Xr(e, t)
                            }
                        }(t)
                    }
                    var ju = va(),
                        Uu = va(!0);

                    function zu() {
                        return []
                    }

                    function Yu() {
                        return !1
                    }
                    var Vu = ga((function(t, e) {
                            return t + e
                        }), 0),
                        Hu = wa("ceil"),
                        Gu = ga((function(t, e) {
                            return t / e
                        }), 1),
                        $u = wa("floor");
                    var Wu, Ku = ga((function(t, e) {
                            return t * e
                        }), 1),
                        Xu = wa("round"),
                        Zu = ga((function(t, e) {
                            return t - e
                        }), 0);
                    return dr.after = function(t, e) {
                        if ("function" != typeof e) throw new ie(o);
                        return t = Us(t),
                            function() {
                                if (--t < 1) return e.apply(this, arguments)
                            }
                    }, dr.ary = ts, dr.assign = Gs, dr.assignIn = $s, dr.assignInWith = Ws, dr.assignWith = Ks, dr.at = Xs, dr.before = es, dr.bind = ns, dr.bindAll = Su, dr.bindKey = rs, dr.castArray = function() {
                        if (!arguments.length) return [];
                        var t = arguments[0];
                        return bs(t) ? t : [t]
                    }, dr.chain = qo, dr.chunk = function(t, e, n) {
                        e = (n ? Ga(t, e, n) : e === r) ? 1 : Hn(Us(e), 0);
                        var i = null == t ? 0 : t.length;
                        if (!i || e < 1) return [];
                        for (var a = 0, o = 0, s = Xt(Fn(i / e)); a < i;) s[o++] = Ci(t, a, a += e);
                        return s
                    }, dr.compact = function(t) {
                        for (var e = -1, n = null == t ? 0 : t.length, r = 0, i = []; ++e < n;) {
                            var a = t[e];
                            a && (i[r++] = a)
                        }
                        return i
                    }, dr.concat = function() {
                        var t = arguments.length;
                        if (!t) return [];
                        for (var e = Xt(t - 1), n = arguments[0], r = t; r--;) e[r - 1] = arguments[r];
                        return Je(bs(n) ? na(n) : [n], Vr(e, 1))
                    }, dr.cond = function(t) {
                        var e = null == t ? 0 : t.length,
                            n = Oa();
                        return t = e ? Ze(t, (function(t) {
                            if ("function" != typeof t[1]) throw new ie(o);
                            return [n(t[0]), t[1]]
                        })) : [], ki((function(n) {
                            for (var r = -1; ++r < e;) {
                                var i = t[r];
                                if (Ye(i[0], this, n)) return Ye(i[1], this, n)
                            }
                        }))
                    }, dr.conforms = function(t) {
                        return function(t) {
                            var e = iu(t);
                            return function(n) {
                                return Rr(n, t, e)
                            }
                        }(Or(t, f))
                    }, dr.constant = Mu, dr.countBy = zo, dr.create = function(t, e) {
                        var n = pr(t);
                        return null == e ? n : Nr(n, e)
                    }, dr.curry = function t(e, n, i) {
                        var a = Ea(e, v, r, r, r, r, r, n = i ? r : n);
                        return a.placeholder = t.placeholder, a
                    }, dr.curryRight = function t(e, n, i) {
                        var a = Ea(e, m, r, r, r, r, r, n = i ? r : n);
                        return a.placeholder = t.placeholder, a
                    }, dr.debounce = is, dr.defaults = Zs, dr.defaultsDeep = Js, dr.defer = as, dr.delay = os, dr.difference = ho, dr.differenceBy = po, dr.differenceWith = go, dr.drop = function(t, e, n) {
                        var i = null == t ? 0 : t.length;
                        return i ? Ci(t, (e = n || e === r ? 1 : Us(e)) < 0 ? 0 : e, i) : []
                    }, dr.dropRight = function(t, e, n) {
                        var i = null == t ? 0 : t.length;
                        return i ? Ci(t, 0, (e = i - (e = n || e === r ? 1 : Us(e))) < 0 ? 0 : e) : []
                    }, dr.dropRightWhile = function(t, e) {
                        return t && t.length ? ji(t, Oa(e, 3), !0, !0) : []
                    }, dr.dropWhile = function(t, e) {
                        return t && t.length ? ji(t, Oa(e, 3), !0) : []
                    }, dr.fill = function(t, e, n, i) {
                        var a = null == t ? 0 : t.length;
                        return a ? (n && "number" != typeof n && Ga(t, e, n) && (n = 0, i = a), function(t, e, n, i) {
                            var a = t.length;
                            for ((n = Us(n)) < 0 && (n = -n > a ? 0 : a + n), (i = i === r || i > a ? a : Us(i)) < 0 && (i += a), i = n > i ? 0 : zs(i); n < i;) t[n++] = e;
                            return t
                        }(t, e, n, i)) : []
                    }, dr.filter = function(t, e) {
                        return (bs(t) ? We : Yr)(t, Oa(e, 3))
                    }, dr.flatMap = function(t, e) {
                        return Vr(Xo(t, e), 1)
                    }, dr.flatMapDeep = function(t, e) {
                        return Vr(Xo(t, e), N)
                    }, dr.flatMapDepth = function(t, e, n) {
                        return n = n === r ? 1 : Us(n), Vr(Xo(t, e), n)
                    }, dr.flatten = vo, dr.flattenDeep = function(t) {
                        return (null == t ? 0 : t.length) ? Vr(t, N) : []
                    }, dr.flattenDepth = function(t, e) {
                        return (null == t ? 0 : t.length) ? Vr(t, e = e === r ? 1 : Us(e)) : []
                    }, dr.flip = function(t) {
                        return Ea(t, E)
                    }, dr.flow = Tu, dr.flowRight = Du, dr.fromPairs = function(t) {
                        for (var e = -1, n = null == t ? 0 : t.length, r = {}; ++e < n;) {
                            var i = t[e];
                            r[i[0]] = i[1]
                        }
                        return r
                    }, dr.functions = function(t) {
                        return null == t ? [] : Kr(t, iu(t))
                    }, dr.functionsIn = function(t) {
                        return null == t ? [] : Kr(t, au(t))
                    }, dr.groupBy = $o, dr.initial = function(t) {
                        return (null == t ? 0 : t.length) ? Ci(t, 0, -1) : []
                    }, dr.intersection = _o, dr.intersectionBy = wo, dr.intersectionWith = xo, dr.invert = eu, dr.invertBy = nu, dr.invokeMap = Wo, dr.iteratee = Nu, dr.keyBy = Ko, dr.keys = iu, dr.keysIn = au, dr.map = Xo, dr.mapKeys = function(t, e) {
                        var n = {};
                        return e = Oa(e, 3), $r(t, (function(t, r, i) {
                            Ir(n, e(t, r, i), t)
                        })), n
                    }, dr.mapValues = function(t, e) {
                        var n = {};
                        return e = Oa(e, 3), $r(t, (function(t, r, i) {
                            Ir(n, r, e(t, r, i))
                        })), n
                    }, dr.matches = function(t) {
                        return di(Or(t, f))
                    }, dr.matchesProperty = function(t, e) {
                        return pi(t, Or(e, f))
                    }, dr.memoize = ss, dr.merge = ou, dr.mergeWith = su, dr.method = Iu, dr.methodOf = Lu, dr.mixin = Bu, dr.negate = us, dr.nthArg = function(t) {
                        return t = Us(t), ki((function(e) {
                            return yi(e, t)
                        }))
                    }, dr.omit = uu, dr.omitBy = function(t, e) {
                        return fu(t, us(Oa(e)))
                    }, dr.once = function(t) {
                        return es(2, t)
                    }, dr.orderBy = function(t, e, n, i) {
                        return null == t ? [] : (bs(e) || (e = null == e ? [] : [e]), bs(n = i ? r : n) || (n = null == n ? [] : [n]), bi(t, e, n))
                    }, dr.over = Ru, dr.overArgs = cs, dr.overEvery = Pu, dr.overSome = Fu, dr.partial = fs, dr.partialRight = ls, dr.partition = Zo, dr.pick = cu, dr.pickBy = fu, dr.property = qu, dr.propertyOf = function(t) {
                        return function(e) {
                            return null == t ? r : Xr(t, e)
                        }
                    }, dr.pull = Eo, dr.pullAll = Ao, dr.pullAllBy = function(t, e, n) {
                        return t && t.length && e && e.length ? mi(t, e, Oa(n, 2)) : t
                    }, dr.pullAllWith = function(t, e, n) {
                        return t && t.length && e && e.length ? mi(t, e, r, n) : t
                    }, dr.pullAt = So, dr.range = ju, dr.rangeRight = Uu, dr.rearg = hs, dr.reject = function(t, e) {
                        return (bs(t) ? We : Yr)(t, us(Oa(e, 3)))
                    }, dr.remove = function(t, e) {
                        var n = [];
                        if (!t || !t.length) return n;
                        var r = -1,
                            i = [],
                            a = t.length;
                        for (e = Oa(e, 3); ++r < a;) {
                            var o = t[r];
                            e(o, r, t) && (n.push(o), i.push(r))
                        }
                        return _i(t, i), n
                    }, dr.rest = function(t, e) {
                        if ("function" != typeof t) throw new ie(o);
                        return ki(t, e = e === r ? e : Us(e))
                    }, dr.reverse = Mo, dr.sampleSize = function(t, e, n) {
                        return e = (n ? Ga(t, e, n) : e === r) ? 1 : Us(e), (bs(t) ? Ar : Ai)(t, e)
                    }, dr.set = function(t, e, n) {
                        return null == t ? t : Si(t, e, n)
                    }, dr.setWith = function(t, e, n, i) {
                        return i = "function" == typeof i ? i : r, null == t ? t : Si(t, e, n, i)
                    }, dr.shuffle = function(t) {
                        return (bs(t) ? Sr : Di)(t)
                    }, dr.slice = function(t, e, n) {
                        var i = null == t ? 0 : t.length;
                        return i ? (n && "number" != typeof n && Ga(t, e, n) ? (e = 0, n = i) : (e = null == e ? 0 : Us(e), n = n === r ? i : Us(n)), Ci(t, e, n)) : []
                    }, dr.sortBy = Jo, dr.sortedUniq = function(t) {
                        return t && t.length ? Bi(t) : []
                    }, dr.sortedUniqBy = function(t, e) {
                        return t && t.length ? Bi(t, Oa(e, 2)) : []
                    }, dr.split = function(t, e, n) {
                        return n && "number" != typeof n && Ga(t, e, n) && (e = n = r), (n = n === r ? O : n >>> 0) ? (t = Hs(t)) && ("string" == typeof e || null != e && !Is(e)) && !(e = Ri(e)) && kn(t) ? Wi(Cn(t), 0, n) : t.split(e, n) : []
                    }, dr.spread = function(t, e) {
                        if ("function" != typeof t) throw new ie(o);
                        return e = null == e ? 0 : Hn(Us(e), 0), ki((function(n) {
                            var r = n[e],
                                i = Wi(n, 0, e);
                            return r && Je(i, r), Ye(t, this, i)
                        }))
                    }, dr.tail = function(t) {
                        var e = null == t ? 0 : t.length;
                        return e ? Ci(t, 1, e) : []
                    }, dr.take = function(t, e, n) {
                        return t && t.length ? Ci(t, 0, (e = n || e === r ? 1 : Us(e)) < 0 ? 0 : e) : []
                    }, dr.takeRight = function(t, e, n) {
                        var i = null == t ? 0 : t.length;
                        return i ? Ci(t, (e = i - (e = n || e === r ? 1 : Us(e))) < 0 ? 0 : e, i) : []
                    }, dr.takeRightWhile = function(t, e) {
                        return t && t.length ? ji(t, Oa(e, 3), !1, !0) : []
                    }, dr.takeWhile = function(t, e) {
                        return t && t.length ? ji(t, Oa(e, 3)) : []
                    }, dr.tap = function(t, e) {
                        return e(t), t
                    }, dr.throttle = function(t, e, n) {
                        var r = !0,
                            i = !0;
                        if ("function" != typeof t) throw new ie(o);
                        return Ms(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), is(t, e, {
                            leading: r,
                            maxWait: e,
                            trailing: i
                        })
                    }, dr.thru = jo, dr.toArray = qs, dr.toPairs = lu, dr.toPairsIn = hu, dr.toPath = function(t) {
                        return bs(t) ? Ze(t, co) : Os(t) ? [t] : na(uo(Hs(t)))
                    }, dr.toPlainObject = Vs, dr.transform = function(t, e, n) {
                        var r = bs(t),
                            i = r || ws(t) || Rs(t);
                        if (e = Oa(e, 4), null == n) {
                            var a = t && t.constructor;
                            n = i ? r ? new a : [] : Ms(t) && Es(a) ? pr(Ie(t)) : {}
                        }
                        return (i ? He : $r)(t, (function(t, r, i) {
                            return e(n, t, r, i)
                        })), n
                    }, dr.unary = function(t) {
                        return ts(t, 1)
                    }, dr.union = To, dr.unionBy = Do, dr.unionWith = Co, dr.uniq = function(t) {
                        return t && t.length ? Pi(t) : []
                    }, dr.uniqBy = function(t, e) {
                        return t && t.length ? Pi(t, Oa(e, 2)) : []
                    }, dr.uniqWith = function(t, e) {
                        return e = "function" == typeof e ? e : r, t && t.length ? Pi(t, r, e) : []
                    }, dr.unset = function(t, e) {
                        return null == t || Fi(t, e)
                    }, dr.unzip = No, dr.unzipWith = Io, dr.update = function(t, e, n) {
                        return null == t ? t : qi(t, e, Hi(n))
                    }, dr.updateWith = function(t, e, n, i) {
                        return i = "function" == typeof i ? i : r, null == t ? t : qi(t, e, Hi(n), i)
                    }, dr.values = du, dr.valuesIn = function(t) {
                        return null == t ? [] : yn(t, au(t))
                    }, dr.without = Lo, dr.words = Eu, dr.wrap = function(t, e) {
                        return fs(Hi(e), t)
                    }, dr.xor = Bo, dr.xorBy = Oo, dr.xorWith = Ro, dr.zip = Po, dr.zipObject = function(t, e) {
                        return Yi(t || [], e || [], Tr)
                    }, dr.zipObjectDeep = function(t, e) {
                        return Yi(t || [], e || [], Si)
                    }, dr.zipWith = Fo, dr.entries = lu, dr.entriesIn = hu, dr.extend = $s, dr.extendWith = Ws, Bu(dr, dr), dr.add = Vu, dr.attempt = Au, dr.camelCase = pu, dr.capitalize = gu, dr.ceil = Hu, dr.clamp = function(t, e, n) {
                        return n === r && (n = e, e = r), n !== r && (n = (n = Ys(n)) == n ? n : 0), e !== r && (e = (e = Ys(e)) == e ? e : 0), Br(Ys(t), e, n)
                    }, dr.clone = function(t) {
                        return Or(t, h)
                    }, dr.cloneDeep = function(t) {
                        return Or(t, f | h)
                    }, dr.cloneDeepWith = function(t, e) {
                        return Or(t, f | h, e = "function" == typeof e ? e : r)
                    }, dr.cloneWith = function(t, e) {
                        return Or(t, h, e = "function" == typeof e ? e : r)
                    }, dr.conformsTo = function(t, e) {
                        return null == e || Rr(t, e, iu(e))
                    }, dr.deburr = yu, dr.defaultTo = function(t, e) {
                        return null == t || t != t ? e : t
                    }, dr.divide = Gu, dr.endsWith = function(t, e, n) {
                        t = Hs(t), e = Ri(e);
                        var i = t.length,
                            a = n = n === r ? i : Br(Us(n), 0, i);
                        return (n -= e.length) >= 0 && t.slice(n, a) == e
                    }, dr.eq = ds, dr.escape = function(t) {
                        return (t = Hs(t)) && kt.test(t) ? t.replace(wt, wn) : t
                    }, dr.escapeRegExp = function(t) {
                        return (t = Hs(t)) && Nt.test(t) ? t.replace(Ct, "\\$&") : t
                    }, dr.every = function(t, e, n) {
                        var i = bs(t) ? $e : Ur;
                        return n && Ga(t, e, n) && (e = r), i(t, Oa(e, 3))
                    }, dr.find = Yo, dr.findIndex = yo, dr.findKey = function(t, e) {
                        return rn(t, Oa(e, 3), $r)
                    }, dr.findLast = Vo, dr.findLastIndex = bo, dr.findLastKey = function(t, e) {
                        return rn(t, Oa(e, 3), Wr)
                    }, dr.floor = $u, dr.forEach = Ho, dr.forEachRight = Go, dr.forIn = function(t, e) {
                        return null == t ? t : Hr(t, Oa(e, 3), au)
                    }, dr.forInRight = function(t, e) {
                        return null == t ? t : Gr(t, Oa(e, 3), au)
                    }, dr.forOwn = function(t, e) {
                        return t && $r(t, Oa(e, 3))
                    }, dr.forOwnRight = function(t, e) {
                        return t && Wr(t, Oa(e, 3))
                    }, dr.get = Qs, dr.gt = ps, dr.gte = gs, dr.has = function(t, e) {
                        return null != t && za(t, e, ti)
                    }, dr.hasIn = tu, dr.head = mo, dr.identity = Cu, dr.includes = function(t, e, n, r) {
                        t = ms(t) ? t : du(t), n = n && !r ? Us(n) : 0;
                        var i = t.length;
                        return n < 0 && (n = Hn(i + n, 0)), Bs(t) ? n <= i && t.indexOf(e, n) > -1 : !!i && on(t, e, n) > -1
                    }, dr.indexOf = function(t, e, n) {
                        var r = null == t ? 0 : t.length;
                        if (!r) return -1;
                        var i = null == n ? 0 : Us(n);
                        return i < 0 && (i = Hn(r + i, 0)), on(t, e, i)
                    }, dr.inRange = function(t, e, n) {
                        return e = js(e), n === r ? (n = e, e = 0) : n = js(n),
                            function(t, e, n) {
                                return t >= Gn(e, n) && t < Hn(e, n)
                            }(t = Ys(t), e, n)
                    }, dr.invoke = ru, dr.isArguments = ys, dr.isArray = bs, dr.isArrayBuffer = vs, dr.isArrayLike = ms, dr.isArrayLikeObject = _s, dr.isBoolean = function(t) {
                        return !0 === t || !1 === t || Ts(t) && Jr(t) == z
                    }, dr.isBuffer = ws, dr.isDate = xs, dr.isElement = function(t) {
                        return Ts(t) && 1 === t.nodeType && !Ns(t)
                    }, dr.isEmpty = function(t) {
                        if (null == t) return !0;
                        if (ms(t) && (bs(t) || "string" == typeof t || "function" == typeof t.splice || ws(t) || Rs(t) || ys(t))) return !t.length;
                        var e = Ua(t);
                        if (e == W || e == tt) return !t.size;
                        if (Xa(t)) return !ci(t).length;
                        for (var n in t)
                            if (fe.call(t, n)) return !1;
                        return !0
                    }, dr.isEqual = function(t, e) {
                        return ai(t, e)
                    }, dr.isEqualWith = function(t, e, n) {
                        var i = (n = "function" == typeof n ? n : r) ? n(t, e) : r;
                        return i === r ? ai(t, e, r, n) : !!i
                    }, dr.isError = ks, dr.isFinite = function(t) {
                        return "number" == typeof t && zn(t)
                    }, dr.isFunction = Es, dr.isInteger = As, dr.isLength = Ss, dr.isMap = Ds, dr.isMatch = function(t, e) {
                        return t === e || oi(t, e, Pa(e))
                    }, dr.isMatchWith = function(t, e, n) {
                        return n = "function" == typeof n ? n : r, oi(t, e, Pa(e), n)
                    }, dr.isNaN = function(t) {
                        return Cs(t) && t != +t
                    }, dr.isNative = function(t) {
                        if (Ka(t)) throw new Jt(a);
                        return si(t)
                    }, dr.isNil = function(t) {
                        return null == t
                    }, dr.isNull = function(t) {
                        return null === t
                    }, dr.isNumber = Cs, dr.isObject = Ms, dr.isObjectLike = Ts, dr.isPlainObject = Ns, dr.isRegExp = Is, dr.isSafeInteger = function(t) {
                        return As(t) && t >= -I && t <= I
                    }, dr.isSet = Ls, dr.isString = Bs, dr.isSymbol = Os, dr.isTypedArray = Rs, dr.isUndefined = function(t) {
                        return t === r
                    }, dr.isWeakMap = function(t) {
                        return Ts(t) && Ua(t) == it
                    }, dr.isWeakSet = function(t) {
                        return Ts(t) && Jr(t) == at
                    }, dr.join = function(t, e) {
                        return null == t ? "" : Yn.call(t, e)
                    }, dr.kebabCase = bu, dr.last = ko, dr.lastIndexOf = function(t, e, n) {
                        var i = null == t ? 0 : t.length;
                        if (!i) return -1;
                        var a = i;
                        return n !== r && (a = (a = Us(n)) < 0 ? Hn(i + a, 0) : Gn(a, i - 1)), e == e ? function(t, e, n) {
                            for (var r = n + 1; r--;)
                                if (t[r] === e) return r;
                            return r
                        }(t, e, a) : an(t, un, a, !0)
                    }, dr.lowerCase = vu, dr.lowerFirst = mu, dr.lt = Ps, dr.lte = Fs, dr.max = function(t) {
                        return t && t.length ? zr(t, Cu, Qr) : r
                    }, dr.maxBy = function(t, e) {
                        return t && t.length ? zr(t, Oa(e, 2), Qr) : r
                    }, dr.mean = function(t) {
                        return cn(t, Cu)
                    }, dr.meanBy = function(t, e) {
                        return cn(t, Oa(e, 2))
                    }, dr.min = function(t) {
                        return t && t.length ? zr(t, Cu, li) : r
                    }, dr.minBy = function(t, e) {
                        return t && t.length ? zr(t, Oa(e, 2), li) : r
                    }, dr.stubArray = zu, dr.stubFalse = Yu, dr.stubObject = function() {
                        return {}
                    }, dr.stubString = function() {
                        return ""
                    }, dr.stubTrue = function() {
                        return !0
                    }, dr.multiply = Ku, dr.nth = function(t, e) {
                        return t && t.length ? yi(t, Us(e)) : r
                    }, dr.noConflict = function() {
                        return Ne._ === this && (Ne._ = ge), this
                    }, dr.noop = Ou, dr.now = Qo, dr.pad = function(t, e, n) {
                        t = Hs(t);
                        var r = (e = Us(e)) ? Dn(t) : 0;
                        if (!e || r >= e) return t;
                        var i = (e - r) / 2;
                        return ba(qn(i), n) + t + ba(Fn(i), n)
                    }, dr.padEnd = function(t, e, n) {
                        t = Hs(t);
                        var r = (e = Us(e)) ? Dn(t) : 0;
                        return e && r < e ? t + ba(e - r, n) : t
                    }, dr.padStart = function(t, e, n) {
                        t = Hs(t);
                        var r = (e = Us(e)) ? Dn(t) : 0;
                        return e && r < e ? ba(e - r, n) + t : t
                    }, dr.parseInt = function(t, e, n) {
                        return n || null == e ? e = 0 : e && (e = +e), Wn(Hs(t).replace(Lt, ""), e || 0)
                    }, dr.random = function(t, e, n) {
                        if (n && "boolean" != typeof n && Ga(t, e, n) && (e = n = r), n === r && ("boolean" == typeof e ? (n = e, e = r) : "boolean" == typeof t && (n = t, t = r)), t === r && e === r ? (t = 0, e = 1) : (t = js(t), e === r ? (e = t, t = 0) : e = js(e)), t > e) {
                            var i = t;
                            t = e, e = i
                        }
                        if (n || t % 1 || e % 1) {
                            var a = Kn();
                            return Gn(t + a * (e - t + Me("1e-" + ((a + "").length - 1))), e)
                        }
                        return wi(t, e)
                    }, dr.reduce = function(t, e, n) {
                        var r = bs(t) ? Qe : hn,
                            i = arguments.length < 3;
                        return r(t, Oa(e, 4), n, i, qr)
                    }, dr.reduceRight = function(t, e, n) {
                        var r = bs(t) ? tn : hn,
                            i = arguments.length < 3;
                        return r(t, Oa(e, 4), n, i, jr)
                    }, dr.repeat = function(t, e, n) {
                        return e = (n ? Ga(t, e, n) : e === r) ? 1 : Us(e), xi(Hs(t), e)
                    }, dr.replace = function() {
                        var t = arguments,
                            e = Hs(t[0]);
                        return t.length < 3 ? e : e.replace(t[1], t[2])
                    }, dr.result = function(t, e, n) {
                        var i = -1,
                            a = (e = Gi(e, t)).length;
                        for (a || (a = 1, t = r); ++i < a;) {
                            var o = null == t ? r : t[co(e[i])];
                            o === r && (i = a, o = n), t = Es(o) ? o.call(t) : o
                        }
                        return t
                    }, dr.round = Xu, dr.runInContext = t, dr.sample = function(t) {
                        return (bs(t) ? Er : Ei)(t)
                    }, dr.size = function(t) {
                        if (null == t) return 0;
                        if (ms(t)) return Bs(t) ? Dn(t) : t.length;
                        var e = Ua(t);
                        return e == W || e == tt ? t.size : ci(t).length
                    }, dr.snakeCase = _u, dr.some = function(t, e, n) {
                        var i = bs(t) ? en : Ni;
                        return n && Ga(t, e, n) && (e = r), i(t, Oa(e, 3))
                    }, dr.sortedIndex = function(t, e) {
                        return Ii(t, e)
                    }, dr.sortedIndexBy = function(t, e, n) {
                        return Li(t, e, Oa(n, 2))
                    }, dr.sortedIndexOf = function(t, e) {
                        var n = null == t ? 0 : t.length;
                        if (n) {
                            var r = Ii(t, e);
                            if (r < n && ds(t[r], e)) return r
                        }
                        return -1
                    }, dr.sortedLastIndex = function(t, e) {
                        return Ii(t, e, !0)
                    }, dr.sortedLastIndexBy = function(t, e, n) {
                        return Li(t, e, Oa(n, 2), !0)
                    }, dr.sortedLastIndexOf = function(t, e) {
                        if (null == t ? 0 : t.length) {
                            var n = Ii(t, e, !0) - 1;
                            if (ds(t[n], e)) return n
                        }
                        return -1
                    }, dr.startCase = wu, dr.startsWith = function(t, e, n) {
                        return t = Hs(t), n = null == n ? 0 : Br(Us(n), 0, t.length), e = Ri(e), t.slice(n, n + e.length) == e
                    }, dr.subtract = Zu, dr.sum = function(t) {
                        return t && t.length ? dn(t, Cu) : 0
                    }, dr.sumBy = function(t, e) {
                        return t && t.length ? dn(t, Oa(e, 2)) : 0
                    }, dr.template = function(t, e, n) {
                        var i = dr.templateSettings;
                        n && Ga(t, e, n) && (e = r), t = Hs(t), e = Ws({}, e, i, Aa);
                        var a, o, s = Ws({}, e.imports, i.imports, Aa),
                            u = iu(s),
                            c = yn(s, u),
                            f = 0,
                            l = e.interpolate || Wt,
                            h = "__p += '",
                            d = ne((e.escape || Wt).source + "|" + l.source + "|" + (l === St ? jt : Wt).source + "|" + (e.evaluate || Wt).source + "|$", "g"),
                            p = "//# sourceURL=" + (fe.call(e, "sourceURL") ? (e.sourceURL + "").replace(/[\r\n]/g, " ") : "lodash.templateSources[" + ++ke + "]") + "\n";
                        t.replace(d, (function(e, n, r, i, s, u) {
                            return r || (r = i), h += t.slice(f, u).replace(Kt, xn), n && (a = !0, h += "' +\n__e(" + n + ") +\n'"), s && (o = !0, h += "';\n" + s + ";\n__p += '"), r && (h += "' +\n((__t = (" + r + ")) == null ? '' : __t) +\n'"), f = u + e.length, e
                        })), h += "';\n";
                        var g = fe.call(e, "variable") && e.variable;
                        g || (h = "with (obj) {\n" + h + "\n}\n"), h = (o ? h.replace(bt, "") : h).replace(vt, "$1").replace(mt, "$1;"), h = "function(" + (g || "obj") + ") {\n" + (g ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (a ? ", __e = _.escape" : "") + (o ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + h + "return __p\n}";
                        var y = Au((function() {
                            return Qt(u, p + "return " + h).apply(r, c)
                        }));
                        if (y.source = h, ks(y)) throw y;
                        return y
                    }, dr.times = function(t, e) {
                        if ((t = Us(t)) < 1 || t > I) return [];
                        var n = O,
                            r = Gn(t, O);
                        e = Oa(e), t -= O;
                        for (var i = pn(r, e); ++n < t;) e(n);
                        return i
                    }, dr.toFinite = js, dr.toInteger = Us, dr.toLength = zs, dr.toLower = function(t) {
                        return Hs(t).toLowerCase()
                    }, dr.toNumber = Ys, dr.toSafeInteger = function(t) {
                        return t ? Br(Us(t), -I, I) : 0 === t ? t : 0
                    }, dr.toString = Hs, dr.toUpper = function(t) {
                        return Hs(t).toUpperCase()
                    }, dr.trim = function(t, e, n) {
                        if ((t = Hs(t)) && (n || e === r)) return t.replace(It, "");
                        if (!t || !(e = Ri(e))) return t;
                        var i = Cn(t),
                            a = Cn(e);
                        return Wi(i, vn(i, a), mn(i, a) + 1).join("")
                    }, dr.trimEnd = function(t, e, n) {
                        if ((t = Hs(t)) && (n || e === r)) return t.replace(Bt, "");
                        if (!t || !(e = Ri(e))) return t;
                        var i = Cn(t);
                        return Wi(i, 0, mn(i, Cn(e)) + 1).join("")
                    }, dr.trimStart = function(t, e, n) {
                        if ((t = Hs(t)) && (n || e === r)) return t.replace(Lt, "");
                        if (!t || !(e = Ri(e))) return t;
                        var i = Cn(t);
                        return Wi(i, vn(i, Cn(e))).join("")
                    }, dr.truncate = function(t, e) {
                        var n = A,
                            i = S;
                        if (Ms(e)) {
                            var a = "separator" in e ? e.separator : a;
                            n = "length" in e ? Us(e.length) : n, i = "omission" in e ? Ri(e.omission) : i
                        }
                        var o = (t = Hs(t)).length;
                        if (kn(t)) {
                            var s = Cn(t);
                            o = s.length
                        }
                        if (n >= o) return t;
                        var u = n - Dn(i);
                        if (u < 1) return i;
                        var c = s ? Wi(s, 0, u).join("") : t.slice(0, u);
                        if (a === r) return c + i;
                        if (s && (u += c.length - u), Is(a)) {
                            if (t.slice(u).search(a)) {
                                var f, l = c;
                                for (a.global || (a = ne(a.source, Hs(Ut.exec(a)) + "g")), a.lastIndex = 0; f = a.exec(l);) var h = f.index;
                                c = c.slice(0, h === r ? u : h)
                            }
                        } else if (t.indexOf(Ri(a), u) != u) {
                            var d = c.lastIndexOf(a);
                            d > -1 && (c = c.slice(0, d))
                        }
                        return c + i
                    }, dr.unescape = function(t) {
                        return (t = Hs(t)) && xt.test(t) ? t.replace(_t, Nn) : t
                    }, dr.uniqueId = function(t) {
                        var e = ++le;
                        return Hs(t) + e
                    }, dr.upperCase = xu, dr.upperFirst = ku, dr.each = Ho, dr.eachRight = Go, dr.first = mo, Bu(dr, (Wu = {}, $r(dr, (function(t, e) {
                        fe.call(dr.prototype, e) || (Wu[e] = t)
                    })), Wu), {
                        chain: !1
                    }), dr.VERSION = "4.17.15", He(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function(t) {
                        dr[t].placeholder = dr
                    })), He(["drop", "take"], (function(t, e) {
                        br.prototype[t] = function(n) {
                            n = n === r ? 1 : Hn(Us(n), 0);
                            var i = this.__filtered__ && !e ? new br(this) : this.clone();
                            return i.__filtered__ ? i.__takeCount__ = Gn(n, i.__takeCount__) : i.__views__.push({
                                size: Gn(n, O),
                                type: t + (i.__dir__ < 0 ? "Right" : "")
                            }), i
                        }, br.prototype[t + "Right"] = function(e) {
                            return this.reverse()[t](e).reverse()
                        }
                    })), He(["filter", "map", "takeWhile"], (function(t, e) {
                        var n = e + 1,
                            r = n == D || 3 == n;
                        br.prototype[t] = function(t) {
                            var e = this.clone();
                            return e.__iteratees__.push({
                                iteratee: Oa(t, 3),
                                type: n
                            }), e.__filtered__ = e.__filtered__ || r, e
                        }
                    })), He(["head", "last"], (function(t, e) {
                        var n = "take" + (e ? "Right" : "");
                        br.prototype[t] = function() {
                            return this[n](1).value()[0]
                        }
                    })), He(["initial", "tail"], (function(t, e) {
                        var n = "drop" + (e ? "" : "Right");
                        br.prototype[t] = function() {
                            return this.__filtered__ ? new br(this) : this[n](1)
                        }
                    })), br.prototype.compact = function() {
                        return this.filter(Cu)
                    }, br.prototype.find = function(t) {
                        return this.filter(t).head()
                    }, br.prototype.findLast = function(t) {
                        return this.reverse().find(t)
                    }, br.prototype.invokeMap = ki((function(t, e) {
                        return "function" == typeof t ? new br(this) : this.map((function(n) {
                            return ri(n, t, e)
                        }))
                    })), br.prototype.reject = function(t) {
                        return this.filter(us(Oa(t)))
                    }, br.prototype.slice = function(t, e) {
                        t = Us(t);
                        var n = this;
                        return n.__filtered__ && (t > 0 || e < 0) ? new br(n) : (t < 0 ? n = n.takeRight(-t) : t && (n = n.drop(t)), e !== r && (n = (e = Us(e)) < 0 ? n.dropRight(-e) : n.take(e - t)), n)
                    }, br.prototype.takeRightWhile = function(t) {
                        return this.reverse().takeWhile(t).reverse()
                    }, br.prototype.toArray = function() {
                        return this.take(O)
                    }, $r(br.prototype, (function(t, e) {
                        var n = /^(?:filter|find|map|reject)|While$/.test(e),
                            i = /^(?:head|last)$/.test(e),
                            a = dr[i ? "take" + ("last" == e ? "Right" : "") : e],
                            o = i || /^find/.test(e);
                        a && (dr.prototype[e] = function() {
                            var e = this.__wrapped__,
                                s = i ? [1] : arguments,
                                u = e instanceof br,
                                c = s[0],
                                f = u || bs(e),
                                l = function(t) {
                                    var e = a.apply(dr, Je([t], s));
                                    return i && h ? e[0] : e
                                };
                            f && n && "function" == typeof c && 1 != c.length && (u = f = !1);
                            var h = this.__chain__,
                                d = !!this.__actions__.length,
                                p = o && !h,
                                g = u && !d;
                            if (!o && f) {
                                e = g ? e : new br(this);
                                var y = t.apply(e, s);
                                return y.__actions__.push({
                                    func: jo,
                                    args: [l],
                                    thisArg: r
                                }), new yr(y, h)
                            }
                            return p && g ? t.apply(this, s) : (y = this.thru(l), p ? i ? y.value()[0] : y.value() : y)
                        })
                    })), He(["pop", "push", "shift", "sort", "splice", "unshift"], (function(t) {
                        var e = ae[t],
                            n = /^(?:push|sort|unshift)$/.test(t) ? "tap" : "thru",
                            r = /^(?:pop|shift)$/.test(t);
                        dr.prototype[t] = function() {
                            var t = arguments;
                            if (r && !this.__chain__) {
                                var i = this.value();
                                return e.apply(bs(i) ? i : [], t)
                            }
                            return this[n]((function(n) {
                                return e.apply(bs(n) ? n : [], t)
                            }))
                        }
                    })), $r(br.prototype, (function(t, e) {
                        var n = dr[e];
                        if (n) {
                            var r = n.name + "";
                            fe.call(ir, r) || (ir[r] = []), ir[r].push({
                                name: e,
                                func: n
                            })
                        }
                    })), ir[da(r, y).name] = [{
                        name: "wrapper",
                        func: r
                    }], br.prototype.clone = function() {
                        var t = new br(this.__wrapped__);
                        return t.__actions__ = na(this.__actions__), t.__dir__ = this.__dir__, t.__filtered__ = this.__filtered__, t.__iteratees__ = na(this.__iteratees__), t.__takeCount__ = this.__takeCount__, t.__views__ = na(this.__views__), t
                    }, br.prototype.reverse = function() {
                        if (this.__filtered__) {
                            var t = new br(this);
                            t.__dir__ = -1, t.__filtered__ = !0
                        } else(t = this.clone()).__dir__ *= -1;
                        return t
                    }, br.prototype.value = function() {
                        var t = this.__wrapped__.value(),
                            e = this.__dir__,
                            n = bs(t),
                            r = e < 0,
                            i = n ? t.length : 0,
                            a = function(t, e, n) {
                                var r = -1,
                                    i = n.length;
                                for (; ++r < i;) {
                                    var a = n[r],
                                        o = a.size;
                                    switch (a.type) {
                                        case "drop":
                                            t += o;
                                            break;
                                        case "dropRight":
                                            e -= o;
                                            break;
                                        case "take":
                                            e = Gn(e, t + o);
                                            break;
                                        case "takeRight":
                                            t = Hn(t, e - o)
                                    }
                                }
                                return {
                                    start: t,
                                    end: e
                                }
                            }(0, i, this.__views__),
                            o = a.start,
                            s = a.end,
                            u = s - o,
                            c = r ? s : o - 1,
                            f = this.__iteratees__,
                            l = f.length,
                            h = 0,
                            d = Gn(u, this.__takeCount__);
                        if (!n || !r && i == u && d == u) return Ui(t, this.__actions__);
                        var p = [];
                        t: for (; u-- && h < d;) {
                            for (var g = -1, y = t[c += e]; ++g < l;) {
                                var b = f[g],
                                    v = b.iteratee,
                                    m = b.type,
                                    _ = v(y);
                                if (m == C) y = _;
                                else if (!_) {
                                    if (m == D) continue t;
                                    break t
                                }
                            }
                            p[h++] = y
                        }
                        return p
                    }, dr.prototype.at = Uo, dr.prototype.chain = function() {
                        return qo(this)
                    }, dr.prototype.commit = function() {
                        return new yr(this.value(), this.__chain__)
                    }, dr.prototype.next = function() {
                        this.__values__ === r && (this.__values__ = qs(this.value()));
                        var t = this.__index__ >= this.__values__.length;
                        return {
                            done: t,
                            value: t ? r : this.__values__[this.__index__++]
                        }
                    }, dr.prototype.plant = function(t) {
                        for (var e, n = this; n instanceof gr;) {
                            var i = lo(n);
                            i.__index__ = 0, i.__values__ = r, e ? a.__wrapped__ = i : e = i;
                            var a = i;
                            n = n.__wrapped__
                        }
                        return a.__wrapped__ = t, e
                    }, dr.prototype.reverse = function() {
                        var t = this.__wrapped__;
                        if (t instanceof br) {
                            var e = t;
                            return this.__actions__.length && (e = new br(this)), (e = e.reverse()).__actions__.push({
                                func: jo,
                                args: [Mo],
                                thisArg: r
                            }), new yr(e, this.__chain__)
                        }
                        return this.thru(Mo)
                    }, dr.prototype.toJSON = dr.prototype.valueOf = dr.prototype.value = function() {
                        return Ui(this.__wrapped__, this.__actions__)
                    }, dr.prototype.first = dr.prototype.head, ln && (dr.prototype[ln] = function() {
                        return this
                    }), dr
                }();
                "function" == typeof define && "object" == typeof define.amd && define.amd ? (Ne._ = In, define((function() {
                    return In
                }))) : Le ? ((Le.exports = In)._ = In, Ie._ = In) : Ne._ = In
            }).call(this)
        }).call(this, n(12), n(9)(t))
    }, function(t, e, n) {
        var r = n(66),
            i = n(67);
        t.exports = function(t, e, n, a) {
            var o = !n;
            n || (n = {});
            for (var s = -1, u = e.length; ++s < u;) {
                var c = e[s],
                    f = a ? a(n[c], t[c], c, n, t) : void 0;
                void 0 === f && (f = t[c]), o ? i(n, c, f) : r(n, c, f)
            }
            return n
        }
    }, function(t, e, n) {
        var r = n(268),
            i = n(20),
            a = Object.prototype,
            o = a.hasOwnProperty,
            s = a.propertyIsEnumerable,
            u = r(function() {
                return arguments
            }()) ? r : function(t) {
                return i(t) && o.call(t, "callee") && !s.call(t, "callee")
            };
        t.exports = u
    }, function(t, e, n) {
        var r = n(270),
            i = n(69),
            a = n(94),
            o = a && a.isTypedArray,
            s = o ? i(o) : r;
        t.exports = s
    }, function(t, e, n) {
        var r = n(42),
            i = 1 / 0;
        t.exports = function(t) {
            if ("string" == typeof t || r(t)) return t;
            var e = t + "";
            return "0" == e && 1 / t == -i ? "-0" : e
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(2),
            i = n(111),
            a = n(118),
            o = n(119),
            s = n(31);

        function u(t) {
            s.call(this, "digest"), this._hash = t
        }
        r(u, s), u.prototype._update = function(t) {
            this._hash.update(t)
        }, u.prototype._final = function() {
            return this._hash.digest()
        }, t.exports = function(t) {
            return "md5" === (t = t.toLowerCase()) ? new i : "rmd160" === t || "ripemd160" === t ? new a : new u(o(t))
        }
    }, function(t, e, n) {
        (function(t) {
            function n(t) {
                return Object.prototype.toString.call(t)
            }
            e.isArray = function(t) {
                return Array.isArray ? Array.isArray(t) : "[object Array]" === n(t)
            }, e.isBoolean = function(t) {
                return "boolean" == typeof t
            }, e.isNull = function(t) {
                return null === t
            }, e.isNullOrUndefined = function(t) {
                return null == t
            }, e.isNumber = function(t) {
                return "number" == typeof t
            }, e.isString = function(t) {
                return "string" == typeof t
            }, e.isSymbol = function(t) {
                return "symbol" == typeof t
            }, e.isUndefined = function(t) {
                return void 0 === t
            }, e.isRegExp = function(t) {
                return "[object RegExp]" === n(t)
            }, e.isObject = function(t) {
                return "object" == typeof t && null !== t
            }, e.isDate = function(t) {
                return "[object Date]" === n(t)
            }, e.isError = function(t) {
                return "[object Error]" === n(t) || t instanceof Error
            }, e.isFunction = function(t) {
                return "function" == typeof t
            }, e.isPrimitive = function(t) {
                return null === t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || "symbol" == typeof t || void 0 === t
            }, e.isBuffer = t.isBuffer
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        (function(e) {
            t.exports = function(t, n) {
                for (var r = Math.min(t.length, n.length), i = new e(r), a = 0; a < r; ++a) i[a] = t[a] ^ n[a];
                return i
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(16);

        function a() {
            this.pending = null, this.pendingTotal = 0, this.blockSize = this.constructor.blockSize, this.outSize = this.constructor.outSize, this.hmacStrength = this.constructor.hmacStrength, this.padLength = this.constructor.padLength / 8, this.endian = "big", this._delta8 = this.blockSize / 8, this._delta32 = this.blockSize / 32
        }
        e.BlockHash = a, a.prototype.update = function(t, e) {
            if (t = r.toArray(t, e), this.pending ? this.pending = this.pending.concat(t) : this.pending = t, this.pendingTotal += t.length, this.pending.length >= this._delta8) {
                var n = (t = this.pending).length % this._delta8;
                this.pending = t.slice(t.length - n, t.length), 0 === this.pending.length && (this.pending = null), t = r.join32(t, 0, t.length - n, this.endian);
                for (var i = 0; i < t.length; i += this._delta32) this._update(t, i, i + this._delta32)
            }
            return this
        }, a.prototype.digest = function(t) {
            return this.update(this._pad()), i(null === this.pending), this._digest(t)
        }, a.prototype._pad = function() {
            var t = this.pendingTotal,
                e = this._delta8,
                n = e - (t + this.padLength) % e,
                r = new Array(n + this.padLength);
            r[0] = 128;
            for (var i = 1; i < n; i++) r[i] = 0;
            if (t <<= 3, "big" === this.endian) {
                for (var a = 8; a < this.padLength; a++) r[i++] = 0;
                r[i++] = 0, r[i++] = 0, r[i++] = 0, r[i++] = 0, r[i++] = t >>> 24 & 255, r[i++] = t >>> 16 & 255, r[i++] = t >>> 8 & 255, r[i++] = 255 & t
            } else
                for (r[i++] = 255 & t, r[i++] = t >>> 8 & 255, r[i++] = t >>> 16 & 255, r[i++] = t >>> 24 & 255, r[i++] = 0, r[i++] = 0, r[i++] = 0, r[i++] = 0, a = 8; a < this.padLength; a++) r[i++] = 0;
            return r
        }
    }, function(t, e, n) {
        var r = e;
        r.bignum = n(5), r.define = n(482).define, r.base = n(58), r.constants = n(221), r.decoders = n(487), r.encoders = n(489)
    }, function(t, e, n) {
        var r = e;
        r.Reporter = n(484).Reporter, r.DecoderBuffer = n(220).DecoderBuffer, r.EncoderBuffer = n(220).EncoderBuffer, r.Node = n(485)
    }, function(t, e, n) {
        t.exports = {
            graphlib: n(19),
            layout: n(349),
            debug: n(403),
            util: {
                time: n(10).time,
                notime: n(10).notime
            },
            version: n(404)
        }
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [1, 4],
                    n = [1, 3],
                    r = [1, 5],
                    i = [1, 8, 9, 10, 11, 26, 34, 61, 62, 63, 64, 65, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    a = [2, 2],
                    o = [1, 12],
                    s = [1, 13],
                    u = [1, 14],
                    c = [1, 15],
                    f = [1, 22],
                    l = [1, 46],
                    h = [1, 24],
                    d = [1, 25],
                    p = [1, 26],
                    g = [1, 27],
                    y = [1, 28],
                    b = [1, 40],
                    v = [1, 35],
                    m = [1, 37],
                    _ = [1, 32],
                    w = [1, 36],
                    x = [1, 39],
                    k = [1, 43],
                    E = [1, 44],
                    A = [1, 45],
                    S = [1, 34],
                    M = [1, 38],
                    T = [1, 41],
                    D = [1, 42],
                    C = [1, 33],
                    N = [1, 51],
                    I = [1, 8, 9, 10, 11, 26, 30, 34, 61, 62, 63, 64, 65, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    L = [1, 55],
                    B = [1, 54],
                    O = [1, 56],
                    R = [8, 9, 11, 55, 56],
                    P = [8, 9, 10, 11, 55, 56],
                    F = [8, 9, 10, 11, 35, 55, 56],
                    q = [8, 9, 10, 11, 28, 34, 35, 37, 39, 41, 43, 45, 47, 48, 50, 55, 56, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    j = [8, 9, 11, 34, 55, 56, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    U = [34, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    z = [1, 100],
                    Y = [1, 121],
                    V = [1, 122],
                    H = [1, 123],
                    G = [1, 124],
                    $ = [1, 104],
                    W = [1, 95],
                    K = [1, 96],
                    X = [1, 92],
                    Z = [1, 116],
                    J = [1, 117],
                    Q = [1, 118],
                    tt = [1, 119],
                    et = [1, 120],
                    nt = [1, 125],
                    rt = [1, 126],
                    it = [1, 98],
                    at = [1, 106],
                    ot = [1, 109],
                    st = [1, 107],
                    ut = [1, 108],
                    ct = [1, 101],
                    ft = [1, 114],
                    lt = [1, 113],
                    ht = [1, 97],
                    dt = [1, 94],
                    pt = [1, 103],
                    gt = [1, 105],
                    yt = [1, 110],
                    bt = [1, 111],
                    vt = [1, 112],
                    mt = [1, 115],
                    _t = [8, 9, 10, 11, 26, 30, 34, 61, 62, 63, 64, 65, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    wt = [1, 129],
                    xt = [1, 133],
                    kt = [1, 135],
                    Et = [1, 136],
                    At = [8, 9, 10, 11, 12, 13, 26, 28, 29, 30, 34, 38, 40, 42, 44, 46, 47, 49, 51, 55, 56, 57, 61, 62, 63, 64, 65, 66, 67, 70, 76, 77, 80, 81, 82, 84, 85, 86, 87, 91, 92, 93, 94, 95, 96],
                    St = [8, 9, 10, 11, 13, 34, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96],
                    Mt = [10, 77],
                    Tt = [1, 201],
                    Dt = [1, 205],
                    Ct = [1, 202],
                    Nt = [1, 199],
                    It = [1, 196],
                    Lt = [1, 197],
                    Bt = [1, 198],
                    Ot = [1, 200],
                    Rt = [1, 203],
                    Pt = [1, 204],
                    Ft = [1, 206],
                    qt = [8, 9, 11],
                    jt = [1, 222],
                    Ut = [8, 9, 11, 77],
                    zt = [8, 9, 10, 11, 61, 73, 76, 77, 80, 81, 82, 83, 84, 85, 86],
                    Yt = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            mermaidDoc: 3,
                            graphConfig: 4,
                            document: 5,
                            line: 6,
                            statement: 7,
                            SEMI: 8,
                            NEWLINE: 9,
                            SPACE: 10,
                            EOF: 11,
                            GRAPH: 12,
                            DIR: 13,
                            FirstStmtSeperator: 14,
                            ending: 15,
                            endToken: 16,
                            spaceList: 17,
                            spaceListNewline: 18,
                            verticeStatement: 19,
                            separator: 20,
                            styleStatement: 21,
                            linkStyleStatement: 22,
                            classDefStatement: 23,
                            classStatement: 24,
                            clickStatement: 25,
                            subgraph: 26,
                            text: 27,
                            SQS: 28,
                            SQE: 29,
                            end: 30,
                            link: 31,
                            node: 32,
                            vertex: 33,
                            AMP: 34,
                            STYLE_SEPARATOR: 35,
                            idString: 36,
                            PS: 37,
                            PE: 38,
                            "(-": 39,
                            "-)": 40,
                            STADIUMSTART: 41,
                            STADIUMEND: 42,
                            CYLINDERSTART: 43,
                            CYLINDEREND: 44,
                            DIAMOND_START: 45,
                            DIAMOND_STOP: 46,
                            TAGEND: 47,
                            TRAPSTART: 48,
                            TRAPEND: 49,
                            INVTRAPSTART: 50,
                            INVTRAPEND: 51,
                            linkStatement: 52,
                            arrowText: 53,
                            TESTSTR: 54,
                            START_LINK: 55,
                            LINK: 56,
                            PIPE: 57,
                            textToken: 58,
                            STR: 59,
                            keywords: 60,
                            STYLE: 61,
                            LINKSTYLE: 62,
                            CLASSDEF: 63,
                            CLASS: 64,
                            CLICK: 65,
                            DOWN: 66,
                            UP: 67,
                            textNoTags: 68,
                            textNoTagsToken: 69,
                            DEFAULT: 70,
                            stylesOpt: 71,
                            alphaNum: 72,
                            HEX: 73,
                            numList: 74,
                            INTERPOLATE: 75,
                            NUM: 76,
                            COMMA: 77,
                            style: 78,
                            styleComponent: 79,
                            ALPHA: 80,
                            COLON: 81,
                            MINUS: 82,
                            UNIT: 83,
                            BRKT: 84,
                            DOT: 85,
                            PCT: 86,
                            TAGSTART: 87,
                            alphaNumToken: 88,
                            idStringToken: 89,
                            alphaNumStatement: 90,
                            PUNCTUATION: 91,
                            UNICODE_TEXT: 92,
                            PLUS: 93,
                            EQUALS: 94,
                            MULT: 95,
                            UNDERSCORE: 96,
                            graphCodeTokens: 97,
                            ARROW_CROSS: 98,
                            ARROW_POINT: 99,
                            ARROW_CIRCLE: 100,
                            ARROW_OPEN: 101,
                            QUOTE: 102,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            8: "SEMI",
                            9: "NEWLINE",
                            10: "SPACE",
                            11: "EOF",
                            12: "GRAPH",
                            13: "DIR",
                            26: "subgraph",
                            28: "SQS",
                            29: "SQE",
                            30: "end",
                            34: "AMP",
                            35: "STYLE_SEPARATOR",
                            37: "PS",
                            38: "PE",
                            39: "(-",
                            40: "-)",
                            41: "STADIUMSTART",
                            42: "STADIUMEND",
                            43: "CYLINDERSTART",
                            44: "CYLINDEREND",
                            45: "DIAMOND_START",
                            46: "DIAMOND_STOP",
                            47: "TAGEND",
                            48: "TRAPSTART",
                            49: "TRAPEND",
                            50: "INVTRAPSTART",
                            51: "INVTRAPEND",
                            54: "TESTSTR",
                            55: "START_LINK",
                            56: "LINK",
                            57: "PIPE",
                            59: "STR",
                            61: "STYLE",
                            62: "LINKSTYLE",
                            63: "CLASSDEF",
                            64: "CLASS",
                            65: "CLICK",
                            66: "DOWN",
                            67: "UP",
                            70: "DEFAULT",
                            73: "HEX",
                            75: "INTERPOLATE",
                            76: "NUM",
                            77: "COMMA",
                            80: "ALPHA",
                            81: "COLON",
                            82: "MINUS",
                            83: "UNIT",
                            84: "BRKT",
                            85: "DOT",
                            86: "PCT",
                            87: "TAGSTART",
                            91: "PUNCTUATION",
                            92: "UNICODE_TEXT",
                            93: "PLUS",
                            94: "EQUALS",
                            95: "MULT",
                            96: "UNDERSCORE",
                            98: "ARROW_CROSS",
                            99: "ARROW_POINT",
                            100: "ARROW_CIRCLE",
                            101: "ARROW_OPEN",
                            102: "QUOTE"
                        },
                        productions_: [0, [3, 2],
                            [5, 0],
                            [5, 2],
                            [6, 1],
                            [6, 1],
                            [6, 1],
                            [6, 1],
                            [6, 1],
                            [4, 2],
                            [4, 2],
                            [4, 3],
                            [15, 2],
                            [15, 1],
                            [16, 1],
                            [16, 1],
                            [16, 1],
                            [14, 1],
                            [14, 1],
                            [14, 2],
                            [18, 2],
                            [18, 2],
                            [18, 1],
                            [18, 1],
                            [17, 2],
                            [17, 1],
                            [7, 2],
                            [7, 2],
                            [7, 2],
                            [7, 2],
                            [7, 2],
                            [7, 2],
                            [7, 9],
                            [7, 6],
                            [7, 4],
                            [20, 1],
                            [20, 1],
                            [20, 1],
                            [19, 3],
                            [19, 4],
                            [19, 2],
                            [19, 1],
                            [32, 1],
                            [32, 5],
                            [32, 3],
                            [33, 4],
                            [33, 6],
                            [33, 4],
                            [33, 4],
                            [33, 4],
                            [33, 4],
                            [33, 4],
                            [33, 6],
                            [33, 4],
                            [33, 4],
                            [33, 4],
                            [33, 4],
                            [33, 4],
                            [33, 1],
                            [31, 2],
                            [31, 3],
                            [31, 3],
                            [31, 1],
                            [31, 3],
                            [52, 1],
                            [53, 3],
                            [27, 1],
                            [27, 2],
                            [27, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [60, 1],
                            [68, 1],
                            [68, 2],
                            [23, 5],
                            [23, 5],
                            [24, 5],
                            [25, 5],
                            [25, 7],
                            [25, 5],
                            [25, 7],
                            [21, 5],
                            [21, 5],
                            [22, 5],
                            [22, 5],
                            [22, 9],
                            [22, 9],
                            [22, 7],
                            [22, 7],
                            [74, 1],
                            [74, 3],
                            [71, 1],
                            [71, 3],
                            [78, 1],
                            [78, 2],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [79, 1],
                            [58, 1],
                            [58, 1],
                            [58, 1],
                            [58, 1],
                            [58, 1],
                            [58, 1],
                            [69, 1],
                            [69, 1],
                            [69, 1],
                            [69, 1],
                            [36, 1],
                            [36, 2],
                            [72, 1],
                            [72, 2],
                            [90, 1],
                            [90, 1],
                            [90, 1],
                            [90, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [88, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [89, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1],
                            [97, 1]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 2:
                                    this.$ = [];
                                    break;
                                case 3:
                                    a[s] !== [] && a[s - 1].push(a[s]), this.$ = a[s - 1];
                                    break;
                                case 4:
                                case 66:
                                case 68:
                                case 80:
                                case 126:
                                case 128:
                                case 129:
                                    this.$ = a[s];
                                    break;
                                case 11:
                                    r.setDirection(a[s - 1]), this.$ = a[s - 1];
                                    break;
                                case 26:
                                    this.$ = a[s - 1].nodes;
                                    break;
                                case 27:
                                case 28:
                                case 29:
                                case 30:
                                case 31:
                                    this.$ = [];
                                    break;
                                case 32:
                                    this.$ = r.addSubGraph(a[s - 6], a[s - 1], a[s - 4]);
                                    break;
                                case 33:
                                    this.$ = r.addSubGraph(a[s - 3], a[s - 1], a[s - 3]);
                                    break;
                                case 34:
                                    this.$ = r.addSubGraph(void 0, a[s - 1], void 0);
                                    break;
                                case 38:
                                    r.addLink(a[s - 2].stmt, a[s], a[s - 1]), this.$ = {
                                        stmt: a[s],
                                        nodes: a[s].concat(a[s - 2].nodes)
                                    };
                                    break;
                                case 39:
                                    r.addLink(a[s - 3].stmt, a[s - 1], a[s - 2]), this.$ = {
                                        stmt: a[s - 1],
                                        nodes: a[s - 1].concat(a[s - 3].nodes)
                                    };
                                    break;
                                case 40:
                                    this.$ = {
                                        stmt: a[s - 1],
                                        nodes: a[s - 1]
                                    };
                                    break;
                                case 41:
                                    this.$ = {
                                        stmt: a[s],
                                        nodes: a[s]
                                    };
                                    break;
                                case 42:
                                    this.$ = [a[s]];
                                    break;
                                case 43:
                                    this.$ = a[s - 4].concat(a[s]);
                                    break;
                                case 44:
                                    this.$ = [a[s - 2]], r.setClass(a[s - 2], a[s]);
                                    break;
                                case 45:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "square");
                                    break;
                                case 46:
                                    this.$ = a[s - 5], r.addVertex(a[s - 5], a[s - 2], "circle");
                                    break;
                                case 47:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "ellipse");
                                    break;
                                case 48:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "stadium");
                                    break;
                                case 49:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "cylinder");
                                    break;
                                case 50:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "round");
                                    break;
                                case 51:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "diamond");
                                    break;
                                case 52:
                                    this.$ = a[s - 5], r.addVertex(a[s - 5], a[s - 2], "hexagon");
                                    break;
                                case 53:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "odd");
                                    break;
                                case 54:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "trapezoid");
                                    break;
                                case 55:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "inv_trapezoid");
                                    break;
                                case 56:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "lean_right");
                                    break;
                                case 57:
                                    this.$ = a[s - 3], r.addVertex(a[s - 3], a[s - 1], "lean_left");
                                    break;
                                case 58:
                                    this.$ = a[s], r.addVertex(a[s]);
                                    break;
                                case 59:
                                    a[s - 1].text = a[s], this.$ = a[s - 1];
                                    break;
                                case 60:
                                case 61:
                                    a[s - 2].text = a[s - 1], this.$ = a[s - 2];
                                    break;
                                case 62:
                                    this.$ = a[s];
                                    break;
                                case 63:
                                    var u = r.destructLink(a[s], a[s - 2]);
                                    this.$ = {
                                        type: u.type,
                                        stroke: u.stroke,
                                        text: a[s - 1]
                                    };
                                    break;
                                case 64:
                                    u = r.destructLink(a[s]);
                                    this.$ = {
                                        type: u.type,
                                        stroke: u.stroke
                                    };
                                    break;
                                case 65:
                                    this.$ = a[s - 1];
                                    break;
                                case 67:
                                case 81:
                                case 127:
                                    this.$ = a[s - 1] + "" + a[s];
                                    break;
                                case 82:
                                case 83:
                                    this.$ = a[s - 4], r.addClass(a[s - 2], a[s]);
                                    break;
                                case 84:
                                    this.$ = a[s - 4], r.setClass(a[s - 2], a[s]);
                                    break;
                                case 85:
                                    this.$ = a[s - 4], r.setClickEvent(a[s - 2], a[s], void 0);
                                    break;
                                case 86:
                                    this.$ = a[s - 6], r.setClickEvent(a[s - 4], a[s - 2], a[s]);
                                    break;
                                case 87:
                                    this.$ = a[s - 4], r.setLink(a[s - 2], a[s], void 0);
                                    break;
                                case 88:
                                    this.$ = a[s - 6], r.setLink(a[s - 4], a[s - 2], a[s]);
                                    break;
                                case 89:
                                    this.$ = a[s - 4], r.addVertex(a[s - 2], void 0, void 0, a[s]);
                                    break;
                                case 90:
                                case 92:
                                    this.$ = a[s - 4], r.updateLink(a[s - 2], a[s]);
                                    break;
                                case 91:
                                    this.$ = a[s - 4], r.updateLink([a[s - 2]], a[s]);
                                    break;
                                case 93:
                                    this.$ = a[s - 8], r.updateLinkInterpolate([a[s - 6]], a[s - 2]), r.updateLink([a[s - 6]], a[s]);
                                    break;
                                case 94:
                                    this.$ = a[s - 8], r.updateLinkInterpolate(a[s - 6], a[s - 2]), r.updateLink(a[s - 6], a[s]);
                                    break;
                                case 95:
                                    this.$ = a[s - 6], r.updateLinkInterpolate([a[s - 4]], a[s]);
                                    break;
                                case 96:
                                    this.$ = a[s - 6], r.updateLinkInterpolate(a[s - 4], a[s]);
                                    break;
                                case 97:
                                case 99:
                                    this.$ = [a[s]];
                                    break;
                                case 98:
                                case 100:
                                    a[s - 2].push(a[s]), this.$ = a[s - 2];
                                    break;
                                case 102:
                                    this.$ = a[s - 1] + a[s];
                                    break;
                                case 124:
                                    this.$ = a[s];
                                    break;
                                case 125:
                                    this.$ = a[s - 1] + "" + a[s];
                                    break;
                                case 130:
                                    this.$ = "v";
                                    break;
                                case 131:
                                    this.$ = "-"
                            }
                        },
                        table: [{
                            3: 1,
                            4: 2,
                            9: e,
                            10: n,
                            12: r
                        }, {
                            1: [3]
                        }, t(i, a, {
                            5: 6
                        }), {
                            4: 7,
                            9: e,
                            10: n,
                            12: r
                        }, {
                            4: 8,
                            9: e,
                            10: n,
                            12: r
                        }, {
                            13: [1, 9]
                        }, {
                            1: [2, 1],
                            6: 10,
                            7: 11,
                            8: o,
                            9: s,
                            10: u,
                            11: c,
                            19: 16,
                            21: 17,
                            22: 18,
                            23: 19,
                            24: 20,
                            25: 21,
                            26: f,
                            32: 23,
                            33: 29,
                            34: l,
                            36: 30,
                            61: h,
                            62: d,
                            63: p,
                            64: g,
                            65: y,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, t(i, [2, 9]), t(i, [2, 10]), {
                            8: [1, 48],
                            9: [1, 49],
                            10: N,
                            14: 47,
                            17: 50
                        }, t(I, [2, 3]), t(I, [2, 4]), t(I, [2, 5]), t(I, [2, 6]), t(I, [2, 7]), t(I, [2, 8]), {
                            8: L,
                            9: B,
                            11: O,
                            20: 52,
                            31: 53,
                            52: 57,
                            55: [1, 58],
                            56: [1, 59]
                        }, {
                            8: L,
                            9: B,
                            11: O,
                            20: 60
                        }, {
                            8: L,
                            9: B,
                            11: O,
                            20: 61
                        }, {
                            8: L,
                            9: B,
                            11: O,
                            20: 62
                        }, {
                            8: L,
                            9: B,
                            11: O,
                            20: 63
                        }, {
                            8: L,
                            9: B,
                            11: O,
                            20: 64
                        }, {
                            8: L,
                            9: B,
                            10: [1, 65],
                            11: O,
                            20: 66
                        }, t(R, [2, 41], {
                            17: 67,
                            10: N
                        }), {
                            10: [1, 68]
                        }, {
                            10: [1, 69]
                        }, {
                            10: [1, 70]
                        }, {
                            10: [1, 71]
                        }, {
                            10: [1, 72]
                        }, t(P, [2, 42], {
                            35: [1, 73]
                        }), t(F, [2, 58], {
                            89: 83,
                            28: [1, 74],
                            34: l,
                            37: [1, 75],
                            39: [1, 76],
                            41: [1, 77],
                            43: [1, 78],
                            45: [1, 79],
                            47: [1, 80],
                            48: [1, 81],
                            50: [1, 82],
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }), t(q, [2, 124]), t(q, [2, 145]), t(q, [2, 146]), t(q, [2, 147]), t(q, [2, 148]), t(q, [2, 149]), t(q, [2, 150]), t(q, [2, 151]), t(q, [2, 152]), t(q, [2, 153]), t(q, [2, 154]), t(q, [2, 155]), t(q, [2, 156]), t(q, [2, 157]), t(q, [2, 158]), t(q, [2, 159]), t(i, [2, 11]), t(i, [2, 17]), t(i, [2, 18]), {
                            9: [1, 84]
                        }, t(j, [2, 25], {
                            17: 85,
                            10: N
                        }), t(I, [2, 26]), {
                            32: 86,
                            33: 29,
                            34: l,
                            36: 30,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, t(I, [2, 35]), t(I, [2, 36]), t(I, [2, 37]), t(U, [2, 62], {
                            53: 87,
                            54: [1, 88],
                            57: [1, 89]
                        }), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 90,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t([34, 54, 57, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96], [2, 64]), t(I, [2, 27]), t(I, [2, 28]), t(I, [2, 29]), t(I, [2, 30]), t(I, [2, 31]), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 127,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(_t, a, {
                            5: 128
                        }), t(R, [2, 40], {
                            34: wt
                        }), {
                            13: xt,
                            34: $,
                            66: kt,
                            72: 130,
                            73: [1, 131],
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            70: [1, 137],
                            74: 138,
                            76: [1, 139]
                        }, {
                            13: xt,
                            34: $,
                            66: kt,
                            70: [1, 140],
                            72: 141,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            13: xt,
                            34: $,
                            66: kt,
                            72: 142,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            13: xt,
                            34: $,
                            66: kt,
                            72: 143,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            34: l,
                            36: 144,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 145,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 147,
                            30: G,
                            34: $,
                            37: [1, 146],
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 148,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 149,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 150,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 151,
                            30: G,
                            34: $,
                            45: [1, 152],
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 153,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 154,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 155,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(q, [2, 125]), t(i, [2, 19]), t(j, [2, 24]), t(R, [2, 38], {
                            17: 156,
                            10: N
                        }), t(U, [2, 59], {
                            10: [1, 157]
                        }), {
                            10: [1, 158]
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 159,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            56: [1, 160],
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(At, [2, 66]), t(At, [2, 68]), t(At, [2, 114]), t(At, [2, 115]), t(At, [2, 116]), t(At, [2, 117]), t(At, [2, 118]), t(At, [2, 119]), t(At, [2, 120]), t(At, [2, 121]), t(At, [2, 122]), t(At, [2, 123]), t(At, [2, 132]), t(At, [2, 133]), t(At, [2, 134]), t(At, [2, 135]), t(At, [2, 136]), t(At, [2, 137]), t(At, [2, 138]), t(At, [2, 139]), t(At, [2, 140]), t(At, [2, 141]), t(At, [2, 142]), t(At, [2, 143]), t(At, [2, 144]), t(At, [2, 69]), t(At, [2, 70]), t(At, [2, 71]), t(At, [2, 72]), t(At, [2, 73]), t(At, [2, 74]), t(At, [2, 75]), t(At, [2, 76]), t(At, [2, 77]), t(At, [2, 78]), t(At, [2, 79]), {
                            8: L,
                            9: B,
                            10: z,
                            11: O,
                            12: Y,
                            13: V,
                            20: 163,
                            26: H,
                            28: [1, 162],
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            6: 10,
                            7: 11,
                            8: o,
                            9: s,
                            10: u,
                            11: c,
                            19: 16,
                            21: 17,
                            22: 18,
                            23: 19,
                            24: 20,
                            25: 21,
                            26: f,
                            30: [1, 164],
                            32: 23,
                            33: 29,
                            34: l,
                            36: 30,
                            61: h,
                            62: d,
                            63: p,
                            64: g,
                            65: y,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, {
                            10: N,
                            17: 165
                        }, {
                            10: [1, 166],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 167,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: [1, 168]
                        }, t(St, [2, 126]), t(St, [2, 128]), t(St, [2, 129]), t(St, [2, 130]), t(St, [2, 131]), {
                            10: [1, 169]
                        }, {
                            10: [1, 170],
                            77: [1, 171]
                        }, t(Mt, [2, 97]), {
                            10: [1, 172]
                        }, {
                            10: [1, 173],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 167,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: [1, 174],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 167,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: [1, 175],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 167,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(P, [2, 44], {
                            89: 83,
                            34: l,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            29: [1, 176],
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 177,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            38: [1, 178],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            40: [1, 179],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            42: [1, 180],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            44: [1, 181],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            46: [1, 182],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 183,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            29: [1, 184],
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            47: W,
                            49: [1, 185],
                            51: [1, 186],
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            47: W,
                            49: [1, 188],
                            51: [1, 187],
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(R, [2, 39], {
                            34: wt
                        }), t(U, [2, 61]), t(U, [2, 60]), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            57: [1, 189],
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(U, [2, 63]), t(At, [2, 67]), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            27: 190,
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 91,
                            59: X,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(_t, a, {
                            5: 191
                        }), t(I, [2, 34]), {
                            33: 192,
                            34: l,
                            36: 30,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 193,
                            73: Ct,
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, t(St, [2, 127]), {
                            10: Tt,
                            61: Dt,
                            71: 207,
                            73: Ct,
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 208,
                            73: Ct,
                            75: [1, 209],
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 210,
                            73: Ct,
                            75: [1, 211],
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, {
                            76: [1, 212]
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 213,
                            73: Ct,
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 214,
                            73: Ct,
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, {
                            13: xt,
                            34: $,
                            66: kt,
                            72: 215,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            13: xt,
                            34: $,
                            59: [1, 217],
                            66: kt,
                            72: 216,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(F, [2, 45]), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            38: [1, 218],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(F, [2, 50]), t(F, [2, 47]), t(F, [2, 48]), t(F, [2, 49]), t(F, [2, 51]), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            30: G,
                            34: $,
                            46: [1, 219],
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, t(F, [2, 53]), t(F, [2, 54]), t(F, [2, 56]), t(F, [2, 55]), t(F, [2, 57]), t([10, 34, 66, 76, 77, 80, 81, 82, 84, 85, 91, 92, 93, 94, 95, 96], [2, 65]), {
                            10: z,
                            12: Y,
                            13: V,
                            26: H,
                            29: [1, 220],
                            30: G,
                            34: $,
                            47: W,
                            55: K,
                            58: 161,
                            60: 102,
                            61: Z,
                            62: J,
                            63: Q,
                            64: tt,
                            65: et,
                            66: nt,
                            67: rt,
                            69: 93,
                            70: it,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: ct,
                            84: ft,
                            85: lt,
                            86: ht,
                            87: dt,
                            88: 99,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            6: 10,
                            7: 11,
                            8: o,
                            9: s,
                            10: u,
                            11: c,
                            19: 16,
                            21: 17,
                            22: 18,
                            23: 19,
                            24: 20,
                            25: 21,
                            26: f,
                            30: [1, 221],
                            32: 23,
                            33: 29,
                            34: l,
                            36: 30,
                            61: h,
                            62: d,
                            63: p,
                            64: g,
                            65: y,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, t(P, [2, 43]), t(qt, [2, 89], {
                            77: jt
                        }), t(Ut, [2, 99], {
                            79: 223,
                            10: Tt,
                            61: Dt,
                            73: Ct,
                            76: Nt,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }), t(zt, [2, 101]), t(zt, [2, 103]), t(zt, [2, 104]), t(zt, [2, 105]), t(zt, [2, 106]), t(zt, [2, 107]), t(zt, [2, 108]), t(zt, [2, 109]), t(zt, [2, 110]), t(zt, [2, 111]), t(zt, [2, 112]), t(zt, [2, 113]), t(qt, [2, 90], {
                            77: jt
                        }), t(qt, [2, 91], {
                            77: jt
                        }), {
                            10: [1, 224]
                        }, t(qt, [2, 92], {
                            77: jt
                        }), {
                            10: [1, 225]
                        }, t(Mt, [2, 98]), t(qt, [2, 82], {
                            77: jt
                        }), t(qt, [2, 83], {
                            77: jt
                        }), t(qt, [2, 84], {
                            88: 134,
                            90: 167,
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }), t(qt, [2, 85], {
                            88: 134,
                            90: 167,
                            10: [1, 226],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }), t(qt, [2, 87], {
                            10: [1, 227]
                        }), {
                            38: [1, 228]
                        }, {
                            46: [1, 229]
                        }, {
                            8: L,
                            9: B,
                            11: O,
                            20: 230
                        }, t(I, [2, 33]), {
                            10: Tt,
                            61: Dt,
                            73: Ct,
                            76: Nt,
                            78: 231,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, t(zt, [2, 102]), {
                            13: xt,
                            34: $,
                            66: kt,
                            72: 232,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            13: xt,
                            34: $,
                            66: kt,
                            72: 233,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            88: 134,
                            90: 132,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }, {
                            59: [1, 234]
                        }, {
                            59: [1, 235]
                        }, t(F, [2, 46]), t(F, [2, 52]), t(_t, a, {
                            5: 236
                        }), t(Ut, [2, 100], {
                            79: 223,
                            10: Tt,
                            61: Dt,
                            73: Ct,
                            76: Nt,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }), t(qt, [2, 95], {
                            88: 134,
                            90: 167,
                            10: [1, 237],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }), t(qt, [2, 96], {
                            88: 134,
                            90: 167,
                            10: [1, 238],
                            13: xt,
                            34: $,
                            66: kt,
                            76: at,
                            77: ot,
                            80: st,
                            81: ut,
                            82: Et,
                            84: ft,
                            85: lt,
                            91: pt,
                            92: gt,
                            93: yt,
                            94: bt,
                            95: vt,
                            96: mt
                        }), t(qt, [2, 86]), t(qt, [2, 88]), {
                            6: 10,
                            7: 11,
                            8: o,
                            9: s,
                            10: u,
                            11: c,
                            19: 16,
                            21: 17,
                            22: 18,
                            23: 19,
                            24: 20,
                            25: 21,
                            26: f,
                            30: [1, 239],
                            32: 23,
                            33: 29,
                            34: l,
                            36: 30,
                            61: h,
                            62: d,
                            63: p,
                            64: g,
                            65: y,
                            66: b,
                            76: v,
                            77: m,
                            80: _,
                            81: w,
                            82: x,
                            84: k,
                            85: E,
                            89: 31,
                            91: A,
                            92: S,
                            93: M,
                            94: T,
                            95: D,
                            96: C
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 240,
                            73: Ct,
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, {
                            10: Tt,
                            61: Dt,
                            71: 241,
                            73: Ct,
                            76: Nt,
                            78: 194,
                            79: 195,
                            80: It,
                            81: Lt,
                            82: Bt,
                            83: Ot,
                            84: Rt,
                            85: Pt,
                            86: Ft
                        }, t(I, [2, 32]), t(qt, [2, 93], {
                            77: jt
                        }), t(qt, [2, 94], {
                            77: jt
                        })],
                        defaultActions: {},
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    Vt = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {},
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    break;
                                case 1:
                                    this.begin("string");
                                    break;
                                case 2:
                                    this.popState();
                                    break;
                                case 3:
                                    return "STR";
                                case 4:
                                    return 61;
                                case 5:
                                    return 70;
                                case 6:
                                    return 62;
                                case 7:
                                    return 75;
                                case 8:
                                    return 63;
                                case 9:
                                    return 64;
                                case 10:
                                    return 65;
                                case 11:
                                    return t.lex.firstGraph() && this.begin("dir"), 12;
                                case 12:
                                    return 26;
                                case 13:
                                    return 30;
                                case 14:
                                case 15:
                                case 16:
                                case 17:
                                case 18:
                                case 19:
                                case 20:
                                case 21:
                                case 22:
                                case 23:
                                    return this.popState(), 13;
                                case 24:
                                    return 76;
                                case 25:
                                    return 84;
                                case 26:
                                    return 35;
                                case 27:
                                    return 81;
                                case 28:
                                    return 34;
                                case 29:
                                    return 8;
                                case 30:
                                    return 77;
                                case 31:
                                    return 95;
                                case 32:
                                case 33:
                                case 34:
                                case 35:
                                case 36:
                                case 37:
                                case 38:
                                case 39:
                                case 40:
                                case 41:
                                case 42:
                                case 43:
                                case 44:
                                case 45:
                                case 46:
                                case 47:
                                case 48:
                                case 49:
                                case 50:
                                case 51:
                                case 52:
                                case 53:
                                case 54:
                                case 55:
                                case 56:
                                case 57:
                                case 58:
                                case 59:
                                    return 56;
                                case 60:
                                case 61:
                                case 62:
                                case 63:
                                case 64:
                                case 65:
                                case 66:
                                case 67:
                                case 68:
                                case 69:
                                case 70:
                                case 71:
                                    return 55;
                                case 72:
                                    return 39;
                                case 73:
                                    return 40;
                                case 74:
                                    return 41;
                                case 75:
                                    return 42;
                                case 76:
                                    return 43;
                                case 77:
                                    return 44;
                                case 78:
                                    return 82;
                                case 79:
                                    return 85;
                                case 80:
                                    return 96;
                                case 81:
                                    return 93;
                                case 82:
                                    return 86;
                                case 83:
                                case 84:
                                    return 94;
                                case 85:
                                    return 87;
                                case 86:
                                    return 47;
                                case 87:
                                    return 67;
                                case 88:
                                    return "SEP";
                                case 89:
                                    return 66;
                                case 90:
                                    return 80;
                                case 91:
                                    return 49;
                                case 92:
                                    return 48;
                                case 93:
                                    return 51;
                                case 94:
                                    return 50;
                                case 95:
                                    return 91;
                                case 96:
                                    return 92;
                                case 97:
                                    return 57;
                                case 98:
                                    return 37;
                                case 99:
                                    return 38;
                                case 100:
                                    return 28;
                                case 101:
                                    return 29;
                                case 102:
                                    return 45;
                                case 103:
                                    return 46;
                                case 104:
                                    return 102;
                                case 105:
                                    return 9;
                                case 106:
                                    return 10;
                                case 107:
                                    return 11
                            }
                        },
                        rules: [/^(?:%%[^\n]*\n*)/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:style\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:click\b)/, /^(?:graph\b)/, /^(?:subgraph\b)/, /^(?:end\b\s*)/, /^(?:\s*LR\b)/, /^(?:\s*RL\b)/, /^(?:\s*TB\b)/, /^(?:\s*BT\b)/, /^(?:\s*TD\b)/, /^(?:\s*BR\b)/, /^(?:\s*<)/, /^(?:\s*>)/, /^(?:\s*\^)/, /^(?:\s*v\b)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\*)/, /^(?:\s*--[x]\s*)/, /^(?:\s*-->\s*)/, /^(?:\s*<-->\s*)/, /^(?:\s*[x]--[x]\s*)/, /^(?:\s*[o]--[o]\s*)/, /^(?:\s*[o]\.-[o]\s*)/, /^(?:\s*<==>\s*)/, /^(?:\s*[o]==[o]\s*)/, /^(?:\s*[x]==[x]\s*)/, /^(?:\s*[x].-[x]\s*)/, /^(?:\s*[x]-\.-[x]\s*)/, /^(?:\s*<\.->\s*)/, /^(?:\s*<-\.->\s*)/, /^(?:\s*[o]-\.-[o]\s*)/, /^(?:\s*--[o]\s*)/, /^(?:\s*---\s*)/, /^(?:\s*-\.-[x]\s*)/, /^(?:\s*-\.->\s*)/, /^(?:\s*-\.-[o]\s*)/, /^(?:\s*-\.-\s*)/, /^(?:\s*.-[x]\s*)/, /^(?:\s*\.->\s*)/, /^(?:\s*\.-[o]\s*)/, /^(?:\s*\.-\s*)/, /^(?:\s*==[x]\s*)/, /^(?:\s*==>\s*)/, /^(?:\s*==[o]\s*)/, /^(?:\s*==[\=]\s*)/, /^(?:\s*<--\s*)/, /^(?:\s*[x]--\s*)/, /^(?:\s*[o]--\s*)/, /^(?:\s*<-\.\s*)/, /^(?:\s*[x]-\.\s*)/, /^(?:\s*[o]-\.\s*)/, /^(?:\s*<==\s*)/, /^(?:\s*[x]==\s*)/, /^(?:\s*[o]==\s*)/, /^(?:\s*--\s*)/, /^(?:\s*-\.\s*)/, /^(?:\s*==\s*)/, /^(?:\(-)/, /^(?:-\))/, /^(?:\(\[)/, /^(?:\]\))/, /^(?:\[\()/, /^(?:\)\])/, /^(?:-)/, /^(?:\.)/, /^(?:[\_])/, /^(?:\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:<)/, /^(?:>)/, /^(?:\^)/, /^(?:\\\|)/, /^(?:v\b)/, /^(?:[A-Za-z]+)/, /^(?:\\\])/, /^(?:\[\/)/, /^(?:\/\])/, /^(?:\[\\)/, /^(?:[!"#$%&'*+,-.`?\\_\/])/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\|)/, /^(?:\()/, /^(?:\))/, /^(?:\[)/, /^(?:\])/, /^(?:\{)/, /^(?:\})/, /^(?:")/, /^(?:(\r|\n|\r\n)+)/, /^(?:\s)/, /^(?:$)/],
                        conditions: {
                            vertex: {
                                rules: [],
                                inclusive: !1
                            },
                            dir: {
                                rules: [14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
                                inclusive: !1
                            },
                            string: {
                                rules: [2, 3],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107],
                                inclusive: !0
                            }
                        }
                    };

                function Ht() {
                    this.yy = {}
                }
                return Yt.lexer = Vt, Ht.prototype = Yt, Yt.Parser = Ht, new Ht
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e, n) {
        var r = n(62),
            i = n(243),
            a = n(244),
            o = n(245),
            s = n(246),
            u = n(247);

        function c(t) {
            var e = this.__data__ = new r(t);
            this.size = e.size
        }
        c.prototype.clear = i, c.prototype.delete = a, c.prototype.get = o, c.prototype.has = s, c.prototype.set = u, t.exports = c
    }, function(t, e, n) {
        var r = n(238),
            i = n(239),
            a = n(240),
            o = n(241),
            s = n(242);

        function u(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.clear(); ++e < n;) {
                var r = t[e];
                this.set(r[0], r[1])
            }
        }
        u.prototype.clear = r, u.prototype.delete = i, u.prototype.get = a, u.prototype.has = o, u.prototype.set = s, t.exports = u
    }, function(t, e, n) {
        var r = n(36);
        t.exports = function(t, e) {
            for (var n = t.length; n--;)
                if (r(t[n][0], e)) return n;
            return -1
        }
    }, function(t, e, n) {
        var r = n(32)(Object, "create");
        t.exports = r
    }, function(t, e, n) {
        var r = n(262);
        t.exports = function(t, e) {
            var n = t.__data__;
            return r(e) ? n["string" == typeof e ? "string" : "hash"] : n.map
        }
    }, function(t, e, n) {
        var r = n(67),
            i = n(36),
            a = Object.prototype.hasOwnProperty;
        t.exports = function(t, e, n) {
            var o = t[e];
            a.call(t, e) && i(o, n) && (void 0 !== n || e in t) || r(t, e, n)
        }
    }, function(t, e, n) {
        var r = n(133);
        t.exports = function(t, e, n) {
            "__proto__" == e && r ? r(t, e, {
                configurable: !0,
                enumerable: !0,
                value: n,
                writable: !0
            }) : t[e] = n
        }
    }, function(t, e) {
        var n = 9007199254740991,
            r = /^(?:0|[1-9]\d*)$/;
        t.exports = function(t, e) {
            var i = typeof t;
            return !!(e = null == e ? n : e) && ("number" == i || "symbol" != i && r.test(t)) && t > -1 && t % 1 == 0 && t < e
        }
    }, function(t, e) {
        t.exports = function(t) {
            return function(e) {
                return t(e)
            }
        }
    }, function(t, e) {
        var n = Object.prototype;
        t.exports = function(t) {
            var e = t && t.constructor;
            return t === ("function" == typeof e && e.prototype || n)
        }
    }, function(t, e, n) {
        var r = n(135)(Object.getPrototypeOf, Object);
        t.exports = r
    }, function(t, e, n) {
        var r = n(101),
            i = n(291)(r);
        t.exports = i
    }, function(t, e, n) {
        var r = n(6),
            i = n(105),
            a = n(305),
            o = n(157);
        t.exports = function(t, e) {
            return r(t) ? t : i(t, e) ? [t] : a(o(t))
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = -1, r = null == t ? 0 : t.length, i = Array(r); ++n < r;) i[n] = e(t[n], n, t);
            return i
        }
    }, function(t, e, n) {
        var r = n(34),
            i = n(165),
            a = n(166);
        t.exports = function(t, e) {
            return a(i(t, e, r), t + "")
        }
    }, function(t, e, n) {
        var r = n(36),
            i = n(23),
            a = n(68),
            o = n(14);
        t.exports = function(t, e, n) {
            if (!o(n)) return !1;
            var s = typeof e;
            return !!("number" == s ? i(n) && a(e, n.length) : "string" == s && e in n) && r(n[e], t)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4);
        t.exports = {
            longestPath: function(t) {
                var e = {};
                r.forEach(t.sources(), (function n(i) {
                    var a = t.node(i);
                    if (r.has(e, i)) return a.rank;
                    e[i] = !0;
                    var o = r.min(r.map(t.outEdges(i), (function(e) {
                        return n(e.w) - t.edge(e).minlen
                    })));
                    return o !== Number.POSITIVE_INFINITY && null != o || (o = 0), a.rank = o
                }))
            },
            slack: function(t, e) {
                return t.node(e.w).rank - t.node(e.v).rank - t.edge(e).minlen
            }
        }
    }, function(t, e, n) {
        "use strict";
        (function(e) {
            void 0 === e || !e.version || 0 === e.version.indexOf("v0.") || 0 === e.version.indexOf("v1.") && 0 !== e.version.indexOf("v1.8.") ? t.exports = {
                nextTick: function(t, n, r, i) {
                    if ("function" != typeof t) throw new TypeError('"callback" argument must be a function');
                    var a, o, s = arguments.length;
                    switch (s) {
                        case 0:
                        case 1:
                            return e.nextTick(t);
                        case 2:
                            return e.nextTick((function() {
                                t.call(null, n)
                            }));
                        case 3:
                            return e.nextTick((function() {
                                t.call(null, n, r)
                            }));
                        case 4:
                            return e.nextTick((function() {
                                t.call(null, n, r, i)
                            }));
                        default:
                            for (a = new Array(s - 1), o = 0; o < a.length;) a[o++] = arguments[o];
                            return e.nextTick((function() {
                                t.apply(null, a)
                            }))
                    }
                }
            } : t.exports = e
        }).call(this, n(7))
    }, function(t, e, n) {
        var r = n(3).Buffer;

        function i(t) {
            r.isBuffer(t) || (t = r.from(t));
            for (var e = t.length / 4 | 0, n = new Array(e), i = 0; i < e; i++) n[i] = t.readUInt32BE(4 * i);
            return n
        }

        function a(t) {
            for (; 0 < t.length; t++) t[0] = 0
        }

        function o(t, e, n, r, i) {
            for (var a, o, s, u, c = n[0], f = n[1], l = n[2], h = n[3], d = t[0] ^ e[0], p = t[1] ^ e[1], g = t[2] ^ e[2], y = t[3] ^ e[3], b = 4, v = 1; v < i; v++) a = c[d >>> 24] ^ f[p >>> 16 & 255] ^ l[g >>> 8 & 255] ^ h[255 & y] ^ e[b++], o = c[p >>> 24] ^ f[g >>> 16 & 255] ^ l[y >>> 8 & 255] ^ h[255 & d] ^ e[b++], s = c[g >>> 24] ^ f[y >>> 16 & 255] ^ l[d >>> 8 & 255] ^ h[255 & p] ^ e[b++], u = c[y >>> 24] ^ f[d >>> 16 & 255] ^ l[p >>> 8 & 255] ^ h[255 & g] ^ e[b++], d = a, p = o, g = s, y = u;
            return a = (r[d >>> 24] << 24 | r[p >>> 16 & 255] << 16 | r[g >>> 8 & 255] << 8 | r[255 & y]) ^ e[b++], o = (r[p >>> 24] << 24 | r[g >>> 16 & 255] << 16 | r[y >>> 8 & 255] << 8 | r[255 & d]) ^ e[b++], s = (r[g >>> 24] << 24 | r[y >>> 16 & 255] << 16 | r[d >>> 8 & 255] << 8 | r[255 & p]) ^ e[b++], u = (r[y >>> 24] << 24 | r[d >>> 16 & 255] << 16 | r[p >>> 8 & 255] << 8 | r[255 & g]) ^ e[b++], [a >>>= 0, o >>>= 0, s >>>= 0, u >>>= 0]
        }
        var s = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
            u = function() {
                for (var t = new Array(256), e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : e << 1 ^ 283;
                for (var n = [], r = [], i = [
                        [],
                        [],
                        [],
                        []
                    ], a = [
                        [],
                        [],
                        [],
                        []
                    ], o = 0, s = 0, u = 0; u < 256; ++u) {
                    var c = s ^ s << 1 ^ s << 2 ^ s << 3 ^ s << 4;
                    c = c >>> 8 ^ 255 & c ^ 99, n[o] = c, r[c] = o;
                    var f = t[o],
                        l = t[f],
                        h = t[l],
                        d = 257 * t[c] ^ 16843008 * c;
                    i[0][o] = d << 24 | d >>> 8, i[1][o] = d << 16 | d >>> 16, i[2][o] = d << 8 | d >>> 24, i[3][o] = d, d = 16843009 * h ^ 65537 * l ^ 257 * f ^ 16843008 * o, a[0][c] = d << 24 | d >>> 8, a[1][c] = d << 16 | d >>> 16, a[2][c] = d << 8 | d >>> 24, a[3][c] = d, 0 === o ? o = s = 1 : (o = f ^ t[t[t[h ^ f]]], s ^= t[t[s]])
                }
                return {
                    SBOX: n,
                    INV_SBOX: r,
                    SUB_MIX: i,
                    INV_SUB_MIX: a
                }
            }();

        function c(t) {
            this._key = i(t), this._reset()
        }
        c.blockSize = 16, c.keySize = 32, c.prototype.blockSize = c.blockSize, c.prototype.keySize = c.keySize, c.prototype._reset = function() {
            for (var t = this._key, e = t.length, n = e + 6, r = 4 * (n + 1), i = [], a = 0; a < e; a++) i[a] = t[a];
            for (a = e; a < r; a++) {
                var o = i[a - 1];
                a % e == 0 ? (o = o << 8 | o >>> 24, o = u.SBOX[o >>> 24] << 24 | u.SBOX[o >>> 16 & 255] << 16 | u.SBOX[o >>> 8 & 255] << 8 | u.SBOX[255 & o], o ^= s[a / e | 0] << 24) : e > 6 && a % e == 4 && (o = u.SBOX[o >>> 24] << 24 | u.SBOX[o >>> 16 & 255] << 16 | u.SBOX[o >>> 8 & 255] << 8 | u.SBOX[255 & o]), i[a] = i[a - e] ^ o
            }
            for (var c = [], f = 0; f < r; f++) {
                var l = r - f,
                    h = i[l - (f % 4 ? 0 : 4)];
                c[f] = f < 4 || l <= 4 ? h : u.INV_SUB_MIX[0][u.SBOX[h >>> 24]] ^ u.INV_SUB_MIX[1][u.SBOX[h >>> 16 & 255]] ^ u.INV_SUB_MIX[2][u.SBOX[h >>> 8 & 255]] ^ u.INV_SUB_MIX[3][u.SBOX[255 & h]]
            }
            this._nRounds = n, this._keySchedule = i, this._invKeySchedule = c
        }, c.prototype.encryptBlockRaw = function(t) {
            return o(t = i(t), this._keySchedule, u.SUB_MIX, u.SBOX, this._nRounds)
        }, c.prototype.encryptBlock = function(t) {
            var e = this.encryptBlockRaw(t),
                n = r.allocUnsafe(16);
            return n.writeUInt32BE(e[0], 0), n.writeUInt32BE(e[1], 4), n.writeUInt32BE(e[2], 8), n.writeUInt32BE(e[3], 12), n
        }, c.prototype.decryptBlock = function(t) {
            var e = (t = i(t))[1];
            t[1] = t[3], t[3] = e;
            var n = o(t, this._invKeySchedule, u.INV_SUB_MIX, u.INV_SBOX, this._nRounds),
                a = r.allocUnsafe(16);
            return a.writeUInt32BE(n[0], 0), a.writeUInt32BE(n[3], 4), a.writeUInt32BE(n[2], 8), a.writeUInt32BE(n[1], 12), a
        }, c.prototype.scrub = function() {
            a(this._keySchedule), a(this._invKeySchedule), a(this._key)
        }, t.exports.AES = c
    }, function(t, e, n) {
        var r = n(3).Buffer,
            i = n(111);
        t.exports = function(t, e, n, a) {
            if (r.isBuffer(t) || (t = r.from(t, "binary")), e && (r.isBuffer(e) || (e = r.from(e, "binary")), 8 !== e.length)) throw new RangeError("salt should be Buffer with 8 byte length");
            for (var o = n / 8, s = r.alloc(o), u = r.alloc(a || 0), c = r.alloc(0); o > 0 || a > 0;) {
                var f = new i;
                f.update(c), f.update(t), e && f.update(e), c = f.digest();
                var l = 0;
                if (o > 0) {
                    var h = s.length - o;
                    l = Math.min(o, c.length), c.copy(s, h, 0, l), o -= l
                }
                if (l < c.length && a > 0) {
                    var d = u.length - a,
                        p = Math.min(a, c.length - l);
                    c.copy(u, d, l, l + p), a -= p
                }
            }
            return c.fill(0), {
                key: s,
                iv: u
            }
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(5),
            i = n(17),
            a = i.getNAF,
            o = i.getJSF,
            s = i.assert;

        function u(t, e) {
            this.type = t, this.p = new r(e.p, 16), this.red = e.prime ? r.red(e.prime) : r.mont(this.p), this.zero = new r(0).toRed(this.red), this.one = new r(1).toRed(this.red), this.two = new r(2).toRed(this.red), this.n = e.n && new r(e.n, 16), this.g = e.g && this.pointFromJSON(e.g, e.gRed), this._wnafT1 = new Array(4), this._wnafT2 = new Array(4), this._wnafT3 = new Array(4), this._wnafT4 = new Array(4), this._bitLength = this.n ? this.n.bitLength() : 0;
            var n = this.n && this.p.div(this.n);
            !n || n.cmpn(100) > 0 ? this.redN = null : (this._maxwellTrick = !0, this.redN = this.n.toRed(this.red))
        }

        function c(t, e) {
            this.curve = t, this.type = e, this.precomputed = null
        }
        t.exports = u, u.prototype.point = function() {
            throw new Error("Not implemented")
        }, u.prototype.validate = function() {
            throw new Error("Not implemented")
        }, u.prototype._fixedNafMul = function(t, e) {
            s(t.precomputed);
            var n = t._getDoubles(),
                r = a(e, 1, this._bitLength),
                i = (1 << n.step + 1) - (n.step % 2 == 0 ? 2 : 1);
            i /= 3;
            for (var o = [], u = 0; u < r.length; u += n.step) {
                var c = 0;
                for (e = u + n.step - 1; e >= u; e--) c = (c << 1) + r[e];
                o.push(c)
            }
            for (var f = this.jpoint(null, null, null), l = this.jpoint(null, null, null), h = i; h > 0; h--) {
                for (u = 0; u < o.length; u++) {
                    (c = o[u]) === h ? l = l.mixedAdd(n.points[u]) : c === -h && (l = l.mixedAdd(n.points[u].neg()))
                }
                f = f.add(l)
            }
            return f.toP()
        }, u.prototype._wnafMul = function(t, e) {
            var n = 4,
                r = t._getNAFPoints(n);
            n = r.wnd;
            for (var i = r.points, o = a(e, n, this._bitLength), u = this.jpoint(null, null, null), c = o.length - 1; c >= 0; c--) {
                for (e = 0; c >= 0 && 0 === o[c]; c--) e++;
                if (c >= 0 && e++, u = u.dblp(e), c < 0) break;
                var f = o[c];
                s(0 !== f), u = "affine" === t.type ? f > 0 ? u.mixedAdd(i[f - 1 >> 1]) : u.mixedAdd(i[-f - 1 >> 1].neg()) : f > 0 ? u.add(i[f - 1 >> 1]) : u.add(i[-f - 1 >> 1].neg())
            }
            return "affine" === t.type ? u.toP() : u
        }, u.prototype._wnafMulAdd = function(t, e, n, r, i) {
            for (var s = this._wnafT1, u = this._wnafT2, c = this._wnafT3, f = 0, l = 0; l < r; l++) {
                var h = (A = e[l])._getNAFPoints(t);
                s[l] = h.wnd, u[l] = h.points
            }
            for (l = r - 1; l >= 1; l -= 2) {
                var d = l - 1,
                    p = l;
                if (1 === s[d] && 1 === s[p]) {
                    var g = [e[d], null, null, e[p]];
                    0 === e[d].y.cmp(e[p].y) ? (g[1] = e[d].add(e[p]), g[2] = e[d].toJ().mixedAdd(e[p].neg())) : 0 === e[d].y.cmp(e[p].y.redNeg()) ? (g[1] = e[d].toJ().mixedAdd(e[p]), g[2] = e[d].add(e[p].neg())) : (g[1] = e[d].toJ().mixedAdd(e[p]), g[2] = e[d].toJ().mixedAdd(e[p].neg()));
                    var y = [-3, -1, -5, -7, 0, 7, 5, 1, 3],
                        b = o(n[d], n[p]);
                    f = Math.max(b[0].length, f), c[d] = new Array(f), c[p] = new Array(f);
                    for (var v = 0; v < f; v++) {
                        var m = 0 | b[0][v],
                            _ = 0 | b[1][v];
                        c[d][v] = y[3 * (m + 1) + (_ + 1)], c[p][v] = 0, u[d] = g
                    }
                } else c[d] = a(n[d], s[d], this._bitLength), c[p] = a(n[p], s[p], this._bitLength), f = Math.max(c[d].length, f), f = Math.max(c[p].length, f)
            }
            var w = this.jpoint(null, null, null),
                x = this._wnafT4;
            for (l = f; l >= 0; l--) {
                for (var k = 0; l >= 0;) {
                    var E = !0;
                    for (v = 0; v < r; v++) x[v] = 0 | c[v][l], 0 !== x[v] && (E = !1);
                    if (!E) break;
                    k++, l--
                }
                if (l >= 0 && k++, w = w.dblp(k), l < 0) break;
                for (v = 0; v < r; v++) {
                    var A, S = x[v];
                    0 !== S && (S > 0 ? A = u[v][S - 1 >> 1] : S < 0 && (A = u[v][-S - 1 >> 1].neg()), w = "affine" === A.type ? w.mixedAdd(A) : w.add(A))
                }
            }
            for (l = 0; l < r; l++) u[l] = null;
            return i ? w : w.toP()
        }, u.BasePoint = c, c.prototype.eq = function() {
            throw new Error("Not implemented")
        }, c.prototype.validate = function() {
            return this.curve.validate(this)
        }, u.prototype.decodePoint = function(t, e) {
            t = i.toArray(t, e);
            var n = this.p.byteLength();
            if ((4 === t[0] || 6 === t[0] || 7 === t[0]) && t.length - 1 == 2 * n) return 6 === t[0] ? s(t[t.length - 1] % 2 == 0) : 7 === t[0] && s(t[t.length - 1] % 2 == 1), this.point(t.slice(1, 1 + n), t.slice(1 + n, 1 + 2 * n));
            if ((2 === t[0] || 3 === t[0]) && t.length - 1 === n) return this.pointFromX(t.slice(1, 1 + n), 3 === t[0]);
            throw new Error("Unknown point format")
        }, c.prototype.encodeCompressed = function(t) {
            return this.encode(t, !0)
        }, c.prototype._encode = function(t) {
            var e = this.curve.p.byteLength(),
                n = this.getX().toArray("be", e);
            return t ? [this.getY().isEven() ? 2 : 3].concat(n) : [4].concat(n, this.getY().toArray("be", e))
        }, c.prototype.encode = function(t, e) {
            return i.encode(this._encode(e), t)
        }, c.prototype.precompute = function(t) {
            if (this.precomputed) return this;
            var e = {
                doubles: null,
                naf: null,
                beta: null
            };
            return e.naf = this._getNAFPoints(8), e.doubles = this._getDoubles(4, t), e.beta = this._getBeta(), this.precomputed = e, this
        }, c.prototype._hasDoubles = function(t) {
            if (!this.precomputed) return !1;
            var e = this.precomputed.doubles;
            return !!e && e.points.length >= Math.ceil((t.bitLength() + 1) / e.step)
        }, c.prototype._getDoubles = function(t, e) {
            if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;
            for (var n = [this], r = this, i = 0; i < e; i += t) {
                for (var a = 0; a < t; a++) r = r.dbl();
                n.push(r)
            }
            return {
                step: t,
                points: n
            }
        }, c.prototype._getNAFPoints = function(t) {
            if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;
            for (var e = [this], n = (1 << t) - 1, r = 1 === n ? null : this.dbl(), i = 1; i < n; i++) e[i] = e[i - 1].add(r);
            return {
                wnd: t,
                points: e
            }
        }, c.prototype._getBeta = function() {
            return null
        }, c.prototype.dblp = function(t) {
            for (var e = this, n = 0; n < t; n++) e = e.dbl();
            return e
        }
    }, function(t, e, n) {
        var r = n(481),
            i = n(492),
            a = n(493),
            o = n(121),
            s = n(202),
            u = n(3).Buffer;

        function c(t) {
            var e;
            "object" != typeof t || u.isBuffer(t) || (e = t.passphrase, t = t.key), "string" == typeof t && (t = u.from(t));
            var n, c, f = a(t, e),
                l = f.tag,
                h = f.data;
            switch (l) {
                case "CERTIFICATE":
                    c = r.certificate.decode(h, "der").tbsCertificate.subjectPublicKeyInfo;
                case "PUBLIC KEY":
                    switch (c || (c = r.PublicKey.decode(h, "der")), n = c.algorithm.algorithm.join(".")) {
                        case "1.2.840.113549.1.1.1":
                            return r.RSAPublicKey.decode(c.subjectPublicKey.data, "der");
                        case "1.2.840.10045.2.1":
                            return c.subjectPrivateKey = c.subjectPublicKey, {
                                type: "ec",
                                data: c
                            };
                        case "1.2.840.10040.4.1":
                            return c.algorithm.params.pub_key = r.DSAparam.decode(c.subjectPublicKey.data, "der"), {
                                type: "dsa",
                                data: c.algorithm.params
                            };
                        default:
                            throw new Error("unknown key id " + n)
                    }
                    throw new Error("unknown key type " + l);
                case "ENCRYPTED PRIVATE KEY":
                    h = function(t, e) {
                        var n = t.algorithm.decrypt.kde.kdeparams.salt,
                            r = parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(), 10),
                            a = i[t.algorithm.decrypt.cipher.algo.join(".")],
                            c = t.algorithm.decrypt.cipher.iv,
                            f = t.subjectPrivateKey,
                            l = parseInt(a.split("-")[1], 10) / 8,
                            h = s.pbkdf2Sync(e, n, r, l, "sha1"),
                            d = o.createDecipheriv(a, h, c),
                            p = [];
                        return p.push(d.update(f)), p.push(d.final()), u.concat(p)
                    }(h = r.EncryptedPrivateKey.decode(h, "der"), e);
                case "PRIVATE KEY":
                    switch (n = (c = r.PrivateKey.decode(h, "der")).algorithm.algorithm.join(".")) {
                        case "1.2.840.113549.1.1.1":
                            return r.RSAPrivateKey.decode(c.subjectPrivateKey, "der");
                        case "1.2.840.10045.2.1":
                            return {
                                curve: c.algorithm.curve, privateKey: r.ECPrivateKey.decode(c.subjectPrivateKey, "der").privateKey
                            };
                        case "1.2.840.10040.4.1":
                            return c.algorithm.params.priv_key = r.DSAparam.decode(c.subjectPrivateKey, "der"), {
                                type: "dsa",
                                params: c.algorithm.params
                            };
                        default:
                            throw new Error("unknown key id " + n)
                    }
                    throw new Error("unknown key type " + l);
                case "RSA PUBLIC KEY":
                    return r.RSAPublicKey.decode(h, "der");
                case "RSA PRIVATE KEY":
                    return r.RSAPrivateKey.decode(h, "der");
                case "DSA PRIVATE KEY":
                    return {
                        type: "dsa", params: r.DSAPrivateKey.decode(h, "der")
                    };
                case "EC PRIVATE KEY":
                    return {
                        curve: (h = r.ECPrivateKey.decode(h, "der")).parameters.value, privateKey: h.privateKey
                    };
                default:
                    throw new Error("unknown key type " + l)
            }
        }
        t.exports = c, c.signature = r.signature
    }, function(t, e, n) {
        "use strict";
        t.exports = function(t) {
            var e = [];
            return e.toString = function() {
                return this.map((function(e) {
                    var n = function(t, e) {
                        var n = t[1] || "",
                            r = t[3];
                        if (!r) return n;
                        if (e && "function" == typeof btoa) {
                            var i = (o = r, "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(o)))) + " */"),
                                a = r.sources.map((function(t) {
                                    return "/*# sourceURL=" + r.sourceRoot + t + " */"
                                }));
                            return [n].concat(a).concat([i]).join("\n")
                        }
                        var o;
                        return [n].join("\n")
                    }(e, t);
                    return e[2] ? "@media " + e[2] + "{" + n + "}" : n
                })).join("")
            }, e.i = function(t, n) {
                "string" == typeof t && (t = [
                    [null, t, ""]
                ]);
                for (var r = {}, i = 0; i < this.length; i++) {
                    var a = this[i][0];
                    null != a && (r[a] = !0)
                }
                for (i = 0; i < t.length; i++) {
                    var o = t[i];
                    null != o[0] && r[o[0]] || (n && !o[2] ? o[2] = n : n && (o[2] = "(" + o[2] + ") and (" + n + ")"), e.push(o))
                }
            }, e
        }
    }, function(t, e, n) {
        "use strict";
        var r = /^(%20|\s)*(javascript|data)/im,
            i = /[^\x20-\x7E]/gim,
            a = /^([^:]+):/gm,
            o = [".", "/"];
        t.exports = {
            sanitizeUrl: function(t) {
                if (!t) return "about:blank";
                var e, n, s = t.replace(i, "").trim();
                return function(t) {
                    return o.indexOf(t[0]) > -1
                }(s) ? s : (n = s.match(a)) ? (e = n[0], r.test(e) ? "about:blank" : s) : "about:blank"
            }
        }
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [2, 3],
                    n = [1, 7],
                    r = [7, 12, 15, 17, 19, 20, 21],
                    i = [7, 11, 12, 15, 17, 19, 20, 21],
                    a = [2, 20],
                    o = [1, 32],
                    s = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            start: 3,
                            GG: 4,
                            ":": 5,
                            document: 6,
                            EOF: 7,
                            DIR: 8,
                            options: 9,
                            body: 10,
                            OPT: 11,
                            NL: 12,
                            line: 13,
                            statement: 14,
                            COMMIT: 15,
                            commit_arg: 16,
                            BRANCH: 17,
                            ID: 18,
                            CHECKOUT: 19,
                            MERGE: 20,
                            RESET: 21,
                            reset_arg: 22,
                            STR: 23,
                            HEAD: 24,
                            reset_parents: 25,
                            CARET: 26,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            4: "GG",
                            5: ":",
                            7: "EOF",
                            8: "DIR",
                            11: "OPT",
                            12: "NL",
                            15: "COMMIT",
                            17: "BRANCH",
                            18: "ID",
                            19: "CHECKOUT",
                            20: "MERGE",
                            21: "RESET",
                            23: "STR",
                            24: "HEAD",
                            26: "CARET"
                        },
                        productions_: [0, [3, 4],
                            [3, 5],
                            [6, 0],
                            [6, 2],
                            [9, 2],
                            [9, 1],
                            [10, 0],
                            [10, 2],
                            [13, 2],
                            [13, 1],
                            [14, 2],
                            [14, 2],
                            [14, 2],
                            [14, 2],
                            [14, 2],
                            [16, 0],
                            [16, 1],
                            [22, 2],
                            [22, 2],
                            [25, 0],
                            [25, 2]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 1:
                                    return a[s - 1];
                                case 2:
                                    return r.setDirection(a[s - 3]), a[s - 1];
                                case 4:
                                    r.setOptions(a[s - 1]), this.$ = a[s];
                                    break;
                                case 5:
                                    a[s - 1] += a[s], this.$ = a[s - 1];
                                    break;
                                case 7:
                                    this.$ = [];
                                    break;
                                case 8:
                                    a[s - 1].push(a[s]), this.$ = a[s - 1];
                                    break;
                                case 9:
                                    this.$ = a[s - 1];
                                    break;
                                case 11:
                                    r.commit(a[s]);
                                    break;
                                case 12:
                                    r.branch(a[s]);
                                    break;
                                case 13:
                                    r.checkout(a[s]);
                                    break;
                                case 14:
                                    r.merge(a[s]);
                                    break;
                                case 15:
                                    r.reset(a[s]);
                                    break;
                                case 16:
                                    this.$ = "";
                                    break;
                                case 17:
                                    this.$ = a[s];
                                    break;
                                case 18:
                                    this.$ = a[s - 1] + ":" + a[s];
                                    break;
                                case 19:
                                    this.$ = a[s - 1] + ":" + r.count, r.count = 0;
                                    break;
                                case 20:
                                    r.count = 0;
                                    break;
                                case 21:
                                    r.count += 1
                            }
                        },
                        table: [{
                            3: 1,
                            4: [1, 2]
                        }, {
                            1: [3]
                        }, {
                            5: [1, 3],
                            8: [1, 4]
                        }, {
                            6: 5,
                            7: e,
                            9: 6,
                            12: n
                        }, {
                            5: [1, 8]
                        }, {
                            7: [1, 9]
                        }, t(r, [2, 7], {
                            10: 10,
                            11: [1, 11]
                        }), t(i, [2, 6]), {
                            6: 12,
                            7: e,
                            9: 6,
                            12: n
                        }, {
                            1: [2, 1]
                        }, {
                            7: [2, 4],
                            12: [1, 15],
                            13: 13,
                            14: 14,
                            15: [1, 16],
                            17: [1, 17],
                            19: [1, 18],
                            20: [1, 19],
                            21: [1, 20]
                        }, t(i, [2, 5]), {
                            7: [1, 21]
                        }, t(r, [2, 8]), {
                            12: [1, 22]
                        }, t(r, [2, 10]), {
                            12: [2, 16],
                            16: 23,
                            23: [1, 24]
                        }, {
                            18: [1, 25]
                        }, {
                            18: [1, 26]
                        }, {
                            18: [1, 27]
                        }, {
                            18: [1, 30],
                            22: 28,
                            24: [1, 29]
                        }, {
                            1: [2, 2]
                        }, t(r, [2, 9]), {
                            12: [2, 11]
                        }, {
                            12: [2, 17]
                        }, {
                            12: [2, 12]
                        }, {
                            12: [2, 13]
                        }, {
                            12: [2, 14]
                        }, {
                            12: [2, 15]
                        }, {
                            12: a,
                            25: 31,
                            26: o
                        }, {
                            12: a,
                            25: 33,
                            26: o
                        }, {
                            12: [2, 18]
                        }, {
                            12: a,
                            25: 34,
                            26: o
                        }, {
                            12: [2, 19]
                        }, {
                            12: [2, 21]
                        }],
                        defaultActions: {
                            9: [2, 1],
                            21: [2, 2],
                            23: [2, 11],
                            24: [2, 17],
                            25: [2, 12],
                            26: [2, 13],
                            27: [2, 14],
                            28: [2, 15],
                            31: [2, 18],
                            33: [2, 19],
                            34: [2, 21]
                        },
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    u = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {
                            "case-insensitive": !0
                        },
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    return 12;
                                case 1:
                                case 2:
                                case 3:
                                    break;
                                case 4:
                                    return 4;
                                case 5:
                                    return 15;
                                case 6:
                                    return 17;
                                case 7:
                                    return 20;
                                case 8:
                                    return 21;
                                case 9:
                                    return 19;
                                case 10:
                                case 11:
                                    return 8;
                                case 12:
                                    return 5;
                                case 13:
                                    return 26;
                                case 14:
                                    this.begin("options");
                                    break;
                                case 15:
                                    this.popState();
                                    break;
                                case 16:
                                    return 11;
                                case 17:
                                    this.begin("string");
                                    break;
                                case 18:
                                    this.popState();
                                    break;
                                case 19:
                                    return 23;
                                case 20:
                                    return 18;
                                case 21:
                                    return 7
                            }
                        },
                        rules: [/^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gitGraph\b)/i, /^(?:commit\b)/i, /^(?:branch\b)/i, /^(?:merge\b)/i, /^(?:reset\b)/i, /^(?:checkout\b)/i, /^(?:LR\b)/i, /^(?:BT\b)/i, /^(?::)/i, /^(?:\^)/i, /^(?:options\r?\n)/i, /^(?:end\r?\n)/i, /^(?:[^\n]+\r?\n)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[a-zA-Z][a-zA-Z0-9_]+)/i, /^(?:$)/i],
                        conditions: {
                            options: {
                                rules: [15, 16],
                                inclusive: !1
                            },
                            string: {
                                rules: [18, 19],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21],
                                inclusive: !0
                            }
                        }
                    };

                function c() {
                    this.yy = {}
                }
                return s.lexer = u, c.prototype = s, s.Parser = c, new c
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [6, 9, 10],
                    n = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            start: 3,
                            info: 4,
                            document: 5,
                            EOF: 6,
                            line: 7,
                            statement: 8,
                            NL: 9,
                            showInfo: 10,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            4: "info",
                            6: "EOF",
                            9: "NL",
                            10: "showInfo"
                        },
                        productions_: [0, [3, 3],
                            [5, 0],
                            [5, 2],
                            [7, 1],
                            [7, 1],
                            [8, 1]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            a.length;
                            switch (i) {
                                case 1:
                                    return r;
                                case 4:
                                    break;
                                case 6:
                                    r.setInfo(!0)
                            }
                        },
                        table: [{
                            3: 1,
                            4: [1, 2]
                        }, {
                            1: [3]
                        }, t(e, [2, 2], {
                            5: 3
                        }), {
                            6: [1, 4],
                            7: 5,
                            8: 6,
                            9: [1, 7],
                            10: [1, 8]
                        }, {
                            1: [2, 1]
                        }, t(e, [2, 3]), t(e, [2, 4]), t(e, [2, 5]), t(e, [2, 6])],
                        defaultActions: {
                            4: [2, 1]
                        },
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    r = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {
                            "case-insensitive": !0
                        },
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                    return 4;
                                case 1:
                                    return 9;
                                case 2:
                                    return "space";
                                case 3:
                                    return 10;
                                case 4:
                                    return 6;
                                case 5:
                                    return "TXT"
                            }
                        },
                        rules: [/^(?:info\b)/i, /^(?:[\s\n\r]+)/i, /^(?:[\s]+)/i, /^(?:showInfo\b)/i, /^(?:$)/i, /^(?:.)/i],
                        conditions: {
                            INITIAL: {
                                rules: [0, 1, 2, 3, 4, 5],
                                inclusive: !0
                            }
                        }
                    };

                function i() {
                    this.yy = {}
                }
                return n.lexer = r, i.prototype = n, n.Parser = i, new i
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t, e, n) {
        (function(t, r) {
            var i = function() {
                var t = function(t, e, n, r) {
                        for (n = n || {}, r = t.length; r--; n[t[r]] = e);
                        return n
                    },
                    e = [6, 9, 10, 12],
                    n = {
                        trace: function() {},
                        yy: {},
                        symbols_: {
                            error: 2,
                            start: 3,
                            pie: 4,
                            document: 5,
                            EOF: 6,
                            line: 7,
                            statement: 8,
                            NL: 9,
                            STR: 10,
                            VALUE: 11,
                            title: 12,
                            $accept: 0,
                            $end: 1
                        },
                        terminals_: {
                            2: "error",
                            4: "pie",
                            6: "EOF",
                            9: "NL",
                            10: "STR",
                            11: "VALUE",
                            12: "title"
                        },
                        productions_: [0, [3, 3],
                            [5, 0],
                            [5, 2],
                            [7, 1],
                            [7, 1],
                            [8, 2],
                            [8, 1]
                        ],
                        performAction: function(t, e, n, r, i, a, o) {
                            var s = a.length - 1;
                            switch (i) {
                                case 4:
                                    break;
                                case 6:
                                    r.addSection(a[s - 1], r.cleanupValue(a[s]));
                                    break;
                                case 7:
                                    r.setTitle(a[s].substr(6)), this.$ = a[s].substr(6)
                            }
                        },
                        table: [{
                            3: 1,
                            4: [1, 2]
                        }, {
                            1: [3]
                        }, t(e, [2, 2], {
                            5: 3
                        }), {
                            6: [1, 4],
                            7: 5,
                            8: 6,
                            9: [1, 7],
                            10: [1, 8],
                            12: [1, 9]
                        }, {
                            1: [2, 1]
                        }, t(e, [2, 3]), t(e, [2, 4]), t(e, [2, 5]), {
                            11: [1, 10]
                        }, t(e, [2, 7]), t(e, [2, 6])],
                        defaultActions: {
                            4: [2, 1]
                        },
                        parseError: function(t, e) {
                            if (!e.recoverable) {
                                var n = new Error(t);
                                throw n.hash = e, n
                            }
                            this.trace(t)
                        },
                        parse: function(t) {
                            var e = this,
                                n = [0],
                                r = [],
                                i = [null],
                                a = [],
                                o = this.table,
                                s = "",
                                u = 0,
                                c = 0,
                                f = 0,
                                l = 2,
                                h = 1,
                                d = a.slice.call(arguments, 1),
                                p = Object.create(this.lexer),
                                g = {
                                    yy: {}
                                };
                            for (var y in this.yy) Object.prototype.hasOwnProperty.call(this.yy, y) && (g.yy[y] = this.yy[y]);
                            p.setInput(t, g.yy), g.yy.lexer = p, g.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {});
                            var b = p.yylloc;
                            a.push(b);
                            var v = p.options && p.options.ranges;

                            function m() {
                                var t;
                                return "number" != typeof(t = r.pop() || p.lex() || h) && (t instanceof Array && (t = (r = t).pop()), t = e.symbols_[t] || t), t
                            }
                            "function" == typeof g.yy.parseError ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
                            for (var _, w, x, k, E, A, S, M, T, D = {};;) {
                                if (x = n[n.length - 1], this.defaultActions[x] ? k = this.defaultActions[x] : (null == _ && (_ = m()), k = o[x] && o[x][_]), void 0 === k || !k.length || !k[0]) {
                                    var C = "";
                                    for (A in T = [], o[x]) this.terminals_[A] && A > l && T.push("'" + this.terminals_[A] + "'");
                                    C = p.showPosition ? "Parse error on line " + (u + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : "Parse error on line " + (u + 1) + ": Unexpected " + (_ == h ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(C, {
                                        text: p.match,
                                        token: this.terminals_[_] || _,
                                        line: p.yylineno,
                                        loc: b,
                                        expected: T
                                    })
                                }
                                if (k[0] instanceof Array && k.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + x + ", token: " + _);
                                switch (k[0]) {
                                    case 1:
                                        n.push(_), i.push(p.yytext), a.push(p.yylloc), n.push(k[1]), _ = null, w ? (_ = w, w = null) : (c = p.yyleng, s = p.yytext, u = p.yylineno, b = p.yylloc, f > 0 && f--);
                                        break;
                                    case 2:
                                        if (S = this.productions_[k[1]][1], D.$ = i[i.length - S], D._$ = {
                                                first_line: a[a.length - (S || 1)].first_line,
                                                last_line: a[a.length - 1].last_line,
                                                first_column: a[a.length - (S || 1)].first_column,
                                                last_column: a[a.length - 1].last_column
                                            }, v && (D._$.range = [a[a.length - (S || 1)].range[0], a[a.length - 1].range[1]]), void 0 !== (E = this.performAction.apply(D, [s, c, u, g.yy, k[1], i, a].concat(d)))) return E;
                                        S && (n = n.slice(0, -1 * S * 2), i = i.slice(0, -1 * S), a = a.slice(0, -1 * S)), n.push(this.productions_[k[1]][0]), i.push(D.$), a.push(D._$), M = o[n[n.length - 2]][n[n.length - 1]], n.push(M);
                                        break;
                                    case 3:
                                        return !0
                                }
                            }
                            return !0
                        }
                    },
                    r = {
                        EOF: 1,
                        parseError: function(t, e) {
                            if (!this.yy.parser) throw new Error(t);
                            this.yy.parser.parseError(t, e)
                        },
                        setInput: function(t, e) {
                            return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                                first_line: 1,
                                first_column: 0,
                                last_line: 1,
                                last_column: 0
                            }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
                        },
                        input: function() {
                            var t = this._input[0];
                            return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t
                        },
                        unput: function(t) {
                            var e = t.length,
                                n = t.split(/(?:\r\n?|\n)/g);
                            this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e;
                            var r = this.match.split(/(?:\r\n?|\n)/g);
                            this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
                            var i = this.yylloc.range;
                            return this.yylloc = {
                                first_line: this.yylloc.first_line,
                                last_line: this.yylineno + 1,
                                first_column: this.yylloc.first_column,
                                last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - e
                            }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this
                        },
                        more: function() {
                            return this._more = !0, this
                        },
                        reject: function() {
                            return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        less: function(t) {
                            this.unput(this.match.slice(t))
                        },
                        pastInput: function() {
                            var t = this.matched.substr(0, this.matched.length - this.match.length);
                            return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "")
                        },
                        upcomingInput: function() {
                            var t = this.match;
                            return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "")
                        },
                        showPosition: function() {
                            var t = this.pastInput(),
                                e = new Array(t.length + 1).join("-");
                            return t + this.upcomingInput() + "\n" + e + "^"
                        },
                        test_match: function(t, e) {
                            var n, r, i;
                            if (this.options.backtrack_lexer && (i = {
                                    yylineno: this.yylineno,
                                    yylloc: {
                                        first_line: this.yylloc.first_line,
                                        last_line: this.last_line,
                                        first_column: this.yylloc.first_column,
                                        last_column: this.yylloc.last_column
                                    },
                                    yytext: this.yytext,
                                    match: this.match,
                                    matches: this.matches,
                                    matched: this.matched,
                                    yyleng: this.yyleng,
                                    offset: this.offset,
                                    _more: this._more,
                                    _input: this._input,
                                    yy: this.yy,
                                    conditionStack: this.conditionStack.slice(0),
                                    done: this.done
                                }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (r = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += r.length), this.yylloc = {
                                    first_line: this.yylloc.last_line,
                                    last_line: this.yylineno + 1,
                                    first_column: this.yylloc.last_column,
                                    last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length
                                }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
                            if (this._backtrack) {
                                for (var a in i) this[a] = i[a];
                                return !1
                            }
                            return !1
                        },
                        next: function() {
                            if (this.done) return this.EOF;
                            var t, e, n, r;
                            this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                            for (var i = this._currentRules(), a = 0; a < i.length; a++)
                                if ((n = this._input.match(this.rules[i[a]])) && (!e || n[0].length > e[0].length)) {
                                    if (e = n, r = a, this.options.backtrack_lexer) {
                                        if (!1 !== (t = this.test_match(n, i[a]))) return t;
                                        if (this._backtrack) {
                                            e = !1;
                                            continue
                                        }
                                        return !1
                                    }
                                    if (!this.options.flex) break
                                } return e ? !1 !== (t = this.test_match(e, i[r])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                                text: "",
                                token: null,
                                line: this.yylineno
                            })
                        },
                        lex: function() {
                            var t = this.next();
                            return t || this.lex()
                        },
                        begin: function(t) {
                            this.conditionStack.push(t)
                        },
                        popState: function() {
                            return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0]
                        },
                        _currentRules: function() {
                            return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules
                        },
                        topState: function(t) {
                            return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL"
                        },
                        pushState: function(t) {
                            this.begin(t)
                        },
                        stateStackSize: function() {
                            return this.conditionStack.length
                        },
                        options: {
                            "case-insensitive": !0
                        },
                        performAction: function(t, e, n, r) {
                            switch (n) {
                                case 0:
                                case 1:
                                    break;
                                case 2:
                                    return 4;
                                case 3:
                                    return 9;
                                case 4:
                                    return "space";
                                case 5:
                                    return 12;
                                case 6:
                                    this.begin("string");
                                    break;
                                case 7:
                                    this.popState();
                                    break;
                                case 8:
                                    return "STR";
                                case 9:
                                    return "VALUE";
                                case 10:
                                    return 6
                            }
                        },
                        rules: [/^(?:%%[^\n]*)/i, /^(?:\s+)/i, /^(?:pie\b)/i, /^(?:[\s\n\r]+)/i, /^(?:[\s]+)/i, /^(?:title\s[^#\n;]+)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?::[\s]*[\d]+(?:\.[\d]+)?)/i, /^(?:$)/i],
                        conditions: {
                            string: {
                                rules: [7, 8],
                                inclusive: !1
                            },
                            INITIAL: {
                                rules: [0, 1, 2, 3, 4, 5, 6, 9, 10],
                                inclusive: !0
                            }
                        }
                    };

                function i() {
                    this.yy = {}
                }
                return n.lexer = r, i.prototype = n, n.Parser = i, new i
            }();
            e.parser = i, e.Parser = i.Parser, e.parse = function() {
                return i.parse.apply(i, arguments)
            }, e.main = function(r) {
                r[1] || (console.log("Usage: " + r[0] + " FILE"), t.exit(1));
                var i = n(28).readFileSync(n(29).normalize(r[1]), "utf8");
                return e.parser.parse(i)
            }, n.c[n.s] === r && e.main(t.argv.slice(1))
        }).call(this, n(7), n(9)(t))
    }, function(t) {
        t.exports = JSON.parse('{"name":"mermaid","version":"8.4.6","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build":"webpack --progress --colors","postbuild":"documentation build src/mermaidAPI.js --shallow -f md --markdown-toc false -o docs/mermaidAPI.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build -p --config webpack.config.prod.babel.js","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn release && yarn test && yarn e2e","prepush":"yarn test"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","crypto-random-string":"^3.0.1","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","graphlib":"^2.1.7","he":"^1.2.0","lodash":"^4.17.11","minify":"^4.1.1","moment-mini":"^2.22.1","scope-css":"^1.2.1"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.0","@babel/register":"^7.0.0","@percy/cypress":"^2.0.1","babel-core":"7.0.0-bridge.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"3.4.0","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]}}')
    }, function(t, e, n) {
        "use strict";
        var r = n(13);
        t.exports = s;
        var i = "\0",
            a = "\0",
            o = "";

        function s(t) {
            this._isDirected = !r.has(t, "directed") || t.directed, this._isMultigraph = !!r.has(t, "multigraph") && t.multigraph, this._isCompound = !!r.has(t, "compound") && t.compound, this._label = void 0, this._defaultNodeLabelFn = r.constant(void 0), this._defaultEdgeLabelFn = r.constant(void 0), this._nodes = {}, this._isCompound && (this._parent = {}, this._children = {}, this._children[a] = {}), this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {}
        }

        function u(t, e) {
            t[e] ? t[e]++ : t[e] = 1
        }

        function c(t, e) {
            --t[e] || delete t[e]
        }

        function f(t, e, n, a) {
            var s = "" + e,
                u = "" + n;
            if (!t && s > u) {
                var c = s;
                s = u, u = c
            }
            return s + o + u + o + (r.isUndefined(a) ? i : a)
        }

        function l(t, e, n, r) {
            var i = "" + e,
                a = "" + n;
            if (!t && i > a) {
                var o = i;
                i = a, a = o
            }
            var s = {
                v: i,
                w: a
            };
            return r && (s.name = r), s
        }

        function h(t, e) {
            return f(t, e.v, e.w, e.name)
        }
        s.prototype._nodeCount = 0, s.prototype._edgeCount = 0, s.prototype.isDirected = function() {
            return this._isDirected
        }, s.prototype.isMultigraph = function() {
            return this._isMultigraph
        }, s.prototype.isCompound = function() {
            return this._isCompound
        }, s.prototype.setGraph = function(t) {
            return this._label = t, this
        }, s.prototype.graph = function() {
            return this._label
        }, s.prototype.setDefaultNodeLabel = function(t) {
            return r.isFunction(t) || (t = r.constant(t)), this._defaultNodeLabelFn = t, this
        }, s.prototype.nodeCount = function() {
            return this._nodeCount
        }, s.prototype.nodes = function() {
            return r.keys(this._nodes)
        }, s.prototype.sources = function() {
            var t = this;
            return r.filter(this.nodes(), (function(e) {
                return r.isEmpty(t._in[e])
            }))
        }, s.prototype.sinks = function() {
            var t = this;
            return r.filter(this.nodes(), (function(e) {
                return r.isEmpty(t._out[e])
            }))
        }, s.prototype.setNodes = function(t, e) {
            var n = arguments,
                i = this;
            return r.each(t, (function(t) {
                n.length > 1 ? i.setNode(t, e) : i.setNode(t)
            })), this
        }, s.prototype.setNode = function(t, e) {
            return r.has(this._nodes, t) ? (arguments.length > 1 && (this._nodes[t] = e), this) : (this._nodes[t] = arguments.length > 1 ? e : this._defaultNodeLabelFn(t), this._isCompound && (this._parent[t] = a, this._children[t] = {}, this._children[a][t] = !0), this._in[t] = {}, this._preds[t] = {}, this._out[t] = {}, this._sucs[t] = {}, ++this._nodeCount, this)
        }, s.prototype.node = function(t) {
            return this._nodes[t]
        }, s.prototype.hasNode = function(t) {
            return r.has(this._nodes, t)
        }, s.prototype.removeNode = function(t) {
            var e = this;
            if (r.has(this._nodes, t)) {
                var n = function(t) {
                    e.removeEdge(e._edgeObjs[t])
                };
                delete this._nodes[t], this._isCompound && (this._removeFromParentsChildList(t), delete this._parent[t], r.each(this.children(t), (function(t) {
                    e.setParent(t)
                })), delete this._children[t]), r.each(r.keys(this._in[t]), n), delete this._in[t], delete this._preds[t], r.each(r.keys(this._out[t]), n), delete this._out[t], delete this._sucs[t], --this._nodeCount
            }
            return this
        }, s.prototype.setParent = function(t, e) {
            if (!this._isCompound) throw new Error("Cannot set parent in a non-compound graph");
            if (r.isUndefined(e)) e = a;
            else {
                for (var n = e += ""; !r.isUndefined(n); n = this.parent(n))
                    if (n === t) throw new Error("Setting " + e + " as parent of " + t + " would create a cycle");
                this.setNode(e)
            }
            return this.setNode(t), this._removeFromParentsChildList(t), this._parent[t] = e, this._children[e][t] = !0, this
        }, s.prototype._removeFromParentsChildList = function(t) {
            delete this._children[this._parent[t]][t]
        }, s.prototype.parent = function(t) {
            if (this._isCompound) {
                var e = this._parent[t];
                if (e !== a) return e
            }
        }, s.prototype.children = function(t) {
            if (r.isUndefined(t) && (t = a), this._isCompound) {
                var e = this._children[t];
                if (e) return r.keys(e)
            } else {
                if (t === a) return this.nodes();
                if (this.hasNode(t)) return []
            }
        }, s.prototype.predecessors = function(t) {
            var e = this._preds[t];
            if (e) return r.keys(e)
        }, s.prototype.successors = function(t) {
            var e = this._sucs[t];
            if (e) return r.keys(e)
        }, s.prototype.neighbors = function(t) {
            var e = this.predecessors(t);
            if (e) return r.union(e, this.successors(t))
        }, s.prototype.isLeaf = function(t) {
            return 0 === (this.isDirected() ? this.successors(t) : this.neighbors(t)).length
        }, s.prototype.filterNodes = function(t) {
            var e = new this.constructor({
                directed: this._isDirected,
                multigraph: this._isMultigraph,
                compound: this._isCompound
            });
            e.setGraph(this.graph());
            var n = this;
            r.each(this._nodes, (function(n, r) {
                t(r) && e.setNode(r, n)
            })), r.each(this._edgeObjs, (function(t) {
                e.hasNode(t.v) && e.hasNode(t.w) && e.setEdge(t, n.edge(t))
            }));
            var i = {};
            return this._isCompound && r.each(e.nodes(), (function(t) {
                e.setParent(t, function t(r) {
                    var a = n.parent(r);
                    return void 0 === a || e.hasNode(a) ? (i[r] = a, a) : a in i ? i[a] : t(a)
                }(t))
            })), e
        }, s.prototype.setDefaultEdgeLabel = function(t) {
            return r.isFunction(t) || (t = r.constant(t)), this._defaultEdgeLabelFn = t, this
        }, s.prototype.edgeCount = function() {
            return this._edgeCount
        }, s.prototype.edges = function() {
            return r.values(this._edgeObjs)
        }, s.prototype.setPath = function(t, e) {
            var n = this,
                i = arguments;
            return r.reduce(t, (function(t, r) {
                return i.length > 1 ? n.setEdge(t, r, e) : n.setEdge(t, r), r
            })), this
        }, s.prototype.setEdge = function() {
            var t, e, n, i, a = !1,
                o = arguments[0];
            "object" == typeof o && null !== o && "v" in o ? (t = o.v, e = o.w, n = o.name, 2 === arguments.length && (i = arguments[1], a = !0)) : (t = o, e = arguments[1], n = arguments[3], arguments.length > 2 && (i = arguments[2], a = !0)), t = "" + t, e = "" + e, r.isUndefined(n) || (n = "" + n);
            var s = f(this._isDirected, t, e, n);
            if (r.has(this._edgeLabels, s)) return a && (this._edgeLabels[s] = i), this;
            if (!r.isUndefined(n) && !this._isMultigraph) throw new Error("Cannot set a named edge when isMultigraph = false");
            this.setNode(t), this.setNode(e), this._edgeLabels[s] = a ? i : this._defaultEdgeLabelFn(t, e, n);
            var c = l(this._isDirected, t, e, n);
            return t = c.v, e = c.w, Object.freeze(c), this._edgeObjs[s] = c, u(this._preds[e], t), u(this._sucs[t], e), this._in[e][s] = c, this._out[t][s] = c, this._edgeCount++, this
        }, s.prototype.edge = function(t, e, n) {
            var r = 1 === arguments.length ? h(this._isDirected, arguments[0]) : f(this._isDirected, t, e, n);
            return this._edgeLabels[r]
        }, s.prototype.hasEdge = function(t, e, n) {
            var i = 1 === arguments.length ? h(this._isDirected, arguments[0]) : f(this._isDirected, t, e, n);
            return r.has(this._edgeLabels, i)
        }, s.prototype.removeEdge = function(t, e, n) {
            var r = 1 === arguments.length ? h(this._isDirected, arguments[0]) : f(this._isDirected, t, e, n),
                i = this._edgeObjs[r];
            return i && (t = i.v, e = i.w, delete this._edgeLabels[r], delete this._edgeObjs[r], c(this._preds[e], t), c(this._sucs[t], e), delete this._in[e][r], delete this._out[t][r], this._edgeCount--), this
        }, s.prototype.inEdges = function(t, e) {
            var n = this._in[t];
            if (n) {
                var i = r.values(n);
                return e ? r.filter(i, (function(t) {
                    return t.v === e
                })) : i
            }
        }, s.prototype.outEdges = function(t, e) {
            var n = this._out[t];
            if (n) {
                var i = r.values(n);
                return e ? r.filter(i, (function(t) {
                    return t.w === e
                })) : i
            }
        }, s.prototype.nodeEdges = function(t, e) {
            var n = this.inEdges(t, e);
            if (n) return n.concat(this.outEdges(t, e))
        }
    }, function(t, e, n) {
        var r = n(32)(n(18), "Map");
        t.exports = r
    }, function(t, e, n) {
        var r = n(254),
            i = n(261),
            a = n(263),
            o = n(264),
            s = n(265);

        function u(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.clear(); ++e < n;) {
                var r = t[e];
                this.set(r[0], r[1])
            }
        }
        u.prototype.clear = r, u.prototype.delete = i, u.prototype.get = a, u.prototype.has = o, u.prototype.set = s, t.exports = u
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = -1, r = null == t ? 0 : t.length; ++n < r && !1 !== e(t[n], n, t););
            return t
        }
    }, function(t, e) {
        var n = 9007199254740991;
        t.exports = function(t) {
            return "number" == typeof t && t > -1 && t % 1 == 0 && t <= n
        }
    }, function(t, e, n) {
        (function(t) {
            var r = n(131),
                i = e && !e.nodeType && e,
                a = i && "object" == typeof t && t && !t.nodeType && t,
                o = a && a.exports === i && r.process,
                s = function() {
                    try {
                        var t = a && a.require && a.require("util").types;
                        return t || o && o.binding && o.binding("util")
                    } catch (t) {}
                }();
            t.exports = s
        }).call(this, n(9)(t))
    }, function(t, e, n) {
        var r = n(70),
            i = n(271),
            a = Object.prototype.hasOwnProperty;
        t.exports = function(t) {
            if (!r(t)) return i(t);
            var e = [];
            for (var n in Object(t)) a.call(t, n) && "constructor" != n && e.push(n);
            return e
        }
    }, function(t, e, n) {
        var r = n(138),
            i = n(139),
            a = Object.prototype.propertyIsEnumerable,
            o = Object.getOwnPropertySymbols,
            s = o ? function(t) {
                return null == t ? [] : (t = Object(t), r(o(t), (function(e) {
                    return a.call(t, e)
                })))
            } : i;
        t.exports = s
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = -1, r = e.length, i = t.length; ++n < r;) t[i + n] = e[n];
            return t
        }
    }, function(t, e, n) {
        var r = n(144);
        t.exports = function(t) {
            var e = new t.constructor(t.byteLength);
            return new r(e).set(new r(t)), e
        }
    }, function(t, e) {
        t.exports = function(t) {
            return function() {
                return t
            }
        }
    }, function(t, e, n) {
        t.exports = n(148)
    }, function(t, e, n) {
        var r = n(102),
            i = n(27);
        t.exports = function(t, e) {
            return t && r(t, e, i)
        }
    }, function(t, e, n) {
        var r = n(290)();
        t.exports = r
    }, function(t, e) {
        t.exports = function(t) {
            var e = -1,
                n = Array(t.size);
            return t.forEach((function(t) {
                n[++e] = t
            })), n
        }
    }, function(t, e, n) {
        var r = n(73),
            i = n(52);
        t.exports = function(t, e) {
            for (var n = 0, a = (e = r(e, t)).length; null != t && n < a;) t = t[i(e[n++])];
            return n && n == a ? t : void 0
        }
    }, function(t, e, n) {
        var r = n(6),
            i = n(42),
            a = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
            o = /^\w*$/;
        t.exports = function(t, e) {
            if (r(t)) return !1;
            var n = typeof t;
            return !("number" != n && "symbol" != n && "boolean" != n && null != t && !i(t)) || (o.test(t) || !a.test(t) || null != e && t in Object(e))
        }
    }, function(t, e, n) {
        var r = n(312),
            i = n(159);
        t.exports = function(t, e) {
            return null != t && i(t, e, r)
        }
    }, function(t, e, n) {
        var r = n(97),
            i = n(324);
        t.exports = function t(e, n, a, o, s) {
            var u = -1,
                c = e.length;
            for (a || (a = i), s || (s = []); ++u < c;) {
                var f = e[u];
                n > 0 && a(f) ? n > 1 ? t(f, n - 1, a, o, s) : r(s, f) : o || (s[s.length] = f)
            }
            return s
        }
    }, function(t, e, n) {
        var r = n(42);
        t.exports = function(t, e, n) {
            for (var i = -1, a = t.length; ++i < a;) {
                var o = t[i],
                    s = e(o);
                if (null != s && (void 0 === u ? s == s && !r(s) : n(s, u))) var u = s,
                    c = o
            }
            return c
        }
    }, function(t, e) {
        t.exports = function(t, e, n, r) {
            var i = t.x,
                a = t.y,
                o = i - r.x,
                s = a - r.y,
                u = Math.sqrt(e * e * s * s + n * n * o * o),
                c = Math.abs(e * n * o / u);
            r.x < i && (c = -c);
            var f = Math.abs(e * n * s / u);
            r.y < a && (f = -f);
            return {
                x: i + c,
                y: a + f
            }
        }
    }, function(t, e, n) {
        var r = n(409),
            i = n(128),
            a = n(410);
        t.exports = function(t, e, n) {
            var o = e.label,
                s = t.append("g");
            "svg" === e.labelType ? a(s, e) : "string" != typeof o || "html" === e.labelType ? i(s, e) : r(s, e);
            var u, c = s.node().getBBox();
            switch (n) {
                case "top":
                    u = -e.height / 2;
                    break;
                case "bottom":
                    u = e.height / 2 - c.height;
                    break;
                default:
                    u = -c.height / 2
            }
            return s.attr("transform", "translate(" + -c.width / 2 + "," + u + ")"), s
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(2),
            i = n(192),
            a = n(3).Buffer,
            o = new Array(16);

        function s() {
            i.call(this, 64), this._a = 1732584193, this._b = 4023233417, this._c = 2562383102, this._d = 271733878
        }

        function u(t, e) {
            return t << e | t >>> 32 - e
        }

        function c(t, e, n, r, i, a, o) {
            return u(t + (e & n | ~e & r) + i + a | 0, o) + e | 0
        }

        function f(t, e, n, r, i, a, o) {
            return u(t + (e & r | n & ~r) + i + a | 0, o) + e | 0
        }

        function l(t, e, n, r, i, a, o) {
            return u(t + (e ^ n ^ r) + i + a | 0, o) + e | 0
        }

        function h(t, e, n, r, i, a, o) {
            return u(t + (n ^ (e | ~r)) + i + a | 0, o) + e | 0
        }
        r(s, i), s.prototype._update = function() {
            for (var t = o, e = 0; e < 16; ++e) t[e] = this._block.readInt32LE(4 * e);
            var n = this._a,
                r = this._b,
                i = this._c,
                a = this._d;
            n = c(n, r, i, a, t[0], 3614090360, 7), a = c(a, n, r, i, t[1], 3905402710, 12), i = c(i, a, n, r, t[2], 606105819, 17), r = c(r, i, a, n, t[3], 3250441966, 22), n = c(n, r, i, a, t[4], 4118548399, 7), a = c(a, n, r, i, t[5], 1200080426, 12), i = c(i, a, n, r, t[6], 2821735955, 17), r = c(r, i, a, n, t[7], 4249261313, 22), n = c(n, r, i, a, t[8], 1770035416, 7), a = c(a, n, r, i, t[9], 2336552879, 12), i = c(i, a, n, r, t[10], 4294925233, 17), r = c(r, i, a, n, t[11], 2304563134, 22), n = c(n, r, i, a, t[12], 1804603682, 7), a = c(a, n, r, i, t[13], 4254626195, 12), i = c(i, a, n, r, t[14], 2792965006, 17), n = f(n, r = c(r, i, a, n, t[15], 1236535329, 22), i, a, t[1], 4129170786, 5), a = f(a, n, r, i, t[6], 3225465664, 9), i = f(i, a, n, r, t[11], 643717713, 14), r = f(r, i, a, n, t[0], 3921069994, 20), n = f(n, r, i, a, t[5], 3593408605, 5), a = f(a, n, r, i, t[10], 38016083, 9), i = f(i, a, n, r, t[15], 3634488961, 14), r = f(r, i, a, n, t[4], 3889429448, 20), n = f(n, r, i, a, t[9], 568446438, 5), a = f(a, n, r, i, t[14], 3275163606, 9), i = f(i, a, n, r, t[3], 4107603335, 14), r = f(r, i, a, n, t[8], 1163531501, 20), n = f(n, r, i, a, t[13], 2850285829, 5), a = f(a, n, r, i, t[2], 4243563512, 9), i = f(i, a, n, r, t[7], 1735328473, 14), n = l(n, r = f(r, i, a, n, t[12], 2368359562, 20), i, a, t[5], 4294588738, 4), a = l(a, n, r, i, t[8], 2272392833, 11), i = l(i, a, n, r, t[11], 1839030562, 16), r = l(r, i, a, n, t[14], 4259657740, 23), n = l(n, r, i, a, t[1], 2763975236, 4), a = l(a, n, r, i, t[4], 1272893353, 11), i = l(i, a, n, r, t[7], 4139469664, 16), r = l(r, i, a, n, t[10], 3200236656, 23), n = l(n, r, i, a, t[13], 681279174, 4), a = l(a, n, r, i, t[0], 3936430074, 11), i = l(i, a, n, r, t[3], 3572445317, 16), r = l(r, i, a, n, t[6], 76029189, 23), n = l(n, r, i, a, t[9], 3654602809, 4), a = l(a, n, r, i, t[12], 3873151461, 11), i = l(i, a, n, r, t[15], 530742520, 16), n = h(n, r = l(r, i, a, n, t[2], 3299628645, 23), i, a, t[0], 4096336452, 6), a = h(a, n, r, i, t[7], 1126891415, 10), i = h(i, a, n, r, t[14], 2878612391, 15), r = h(r, i, a, n, t[5], 4237533241, 21), n = h(n, r, i, a, t[12], 1700485571, 6), a = h(a, n, r, i, t[3], 2399980690, 10), i = h(i, a, n, r, t[10], 4293915773, 15), r = h(r, i, a, n, t[1], 2240044497, 21), n = h(n, r, i, a, t[8], 1873313359, 6), a = h(a, n, r, i, t[15], 4264355552, 10), i = h(i, a, n, r, t[6], 2734768916, 15), r = h(r, i, a, n, t[13], 1309151649, 21), n = h(n, r, i, a, t[4], 4149444226, 6), a = h(a, n, r, i, t[11], 3174756917, 10), i = h(i, a, n, r, t[2], 718787259, 15), r = h(r, i, a, n, t[9], 3951481745, 21), this._a = this._a + n | 0, this._b = this._b + r | 0, this._c = this._c + i | 0, this._d = this._d + a | 0
        }, s.prototype._digest = function() {
            this._block[this._blockOffset++] = 128, this._blockOffset > 56 && (this._block.fill(0, this._blockOffset, 64), this._update(), this._blockOffset = 0), this._block.fill(0, this._blockOffset, 56), this._block.writeUInt32LE(this._length[0], 56), this._block.writeUInt32LE(this._length[1], 60), this._update();
            var t = a.allocUnsafe(16);
            return t.writeInt32LE(this._a, 0), t.writeInt32LE(this._b, 4), t.writeInt32LE(this._c, 8), t.writeInt32LE(this._d, 12), t
        }, t.exports = s
    }, function(t, e, n) {
        t.exports = i;
        var r = n(113).EventEmitter;

        function i() {
            r.call(this)
        }
        n(2)(i, r), i.Readable = n(114), i.Writable = n(430), i.Duplex = n(431), i.Transform = n(432), i.PassThrough = n(433), i.Stream = i, i.prototype.pipe = function(t, e) {
            var n = this;

            function i(e) {
                t.writable && !1 === t.write(e) && n.pause && n.pause()
            }

            function a() {
                n.readable && n.resume && n.resume()
            }
            n.on("data", i), t.on("drain", a), t._isStdio || e && !1 === e.end || (n.on("end", s), n.on("close", u));
            var o = !1;

            function s() {
                o || (o = !0, t.end())
            }

            function u() {
                o || (o = !0, "function" == typeof t.destroy && t.destroy())
            }

            function c(t) {
                if (f(), 0 === r.listenerCount(this, "error")) throw t
            }

            function f() {
                n.removeListener("data", i), t.removeListener("drain", a), n.removeListener("end", s), n.removeListener("close", u), n.removeListener("error", c), t.removeListener("error", c), n.removeListener("end", f), n.removeListener("close", f), t.removeListener("close", f)
            }
            return n.on("error", c), t.on("error", c), n.on("end", f), n.on("close", f), t.on("close", f), t.emit("pipe", n), t
        }
    }, function(t, e, n) {
        "use strict";
        var r, i = "object" == typeof Reflect ? Reflect : null,
            a = i && "function" == typeof i.apply ? i.apply : function(t, e, n) {
                return Function.prototype.apply.call(t, e, n)
            };
        r = i && "function" == typeof i.ownKeys ? i.ownKeys : Object.getOwnPropertySymbols ? function(t) {
            return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))
        } : function(t) {
            return Object.getOwnPropertyNames(t)
        };
        var o = Number.isNaN || function(t) {
            return t != t
        };

        function s() {
            s.init.call(this)
        }
        t.exports = s, s.EventEmitter = s, s.prototype._events = void 0, s.prototype._eventsCount = 0, s.prototype._maxListeners = void 0;
        var u = 10;

        function c(t) {
            return void 0 === t._maxListeners ? s.defaultMaxListeners : t._maxListeners
        }

        function f(t, e, n, r) {
            var i, a, o, s;
            if ("function" != typeof n) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof n);
            if (void 0 === (a = t._events) ? (a = t._events = Object.create(null), t._eventsCount = 0) : (void 0 !== a.newListener && (t.emit("newListener", e, n.listener ? n.listener : n), a = t._events), o = a[e]), void 0 === o) o = a[e] = n, ++t._eventsCount;
            else if ("function" == typeof o ? o = a[e] = r ? [n, o] : [o, n] : r ? o.unshift(n) : o.push(n), (i = c(t)) > 0 && o.length > i && !o.warned) {
                o.warned = !0;
                var u = new Error("Possible EventEmitter memory leak detected. " + o.length + " " + String(e) + " listeners added. Use emitter.setMaxListeners() to increase limit");
                u.name = "MaxListenersExceededWarning", u.emitter = t, u.type = e, u.count = o.length, s = u, console && console.warn && console.warn(s)
            }
            return t
        }

        function l() {
            for (var t = [], e = 0; e < arguments.length; e++) t.push(arguments[e]);
            this.fired || (this.target.removeListener(this.type, this.wrapFn), this.fired = !0, a(this.listener, this.target, t))
        }

        function h(t, e, n) {
            var r = {
                    fired: !1,
                    wrapFn: void 0,
                    target: t,
                    type: e,
                    listener: n
                },
                i = l.bind(r);
            return i.listener = n, r.wrapFn = i, i
        }

        function d(t, e, n) {
            var r = t._events;
            if (void 0 === r) return [];
            var i = r[e];
            return void 0 === i ? [] : "function" == typeof i ? n ? [i.listener || i] : [i] : n ? function(t) {
                for (var e = new Array(t.length), n = 0; n < e.length; ++n) e[n] = t[n].listener || t[n];
                return e
            }(i) : g(i, i.length)
        }

        function p(t) {
            var e = this._events;
            if (void 0 !== e) {
                var n = e[t];
                if ("function" == typeof n) return 1;
                if (void 0 !== n) return n.length
            }
            return 0
        }

        function g(t, e) {
            for (var n = new Array(e), r = 0; r < e; ++r) n[r] = t[r];
            return n
        }
        Object.defineProperty(s, "defaultMaxListeners", {
            enumerable: !0,
            get: function() {
                return u
            },
            set: function(t) {
                if ("number" != typeof t || t < 0 || o(t)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + t + ".");
                u = t
            }
        }), s.init = function() {
            void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0
        }, s.prototype.setMaxListeners = function(t) {
            if ("number" != typeof t || t < 0 || o(t)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + t + ".");
            return this._maxListeners = t, this
        }, s.prototype.getMaxListeners = function() {
            return c(this)
        }, s.prototype.emit = function(t) {
            for (var e = [], n = 1; n < arguments.length; n++) e.push(arguments[n]);
            var r = "error" === t,
                i = this._events;
            if (void 0 !== i) r = r && void 0 === i.error;
            else if (!r) return !1;
            if (r) {
                var o;
                if (e.length > 0 && (o = e[0]), o instanceof Error) throw o;
                var s = new Error("Unhandled error." + (o ? " (" + o.message + ")" : ""));
                throw s.context = o, s
            }
            var u = i[t];
            if (void 0 === u) return !1;
            if ("function" == typeof u) a(u, this, e);
            else {
                var c = u.length,
                    f = g(u, c);
                for (n = 0; n < c; ++n) a(f[n], this, e)
            }
            return !0
        }, s.prototype.addListener = function(t, e) {
            return f(this, t, e, !1)
        }, s.prototype.on = s.prototype.addListener, s.prototype.prependListener = function(t, e) {
            return f(this, t, e, !0)
        }, s.prototype.once = function(t, e) {
            if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
            return this.on(t, h(this, t, e)), this
        }, s.prototype.prependOnceListener = function(t, e) {
            if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
            return this.prependListener(t, h(this, t, e)), this
        }, s.prototype.removeListener = function(t, e) {
            var n, r, i, a, o;
            if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
            if (void 0 === (r = this._events)) return this;
            if (void 0 === (n = r[t])) return this;
            if (n === e || n.listener === e) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete r[t], r.removeListener && this.emit("removeListener", t, n.listener || e));
            else if ("function" != typeof n) {
                for (i = -1, a = n.length - 1; a >= 0; a--)
                    if (n[a] === e || n[a].listener === e) {
                        o = n[a].listener, i = a;
                        break
                    } if (i < 0) return this;
                0 === i ? n.shift() : function(t, e) {
                    for (; e + 1 < t.length; e++) t[e] = t[e + 1];
                    t.pop()
                }(n, i), 1 === n.length && (r[t] = n[0]), void 0 !== r.removeListener && this.emit("removeListener", t, o || e)
            }
            return this
        }, s.prototype.off = s.prototype.removeListener, s.prototype.removeAllListeners = function(t) {
            var e, n, r;
            if (void 0 === (n = this._events)) return this;
            if (void 0 === n.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== n[t] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete n[t]), this;
            if (0 === arguments.length) {
                var i, a = Object.keys(n);
                for (r = 0; r < a.length; ++r) "removeListener" !== (i = a[r]) && this.removeAllListeners(i);
                return this.removeAllListeners("removeListener"), this._events = Object.create(null), this._eventsCount = 0, this
            }
            if ("function" == typeof(e = n[t])) this.removeListener(t, e);
            else if (void 0 !== e)
                for (r = e.length - 1; r >= 0; r--) this.removeListener(t, e[r]);
            return this
        }, s.prototype.listeners = function(t) {
            return d(this, t, !0)
        }, s.prototype.rawListeners = function(t) {
            return d(this, t, !1)
        }, s.listenerCount = function(t, e) {
            return "function" == typeof t.listenerCount ? t.listenerCount(e) : p.call(t, e)
        }, s.prototype.listenerCount = p, s.prototype.eventNames = function() {
            return this._eventsCount > 0 ? r(this._events) : []
        }
    }, function(t, e, n) {
        (e = t.exports = n(193)).Stream = e, e.Readable = e, e.Writable = n(116), e.Duplex = n(35), e.Transform = n(196), e.PassThrough = n(429)
    }, function(t, e, n) {
        var r = n(8),
            i = r.Buffer;

        function a(t, e) {
            for (var n in t) e[n] = t[n]
        }

        function o(t, e, n) {
            return i(t, e, n)
        }
        i.from && i.alloc && i.allocUnsafe && i.allocUnsafeSlow ? t.exports = r : (a(r, e), e.Buffer = o), a(i, o), o.from = function(t, e, n) {
            if ("number" == typeof t) throw new TypeError("Argument must not be a number");
            return i(t, e, n)
        }, o.alloc = function(t, e, n) {
            if ("number" != typeof t) throw new TypeError("Argument must be a number");
            var r = i(t);
            return void 0 !== e ? "string" == typeof n ? r.fill(e, n) : r.fill(e) : r.fill(0), r
        }, o.allocUnsafe = function(t) {
            if ("number" != typeof t) throw new TypeError("Argument must be a number");
            return i(t)
        }, o.allocUnsafeSlow = function(t) {
            if ("number" != typeof t) throw new TypeError("Argument must be a number");
            return r.SlowBuffer(t)
        }
    }, function(t, e, n) {
        "use strict";
        (function(e, r, i) {
            var a = n(78);

            function o(t) {
                var e = this;
                this.next = null, this.entry = null, this.finish = function() {
                    ! function(t, e, n) {
                        var r = t.entry;
                        t.entry = null;
                        for (; r;) {
                            var i = r.callback;
                            e.pendingcb--, i(n), r = r.next
                        }
                        e.corkedRequestsFree ? e.corkedRequestsFree.next = t : e.corkedRequestsFree = t
                    }(e, t)
                }
            }
            t.exports = v;
            var s, u = !e.browser && ["v0.10", "v0.9."].indexOf(e.version.slice(0, 5)) > -1 ? r : a.nextTick;
            v.WritableState = b;
            var c = n(54);
            c.inherits = n(2);
            var f = {
                    deprecate: n(428)
                },
                l = n(194),
                h = n(115).Buffer,
                d = i.Uint8Array || function() {};
            var p, g = n(195);

            function y() {}

            function b(t, e) {
                s = s || n(35), t = t || {};
                var r = e instanceof s;
                this.objectMode = !!t.objectMode, r && (this.objectMode = this.objectMode || !!t.writableObjectMode);
                var i = t.highWaterMark,
                    c = t.writableHighWaterMark,
                    f = this.objectMode ? 16 : 16384;
                this.highWaterMark = i || 0 === i ? i : r && (c || 0 === c) ? c : f, this.highWaterMark = Math.floor(this.highWaterMark), this.finalCalled = !1, this.needDrain = !1, this.ending = !1, this.ended = !1, this.finished = !1, this.destroyed = !1;
                var l = !1 === t.decodeStrings;
                this.decodeStrings = !l, this.defaultEncoding = t.defaultEncoding || "utf8", this.length = 0, this.writing = !1, this.corked = 0, this.sync = !0, this.bufferProcessing = !1, this.onwrite = function(t) {
                    ! function(t, e) {
                        var n = t._writableState,
                            r = n.sync,
                            i = n.writecb;
                        if (function(t) {
                                t.writing = !1, t.writecb = null, t.length -= t.writelen, t.writelen = 0
                            }(n), e) ! function(t, e, n, r, i) {
                            --e.pendingcb, n ? (a.nextTick(i, r), a.nextTick(E, t, e), t._writableState.errorEmitted = !0, t.emit("error", r)) : (i(r), t._writableState.errorEmitted = !0, t.emit("error", r), E(t, e))
                        }(t, n, r, e, i);
                        else {
                            var o = x(n);
                            o || n.corked || n.bufferProcessing || !n.bufferedRequest || w(t, n), r ? u(_, t, n, o, i) : _(t, n, o, i)
                        }
                    }(e, t)
                }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = !1, this.errorEmitted = !1, this.bufferedRequestCount = 0, this.corkedRequestsFree = new o(this)
            }

            function v(t) {
                if (s = s || n(35), !(p.call(v, this) || this instanceof s)) return new v(t);
                this._writableState = new b(t, this), this.writable = !0, t && ("function" == typeof t.write && (this._write = t.write), "function" == typeof t.writev && (this._writev = t.writev), "function" == typeof t.destroy && (this._destroy = t.destroy), "function" == typeof t.final && (this._final = t.final)), l.call(this)
            }

            function m(t, e, n, r, i, a, o) {
                e.writelen = r, e.writecb = o, e.writing = !0, e.sync = !0, n ? t._writev(i, e.onwrite) : t._write(i, a, e.onwrite), e.sync = !1
            }

            function _(t, e, n, r) {
                n || function(t, e) {
                    0 === e.length && e.needDrain && (e.needDrain = !1, t.emit("drain"))
                }(t, e), e.pendingcb--, r(), E(t, e)
            }

            function w(t, e) {
                e.bufferProcessing = !0;
                var n = e.bufferedRequest;
                if (t._writev && n && n.next) {
                    var r = e.bufferedRequestCount,
                        i = new Array(r),
                        a = e.corkedRequestsFree;
                    a.entry = n;
                    for (var s = 0, u = !0; n;) i[s] = n, n.isBuf || (u = !1), n = n.next, s += 1;
                    i.allBuffers = u, m(t, e, !0, e.length, i, "", a.finish), e.pendingcb++, e.lastBufferedRequest = null, a.next ? (e.corkedRequestsFree = a.next, a.next = null) : e.corkedRequestsFree = new o(e), e.bufferedRequestCount = 0
                } else {
                    for (; n;) {
                        var c = n.chunk,
                            f = n.encoding,
                            l = n.callback;
                        if (m(t, e, !1, e.objectMode ? 1 : c.length, c, f, l), n = n.next, e.bufferedRequestCount--, e.writing) break
                    }
                    null === n && (e.lastBufferedRequest = null)
                }
                e.bufferedRequest = n, e.bufferProcessing = !1
            }

            function x(t) {
                return t.ending && 0 === t.length && null === t.bufferedRequest && !t.finished && !t.writing
            }

            function k(t, e) {
                t._final((function(n) {
                    e.pendingcb--, n && t.emit("error", n), e.prefinished = !0, t.emit("prefinish"), E(t, e)
                }))
            }

            function E(t, e) {
                var n = x(e);
                return n && (! function(t, e) {
                    e.prefinished || e.finalCalled || ("function" == typeof t._final ? (e.pendingcb++, e.finalCalled = !0, a.nextTick(k, t, e)) : (e.prefinished = !0, t.emit("prefinish")))
                }(t, e), 0 === e.pendingcb && (e.finished = !0, t.emit("finish"))), n
            }
            c.inherits(v, l), b.prototype.getBuffer = function() {
                    for (var t = this.bufferedRequest, e = []; t;) e.push(t), t = t.next;
                    return e
                },
                function() {
                    try {
                        Object.defineProperty(b.prototype, "buffer", {
                            get: f.deprecate((function() {
                                return this.getBuffer()
                            }), "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003")
                        })
                    } catch (t) {}
                }(), "function" == typeof Symbol && Symbol.hasInstance && "function" == typeof Function.prototype[Symbol.hasInstance] ? (p = Function.prototype[Symbol.hasInstance], Object.defineProperty(v, Symbol.hasInstance, {
                    value: function(t) {
                        return !!p.call(this, t) || this === v && (t && t._writableState instanceof b)
                    }
                })) : p = function(t) {
                    return t instanceof this
                }, v.prototype.pipe = function() {
                    this.emit("error", new Error("Cannot pipe, not readable"))
                }, v.prototype.write = function(t, e, n) {
                    var r, i = this._writableState,
                        o = !1,
                        s = !i.objectMode && (r = t, h.isBuffer(r) || r instanceof d);
                    return s && !h.isBuffer(t) && (t = function(t) {
                        return h.from(t)
                    }(t)), "function" == typeof e && (n = e, e = null), s ? e = "buffer" : e || (e = i.defaultEncoding), "function" != typeof n && (n = y), i.ended ? function(t, e) {
                        var n = new Error("write after end");
                        t.emit("error", n), a.nextTick(e, n)
                    }(this, n) : (s || function(t, e, n, r) {
                        var i = !0,
                            o = !1;
                        return null === n ? o = new TypeError("May not write null values to stream") : "string" == typeof n || void 0 === n || e.objectMode || (o = new TypeError("Invalid non-string/buffer chunk")), o && (t.emit("error", o), a.nextTick(r, o), i = !1), i
                    }(this, i, t, n)) && (i.pendingcb++, o = function(t, e, n, r, i, a) {
                        if (!n) {
                            var o = function(t, e, n) {
                                t.objectMode || !1 === t.decodeStrings || "string" != typeof e || (e = h.from(e, n));
                                return e
                            }(e, r, i);
                            r !== o && (n = !0, i = "buffer", r = o)
                        }
                        var s = e.objectMode ? 1 : r.length;
                        e.length += s;
                        var u = e.length < e.highWaterMark;
                        u || (e.needDrain = !0);
                        if (e.writing || e.corked) {
                            var c = e.lastBufferedRequest;
                            e.lastBufferedRequest = {
                                chunk: r,
                                encoding: i,
                                isBuf: n,
                                callback: a,
                                next: null
                            }, c ? c.next = e.lastBufferedRequest : e.bufferedRequest = e.lastBufferedRequest, e.bufferedRequestCount += 1
                        } else m(t, e, !1, s, r, i, a);
                        return u
                    }(this, i, s, t, e, n)), o
                }, v.prototype.cork = function() {
                    this._writableState.corked++
                }, v.prototype.uncork = function() {
                    var t = this._writableState;
                    t.corked && (t.corked--, t.writing || t.corked || t.finished || t.bufferProcessing || !t.bufferedRequest || w(this, t))
                }, v.prototype.setDefaultEncoding = function(t) {
                    if ("string" == typeof t && (t = t.toLowerCase()), !(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((t + "").toLowerCase()) > -1)) throw new TypeError("Unknown encoding: " + t);
                    return this._writableState.defaultEncoding = t, this
                }, Object.defineProperty(v.prototype, "writableHighWaterMark", {
                    enumerable: !1,
                    get: function() {
                        return this._writableState.highWaterMark
                    }
                }), v.prototype._write = function(t, e, n) {
                    n(new Error("_write() is not implemented"))
                }, v.prototype._writev = null, v.prototype.end = function(t, e, n) {
                    var r = this._writableState;
                    "function" == typeof t ? (n = t, t = null, e = null) : "function" == typeof e && (n = e, e = null), null != t && this.write(t, e), r.corked && (r.corked = 1, this.uncork()), r.ending || r.finished || function(t, e, n) {
                        e.ending = !0, E(t, e), n && (e.finished ? a.nextTick(n) : t.once("finish", n));
                        e.ended = !0, t.writable = !1
                    }(this, r, n)
                }, Object.defineProperty(v.prototype, "destroyed", {
                    get: function() {
                        return void 0 !== this._writableState && this._writableState.destroyed
                    },
                    set: function(t) {
                        this._writableState && (this._writableState.destroyed = t)
                    }
                }), v.prototype.destroy = g.destroy, v.prototype._undestroy = g.undestroy, v.prototype._destroy = function(t, e) {
                    this.end(), e(t)
                }
        }).call(this, n(7), n(426).setImmediate, n(12))
    }, function(t, e, n) {
        "use strict";
        var r = n(3).Buffer,
            i = r.isEncoding || function(t) {
                switch ((t = "" + t) && t.toLowerCase()) {
                    case "hex":
                    case "utf8":
                    case "utf-8":
                    case "ascii":
                    case "binary":
                    case "base64":
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                    case "raw":
                        return !0;
                    default:
                        return !1
                }
            };

        function a(t) {
            var e;
            switch (this.encoding = function(t) {
                var e = function(t) {
                    if (!t) return "utf8";
                    for (var e;;) switch (t) {
                        case "utf8":
                        case "utf-8":
                            return "utf8";
                        case "ucs2":
                        case "ucs-2":
                        case "utf16le":
                        case "utf-16le":
                            return "utf16le";
                        case "latin1":
                        case "binary":
                            return "latin1";
                        case "base64":
                        case "ascii":
                        case "hex":
                            return t;
                        default:
                            if (e) return;
                            t = ("" + t).toLowerCase(), e = !0
                    }
                }(t);
                if ("string" != typeof e && (r.isEncoding === i || !i(t))) throw new Error("Unknown encoding: " + t);
                return e || t
            }(t), this.encoding) {
                case "utf16le":
                    this.text = u, this.end = c, e = 4;
                    break;
                case "utf8":
                    this.fillLast = s, e = 4;
                    break;
                case "base64":
                    this.text = f, this.end = l, e = 3;
                    break;
                default:
                    return this.write = h, void(this.end = d)
            }
            this.lastNeed = 0, this.lastTotal = 0, this.lastChar = r.allocUnsafe(e)
        }

        function o(t) {
            return t <= 127 ? 0 : t >> 5 == 6 ? 2 : t >> 4 == 14 ? 3 : t >> 3 == 30 ? 4 : t >> 6 == 2 ? -1 : -2
        }

        function s(t) {
            var e = this.lastTotal - this.lastNeed,
                n = function(t, e, n) {
                    if (128 != (192 & e[0])) return t.lastNeed = 0, "�";
                    if (t.lastNeed > 1 && e.length > 1) {
                        if (128 != (192 & e[1])) return t.lastNeed = 1, "�";
                        if (t.lastNeed > 2 && e.length > 2 && 128 != (192 & e[2])) return t.lastNeed = 2, "�"
                    }
                }(this, t);
            return void 0 !== n ? n : this.lastNeed <= t.length ? (t.copy(this.lastChar, e, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal)) : (t.copy(this.lastChar, e, 0, t.length), void(this.lastNeed -= t.length))
        }

        function u(t, e) {
            if ((t.length - e) % 2 == 0) {
                var n = t.toString("utf16le", e);
                if (n) {
                    var r = n.charCodeAt(n.length - 1);
                    if (r >= 55296 && r <= 56319) return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = t[t.length - 2], this.lastChar[1] = t[t.length - 1], n.slice(0, -1)
                }
                return n
            }
            return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = t[t.length - 1], t.toString("utf16le", e, t.length - 1)
        }

        function c(t) {
            var e = t && t.length ? this.write(t) : "";
            if (this.lastNeed) {
                var n = this.lastTotal - this.lastNeed;
                return e + this.lastChar.toString("utf16le", 0, n)
            }
            return e
        }

        function f(t, e) {
            var n = (t.length - e) % 3;
            return 0 === n ? t.toString("base64", e) : (this.lastNeed = 3 - n, this.lastTotal = 3, 1 === n ? this.lastChar[0] = t[t.length - 1] : (this.lastChar[0] = t[t.length - 2], this.lastChar[1] = t[t.length - 1]), t.toString("base64", e, t.length - n))
        }

        function l(t) {
            var e = t && t.length ? this.write(t) : "";
            return this.lastNeed ? e + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : e
        }

        function h(t) {
            return t.toString(this.encoding)
        }

        function d(t) {
            return t && t.length ? this.write(t) : ""
        }
        e.StringDecoder = a, a.prototype.write = function(t) {
            if (0 === t.length) return "";
            var e, n;
            if (this.lastNeed) {
                if (void 0 === (e = this.fillLast(t))) return "";
                n = this.lastNeed, this.lastNeed = 0
            } else n = 0;
            return n < t.length ? e ? e + this.text(t, n) : this.text(t, n) : e || ""
        }, a.prototype.end = function(t) {
            var e = t && t.length ? this.write(t) : "";
            return this.lastNeed ? e + "�" : e
        }, a.prototype.text = function(t, e) {
            var n = function(t, e, n) {
                var r = e.length - 1;
                if (r < n) return 0;
                var i = o(e[r]);
                if (i >= 0) return i > 0 && (t.lastNeed = i - 1), i;
                if (--r < n || -2 === i) return 0;
                if ((i = o(e[r])) >= 0) return i > 0 && (t.lastNeed = i - 2), i;
                if (--r < n || -2 === i) return 0;
                if ((i = o(e[r])) >= 0) return i > 0 && (2 === i ? i = 0 : t.lastNeed = i - 3), i;
                return 0
            }(this, t, e);
            if (!this.lastNeed) return t.toString("utf8", e);
            this.lastTotal = n;
            var r = t.length - (n - this.lastNeed);
            return t.copy(this.lastChar, 0, r), t.toString("utf8", e, r)
        }, a.prototype.fillLast = function(t) {
            if (this.lastNeed <= t.length) return t.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal);
            t.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, t.length), this.lastNeed -= t.length
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(8).Buffer,
            i = n(2),
            a = n(192),
            o = new Array(16),
            s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13],
            u = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11],
            c = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6],
            f = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11],
            l = [0, 1518500249, 1859775393, 2400959708, 2840853838],
            h = [1352829926, 1548603684, 1836072691, 2053994217, 0];

        function d() {
            a.call(this, 64), this._a = 1732584193, this._b = 4023233417, this._c = 2562383102, this._d = 271733878, this._e = 3285377520
        }

        function p(t, e) {
            return t << e | t >>> 32 - e
        }

        function g(t, e, n, r, i, a, o, s) {
            return p(t + (e ^ n ^ r) + a + o | 0, s) + i | 0
        }

        function y(t, e, n, r, i, a, o, s) {
            return p(t + (e & n | ~e & r) + a + o | 0, s) + i | 0
        }

        function b(t, e, n, r, i, a, o, s) {
            return p(t + ((e | ~n) ^ r) + a + o | 0, s) + i | 0
        }

        function v(t, e, n, r, i, a, o, s) {
            return p(t + (e & r | n & ~r) + a + o | 0, s) + i | 0
        }

        function m(t, e, n, r, i, a, o, s) {
            return p(t + (e ^ (n | ~r)) + a + o | 0, s) + i | 0
        }
        i(d, a), d.prototype._update = function() {
            for (var t = o, e = 0; e < 16; ++e) t[e] = this._block.readInt32LE(4 * e);
            for (var n = 0 | this._a, r = 0 | this._b, i = 0 | this._c, a = 0 | this._d, d = 0 | this._e, _ = 0 | this._a, w = 0 | this._b, x = 0 | this._c, k = 0 | this._d, E = 0 | this._e, A = 0; A < 80; A += 1) {
                var S, M;
                A < 16 ? (S = g(n, r, i, a, d, t[s[A]], l[0], c[A]), M = m(_, w, x, k, E, t[u[A]], h[0], f[A])) : A < 32 ? (S = y(n, r, i, a, d, t[s[A]], l[1], c[A]), M = v(_, w, x, k, E, t[u[A]], h[1], f[A])) : A < 48 ? (S = b(n, r, i, a, d, t[s[A]], l[2], c[A]), M = b(_, w, x, k, E, t[u[A]], h[2], f[A])) : A < 64 ? (S = v(n, r, i, a, d, t[s[A]], l[3], c[A]), M = y(_, w, x, k, E, t[u[A]], h[3], f[A])) : (S = m(n, r, i, a, d, t[s[A]], l[4], c[A]), M = g(_, w, x, k, E, t[u[A]], h[4], f[A])), n = d, d = a, a = p(i, 10), i = r, r = S, _ = E, E = k, k = p(x, 10), x = w, w = M
            }
            var T = this._b + i + k | 0;
            this._b = this._c + a + E | 0, this._c = this._d + d + _ | 0, this._d = this._e + n + w | 0, this._e = this._a + r + x | 0, this._a = T
        }, d.prototype._digest = function() {
            this._block[this._blockOffset++] = 128, this._blockOffset > 56 && (this._block.fill(0, this._blockOffset, 64), this._update(), this._blockOffset = 0), this._block.fill(0, this._blockOffset, 56), this._block.writeUInt32LE(this._length[0], 56), this._block.writeUInt32LE(this._length[1], 60), this._update();
            var t = r.alloc ? r.alloc(20) : new r(20);
            return t.writeInt32LE(this._a, 0), t.writeInt32LE(this._b, 4), t.writeInt32LE(this._c, 8), t.writeInt32LE(this._d, 12), t.writeInt32LE(this._e, 16), t
        }, t.exports = d
    }, function(t, e, n) {
        (e = t.exports = function(t) {
            t = t.toLowerCase();
            var n = e[t];
            if (!n) throw new Error(t + " is not supported (we accept pull requests)");
            return new n
        }).sha = n(434), e.sha1 = n(435), e.sha224 = n(436), e.sha256 = n(197), e.sha384 = n(437), e.sha512 = n(198)
    }, function(t, e, n) {
        "use strict";
        var r = n(16);

        function i(t) {
            this.options = t, this.type = this.options.type, this.blockSize = 8, this._init(), this.buffer = new Array(this.blockSize), this.bufferOff = 0
        }
        t.exports = i, i.prototype._init = function() {}, i.prototype.update = function(t) {
            return 0 === t.length ? [] : "decrypt" === this.type ? this._updateDecrypt(t) : this._updateEncrypt(t)
        }, i.prototype._buffer = function(t, e) {
            for (var n = Math.min(this.buffer.length - this.bufferOff, t.length - e), r = 0; r < n; r++) this.buffer[this.bufferOff + r] = t[e + r];
            return this.bufferOff += n, n
        }, i.prototype._flushBuffer = function(t, e) {
            return this._update(this.buffer, 0, t, e), this.bufferOff = 0, this.blockSize
        }, i.prototype._updateEncrypt = function(t) {
            var e = 0,
                n = 0,
                r = (this.bufferOff + t.length) / this.blockSize | 0,
                i = new Array(r * this.blockSize);
            0 !== this.bufferOff && (e += this._buffer(t, e), this.bufferOff === this.buffer.length && (n += this._flushBuffer(i, n)));
            for (var a = t.length - (t.length - e) % this.blockSize; e < a; e += this.blockSize) this._update(t, e, i, n), n += this.blockSize;
            for (; e < t.length; e++, this.bufferOff++) this.buffer[this.bufferOff] = t[e];
            return i
        }, i.prototype._updateDecrypt = function(t) {
            for (var e = 0, n = 0, r = Math.ceil((this.bufferOff + t.length) / this.blockSize) - 1, i = new Array(r * this.blockSize); r > 0; r--) e += this._buffer(t, e), n += this._flushBuffer(i, n);
            return e += this._buffer(t, e), i
        }, i.prototype.final = function(t) {
            var e, n;
            return t && (e = this.update(t)), n = "encrypt" === this.type ? this._finalEncrypt() : this._finalDecrypt(), e ? e.concat(n) : n
        }, i.prototype._pad = function(t, e) {
            if (0 === e) return !1;
            for (; e < t.length;) t[e++] = 0;
            return !0
        }, i.prototype._finalEncrypt = function() {
            if (!this._pad(this.buffer, this.bufferOff)) return [];
            var t = new Array(this.blockSize);
            return this._update(this.buffer, 0, t, 0), t
        }, i.prototype._unpad = function(t) {
            return t
        }, i.prototype._finalDecrypt = function() {
            r.equal(this.bufferOff, this.blockSize, "Not enough data to decrypt");
            var t = new Array(this.blockSize);
            return this._flushBuffer(t, 0), this._unpad(t)
        }
    }, function(t, e, n) {
        var r = n(446),
            i = n(454),
            a = n(210);
        e.createCipher = e.Cipher = r.createCipher, e.createCipheriv = e.Cipheriv = r.createCipheriv, e.createDecipher = e.Decipher = i.createDecipher, e.createDecipheriv = e.Decipheriv = i.createDecipheriv, e.listCiphers = e.getCiphers = function() {
            return Object.keys(a)
        }
    }, function(t, e, n) {
        var r = {
                ECB: n(447),
                CBC: n(448),
                CFB: n(449),
                CFB8: n(450),
                CFB1: n(451),
                OFB: n(452),
                CTR: n(208),
                GCM: n(208)
            },
            i = n(210);
        for (var a in i) i[a].module = r[i[a].mode];
        t.exports = i
    }, function(t, e, n) {
        var r;

        function i(t) {
            this.rand = t
        }
        if (t.exports = function(t) {
                return r || (r = new i(null)), r.generate(t)
            }, t.exports.Rand = i, i.prototype.generate = function(t) {
                return this._rand(t)
            }, i.prototype._rand = function(t) {
                if (this.rand.getBytes) return this.rand.getBytes(t);
                for (var e = new Uint8Array(t), n = 0; n < e.length; n++) e[n] = this.rand.getByte();
                return e
            }, "object" == typeof self) self.crypto && self.crypto.getRandomValues ? i.prototype._rand = function(t) {
            var e = new Uint8Array(t);
            return self.crypto.getRandomValues(e), e
        } : self.msCrypto && self.msCrypto.getRandomValues ? i.prototype._rand = function(t) {
            var e = new Uint8Array(t);
            return self.msCrypto.getRandomValues(e), e
        } : "object" == typeof window && (i.prototype._rand = function() {
            throw new Error("Not implemented yet")
        });
        else try {
            var a = n(458);
            if ("function" != typeof a.randomBytes) throw new Error("Not supported");
            i.prototype._rand = function(t) {
                return a.randomBytes(t)
            }
        } catch (t) {}
    }, function(t, e, n) {
        (function(e) {
            var r = n(5),
                i = n(44);

            function a(t, n) {
                var i = function(t) {
                        var e = o(t);
                        return {
                            blinder: e.toRed(r.mont(t.modulus)).redPow(new r(t.publicExponent)).fromRed(),
                            unblinder: e.invm(t.modulus)
                        }
                    }(n),
                    a = n.modulus.byteLength(),
                    s = (r.mont(n.modulus), new r(t).mul(i.blinder).umod(n.modulus)),
                    u = s.toRed(r.mont(n.prime1)),
                    c = s.toRed(r.mont(n.prime2)),
                    f = n.coefficient,
                    l = n.prime1,
                    h = n.prime2,
                    d = u.redPow(n.exponent1),
                    p = c.redPow(n.exponent2);
                d = d.fromRed(), p = p.fromRed();
                var g = d.isub(p).imul(f).umod(l);
                return g.imul(h), p.iadd(g), new e(p.imul(i.unblinder).umod(n.modulus).toArray(!1, a))
            }

            function o(t) {
                for (var e = t.modulus.byteLength(), n = new r(i(e)); n.cmp(t.modulus) >= 0 || !n.umod(t.prime1) || !n.umod(t.prime2);) n = new r(i(e));
                return n
            }
            t.exports = a, a.getr = o
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        "use strict";
        var r = e;
        r.version = n(463).version, r.utils = n(17), r.rand = n(123), r.curve = n(216), r.curves = n(126), r.ec = n(474), r.eddsa = n(478)
    }, function(t, e, n) {
        "use strict";
        var r, i = e,
            a = n(127),
            o = n(216),
            s = n(17).assert;

        function u(t) {
            "short" === t.type ? this.curve = new o.short(t) : "edwards" === t.type ? this.curve = new o.edwards(t) : this.curve = new o.mont(t), this.g = this.curve.g, this.n = this.curve.n, this.hash = t.hash, s(this.g.validate(), "Invalid curve"), s(this.g.mul(this.n).isInfinity(), "Invalid curve, G*N != O")
        }

        function c(t, e) {
            Object.defineProperty(i, t, {
                configurable: !0,
                enumerable: !0,
                get: function() {
                    var n = new u(e);
                    return Object.defineProperty(i, t, {
                        configurable: !0,
                        enumerable: !0,
                        value: n
                    }), n
                }
            })
        }
        i.PresetCurve = u, c("p192", {
            type: "short",
            prime: "p192",
            p: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",
            a: "ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",
            b: "64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",
            n: "ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",
            hash: a.sha256,
            gRed: !1,
            g: ["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012", "07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]
        }), c("p224", {
            type: "short",
            prime: "p224",
            p: "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",
            a: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",
            b: "b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",
            n: "ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",
            hash: a.sha256,
            gRed: !1,
            g: ["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21", "bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]
        }), c("p256", {
            type: "short",
            prime: null,
            p: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",
            a: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",
            b: "5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",
            n: "ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",
            hash: a.sha256,
            gRed: !1,
            g: ["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296", "4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]
        }), c("p384", {
            type: "short",
            prime: null,
            p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",
            a: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",
            b: "b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",
            n: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",
            hash: a.sha384,
            gRed: !1,
            g: ["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7", "3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]
        }), c("p521", {
            type: "short",
            prime: null,
            p: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",
            a: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",
            b: "00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",
            n: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",
            hash: a.sha512,
            gRed: !1,
            g: ["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66", "00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]
        }), c("curve25519", {
            type: "mont",
            prime: "p25519",
            p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",
            a: "76d06",
            b: "1",
            n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",
            hash: a.sha256,
            gRed: !1,
            g: ["9"]
        }), c("ed25519", {
            type: "edwards",
            prime: "p25519",
            p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",
            a: "-1",
            c: "1",
            d: "52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",
            n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",
            hash: a.sha256,
            gRed: !1,
            g: ["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a", "6666666666666666666666666666666666666666666666666666666666666658"]
        });
        try {
            r = n(473)
        } catch (t) {
            r = void 0
        }
        c("secp256k1", {
            type: "short",
            prime: "k256",
            p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",
            a: "0",
            b: "7",
            n: "ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",
            h: "1",
            hash: a.sha256,
            beta: "7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",
            lambda: "5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",
            basis: [{
                a: "3086d221a7d46bcde86c90e49284eb15",
                b: "-e4437ed6010e88286f547fa90abfe4c3"
            }, {
                a: "114ca50f7a8e2f3f657c1108d9d44cfd8",
                b: "3086d221a7d46bcde86c90e49284eb15"
            }],
            gRed: !1,
            g: ["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", r]
        })
    }, function(t, e, n) {
        var r = e;
        r.utils = n(21), r.common = n(56), r.sha = n(467), r.ripemd = n(471), r.hmac = n(472), r.sha1 = r.sha.sha1, r.sha256 = r.sha.sha256, r.sha224 = r.sha.sha224, r.sha384 = r.sha.sha384, r.sha512 = r.sha.sha512, r.ripemd160 = r.ripemd.ripemd160
    }, function(t, e, n) {
        var r = n(15);
        t.exports = function(t, e) {
            var n = t.append("foreignObject").attr("width", "100000"),
                i = n.append("xhtml:div");
            i.attr("xmlns", "http://www.w3.org/1999/xhtml");
            var a = e.label;
            switch (typeof a) {
                case "function":
                    i.insert(a);
                    break;
                case "object":
                    i.insert((function() {
                        return a
                    }));
                    break;
                default:
                    i.html(a)
            }
            r.applyStyle(i, e.labelStyle), i.style("display", "inline-block"), i.style("white-space", "nowrap");
            var o = i.node().getBoundingClientRect();
            return n.attr("width", o.width).attr("height", o.height), n
        }
    }, function(t, e) {}, function(t, e, n) {
        var r = n(61),
            i = n(92),
            a = n(66),
            o = n(266),
            s = n(272),
            u = n(136),
            c = n(137),
            f = n(275),
            l = n(276),
            h = n(141),
            d = n(277),
            p = n(41),
            g = n(281),
            y = n(282),
            b = n(146),
            v = n(6),
            m = n(39),
            _ = n(286),
            w = n(14),
            x = n(288),
            k = n(27),
            E = 1,
            A = 2,
            S = 4,
            M = "[object Arguments]",
            T = "[object Function]",
            D = "[object GeneratorFunction]",
            C = "[object Object]",
            N = {};
        N[M] = N["[object Array]"] = N["[object ArrayBuffer]"] = N["[object DataView]"] = N["[object Boolean]"] = N["[object Date]"] = N["[object Float32Array]"] = N["[object Float64Array]"] = N["[object Int8Array]"] = N["[object Int16Array]"] = N["[object Int32Array]"] = N["[object Map]"] = N["[object Number]"] = N[C] = N["[object RegExp]"] = N["[object Set]"] = N["[object String]"] = N["[object Symbol]"] = N["[object Uint8Array]"] = N["[object Uint8ClampedArray]"] = N["[object Uint16Array]"] = N["[object Uint32Array]"] = !0, N["[object Error]"] = N[T] = N["[object WeakMap]"] = !1, t.exports = function t(e, n, I, L, B, O) {
            var R, P = n & E,
                F = n & A,
                q = n & S;
            if (I && (R = B ? I(e, L, B, O) : I(e)), void 0 !== R) return R;
            if (!w(e)) return e;
            var j = v(e);
            if (j) {
                if (R = g(e), !P) return c(e, R)
            } else {
                var U = p(e),
                    z = U == T || U == D;
                if (m(e)) return u(e, P);
                if (U == C || U == M || z && !B) {
                    if (R = F || z ? {} : b(e), !P) return F ? l(e, s(R, e)) : f(e, o(R, e))
                } else {
                    if (!N[U]) return B ? e : {};
                    R = y(e, U, P)
                }
            }
            O || (O = new r);
            var Y = O.get(e);
            if (Y) return Y;
            O.set(e, R), x(e) ? e.forEach((function(r) {
                R.add(t(r, n, I, r, e, O))
            })) : _(e) && e.forEach((function(r, i) {
                R.set(i, t(r, n, I, i, e, O))
            }));
            var V = q ? F ? d : h : F ? keysIn : k,
                H = j ? void 0 : V(e);
            return i(H || e, (function(r, i) {
                H && (r = e[i = r]), a(R, i, t(r, n, I, i, e, O))
            })), R
        }
    }, function(t, e, n) {
        (function(e) {
            var n = "object" == typeof e && e && e.Object === Object && e;
            t.exports = n
        }).call(this, n(12))
    }, function(t, e) {
        var n = Function.prototype.toString;
        t.exports = function(t) {
            if (null != t) {
                try {
                    return n.call(t)
                } catch (t) {}
                try {
                    return t + ""
                } catch (t) {}
            }
            return ""
        }
    }, function(t, e, n) {
        var r = n(32),
            i = function() {
                try {
                    var t = r(Object, "defineProperty");
                    return t({}, "", {}), t
                } catch (t) {}
            }();
        t.exports = i
    }, function(t, e, n) {
        var r = n(267),
            i = n(50),
            a = n(6),
            o = n(39),
            s = n(68),
            u = n(51),
            c = Object.prototype.hasOwnProperty;
        t.exports = function(t, e) {
            var n = a(t),
                f = !n && i(t),
                l = !n && !f && o(t),
                h = !n && !f && !l && u(t),
                d = n || f || l || h,
                p = d ? r(t.length, String) : [],
                g = p.length;
            for (var y in t) !e && !c.call(t, y) || d && ("length" == y || l && ("offset" == y || "parent" == y) || h && ("buffer" == y || "byteLength" == y || "byteOffset" == y) || s(y, g)) || p.push(y);
            return p
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return function(n) {
                return t(e(n))
            }
        }
    }, function(t, e, n) {
        (function(t) {
            var r = n(18),
                i = e && !e.nodeType && e,
                a = i && "object" == typeof t && t && !t.nodeType && t,
                o = a && a.exports === i ? r.Buffer : void 0,
                s = o ? o.allocUnsafe : void 0;
            t.exports = function(t, e) {
                if (e) return t.slice();
                var n = t.length,
                    r = s ? s(n) : new t.constructor(n);
                return t.copy(r), r
            }
        }).call(this, n(9)(t))
    }, function(t, e) {
        t.exports = function(t, e) {
            var n = -1,
                r = t.length;
            for (e || (e = Array(r)); ++n < r;) e[n] = t[n];
            return e
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = -1, r = null == t ? 0 : t.length, i = 0, a = []; ++n < r;) {
                var o = t[n];
                e(o, n, t) && (a[i++] = o)
            }
            return a
        }
    }, function(t, e) {
        t.exports = function() {
            return []
        }
    }, function(t, e, n) {
        var r = n(97),
            i = n(71),
            a = n(96),
            o = n(139),
            s = Object.getOwnPropertySymbols ? function(t) {
                for (var e = []; t;) r(e, a(t)), t = i(t);
                return e
            } : o;
        t.exports = s
    }, function(t, e, n) {
        var r = n(142),
            i = n(96),
            a = n(27);
        t.exports = function(t) {
            return r(t, a, i)
        }
    }, function(t, e, n) {
        var r = n(97),
            i = n(6);
        t.exports = function(t, e, n) {
            var a = e(t);
            return i(t) ? a : r(a, n(t))
        }
    }, function(t, e, n) {
        var r = n(32)(n(18), "Set");
        t.exports = r
    }, function(t, e, n) {
        var r = n(18).Uint8Array;
        t.exports = r
    }, function(t, e, n) {
        var r = n(98);
        t.exports = function(t, e) {
            var n = e ? r(t.buffer) : t.buffer;
            return new t.constructor(n, t.byteOffset, t.length)
        }
    }, function(t, e, n) {
        var r = n(147),
            i = n(71),
            a = n(70);
        t.exports = function(t) {
            return "function" != typeof t.constructor || a(t) ? {} : r(i(t))
        }
    }, function(t, e, n) {
        var r = n(14),
            i = Object.create,
            a = function() {
                function t() {}
                return function(e) {
                    if (!r(e)) return {};
                    if (i) return i(e);
                    t.prototype = e;
                    var n = new t;
                    return t.prototype = void 0, n
                }
            }();
        t.exports = a
    }, function(t, e, n) {
        var r = n(92),
            i = n(72),
            a = n(149),
            o = n(6);
        t.exports = function(t, e) {
            return (o(t) ? r : i)(t, a(e))
        }
    }, function(t, e, n) {
        var r = n(34);
        t.exports = function(t) {
            return "function" == typeof t ? t : r
        }
    }, function(t, e, n) {
        var r = n(138),
            i = n(292),
            a = n(24),
            o = n(6);
        t.exports = function(t, e) {
            return (o(t) ? r : i)(t, a(e, 3))
        }
    }, function(t, e, n) {
        var r = n(295),
            i = n(20);
        t.exports = function t(e, n, a, o, s) {
            return e === n || (null == e || null == n || !i(e) && !i(n) ? e != e && n != n : r(e, n, a, o, t, s))
        }
    }, function(t, e, n) {
        var r = n(153),
            i = n(298),
            a = n(154),
            o = 1,
            s = 2;
        t.exports = function(t, e, n, u, c, f) {
            var l = n & o,
                h = t.length,
                d = e.length;
            if (h != d && !(l && d > h)) return !1;
            var p = f.get(t);
            if (p && f.get(e)) return p == e;
            var g = -1,
                y = !0,
                b = n & s ? new r : void 0;
            for (f.set(t, e), f.set(e, t); ++g < h;) {
                var v = t[g],
                    m = e[g];
                if (u) var _ = l ? u(m, v, g, e, t, f) : u(v, m, g, t, e, f);
                if (void 0 !== _) {
                    if (_) continue;
                    y = !1;
                    break
                }
                if (b) {
                    if (!i(e, (function(t, e) {
                            if (!a(b, e) && (v === t || c(v, t, n, u, f))) return b.push(e)
                        }))) {
                        y = !1;
                        break
                    }
                } else if (v !== m && !c(v, m, n, u, f)) {
                    y = !1;
                    break
                }
            }
            return f.delete(t), f.delete(e), y
        }
    }, function(t, e, n) {
        var r = n(91),
            i = n(296),
            a = n(297);

        function o(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.__data__ = new r; ++e < n;) this.add(t[e])
        }
        o.prototype.add = o.prototype.push = i, o.prototype.has = a, t.exports = o
    }, function(t, e) {
        t.exports = function(t, e) {
            return t.has(e)
        }
    }, function(t, e, n) {
        var r = n(14);
        t.exports = function(t) {
            return t == t && !r(t)
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return function(n) {
                return null != n && (n[t] === e && (void 0 !== e || t in Object(n)))
            }
        }
    }, function(t, e, n) {
        var r = n(308);
        t.exports = function(t) {
            return null == t ? "" : r(t)
        }
    }, function(t, e, n) {
        var r = n(309),
            i = n(159);
        t.exports = function(t, e) {
            return null != t && i(t, e, r)
        }
    }, function(t, e, n) {
        var r = n(73),
            i = n(50),
            a = n(6),
            o = n(68),
            s = n(93),
            u = n(52);
        t.exports = function(t, e, n) {
            for (var c = -1, f = (e = r(e, t)).length, l = !1; ++c < f;) {
                var h = u(e[c]);
                if (!(l = null != t && n(t, h))) break;
                t = t[h]
            }
            return l || ++c != f ? l : !!(f = null == t ? 0 : t.length) && s(f) && o(h, f) && (a(t) || i(t))
        }
    }, function(t, e) {
        t.exports = function(t) {
            return function(e) {
                return null == e ? void 0 : e[t]
            }
        }
    }, function(t, e) {
        t.exports = function(t) {
            return void 0 === t
        }
    }, function(t, e, n) {
        var r = n(74),
            i = n(24),
            a = n(163),
            o = n(6);
        t.exports = function(t, e) {
            return (o(t) ? r : a)(t, i(e, 3))
        }
    }, function(t, e, n) {
        var r = n(72),
            i = n(23);
        t.exports = function(t, e) {
            var n = -1,
                a = i(t) ? Array(t.length) : [];
            return r(t, (function(t, r, i) {
                a[++n] = e(t, r, i)
            })), a
        }
    }, function(t, e, n) {
        var r = n(314),
            i = n(72),
            a = n(24),
            o = n(315),
            s = n(6);
        t.exports = function(t, e, n) {
            var u = s(t) ? r : o,
                c = arguments.length < 3;
            return u(t, a(e, 4), n, c, i)
        }
    }, function(t, e, n) {
        var r = n(325),
            i = Math.max;
        t.exports = function(t, e, n) {
            return e = i(void 0 === e ? t.length - 1 : e, 0),
                function() {
                    for (var a = arguments, o = -1, s = i(a.length - e, 0), u = Array(s); ++o < s;) u[o] = a[e + o];
                    o = -1;
                    for (var c = Array(e + 1); ++o < e;) c[o] = a[o];
                    return c[e] = n(u), r(t, this, c)
                }
        }
    }, function(t, e, n) {
        var r = n(326),
            i = n(327)(r);
        t.exports = i
    }, function(t, e) {
        t.exports = function(t, e, n, r) {
            for (var i = t.length, a = n + (r ? 1 : -1); r ? a-- : ++a < i;)
                if (e(t[a], a, t)) return a;
            return -1
        }
    }, function(t, e, n) {
        var r = n(23),
            i = n(20);
        t.exports = function(t) {
            return i(t) && r(t)
        }
    }, function(t, e, n) {
        var r = n(336),
            i = n(27);
        t.exports = function(t) {
            return null == t ? [] : r(t, i(t))
        }
    }, function(t, e, n) {
        var r = n(13),
            i = n(171);
        t.exports = function(t, e, n, r) {
            return function(t, e, n, r) {
                var a, o, s = {},
                    u = new i,
                    c = function(t) {
                        var e = t.v !== a ? t.v : t.w,
                            r = s[e],
                            i = n(t),
                            c = o.distance + i;
                        if (i < 0) throw new Error("dijkstra does not allow negative edge weights. Bad edge: " + t + " Weight: " + i);
                        c < r.distance && (r.distance = c, r.predecessor = a, u.decrease(e, c))
                    };
                t.nodes().forEach((function(t) {
                    var n = t === e ? 0 : Number.POSITIVE_INFINITY;
                    s[t] = {
                        distance: n
                    }, u.add(t, n)
                }));
                for (; u.size() > 0 && (a = u.removeMin(), (o = s[a]).distance !== Number.POSITIVE_INFINITY);) r(a).forEach(c);
                return s
            }(t, String(e), n || a, r || function(e) {
                return t.outEdges(e)
            })
        };
        var a = r.constant(1)
    }, function(t, e, n) {
        var r = n(13);

        function i() {
            this._arr = [], this._keyIndices = {}
        }
        t.exports = i, i.prototype.size = function() {
            return this._arr.length
        }, i.prototype.keys = function() {
            return this._arr.map((function(t) {
                return t.key
            }))
        }, i.prototype.has = function(t) {
            return r.has(this._keyIndices, t)
        }, i.prototype.priority = function(t) {
            var e = this._keyIndices[t];
            if (void 0 !== e) return this._arr[e].priority
        }, i.prototype.min = function() {
            if (0 === this.size()) throw new Error("Queue underflow");
            return this._arr[0].key
        }, i.prototype.add = function(t, e) {
            var n = this._keyIndices;
            if (t = String(t), !r.has(n, t)) {
                var i = this._arr,
                    a = i.length;
                return n[t] = a, i.push({
                    key: t,
                    priority: e
                }), this._decrease(a), !0
            }
            return !1
        }, i.prototype.removeMin = function() {
            this._swap(0, this._arr.length - 1);
            var t = this._arr.pop();
            return delete this._keyIndices[t.key], this._heapify(0), t.key
        }, i.prototype.decrease = function(t, e) {
            var n = this._keyIndices[t];
            if (e > this._arr[n].priority) throw new Error("New priority is greater than current priority. Key: " + t + " Old: " + this._arr[n].priority + " New: " + e);
            this._arr[n].priority = e, this._decrease(n)
        }, i.prototype._heapify = function(t) {
            var e = this._arr,
                n = 2 * t,
                r = n + 1,
                i = t;
            n < e.length && (i = e[n].priority < e[i].priority ? n : i, r < e.length && (i = e[r].priority < e[i].priority ? r : i), i !== t && (this._swap(t, i), this._heapify(i)))
        }, i.prototype._decrease = function(t) {
            for (var e, n = this._arr, r = n[t].priority; 0 !== t && !(n[e = t >> 1].priority < r);) this._swap(t, e), t = e
        }, i.prototype._swap = function(t, e) {
            var n = this._arr,
                r = this._keyIndices,
                i = n[t],
                a = n[e];
            n[t] = a, n[e] = i, r[a.key] = t, r[i.key] = e
        }
    }, function(t, e, n) {
        var r = n(13);
        t.exports = function(t) {
            var e = 0,
                n = [],
                i = {},
                a = [];
            return t.nodes().forEach((function(o) {
                r.has(i, o) || function o(s) {
                    var u = i[s] = {
                        onStack: !0,
                        lowlink: e,
                        index: e++
                    };
                    if (n.push(s), t.successors(s).forEach((function(t) {
                            r.has(i, t) ? i[t].onStack && (u.lowlink = Math.min(u.lowlink, i[t].index)) : (o(t), u.lowlink = Math.min(u.lowlink, i[t].lowlink))
                        })), u.lowlink === u.index) {
                        var c, f = [];
                        do {
                            c = n.pop(), i[c].onStack = !1, f.push(c)
                        } while (s !== c);
                        a.push(f)
                    }
                }(o)
            })), a
        }
    }, function(t, e, n) {
        var r = n(13);

        function i(t) {
            var e = {},
                n = {},
                i = [];
            if (r.each(t.sinks(), (function o(s) {
                    if (r.has(n, s)) throw new a;
                    r.has(e, s) || (n[s] = !0, e[s] = !0, r.each(t.predecessors(s), o), delete n[s], i.push(s))
                })), r.size(e) !== t.nodeCount()) throw new a;
            return i
        }

        function a() {}
        t.exports = i, i.CycleException = a, a.prototype = new Error
    }, function(t, e, n) {
        var r = n(13);
        t.exports = function(t, e, n) {
            r.isArray(e) || (e = [e]);
            var i = (t.isDirected() ? t.successors : t.neighbors).bind(t),
                a = [],
                o = {};
            return r.each(e, (function(e) {
                if (!t.hasNode(e)) throw new Error("Graph does not have node: " + e);
                ! function t(e, n, i, a, o, s) {
                    r.has(a, n) || (a[n] = !0, i || s.push(n), r.each(o(n), (function(n) {
                        t(e, n, i, a, o, s)
                    })), i && s.push(n))
                }(t, e, "post" === n, o, i, a)
            })), a
        }
    }, function(t, e, n) {
        var r;
        try {
            r = n(59)
        } catch (t) {}
        r || (r = window.dagre), t.exports = r
    }, function(t, e, n) {
        var r = n(75),
            i = n(36),
            a = n(76),
            o = n(40),
            s = Object.prototype,
            u = s.hasOwnProperty,
            c = r((function(t, e) {
                t = Object(t);
                var n = -1,
                    r = e.length,
                    c = r > 2 ? e[2] : void 0;
                for (c && a(e[0], e[1], c) && (r = 1); ++n < r;)
                    for (var f = e[n], l = o(f), h = -1, d = l.length; ++h < d;) {
                        var p = l[h],
                            g = t[p];
                        (void 0 === g || i(g, s[p]) && !u.call(t, p)) && (t[p] = f[p])
                    }
                return t
            }));
        t.exports = c
    }, function(t, e, n) {
        var r = n(355),
            i = 1 / 0,
            a = 17976931348623157e292;
        t.exports = function(t) {
            return t ? (t = r(t)) === i || t === -i ? (t < 0 ? -1 : 1) * a : t == t ? t : 0 : 0 === t ? t : 0
        }
    }, function(t, e, n) {
        var r = n(107);
        t.exports = function(t) {
            return (null == t ? 0 : t.length) ? r(t, 1) : []
        }
    }, function(t, e, n) {
        var r = n(67),
            i = n(36);
        t.exports = function(t, e, n) {
            (void 0 === n || i(t[e], n)) && (void 0 !== n || e in t) || r(t, e, n)
        }
    }, function(t, e, n) {
        var r = n(33),
            i = n(71),
            a = n(20),
            o = "[object Object]",
            s = Function.prototype,
            u = Object.prototype,
            c = s.toString,
            f = u.hasOwnProperty,
            l = c.call(Object);
        t.exports = function(t) {
            if (!a(t) || r(t) != o) return !1;
            var e = i(t);
            if (null === e) return !0;
            var n = f.call(e, "constructor") && e.constructor;
            return "function" == typeof n && n instanceof n && c.call(n) == l
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            if (("constructor" !== e || "function" != typeof t[e]) && "__proto__" != e) return t[e]
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return t < e
        }
    }, function(t, e, n) {
        var r = n(369),
            i = n(372)((function(t, e) {
                return null == t ? {} : r(t, e)
            }));
        t.exports = i
    }, function(t, e, n) {
        var r = n(373)();
        t.exports = r
    }, function(t, e, n) {
        var r = n(157),
            i = 0;
        t.exports = function(t) {
            var e = ++i;
            return r(t) + e
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(19).Graph,
            a = n(77).slack;

        function o(t, e) {
            return r.forEach(t.nodes(), (function n(i) {
                r.forEach(e.nodeEdges(i), (function(r) {
                    var o = r.v,
                        s = i === o ? r.w : o;
                    t.hasNode(s) || a(e, r) || (t.setNode(s, {}), t.setEdge(i, s, {}), n(s))
                }))
            })), t.nodeCount()
        }

        function s(t, e) {
            return r.minBy(e.edges(), (function(n) {
                if (t.hasNode(n.v) !== t.hasNode(n.w)) return a(e, n)
            }))
        }

        function u(t, e, n) {
            r.forEach(t.nodes(), (function(t) {
                e.node(t).rank += n
            }))
        }
        t.exports = function(t) {
            var e, n, r = new i({
                    directed: !1
                }),
                c = t.nodes()[0],
                f = t.nodeCount();
            r.setNode(c, {});
            for (; o(r, t) < f;) e = s(r, t), n = r.hasNode(e.v) ? a(t, e) : -a(t, e), u(r, t, n);
            return r
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return t.intersect(e)
        }
    }, function(t, e, n) {
        var r = n(109);
        t.exports = function(t, e, n) {
            return r(t, e, e, n)
        }
    }, function(t, e, n) {
        var r = n(406);
        t.exports = function(t, e, n) {
            var i = t.x,
                a = t.y,
                o = [],
                s = Number.POSITIVE_INFINITY,
                u = Number.POSITIVE_INFINITY;
            e.forEach((function(t) {
                s = Math.min(s, t.x), u = Math.min(u, t.y)
            }));
            for (var c = i - t.width / 2 - s, f = a - t.height / 2 - u, l = 0; l < e.length; l++) {
                var h = e[l],
                    d = e[l < e.length - 1 ? l + 1 : 0],
                    p = r(t, n, {
                        x: c + h.x,
                        y: f + h.y
                    }, {
                        x: c + d.x,
                        y: f + d.y
                    });
                p && o.push(p)
            }
            if (!o.length) return console.log("NO INTERSECTION FOUND, RETURN NODE CENTER", t), t;
            o.length > 1 && o.sort((function(t, e) {
                var r = t.x - n.x,
                    i = t.y - n.y,
                    a = Math.sqrt(r * r + i * i),
                    o = e.x - n.x,
                    s = e.y - n.y,
                    u = Math.sqrt(o * o + s * s);
                return a < u ? -1 : a === u ? 0 : 1
            }));
            return o[0]
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            var n, r, i = t.x,
                a = t.y,
                o = e.x - i,
                s = e.y - a,
                u = t.width / 2,
                c = t.height / 2;
            Math.abs(s) * u > Math.abs(o) * c ? (s < 0 && (c = -c), n = 0 === s ? 0 : c * o / s, r = c) : (o < 0 && (u = -u), n = u, r = 0 === o ? 0 : u * s / o);
            return {
                x: i + n,
                y: a + r
            }
        }
    }, function(t, e) {
        var n = {}.toString;
        t.exports = Array.isArray || function(t) {
            return "[object Array]" == n.call(t)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(3).Buffer,
            i = n(112).Transform;

        function a(t) {
            i.call(this), this._block = r.allocUnsafe(t), this._blockSize = t, this._blockOffset = 0, this._length = [0, 0, 0, 0], this._finalized = !1
        }
        n(2)(a, i), a.prototype._transform = function(t, e, n) {
            var r = null;
            try {
                this.update(t, e)
            } catch (t) {
                r = t
            }
            n(r)
        }, a.prototype._flush = function(t) {
            var e = null;
            try {
                this.push(this.digest())
            } catch (t) {
                e = t
            }
            t(e)
        }, a.prototype.update = function(t, e) {
            if (function(t, e) {
                    if (!r.isBuffer(t) && "string" != typeof t) throw new TypeError(e + " must be a string or a buffer")
                }(t, "Data"), this._finalized) throw new Error("Digest already called");
            r.isBuffer(t) || (t = r.from(t, e));
            for (var n = this._block, i = 0; this._blockOffset + t.length - i >= this._blockSize;) {
                for (var a = this._blockOffset; a < this._blockSize;) n[a++] = t[i++];
                this._update(), this._blockOffset = 0
            }
            for (; i < t.length;) n[this._blockOffset++] = t[i++];
            for (var o = 0, s = 8 * t.length; s > 0; ++o) this._length[o] += s, (s = this._length[o] / 4294967296 | 0) > 0 && (this._length[o] -= 4294967296 * s);
            return this
        }, a.prototype._update = function() {
            throw new Error("_update is not implemented")
        }, a.prototype.digest = function(t) {
            if (this._finalized) throw new Error("Digest already called");
            this._finalized = !0;
            var e = this._digest();
            void 0 !== t && (e = e.toString(t)), this._block.fill(0), this._blockOffset = 0;
            for (var n = 0; n < 4; ++n) this._length[n] = 0;
            return e
        }, a.prototype._digest = function() {
            throw new Error("_digest is not implemented")
        }, t.exports = a
    }, function(t, e, n) {
        "use strict";
        (function(e, r) {
            var i = n(78);
            t.exports = m;
            var a, o = n(191);
            m.ReadableState = v;
            n(113).EventEmitter;
            var s = function(t, e) {
                    return t.listeners(e).length
                },
                u = n(194),
                c = n(115).Buffer,
                f = e.Uint8Array || function() {};
            var l = n(54);
            l.inherits = n(2);
            var h = n(423),
                d = void 0;
            d = h && h.debuglog ? h.debuglog("stream") : function() {};
            var p, g = n(424),
                y = n(195);
            l.inherits(m, u);
            var b = ["error", "close", "destroy", "pause", "resume"];

            function v(t, e) {
                t = t || {};
                var r = e instanceof(a = a || n(35));
                this.objectMode = !!t.objectMode, r && (this.objectMode = this.objectMode || !!t.readableObjectMode);
                var i = t.highWaterMark,
                    o = t.readableHighWaterMark,
                    s = this.objectMode ? 16 : 16384;
                this.highWaterMark = i || 0 === i ? i : r && (o || 0 === o) ? o : s, this.highWaterMark = Math.floor(this.highWaterMark), this.buffer = new g, this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = !1, this.endEmitted = !1, this.reading = !1, this.sync = !0, this.needReadable = !1, this.emittedReadable = !1, this.readableListening = !1, this.resumeScheduled = !1, this.destroyed = !1, this.defaultEncoding = t.defaultEncoding || "utf8", this.awaitDrain = 0, this.readingMore = !1, this.decoder = null, this.encoding = null, t.encoding && (p || (p = n(117).StringDecoder), this.decoder = new p(t.encoding), this.encoding = t.encoding)
            }

            function m(t) {
                if (a = a || n(35), !(this instanceof m)) return new m(t);
                this._readableState = new v(t, this), this.readable = !0, t && ("function" == typeof t.read && (this._read = t.read), "function" == typeof t.destroy && (this._destroy = t.destroy)), u.call(this)
            }

            function _(t, e, n, r, i) {
                var a, o = t._readableState;
                null === e ? (o.reading = !1, function(t, e) {
                    if (e.ended) return;
                    if (e.decoder) {
                        var n = e.decoder.end();
                        n && n.length && (e.buffer.push(n), e.length += e.objectMode ? 1 : n.length)
                    }
                    e.ended = !0, E(t)
                }(t, o)) : (i || (a = function(t, e) {
                    var n;
                    r = e, c.isBuffer(r) || r instanceof f || "string" == typeof e || void 0 === e || t.objectMode || (n = new TypeError("Invalid non-string/buffer chunk"));
                    var r;
                    return n
                }(o, e)), a ? t.emit("error", a) : o.objectMode || e && e.length > 0 ? ("string" == typeof e || o.objectMode || Object.getPrototypeOf(e) === c.prototype || (e = function(t) {
                    return c.from(t)
                }(e)), r ? o.endEmitted ? t.emit("error", new Error("stream.unshift() after end event")) : w(t, o, e, !0) : o.ended ? t.emit("error", new Error("stream.push() after EOF")) : (o.reading = !1, o.decoder && !n ? (e = o.decoder.write(e), o.objectMode || 0 !== e.length ? w(t, o, e, !1) : S(t, o)) : w(t, o, e, !1))) : r || (o.reading = !1));
                return function(t) {
                    return !t.ended && (t.needReadable || t.length < t.highWaterMark || 0 === t.length)
                }(o)
            }

            function w(t, e, n, r) {
                e.flowing && 0 === e.length && !e.sync ? (t.emit("data", n), t.read(0)) : (e.length += e.objectMode ? 1 : n.length, r ? e.buffer.unshift(n) : e.buffer.push(n), e.needReadable && E(t)), S(t, e)
            }
            Object.defineProperty(m.prototype, "destroyed", {
                get: function() {
                    return void 0 !== this._readableState && this._readableState.destroyed
                },
                set: function(t) {
                    this._readableState && (this._readableState.destroyed = t)
                }
            }), m.prototype.destroy = y.destroy, m.prototype._undestroy = y.undestroy, m.prototype._destroy = function(t, e) {
                this.push(null), e(t)
            }, m.prototype.push = function(t, e) {
                var n, r = this._readableState;
                return r.objectMode ? n = !0 : "string" == typeof t && ((e = e || r.defaultEncoding) !== r.encoding && (t = c.from(t, e), e = ""), n = !0), _(this, t, e, !1, n)
            }, m.prototype.unshift = function(t) {
                return _(this, t, null, !0, !1)
            }, m.prototype.isPaused = function() {
                return !1 === this._readableState.flowing
            }, m.prototype.setEncoding = function(t) {
                return p || (p = n(117).StringDecoder), this._readableState.decoder = new p(t), this._readableState.encoding = t, this
            };
            var x = 8388608;

            function k(t, e) {
                return t <= 0 || 0 === e.length && e.ended ? 0 : e.objectMode ? 1 : t != t ? e.flowing && e.length ? e.buffer.head.data.length : e.length : (t > e.highWaterMark && (e.highWaterMark = function(t) {
                    return t >= x ? t = x : (t--, t |= t >>> 1, t |= t >>> 2, t |= t >>> 4, t |= t >>> 8, t |= t >>> 16, t++), t
                }(t)), t <= e.length ? t : e.ended ? e.length : (e.needReadable = !0, 0))
            }

            function E(t) {
                var e = t._readableState;
                e.needReadable = !1, e.emittedReadable || (d("emitReadable", e.flowing), e.emittedReadable = !0, e.sync ? i.nextTick(A, t) : A(t))
            }

            function A(t) {
                d("emit readable"), t.emit("readable"), C(t)
            }

            function S(t, e) {
                e.readingMore || (e.readingMore = !0, i.nextTick(M, t, e))
            }

            function M(t, e) {
                for (var n = e.length; !e.reading && !e.flowing && !e.ended && e.length < e.highWaterMark && (d("maybeReadMore read 0"), t.read(0), n !== e.length);) n = e.length;
                e.readingMore = !1
            }

            function T(t) {
                d("readable nexttick read 0"), t.read(0)
            }

            function D(t, e) {
                e.reading || (d("resume read 0"), t.read(0)), e.resumeScheduled = !1, e.awaitDrain = 0, t.emit("resume"), C(t), e.flowing && !e.reading && t.read(0)
            }

            function C(t) {
                var e = t._readableState;
                for (d("flow", e.flowing); e.flowing && null !== t.read(););
            }

            function N(t, e) {
                return 0 === e.length ? null : (e.objectMode ? n = e.buffer.shift() : !t || t >= e.length ? (n = e.decoder ? e.buffer.join("") : 1 === e.buffer.length ? e.buffer.head.data : e.buffer.concat(e.length), e.buffer.clear()) : n = function(t, e, n) {
                    var r;
                    t < e.head.data.length ? (r = e.head.data.slice(0, t), e.head.data = e.head.data.slice(t)) : r = t === e.head.data.length ? e.shift() : n ? function(t, e) {
                        var n = e.head,
                            r = 1,
                            i = n.data;
                        t -= i.length;
                        for (; n = n.next;) {
                            var a = n.data,
                                o = t > a.length ? a.length : t;
                            if (o === a.length ? i += a : i += a.slice(0, t), 0 === (t -= o)) {
                                o === a.length ? (++r, n.next ? e.head = n.next : e.head = e.tail = null) : (e.head = n, n.data = a.slice(o));
                                break
                            }++r
                        }
                        return e.length -= r, i
                    }(t, e) : function(t, e) {
                        var n = c.allocUnsafe(t),
                            r = e.head,
                            i = 1;
                        r.data.copy(n), t -= r.data.length;
                        for (; r = r.next;) {
                            var a = r.data,
                                o = t > a.length ? a.length : t;
                            if (a.copy(n, n.length - t, 0, o), 0 === (t -= o)) {
                                o === a.length ? (++i, r.next ? e.head = r.next : e.head = e.tail = null) : (e.head = r, r.data = a.slice(o));
                                break
                            }++i
                        }
                        return e.length -= i, n
                    }(t, e);
                    return r
                }(t, e.buffer, e.decoder), n);
                var n
            }

            function I(t) {
                var e = t._readableState;
                if (e.length > 0) throw new Error('"endReadable()" called on non-empty stream');
                e.endEmitted || (e.ended = !0, i.nextTick(L, e, t))
            }

            function L(t, e) {
                t.endEmitted || 0 !== t.length || (t.endEmitted = !0, e.readable = !1, e.emit("end"))
            }

            function B(t, e) {
                for (var n = 0, r = t.length; n < r; n++)
                    if (t[n] === e) return n;
                return -1
            }
            m.prototype.read = function(t) {
                d("read", t), t = parseInt(t, 10);
                var e = this._readableState,
                    n = t;
                if (0 !== t && (e.emittedReadable = !1), 0 === t && e.needReadable && (e.length >= e.highWaterMark || e.ended)) return d("read: emitReadable", e.length, e.ended), 0 === e.length && e.ended ? I(this) : E(this), null;
                if (0 === (t = k(t, e)) && e.ended) return 0 === e.length && I(this), null;
                var r, i = e.needReadable;
                return d("need readable", i), (0 === e.length || e.length - t < e.highWaterMark) && d("length less than watermark", i = !0), e.ended || e.reading ? d("reading or ended", i = !1) : i && (d("do read"), e.reading = !0, e.sync = !0, 0 === e.length && (e.needReadable = !0), this._read(e.highWaterMark), e.sync = !1, e.reading || (t = k(n, e))), null === (r = t > 0 ? N(t, e) : null) ? (e.needReadable = !0, t = 0) : e.length -= t, 0 === e.length && (e.ended || (e.needReadable = !0), n !== t && e.ended && I(this)), null !== r && this.emit("data", r), r
            }, m.prototype._read = function(t) {
                this.emit("error", new Error("_read() is not implemented"))
            }, m.prototype.pipe = function(t, e) {
                var n = this,
                    a = this._readableState;
                switch (a.pipesCount) {
                    case 0:
                        a.pipes = t;
                        break;
                    case 1:
                        a.pipes = [a.pipes, t];
                        break;
                    default:
                        a.pipes.push(t)
                }
                a.pipesCount += 1, d("pipe count=%d opts=%j", a.pipesCount, e);
                var u = (!e || !1 !== e.end) && t !== r.stdout && t !== r.stderr ? f : m;

                function c(e, r) {
                    d("onunpipe"), e === n && r && !1 === r.hasUnpiped && (r.hasUnpiped = !0, d("cleanup"), t.removeListener("close", b), t.removeListener("finish", v), t.removeListener("drain", l), t.removeListener("error", y), t.removeListener("unpipe", c), n.removeListener("end", f), n.removeListener("end", m), n.removeListener("data", g), h = !0, !a.awaitDrain || t._writableState && !t._writableState.needDrain || l())
                }

                function f() {
                    d("onend"), t.end()
                }
                a.endEmitted ? i.nextTick(u) : n.once("end", u), t.on("unpipe", c);
                var l = function(t) {
                    return function() {
                        var e = t._readableState;
                        d("pipeOnDrain", e.awaitDrain), e.awaitDrain && e.awaitDrain--, 0 === e.awaitDrain && s(t, "data") && (e.flowing = !0, C(t))
                    }
                }(n);
                t.on("drain", l);
                var h = !1;
                var p = !1;

                function g(e) {
                    d("ondata"), p = !1, !1 !== t.write(e) || p || ((1 === a.pipesCount && a.pipes === t || a.pipesCount > 1 && -1 !== B(a.pipes, t)) && !h && (d("false write response, pause", n._readableState.awaitDrain), n._readableState.awaitDrain++, p = !0), n.pause())
                }

                function y(e) {
                    d("onerror", e), m(), t.removeListener("error", y), 0 === s(t, "error") && t.emit("error", e)
                }

                function b() {
                    t.removeListener("finish", v), m()
                }

                function v() {
                    d("onfinish"), t.removeListener("close", b), m()
                }

                function m() {
                    d("unpipe"), n.unpipe(t)
                }
                return n.on("data", g),
                    function(t, e, n) {
                        if ("function" == typeof t.prependListener) return t.prependListener(e, n);
                        t._events && t._events[e] ? o(t._events[e]) ? t._events[e].unshift(n) : t._events[e] = [n, t._events[e]] : t.on(e, n)
                    }(t, "error", y), t.once("close", b), t.once("finish", v), t.emit("pipe", n), a.flowing || (d("pipe resume"), n.resume()), t
            }, m.prototype.unpipe = function(t) {
                var e = this._readableState,
                    n = {
                        hasUnpiped: !1
                    };
                if (0 === e.pipesCount) return this;
                if (1 === e.pipesCount) return t && t !== e.pipes ? this : (t || (t = e.pipes), e.pipes = null, e.pipesCount = 0, e.flowing = !1, t && t.emit("unpipe", this, n), this);
                if (!t) {
                    var r = e.pipes,
                        i = e.pipesCount;
                    e.pipes = null, e.pipesCount = 0, e.flowing = !1;
                    for (var a = 0; a < i; a++) r[a].emit("unpipe", this, n);
                    return this
                }
                var o = B(e.pipes, t);
                return -1 === o ? this : (e.pipes.splice(o, 1), e.pipesCount -= 1, 1 === e.pipesCount && (e.pipes = e.pipes[0]), t.emit("unpipe", this, n), this)
            }, m.prototype.on = function(t, e) {
                var n = u.prototype.on.call(this, t, e);
                if ("data" === t) !1 !== this._readableState.flowing && this.resume();
                else if ("readable" === t) {
                    var r = this._readableState;
                    r.endEmitted || r.readableListening || (r.readableListening = r.needReadable = !0, r.emittedReadable = !1, r.reading ? r.length && E(this) : i.nextTick(T, this))
                }
                return n
            }, m.prototype.addListener = m.prototype.on, m.prototype.resume = function() {
                var t = this._readableState;
                return t.flowing || (d("resume"), t.flowing = !0, function(t, e) {
                    e.resumeScheduled || (e.resumeScheduled = !0, i.nextTick(D, t, e))
                }(this, t)), this
            }, m.prototype.pause = function() {
                return d("call pause flowing=%j", this._readableState.flowing), !1 !== this._readableState.flowing && (d("pause"), this._readableState.flowing = !1, this.emit("pause")), this
            }, m.prototype.wrap = function(t) {
                var e = this,
                    n = this._readableState,
                    r = !1;
                for (var i in t.on("end", (function() {
                        if (d("wrapped end"), n.decoder && !n.ended) {
                            var t = n.decoder.end();
                            t && t.length && e.push(t)
                        }
                        e.push(null)
                    })), t.on("data", (function(i) {
                        (d("wrapped data"), n.decoder && (i = n.decoder.write(i)), n.objectMode && null == i) || (n.objectMode || i && i.length) && (e.push(i) || (r = !0, t.pause()))
                    })), t) void 0 === this[i] && "function" == typeof t[i] && (this[i] = function(e) {
                    return function() {
                        return t[e].apply(t, arguments)
                    }
                }(i));
                for (var a = 0; a < b.length; a++) t.on(b[a], this.emit.bind(this, b[a]));
                return this._read = function(e) {
                    d("wrapped _read", e), r && (r = !1, t.resume())
                }, this
            }, Object.defineProperty(m.prototype, "readableHighWaterMark", {
                enumerable: !1,
                get: function() {
                    return this._readableState.highWaterMark
                }
            }), m._fromList = N
        }).call(this, n(12), n(7))
    }, function(t, e, n) {
        t.exports = n(113).EventEmitter
    }, function(t, e, n) {
        "use strict";
        var r = n(78);

        function i(t, e) {
            t.emit("error", e)
        }
        t.exports = {
            destroy: function(t, e) {
                var n = this,
                    a = this._readableState && this._readableState.destroyed,
                    o = this._writableState && this._writableState.destroyed;
                return a || o ? (e ? e(t) : !t || this._writableState && this._writableState.errorEmitted || r.nextTick(i, this, t), this) : (this._readableState && (this._readableState.destroyed = !0), this._writableState && (this._writableState.destroyed = !0), this._destroy(t || null, (function(t) {
                    !e && t ? (r.nextTick(i, n, t), n._writableState && (n._writableState.errorEmitted = !0)) : e && e(t)
                })), this)
            },
            undestroy: function() {
                this._readableState && (this._readableState.destroyed = !1, this._readableState.reading = !1, this._readableState.ended = !1, this._readableState.endEmitted = !1), this._writableState && (this._writableState.destroyed = !1, this._writableState.ended = !1, this._writableState.ending = !1, this._writableState.finished = !1, this._writableState.errorEmitted = !1)
            }
        }
    }, function(t, e, n) {
        "use strict";
        t.exports = o;
        var r = n(35),
            i = n(54);

        function a(t, e) {
            var n = this._transformState;
            n.transforming = !1;
            var r = n.writecb;
            if (!r) return this.emit("error", new Error("write callback called multiple times"));
            n.writechunk = null, n.writecb = null, null != e && this.push(e), r(t);
            var i = this._readableState;
            i.reading = !1, (i.needReadable || i.length < i.highWaterMark) && this._read(i.highWaterMark)
        }

        function o(t) {
            if (!(this instanceof o)) return new o(t);
            r.call(this, t), this._transformState = {
                afterTransform: a.bind(this),
                needTransform: !1,
                transforming: !1,
                writecb: null,
                writechunk: null,
                writeencoding: null
            }, this._readableState.needReadable = !0, this._readableState.sync = !1, t && ("function" == typeof t.transform && (this._transform = t.transform), "function" == typeof t.flush && (this._flush = t.flush)), this.on("prefinish", s)
        }

        function s() {
            var t = this;
            "function" == typeof this._flush ? this._flush((function(e, n) {
                u(t, e, n)
            })) : u(this, null, null)
        }

        function u(t, e, n) {
            if (e) return t.emit("error", e);
            if (null != n && t.push(n), t._writableState.length) throw new Error("Calling transform done when ws.length != 0");
            if (t._transformState.transforming) throw new Error("Calling transform done when still transforming");
            return t.push(null)
        }
        i.inherits = n(2), i.inherits(o, r), o.prototype.push = function(t, e) {
            return this._transformState.needTransform = !1, r.prototype.push.call(this, t, e)
        }, o.prototype._transform = function(t, e, n) {
            throw new Error("_transform() is not implemented")
        }, o.prototype._write = function(t, e, n) {
            var r = this._transformState;
            if (r.writecb = n, r.writechunk = t, r.writeencoding = e, !r.transforming) {
                var i = this._readableState;
                (r.needTransform || i.needReadable || i.length < i.highWaterMark) && this._read(i.highWaterMark)
            }
        }, o.prototype._read = function(t) {
            var e = this._transformState;
            null !== e.writechunk && e.writecb && !e.transforming ? (e.transforming = !0, this._transform(e.writechunk, e.writeencoding, e.afterTransform)) : e.needTransform = !0
        }, o.prototype._destroy = function(t, e) {
            var n = this;
            r.prototype._destroy.call(this, t, (function(t) {
                e(t), n.emit("close")
            }))
        }
    }, function(t, e, n) {
        var r = n(2),
            i = n(45),
            a = n(3).Buffer,
            o = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298],
            s = new Array(64);

        function u() {
            this.init(), this._w = s, i.call(this, 64, 56)
        }

        function c(t, e, n) {
            return n ^ t & (e ^ n)
        }

        function f(t, e, n) {
            return t & e | n & (t | e)
        }

        function l(t) {
            return (t >>> 2 | t << 30) ^ (t >>> 13 | t << 19) ^ (t >>> 22 | t << 10)
        }

        function h(t) {
            return (t >>> 6 | t << 26) ^ (t >>> 11 | t << 21) ^ (t >>> 25 | t << 7)
        }

        function d(t) {
            return (t >>> 7 | t << 25) ^ (t >>> 18 | t << 14) ^ t >>> 3
        }
        r(u, i), u.prototype.init = function() {
            return this._a = 1779033703, this._b = 3144134277, this._c = 1013904242, this._d = 2773480762, this._e = 1359893119, this._f = 2600822924, this._g = 528734635, this._h = 1541459225, this
        }, u.prototype._update = function(t) {
            for (var e, n = this._w, r = 0 | this._a, i = 0 | this._b, a = 0 | this._c, s = 0 | this._d, u = 0 | this._e, p = 0 | this._f, g = 0 | this._g, y = 0 | this._h, b = 0; b < 16; ++b) n[b] = t.readInt32BE(4 * b);
            for (; b < 64; ++b) n[b] = 0 | (((e = n[b - 2]) >>> 17 | e << 15) ^ (e >>> 19 | e << 13) ^ e >>> 10) + n[b - 7] + d(n[b - 15]) + n[b - 16];
            for (var v = 0; v < 64; ++v) {
                var m = y + h(u) + c(u, p, g) + o[v] + n[v] | 0,
                    _ = l(r) + f(r, i, a) | 0;
                y = g, g = p, p = u, u = s + m | 0, s = a, a = i, i = r, r = m + _ | 0
            }
            this._a = r + this._a | 0, this._b = i + this._b | 0, this._c = a + this._c | 0, this._d = s + this._d | 0, this._e = u + this._e | 0, this._f = p + this._f | 0, this._g = g + this._g | 0, this._h = y + this._h | 0
        }, u.prototype._hash = function() {
            var t = a.allocUnsafe(32);
            return t.writeInt32BE(this._a, 0), t.writeInt32BE(this._b, 4), t.writeInt32BE(this._c, 8), t.writeInt32BE(this._d, 12), t.writeInt32BE(this._e, 16), t.writeInt32BE(this._f, 20), t.writeInt32BE(this._g, 24), t.writeInt32BE(this._h, 28), t
        }, t.exports = u
    }, function(t, e, n) {
        var r = n(2),
            i = n(45),
            a = n(3).Buffer,
            o = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591],
            s = new Array(160);

        function u() {
            this.init(), this._w = s, i.call(this, 128, 112)
        }

        function c(t, e, n) {
            return n ^ t & (e ^ n)
        }

        function f(t, e, n) {
            return t & e | n & (t | e)
        }

        function l(t, e) {
            return (t >>> 28 | e << 4) ^ (e >>> 2 | t << 30) ^ (e >>> 7 | t << 25)
        }

        function h(t, e) {
            return (t >>> 14 | e << 18) ^ (t >>> 18 | e << 14) ^ (e >>> 9 | t << 23)
        }

        function d(t, e) {
            return (t >>> 1 | e << 31) ^ (t >>> 8 | e << 24) ^ t >>> 7
        }

        function p(t, e) {
            return (t >>> 1 | e << 31) ^ (t >>> 8 | e << 24) ^ (t >>> 7 | e << 25)
        }

        function g(t, e) {
            return (t >>> 19 | e << 13) ^ (e >>> 29 | t << 3) ^ t >>> 6
        }

        function y(t, e) {
            return (t >>> 19 | e << 13) ^ (e >>> 29 | t << 3) ^ (t >>> 6 | e << 26)
        }

        function b(t, e) {
            return t >>> 0 < e >>> 0 ? 1 : 0
        }
        r(u, i), u.prototype.init = function() {
            return this._ah = 1779033703, this._bh = 3144134277, this._ch = 1013904242, this._dh = 2773480762, this._eh = 1359893119, this._fh = 2600822924, this._gh = 528734635, this._hh = 1541459225, this._al = 4089235720, this._bl = 2227873595, this._cl = 4271175723, this._dl = 1595750129, this._el = 2917565137, this._fl = 725511199, this._gl = 4215389547, this._hl = 327033209, this
        }, u.prototype._update = function(t) {
            for (var e = this._w, n = 0 | this._ah, r = 0 | this._bh, i = 0 | this._ch, a = 0 | this._dh, s = 0 | this._eh, u = 0 | this._fh, v = 0 | this._gh, m = 0 | this._hh, _ = 0 | this._al, w = 0 | this._bl, x = 0 | this._cl, k = 0 | this._dl, E = 0 | this._el, A = 0 | this._fl, S = 0 | this._gl, M = 0 | this._hl, T = 0; T < 32; T += 2) e[T] = t.readInt32BE(4 * T), e[T + 1] = t.readInt32BE(4 * T + 4);
            for (; T < 160; T += 2) {
                var D = e[T - 30],
                    C = e[T - 30 + 1],
                    N = d(D, C),
                    I = p(C, D),
                    L = g(D = e[T - 4], C = e[T - 4 + 1]),
                    B = y(C, D),
                    O = e[T - 14],
                    R = e[T - 14 + 1],
                    P = e[T - 32],
                    F = e[T - 32 + 1],
                    q = I + R | 0,
                    j = N + O + b(q, I) | 0;
                j = (j = j + L + b(q = q + B | 0, B) | 0) + P + b(q = q + F | 0, F) | 0, e[T] = j, e[T + 1] = q
            }
            for (var U = 0; U < 160; U += 2) {
                j = e[U], q = e[U + 1];
                var z = f(n, r, i),
                    Y = f(_, w, x),
                    V = l(n, _),
                    H = l(_, n),
                    G = h(s, E),
                    $ = h(E, s),
                    W = o[U],
                    K = o[U + 1],
                    X = c(s, u, v),
                    Z = c(E, A, S),
                    J = M + $ | 0,
                    Q = m + G + b(J, M) | 0;
                Q = (Q = (Q = Q + X + b(J = J + Z | 0, Z) | 0) + W + b(J = J + K | 0, K) | 0) + j + b(J = J + q | 0, q) | 0;
                var tt = H + Y | 0,
                    et = V + z + b(tt, H) | 0;
                m = v, M = S, v = u, S = A, u = s, A = E, s = a + Q + b(E = k + J | 0, k) | 0, a = i, k = x, i = r, x = w, r = n, w = _, n = Q + et + b(_ = J + tt | 0, J) | 0
            }
            this._al = this._al + _ | 0, this._bl = this._bl + w | 0, this._cl = this._cl + x | 0, this._dl = this._dl + k | 0, this._el = this._el + E | 0, this._fl = this._fl + A | 0, this._gl = this._gl + S | 0, this._hl = this._hl + M | 0, this._ah = this._ah + n + b(this._al, _) | 0, this._bh = this._bh + r + b(this._bl, w) | 0, this._ch = this._ch + i + b(this._cl, x) | 0, this._dh = this._dh + a + b(this._dl, k) | 0, this._eh = this._eh + s + b(this._el, E) | 0, this._fh = this._fh + u + b(this._fl, A) | 0, this._gh = this._gh + v + b(this._gl, S) | 0, this._hh = this._hh + m + b(this._hl, M) | 0
        }, u.prototype._hash = function() {
            var t = a.allocUnsafe(64);

            function e(e, n, r) {
                t.writeInt32BE(e, r), t.writeInt32BE(n, r + 4)
            }
            return e(this._ah, this._al, 0), e(this._bh, this._bl, 8), e(this._ch, this._cl, 16), e(this._dh, this._dl, 24), e(this._eh, this._el, 32), e(this._fh, this._fl, 40), e(this._gh, this._gl, 48), e(this._hh, this._hl, 56), t
        }, t.exports = u
    }, function(t, e, n) {
        "use strict";
        var r = n(2),
            i = n(438),
            a = n(31),
            o = n(3).Buffer,
            s = n(200),
            u = n(118),
            c = n(119),
            f = o.alloc(128);

        function l(t, e) {
            a.call(this, "digest"), "string" == typeof e && (e = o.from(e));
            var n = "sha512" === t || "sha384" === t ? 128 : 64;
            (this._alg = t, this._key = e, e.length > n) ? e = ("rmd160" === t ? new u : c(t)).update(e).digest(): e.length < n && (e = o.concat([e, f], n));
            for (var r = this._ipad = o.allocUnsafe(n), i = this._opad = o.allocUnsafe(n), s = 0; s < n; s++) r[s] = 54 ^ e[s], i[s] = 92 ^ e[s];
            this._hash = "rmd160" === t ? new u : c(t), this._hash.update(r)
        }
        r(l, a), l.prototype._update = function(t) {
            this._hash.update(t)
        }, l.prototype._final = function() {
            var t = this._hash.digest();
            return ("rmd160" === this._alg ? new u : c(this._alg)).update(this._opad).update(t).digest()
        }, t.exports = function(t, e) {
            return "rmd160" === (t = t.toLowerCase()) || "ripemd160" === t ? new l("rmd160", e) : "md5" === t ? new i(s, e) : new l(t, e)
        }
    }, function(t, e, n) {
        var r = n(111);
        t.exports = function(t) {
            return (new r).update(t).digest()
        }
    }, function(t) {
        t.exports = JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')
    }, function(t, e, n) {
        e.pbkdf2 = n(440), e.pbkdf2Sync = n(205)
    }, function(t, e, n) {
        (function(e) {
            var n = Math.pow(2, 30) - 1;

            function r(t, n) {
                if ("string" != typeof t && !e.isBuffer(t)) throw new TypeError(n + " must be a buffer or string")
            }
            t.exports = function(t, e, i, a) {
                if (r(t, "Password"), r(e, "Salt"), "number" != typeof i) throw new TypeError("Iterations not a number");
                if (i < 0) throw new TypeError("Bad iterations");
                if ("number" != typeof a) throw new TypeError("Key length not a number");
                if (a < 0 || a > n || a != a) throw new TypeError("Bad key length")
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        (function(e) {
            var n;
            e.browser ? n = "utf-8" : n = parseInt(e.version.split(".")[0].slice(1), 10) >= 6 ? "utf-8" : "binary";
            t.exports = n
        }).call(this, n(7))
    }, function(t, e, n) {
        var r = n(200),
            i = n(118),
            a = n(119),
            o = n(203),
            s = n(204),
            u = n(3).Buffer,
            c = u.alloc(128),
            f = {
                md5: 16,
                sha1: 20,
                sha224: 28,
                sha256: 32,
                sha384: 48,
                sha512: 64,
                rmd160: 20,
                ripemd160: 20
            };

        function l(t, e, n) {
            var o = function(t) {
                    return "rmd160" === t || "ripemd160" === t ? function(t) {
                        return (new i).update(t).digest()
                    } : "md5" === t ? r : function(e) {
                        return a(t).update(e).digest()
                    }
                }(t),
                s = "sha512" === t || "sha384" === t ? 128 : 64;
            e.length > s ? e = o(e) : e.length < s && (e = u.concat([e, c], s));
            for (var l = u.allocUnsafe(s + f[t]), h = u.allocUnsafe(s + f[t]), d = 0; d < s; d++) l[d] = 54 ^ e[d], h[d] = 92 ^ e[d];
            var p = u.allocUnsafe(s + n + 4);
            l.copy(p, 0, 0, s), this.ipad1 = p, this.ipad2 = l, this.opad = h, this.alg = t, this.blocksize = s, this.hash = o, this.size = f[t]
        }
        l.prototype.run = function(t, e) {
            return t.copy(e, this.blocksize), this.hash(e).copy(this.opad, this.blocksize), this.hash(this.opad)
        }, t.exports = function(t, e, n, r, i) {
            o(t, e, n, r), u.isBuffer(t) || (t = u.from(t, s)), u.isBuffer(e) || (e = u.from(e, s));
            var a = new l(i = i || "sha1", t, e.length),
                c = u.allocUnsafe(r),
                h = u.allocUnsafe(e.length + 4);
            e.copy(h, 0, 0, e.length);
            for (var d = 0, p = f[i], g = Math.ceil(r / p), y = 1; y <= g; y++) {
                h.writeUInt32BE(y, e.length);
                for (var b = a.run(h, a.ipad1), v = b, m = 1; m < n; m++) {
                    v = a.run(v, a.ipad2);
                    for (var _ = 0; _ < p; _++) b[_] ^= v[_]
                }
                b.copy(c, d), d += p
            }
            return c
        }
    }, function(t, e, n) {
        "use strict";
        e.readUInt32BE = function(t, e) {
            return (t[0 + e] << 24 | t[1 + e] << 16 | t[2 + e] << 8 | t[3 + e]) >>> 0
        }, e.writeUInt32BE = function(t, e, n) {
            t[0 + n] = e >>> 24, t[1 + n] = e >>> 16 & 255, t[2 + n] = e >>> 8 & 255, t[3 + n] = 255 & e
        }, e.ip = function(t, e, n, r) {
            for (var i = 0, a = 0, o = 6; o >= 0; o -= 2) {
                for (var s = 0; s <= 24; s += 8) i <<= 1, i |= e >>> s + o & 1;
                for (s = 0; s <= 24; s += 8) i <<= 1, i |= t >>> s + o & 1
            }
            for (o = 6; o >= 0; o -= 2) {
                for (s = 1; s <= 25; s += 8) a <<= 1, a |= e >>> s + o & 1;
                for (s = 1; s <= 25; s += 8) a <<= 1, a |= t >>> s + o & 1
            }
            n[r + 0] = i >>> 0, n[r + 1] = a >>> 0
        }, e.rip = function(t, e, n, r) {
            for (var i = 0, a = 0, o = 0; o < 4; o++)
                for (var s = 24; s >= 0; s -= 8) i <<= 1, i |= e >>> s + o & 1, i <<= 1, i |= t >>> s + o & 1;
            for (o = 4; o < 8; o++)
                for (s = 24; s >= 0; s -= 8) a <<= 1, a |= e >>> s + o & 1, a <<= 1, a |= t >>> s + o & 1;
            n[r + 0] = i >>> 0, n[r + 1] = a >>> 0
        }, e.pc1 = function(t, e, n, r) {
            for (var i = 0, a = 0, o = 7; o >= 5; o--) {
                for (var s = 0; s <= 24; s += 8) i <<= 1, i |= e >> s + o & 1;
                for (s = 0; s <= 24; s += 8) i <<= 1, i |= t >> s + o & 1
            }
            for (s = 0; s <= 24; s += 8) i <<= 1, i |= e >> s + o & 1;
            for (o = 1; o <= 3; o++) {
                for (s = 0; s <= 24; s += 8) a <<= 1, a |= e >> s + o & 1;
                for (s = 0; s <= 24; s += 8) a <<= 1, a |= t >> s + o & 1
            }
            for (s = 0; s <= 24; s += 8) a <<= 1, a |= t >> s + o & 1;
            n[r + 0] = i >>> 0, n[r + 1] = a >>> 0
        }, e.r28shl = function(t, e) {
            return t << e & 268435455 | t >>> 28 - e
        };
        var r = [14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];
        e.pc2 = function(t, e, n, i) {
            for (var a = 0, o = 0, s = r.length >>> 1, u = 0; u < s; u++) a <<= 1, a |= t >>> r[u] & 1;
            for (u = s; u < r.length; u++) o <<= 1, o |= e >>> r[u] & 1;
            n[i + 0] = a >>> 0, n[i + 1] = o >>> 0
        }, e.expand = function(t, e, n) {
            var r = 0,
                i = 0;
            r = (1 & t) << 5 | t >>> 27;
            for (var a = 23; a >= 15; a -= 4) r <<= 6, r |= t >>> a & 63;
            for (a = 11; a >= 3; a -= 4) i |= t >>> a & 63, i <<= 6;
            i |= (31 & t) << 1 | t >>> 31, e[n + 0] = r >>> 0, e[n + 1] = i >>> 0
        };
        var i = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];
        e.substitute = function(t, e) {
            for (var n = 0, r = 0; r < 4; r++) {
                n <<= 4, n |= i[64 * r + (t >>> 18 - 6 * r & 63)]
            }
            for (r = 0; r < 4; r++) {
                n <<= 4, n |= i[256 + 64 * r + (e >>> 18 - 6 * r & 63)]
            }
            return n >>> 0
        };
        var a = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];
        e.permute = function(t) {
            for (var e = 0, n = 0; n < a.length; n++) e <<= 1, e |= t >>> a[n] & 1;
            return e >>> 0
        }, e.padSplit = function(t, e, n) {
            for (var r = t.toString(2); r.length < e;) r = "0" + r;
            for (var i = [], a = 0; a < e; a += n) i.push(r.slice(a, a + n));
            return i.join(" ")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(16),
            i = n(2),
            a = n(206),
            o = n(120);

        function s() {
            this.tmp = new Array(2), this.keys = null
        }

        function u(t) {
            o.call(this, t);
            var e = new s;
            this._desState = e, this.deriveKeys(e, t.key)
        }
        i(u, o), t.exports = u, u.create = function(t) {
            return new u(t)
        };
        var c = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];
        u.prototype.deriveKeys = function(t, e) {
            t.keys = new Array(32), r.equal(e.length, this.blockSize, "Invalid key length");
            var n = a.readUInt32BE(e, 0),
                i = a.readUInt32BE(e, 4);
            a.pc1(n, i, t.tmp, 0), n = t.tmp[0], i = t.tmp[1];
            for (var o = 0; o < t.keys.length; o += 2) {
                var s = c[o >>> 1];
                n = a.r28shl(n, s), i = a.r28shl(i, s), a.pc2(n, i, t.keys, o)
            }
        }, u.prototype._update = function(t, e, n, r) {
            var i = this._desState,
                o = a.readUInt32BE(t, e),
                s = a.readUInt32BE(t, e + 4);
            a.ip(o, s, i.tmp, 0), o = i.tmp[0], s = i.tmp[1], "encrypt" === this.type ? this._encrypt(i, o, s, i.tmp, 0) : this._decrypt(i, o, s, i.tmp, 0), o = i.tmp[0], s = i.tmp[1], a.writeUInt32BE(n, o, r), a.writeUInt32BE(n, s, r + 4)
        }, u.prototype._pad = function(t, e) {
            for (var n = t.length - e, r = e; r < t.length; r++) t[r] = n;
            return !0
        }, u.prototype._unpad = function(t) {
            for (var e = t[t.length - 1], n = t.length - e; n < t.length; n++) r.equal(t[n], e);
            return t.slice(0, t.length - e)
        }, u.prototype._encrypt = function(t, e, n, r, i) {
            for (var o = e, s = n, u = 0; u < t.keys.length; u += 2) {
                var c = t.keys[u],
                    f = t.keys[u + 1];
                a.expand(s, t.tmp, 0), c ^= t.tmp[0], f ^= t.tmp[1];
                var l = a.substitute(c, f),
                    h = s;
                s = (o ^ a.permute(l)) >>> 0, o = h
            }
            a.rip(s, o, r, i)
        }, u.prototype._decrypt = function(t, e, n, r, i) {
            for (var o = n, s = e, u = t.keys.length - 2; u >= 0; u -= 2) {
                var c = t.keys[u],
                    f = t.keys[u + 1];
                a.expand(o, t.tmp, 0), c ^= t.tmp[0], f ^= t.tmp[1];
                var l = a.substitute(c, f),
                    h = o;
                o = (s ^ a.permute(l)) >>> 0, s = h
            }
            a.rip(o, s, r, i)
        }
    }, function(t, e, n) {
        var r = n(55),
            i = n(3).Buffer,
            a = n(209);

        function o(t) {
            var e = t._cipher.encryptBlockRaw(t._prev);
            return a(t._prev), e
        }
        e.encrypt = function(t, e) {
            var n = Math.ceil(e.length / 16),
                a = t._cache.length;
            t._cache = i.concat([t._cache, i.allocUnsafe(16 * n)]);
            for (var s = 0; s < n; s++) {
                var u = o(t),
                    c = a + 16 * s;
                t._cache.writeUInt32BE(u[0], c + 0), t._cache.writeUInt32BE(u[1], c + 4), t._cache.writeUInt32BE(u[2], c + 8), t._cache.writeUInt32BE(u[3], c + 12)
            }
            var f = t._cache.slice(0, e.length);
            return t._cache = t._cache.slice(e.length), r(e, f)
        }
    }, function(t, e) {
        t.exports = function(t) {
            for (var e, n = t.length; n--;) {
                if (255 !== (e = t.readUInt8(n))) {
                    e++, t.writeUInt8(e, n);
                    break
                }
                t.writeUInt8(0, n)
            }
        }
    }, function(t) {
        t.exports = JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')
    }, function(t, e, n) {
        var r = n(79),
            i = n(3).Buffer,
            a = n(31),
            o = n(2),
            s = n(453),
            u = n(55),
            c = n(209);

        function f(t, e, n, o) {
            a.call(this);
            var u = i.alloc(4, 0);
            this._cipher = new r.AES(e);
            var f = this._cipher.encryptBlock(u);
            this._ghash = new s(f), n = function(t, e, n) {
                if (12 === e.length) return t._finID = i.concat([e, i.from([0, 0, 0, 1])]), i.concat([e, i.from([0, 0, 0, 2])]);
                var r = new s(n),
                    a = e.length,
                    o = a % 16;
                r.update(e), o && (o = 16 - o, r.update(i.alloc(o, 0))), r.update(i.alloc(8, 0));
                var u = 8 * a,
                    f = i.alloc(8);
                f.writeUIntBE(u, 0, 8), r.update(f), t._finID = r.state;
                var l = i.from(t._finID);
                return c(l), l
            }(this, n, f), this._prev = i.from(n), this._cache = i.allocUnsafe(0), this._secCache = i.allocUnsafe(0), this._decrypt = o, this._alen = 0, this._len = 0, this._mode = t, this._authTag = null, this._called = !1
        }
        o(f, a), f.prototype._update = function(t) {
            if (!this._called && this._alen) {
                var e = 16 - this._alen % 16;
                e < 16 && (e = i.alloc(e, 0), this._ghash.update(e))
            }
            this._called = !0;
            var n = this._mode.encrypt(this, t);
            return this._decrypt ? this._ghash.update(t) : this._ghash.update(n), this._len += t.length, n
        }, f.prototype._final = function() {
            if (this._decrypt && !this._authTag) throw new Error("Unsupported state or unable to authenticate data");
            var t = u(this._ghash.final(8 * this._alen, 8 * this._len), this._cipher.encryptBlock(this._finID));
            if (this._decrypt && function(t, e) {
                    var n = 0;
                    t.length !== e.length && n++;
                    for (var r = Math.min(t.length, e.length), i = 0; i < r; ++i) n += t[i] ^ e[i];
                    return n
                }(t, this._authTag)) throw new Error("Unsupported state or unable to authenticate data");
            this._authTag = t, this._cipher.scrub()
        }, f.prototype.getAuthTag = function() {
            if (this._decrypt || !i.isBuffer(this._authTag)) throw new Error("Attempting to get auth tag in unsupported state");
            return this._authTag
        }, f.prototype.setAuthTag = function(t) {
            if (!this._decrypt) throw new Error("Attempting to set auth tag in unsupported state");
            this._authTag = t
        }, f.prototype.setAAD = function(t) {
            if (this._called) throw new Error("Attempting to set AAD in unsupported state");
            this._ghash.update(t), this._alen += t.length
        }, t.exports = f
    }, function(t, e, n) {
        var r = n(79),
            i = n(3).Buffer,
            a = n(31);

        function o(t, e, n, o) {
            a.call(this), this._cipher = new r.AES(e), this._prev = i.from(n), this._cache = i.allocUnsafe(0), this._secCache = i.allocUnsafe(0), this._decrypt = o, this._mode = t
        }
        n(2)(o, a), o.prototype._update = function(t) {
            return this._mode.encrypt(this, t, this._decrypt)
        }, o.prototype._final = function() {
            this._cipher.scrub()
        }, t.exports = o
    }, function(t, e, n) {
        var r = n(44);
        t.exports = v, v.simpleSieve = y, v.fermatTest = b;
        var i = n(5),
            a = new i(24),
            o = new(n(214)),
            s = new i(1),
            u = new i(2),
            c = new i(5),
            f = (new i(16), new i(8), new i(10)),
            l = new i(3),
            h = (new i(7), new i(11)),
            d = new i(4),
            p = (new i(12), null);

        function g() {
            if (null !== p) return p;
            var t = [];
            t[0] = 2;
            for (var e = 1, n = 3; n < 1048576; n += 2) {
                for (var r = Math.ceil(Math.sqrt(n)), i = 0; i < e && t[i] <= r && n % t[i] != 0; i++);
                e !== i && t[i] <= r || (t[e++] = n)
            }
            return p = t, t
        }

        function y(t) {
            for (var e = g(), n = 0; n < e.length; n++)
                if (0 === t.modn(e[n])) return 0 === t.cmpn(e[n]);
            return !0
        }

        function b(t) {
            var e = i.mont(t);
            return 0 === u.toRed(e).redPow(t.subn(1)).fromRed().cmpn(1)
        }

        function v(t, e) {
            if (t < 16) return new i(2 === e || 5 === e ? [140, 123] : [140, 39]);
            var n, p;
            for (e = new i(e);;) {
                for (n = new i(r(Math.ceil(t / 8))); n.bitLength() > t;) n.ishrn(1);
                if (n.isEven() && n.iadd(s), n.testn(1) || n.iadd(u), e.cmp(u)) {
                    if (!e.cmp(c))
                        for (; n.mod(f).cmp(l);) n.iadd(d)
                } else
                    for (; n.mod(a).cmp(h);) n.iadd(d);
                if (y(p = n.shrn(1)) && y(n) && b(p) && b(n) && o.test(p) && o.test(n)) return n
            }
        }
    }, function(t, e, n) {
        var r = n(5),
            i = n(123);

        function a(t) {
            this.rand = t || new i.Rand
        }
        t.exports = a, a.create = function(t) {
            return new a(t)
        }, a.prototype._randbelow = function(t) {
            var e = t.bitLength(),
                n = Math.ceil(e / 8);
            do {
                var i = new r(this.rand.generate(n))
            } while (i.cmp(t) >= 0);
            return i
        }, a.prototype._randrange = function(t, e) {
            var n = e.sub(t);
            return t.add(this._randbelow(n))
        }, a.prototype.test = function(t, e, n) {
            var i = t.bitLength(),
                a = r.mont(t),
                o = new r(1).toRed(a);
            e || (e = Math.max(1, i / 48 | 0));
            for (var s = t.subn(1), u = 0; !s.testn(u); u++);
            for (var c = t.shrn(u), f = s.toRed(a); e > 0; e--) {
                var l = this._randrange(new r(2), s);
                n && n(l);
                var h = l.toRed(a).redPow(c);
                if (0 !== h.cmp(o) && 0 !== h.cmp(f)) {
                    for (var d = 1; d < u; d++) {
                        if (0 === (h = h.redSqr()).cmp(o)) return !1;
                        if (0 === h.cmp(f)) break
                    }
                    if (d === u) return !1
                }
            }
            return !0
        }, a.prototype.getDivisor = function(t, e) {
            var n = t.bitLength(),
                i = r.mont(t),
                a = new r(1).toRed(i);
            e || (e = Math.max(1, n / 48 | 0));
            for (var o = t.subn(1), s = 0; !o.testn(s); s++);
            for (var u = t.shrn(s), c = o.toRed(i); e > 0; e--) {
                var f = this._randrange(new r(2), o),
                    l = t.gcd(f);
                if (0 !== l.cmpn(1)) return l;
                var h = f.toRed(i).redPow(u);
                if (0 !== h.cmp(a) && 0 !== h.cmp(c)) {
                    for (var d = 1; d < s; d++) {
                        if (0 === (h = h.redSqr()).cmp(a)) return h.fromRed().subn(1).gcd(t);
                        if (0 === h.cmp(c)) break
                    }
                    if (d === s) return (h = h.redSqr()).fromRed().subn(1).gcd(t)
                }
            }
            return !1
        }
    }, function(t, e, n) {
        "use strict";
        var r = e;

        function i(t) {
            return 1 === t.length ? "0" + t : t
        }

        function a(t) {
            for (var e = "", n = 0; n < t.length; n++) e += i(t[n].toString(16));
            return e
        }
        r.toArray = function(t, e) {
            if (Array.isArray(t)) return t.slice();
            if (!t) return [];
            var n = [];
            if ("string" != typeof t) {
                for (var r = 0; r < t.length; r++) n[r] = 0 | t[r];
                return n
            }
            if ("hex" === e) {
                (t = t.replace(/[^a-z0-9]+/gi, "")).length % 2 != 0 && (t = "0" + t);
                for (r = 0; r < t.length; r += 2) n.push(parseInt(t[r] + t[r + 1], 16))
            } else
                for (r = 0; r < t.length; r++) {
                    var i = t.charCodeAt(r),
                        a = i >> 8,
                        o = 255 & i;
                    a ? n.push(a, o) : n.push(o)
                }
            return n
        }, r.zero2 = i, r.toHex = a, r.encode = function(t, e) {
            return "hex" === e ? a(t) : t
        }
    }, function(t, e, n) {
        "use strict";
        var r = e;
        r.base = n(81), r.short = n(464), r.mont = n(465), r.edwards = n(466)
    }, function(t, e, n) {
        "use strict";
        var r = n(21).rotr32;

        function i(t, e, n) {
            return t & e ^ ~t & n
        }

        function a(t, e, n) {
            return t & e ^ t & n ^ e & n
        }

        function o(t, e, n) {
            return t ^ e ^ n
        }
        e.ft_1 = function(t, e, n, r) {
            return 0 === t ? i(e, n, r) : 1 === t || 3 === t ? o(e, n, r) : 2 === t ? a(e, n, r) : void 0
        }, e.ch32 = i, e.maj32 = a, e.p32 = o, e.s0_256 = function(t) {
            return r(t, 2) ^ r(t, 13) ^ r(t, 22)
        }, e.s1_256 = function(t) {
            return r(t, 6) ^ r(t, 11) ^ r(t, 25)
        }, e.g0_256 = function(t) {
            return r(t, 7) ^ r(t, 18) ^ t >>> 3
        }, e.g1_256 = function(t) {
            return r(t, 17) ^ r(t, 19) ^ t >>> 10
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(56),
            a = n(217),
            o = n(16),
            s = r.sum32,
            u = r.sum32_4,
            c = r.sum32_5,
            f = a.ch32,
            l = a.maj32,
            h = a.s0_256,
            d = a.s1_256,
            p = a.g0_256,
            g = a.g1_256,
            y = i.BlockHash,
            b = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];

        function v() {
            if (!(this instanceof v)) return new v;
            y.call(this), this.h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], this.k = b, this.W = new Array(64)
        }
        r.inherits(v, y), t.exports = v, v.blockSize = 512, v.outSize = 256, v.hmacStrength = 192, v.padLength = 64, v.prototype._update = function(t, e) {
            for (var n = this.W, r = 0; r < 16; r++) n[r] = t[e + r];
            for (; r < n.length; r++) n[r] = u(g(n[r - 2]), n[r - 7], p(n[r - 15]), n[r - 16]);
            var i = this.h[0],
                a = this.h[1],
                y = this.h[2],
                b = this.h[3],
                v = this.h[4],
                m = this.h[5],
                _ = this.h[6],
                w = this.h[7];
            for (o(this.k.length === n.length), r = 0; r < n.length; r++) {
                var x = c(w, d(v), f(v, m, _), this.k[r], n[r]),
                    k = s(h(i), l(i, a, y));
                w = _, _ = m, m = v, v = s(b, x), b = y, y = a, a = i, i = s(x, k)
            }
            this.h[0] = s(this.h[0], i), this.h[1] = s(this.h[1], a), this.h[2] = s(this.h[2], y), this.h[3] = s(this.h[3], b), this.h[4] = s(this.h[4], v), this.h[5] = s(this.h[5], m), this.h[6] = s(this.h[6], _), this.h[7] = s(this.h[7], w)
        }, v.prototype._digest = function(t) {
            return "hex" === t ? r.toHex32(this.h, "big") : r.split32(this.h, "big")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(56),
            a = n(16),
            o = r.rotr64_hi,
            s = r.rotr64_lo,
            u = r.shr64_hi,
            c = r.shr64_lo,
            f = r.sum64,
            l = r.sum64_hi,
            h = r.sum64_lo,
            d = r.sum64_4_hi,
            p = r.sum64_4_lo,
            g = r.sum64_5_hi,
            y = r.sum64_5_lo,
            b = i.BlockHash,
            v = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];

        function m() {
            if (!(this instanceof m)) return new m;
            b.call(this), this.h = [1779033703, 4089235720, 3144134277, 2227873595, 1013904242, 4271175723, 2773480762, 1595750129, 1359893119, 2917565137, 2600822924, 725511199, 528734635, 4215389547, 1541459225, 327033209], this.k = v, this.W = new Array(160)
        }

        function _(t, e, n, r, i) {
            var a = t & n ^ ~t & i;
            return a < 0 && (a += 4294967296), a
        }

        function w(t, e, n, r, i, a) {
            var o = e & r ^ ~e & a;
            return o < 0 && (o += 4294967296), o
        }

        function x(t, e, n, r, i) {
            var a = t & n ^ t & i ^ n & i;
            return a < 0 && (a += 4294967296), a
        }

        function k(t, e, n, r, i, a) {
            var o = e & r ^ e & a ^ r & a;
            return o < 0 && (o += 4294967296), o
        }

        function E(t, e) {
            var n = o(t, e, 28) ^ o(e, t, 2) ^ o(e, t, 7);
            return n < 0 && (n += 4294967296), n
        }

        function A(t, e) {
            var n = s(t, e, 28) ^ s(e, t, 2) ^ s(e, t, 7);
            return n < 0 && (n += 4294967296), n
        }

        function S(t, e) {
            var n = o(t, e, 14) ^ o(t, e, 18) ^ o(e, t, 9);
            return n < 0 && (n += 4294967296), n
        }

        function M(t, e) {
            var n = s(t, e, 14) ^ s(t, e, 18) ^ s(e, t, 9);
            return n < 0 && (n += 4294967296), n
        }

        function T(t, e) {
            var n = o(t, e, 1) ^ o(t, e, 8) ^ u(t, e, 7);
            return n < 0 && (n += 4294967296), n
        }

        function D(t, e) {
            var n = s(t, e, 1) ^ s(t, e, 8) ^ c(t, e, 7);
            return n < 0 && (n += 4294967296), n
        }

        function C(t, e) {
            var n = o(t, e, 19) ^ o(e, t, 29) ^ u(t, e, 6);
            return n < 0 && (n += 4294967296), n
        }

        function N(t, e) {
            var n = s(t, e, 19) ^ s(e, t, 29) ^ c(t, e, 6);
            return n < 0 && (n += 4294967296), n
        }
        r.inherits(m, b), t.exports = m, m.blockSize = 1024, m.outSize = 512, m.hmacStrength = 192, m.padLength = 128, m.prototype._prepareBlock = function(t, e) {
            for (var n = this.W, r = 0; r < 32; r++) n[r] = t[e + r];
            for (; r < n.length; r += 2) {
                var i = C(n[r - 4], n[r - 3]),
                    a = N(n[r - 4], n[r - 3]),
                    o = n[r - 14],
                    s = n[r - 13],
                    u = T(n[r - 30], n[r - 29]),
                    c = D(n[r - 30], n[r - 29]),
                    f = n[r - 32],
                    l = n[r - 31];
                n[r] = d(i, a, o, s, u, c, f, l), n[r + 1] = p(i, a, o, s, u, c, f, l)
            }
        }, m.prototype._update = function(t, e) {
            this._prepareBlock(t, e);
            var n = this.W,
                r = this.h[0],
                i = this.h[1],
                o = this.h[2],
                s = this.h[3],
                u = this.h[4],
                c = this.h[5],
                d = this.h[6],
                p = this.h[7],
                b = this.h[8],
                v = this.h[9],
                m = this.h[10],
                T = this.h[11],
                D = this.h[12],
                C = this.h[13],
                N = this.h[14],
                I = this.h[15];
            a(this.k.length === n.length);
            for (var L = 0; L < n.length; L += 2) {
                var B = N,
                    O = I,
                    R = S(b, v),
                    P = M(b, v),
                    F = _(b, v, m, T, D),
                    q = w(b, v, m, T, D, C),
                    j = this.k[L],
                    U = this.k[L + 1],
                    z = n[L],
                    Y = n[L + 1],
                    V = g(B, O, R, P, F, q, j, U, z, Y),
                    H = y(B, O, R, P, F, q, j, U, z, Y);
                B = E(r, i), O = A(r, i), R = x(r, i, o, s, u), P = k(r, i, o, s, u, c);
                var G = l(B, O, R, P),
                    $ = h(B, O, R, P);
                N = D, I = C, D = m, C = T, m = b, T = v, b = l(d, p, V, H), v = h(p, p, V, H), d = u, p = c, u = o, c = s, o = r, s = i, r = l(V, H, G, $), i = h(V, H, G, $)
            }
            f(this.h, 0, r, i), f(this.h, 2, o, s), f(this.h, 4, u, c), f(this.h, 6, d, p), f(this.h, 8, b, v), f(this.h, 10, m, T), f(this.h, 12, D, C), f(this.h, 14, N, I)
        }, m.prototype._digest = function(t) {
            return "hex" === t ? r.toHex32(this.h, "big") : r.split32(this.h, "big")
        }
    }, function(t, e, n) {
        var r = n(2),
            i = n(58).Reporter,
            a = n(8).Buffer;

        function o(t, e) {
            i.call(this, e), a.isBuffer(t) ? (this.base = t, this.offset = 0, this.length = t.length) : this.error("Input not Buffer")
        }

        function s(t, e) {
            if (Array.isArray(t)) this.length = 0, this.value = t.map((function(t) {
                return t instanceof s || (t = new s(t, e)), this.length += t.length, t
            }), this);
            else if ("number" == typeof t) {
                if (!(0 <= t && t <= 255)) return e.error("non-byte EncoderBuffer value");
                this.value = t, this.length = 1
            } else if ("string" == typeof t) this.value = t, this.length = a.byteLength(t);
            else {
                if (!a.isBuffer(t)) return e.error("Unsupported type: " + typeof t);
                this.value = t, this.length = t.length
            }
        }
        r(o, i), e.DecoderBuffer = o, o.prototype.save = function() {
            return {
                offset: this.offset,
                reporter: i.prototype.save.call(this)
            }
        }, o.prototype.restore = function(t) {
            var e = new o(this.base);
            return e.offset = t.offset, e.length = this.offset, this.offset = t.offset, i.prototype.restore.call(this, t.reporter), e
        }, o.prototype.isEmpty = function() {
            return this.offset === this.length
        }, o.prototype.readUInt8 = function(t) {
            return this.offset + 1 <= this.length ? this.base.readUInt8(this.offset++, !0) : this.error(t || "DecoderBuffer overrun")
        }, o.prototype.skip = function(t, e) {
            if (!(this.offset + t <= this.length)) return this.error(e || "DecoderBuffer overrun");
            var n = new o(this.base);
            return n._reporterState = this._reporterState, n.offset = this.offset, n.length = this.offset + t, this.offset += t, n
        }, o.prototype.raw = function(t) {
            return this.base.slice(t ? t.offset : this.offset, this.length)
        }, e.EncoderBuffer = s, s.prototype.join = function(t, e) {
            return t || (t = new a(this.length)), e || (e = 0), 0 === this.length ? t : (Array.isArray(this.value) ? this.value.forEach((function(n) {
                n.join(t, e), e += n.length
            })) : ("number" == typeof this.value ? t[e] = this.value : "string" == typeof this.value ? t.write(this.value, e) : a.isBuffer(this.value) && this.value.copy(t, e), e += this.length), t)
        }
    }, function(t, e, n) {
        var r = e;
        r._reverse = function(t) {
            var e = {};
            return Object.keys(t).forEach((function(n) {
                (0 | n) == n && (n |= 0);
                var r = t[n];
                e[r] = n
            })), e
        }, r.der = n(486)
    }, function(t, e, n) {
        var r = n(2),
            i = n(57),
            a = i.base,
            o = i.bignum,
            s = i.constants.der;

        function u(t) {
            this.enc = "der", this.name = t.name, this.entity = t, this.tree = new c, this.tree._init(t.body)
        }

        function c(t) {
            a.Node.call(this, "der", t)
        }

        function f(t, e) {
            var n = t.readUInt8(e);
            if (t.isError(n)) return n;
            var r = s.tagClass[n >> 6],
                i = 0 == (32 & n);
            if (31 == (31 & n)) {
                var a = n;
                for (n = 0; 128 == (128 & a);) {
                    if (a = t.readUInt8(e), t.isError(a)) return a;
                    n <<= 7, n |= 127 & a
                }
            } else n &= 31;
            return {
                cls: r,
                primitive: i,
                tag: n,
                tagStr: s.tag[n]
            }
        }

        function l(t, e, n) {
            var r = t.readUInt8(n);
            if (t.isError(r)) return r;
            if (!e && 128 === r) return null;
            if (0 == (128 & r)) return r;
            var i = 127 & r;
            if (i > 4) return t.error("length octect is too long");
            r = 0;
            for (var a = 0; a < i; a++) {
                r <<= 8;
                var o = t.readUInt8(n);
                if (t.isError(o)) return o;
                r |= o
            }
            return r
        }
        t.exports = u, u.prototype.decode = function(t, e) {
            return t instanceof a.DecoderBuffer || (t = new a.DecoderBuffer(t, e)), this.tree._decode(t, e)
        }, r(c, a.Node), c.prototype._peekTag = function(t, e, n) {
            if (t.isEmpty()) return !1;
            var r = t.save(),
                i = f(t, 'Failed to peek tag: "' + e + '"');
            return t.isError(i) ? i : (t.restore(r), i.tag === e || i.tagStr === e || i.tagStr + "of" === e || n)
        }, c.prototype._decodeTag = function(t, e, n) {
            var r = f(t, 'Failed to decode tag of "' + e + '"');
            if (t.isError(r)) return r;
            var i = l(t, r.primitive, 'Failed to get length of "' + e + '"');
            if (t.isError(i)) return i;
            if (!n && r.tag !== e && r.tagStr !== e && r.tagStr + "of" !== e) return t.error('Failed to match tag: "' + e + '"');
            if (r.primitive || null !== i) return t.skip(i, 'Failed to match body of: "' + e + '"');
            var a = t.save(),
                o = this._skipUntilEnd(t, 'Failed to skip indefinite length body: "' + this.tag + '"');
            return t.isError(o) ? o : (i = t.offset - a.offset, t.restore(a), t.skip(i, 'Failed to match body of: "' + e + '"'))
        }, c.prototype._skipUntilEnd = function(t, e) {
            for (;;) {
                var n = f(t, e);
                if (t.isError(n)) return n;
                var r, i = l(t, n.primitive, e);
                if (t.isError(i)) return i;
                if (r = n.primitive || null !== i ? t.skip(i) : this._skipUntilEnd(t, e), t.isError(r)) return r;
                if ("end" === n.tagStr) break
            }
        }, c.prototype._decodeList = function(t, e, n, r) {
            for (var i = []; !t.isEmpty();) {
                var a = this._peekTag(t, "end");
                if (t.isError(a)) return a;
                var o = n.decode(t, "der", r);
                if (t.isError(o) && a) break;
                i.push(o)
            }
            return i
        }, c.prototype._decodeStr = function(t, e) {
            if ("bitstr" === e) {
                var n = t.readUInt8();
                return t.isError(n) ? n : {
                    unused: n,
                    data: t.raw()
                }
            }
            if ("bmpstr" === e) {
                var r = t.raw();
                if (r.length % 2 == 1) return t.error("Decoding of string type: bmpstr length mismatch");
                for (var i = "", a = 0; a < r.length / 2; a++) i += String.fromCharCode(r.readUInt16BE(2 * a));
                return i
            }
            if ("numstr" === e) {
                var o = t.raw().toString("ascii");
                return this._isNumstr(o) ? o : t.error("Decoding of string type: numstr unsupported characters")
            }
            if ("octstr" === e) return t.raw();
            if ("objDesc" === e) return t.raw();
            if ("printstr" === e) {
                var s = t.raw().toString("ascii");
                return this._isPrintstr(s) ? s : t.error("Decoding of string type: printstr unsupported characters")
            }
            return /str$/.test(e) ? t.raw().toString() : t.error("Decoding of string type: " + e + " unsupported")
        }, c.prototype._decodeObjid = function(t, e, n) {
            for (var r, i = [], a = 0; !t.isEmpty();) {
                var o = t.readUInt8();
                a <<= 7, a |= 127 & o, 0 == (128 & o) && (i.push(a), a = 0)
            }
            128 & o && i.push(a);
            var s = i[0] / 40 | 0,
                u = i[0] % 40;
            if (r = n ? i : [s, u].concat(i.slice(1)), e) {
                var c = e[r.join(" ")];
                void 0 === c && (c = e[r.join(".")]), void 0 !== c && (r = c)
            }
            return r
        }, c.prototype._decodeTime = function(t, e) {
            var n = t.raw().toString();
            if ("gentime" === e) var r = 0 | n.slice(0, 4),
                i = 0 | n.slice(4, 6),
                a = 0 | n.slice(6, 8),
                o = 0 | n.slice(8, 10),
                s = 0 | n.slice(10, 12),
                u = 0 | n.slice(12, 14);
            else {
                if ("utctime" !== e) return t.error("Decoding " + e + " time is not supported yet");
                r = 0 | n.slice(0, 2), i = 0 | n.slice(2, 4), a = 0 | n.slice(4, 6), o = 0 | n.slice(6, 8), s = 0 | n.slice(8, 10), u = 0 | n.slice(10, 12);
                r = r < 70 ? 2e3 + r : 1900 + r
            }
            return Date.UTC(r, i - 1, a, o, s, u, 0)
        }, c.prototype._decodeNull = function(t) {
            return null
        }, c.prototype._decodeBool = function(t) {
            var e = t.readUInt8();
            return t.isError(e) ? e : 0 !== e
        }, c.prototype._decodeInt = function(t, e) {
            var n = t.raw(),
                r = new o(n);
            return e && (r = e[r.toString(10)] || r), r
        }, c.prototype._use = function(t, e) {
            return "function" == typeof t && (t = t(e)), t._getDecoder("der").tree
        }
    }, function(t, e, n) {
        var r = n(2),
            i = n(8).Buffer,
            a = n(57),
            o = a.base,
            s = a.constants.der;

        function u(t) {
            this.enc = "der", this.name = t.name, this.entity = t, this.tree = new c, this.tree._init(t.body)
        }

        function c(t) {
            o.Node.call(this, "der", t)
        }

        function f(t) {
            return t < 10 ? "0" + t : t
        }
        t.exports = u, u.prototype.encode = function(t, e) {
            return this.tree._encode(t, e).join()
        }, r(c, o.Node), c.prototype._encodeComposite = function(t, e, n, r) {
            var a, o = function(t, e, n, r) {
                var i;
                "seqof" === t ? t = "seq" : "setof" === t && (t = "set");
                if (s.tagByName.hasOwnProperty(t)) i = s.tagByName[t];
                else {
                    if ("number" != typeof t || (0 | t) !== t) return r.error("Unknown tag: " + t);
                    i = t
                }
                if (i >= 31) return r.error("Multi-octet tag encoding unsupported");
                e || (i |= 32);
                return i |= s.tagClassByName[n || "universal"] << 6
            }(t, e, n, this.reporter);
            if (r.length < 128) return (a = new i(2))[0] = o, a[1] = r.length, this._createEncoderBuffer([a, r]);
            for (var u = 1, c = r.length; c >= 256; c >>= 8) u++;
            (a = new i(2 + u))[0] = o, a[1] = 128 | u;
            c = 1 + u;
            for (var f = r.length; f > 0; c--, f >>= 8) a[c] = 255 & f;
            return this._createEncoderBuffer([a, r])
        }, c.prototype._encodeStr = function(t, e) {
            if ("bitstr" === e) return this._createEncoderBuffer([0 | t.unused, t.data]);
            if ("bmpstr" === e) {
                for (var n = new i(2 * t.length), r = 0; r < t.length; r++) n.writeUInt16BE(t.charCodeAt(r), 2 * r);
                return this._createEncoderBuffer(n)
            }
            return "numstr" === e ? this._isNumstr(t) ? this._createEncoderBuffer(t) : this.reporter.error("Encoding of string type: numstr supports only digits and space") : "printstr" === e ? this._isPrintstr(t) ? this._createEncoderBuffer(t) : this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark") : /str$/.test(e) ? this._createEncoderBuffer(t) : "objDesc" === e ? this._createEncoderBuffer(t) : this.reporter.error("Encoding of string type: " + e + " unsupported")
        }, c.prototype._encodeObjid = function(t, e, n) {
            if ("string" == typeof t) {
                if (!e) return this.reporter.error("string objid given, but no values map found");
                if (!e.hasOwnProperty(t)) return this.reporter.error("objid not found in values map");
                t = e[t].split(/[\s\.]+/g);
                for (var r = 0; r < t.length; r++) t[r] |= 0
            } else if (Array.isArray(t)) {
                t = t.slice();
                for (r = 0; r < t.length; r++) t[r] |= 0
            }
            if (!Array.isArray(t)) return this.reporter.error("objid() should be either array or string, got: " + JSON.stringify(t));
            if (!n) {
                if (t[1] >= 40) return this.reporter.error("Second objid identifier OOB");
                t.splice(0, 2, 40 * t[0] + t[1])
            }
            var a = 0;
            for (r = 0; r < t.length; r++) {
                var o = t[r];
                for (a++; o >= 128; o >>= 7) a++
            }
            var s = new i(a),
                u = s.length - 1;
            for (r = t.length - 1; r >= 0; r--) {
                o = t[r];
                for (s[u--] = 127 & o;
                    (o >>= 7) > 0;) s[u--] = 128 | 127 & o
            }
            return this._createEncoderBuffer(s)
        }, c.prototype._encodeTime = function(t, e) {
            var n, r = new Date(t);
            return "gentime" === e ? n = [f(r.getFullYear()), f(r.getUTCMonth() + 1), f(r.getUTCDate()), f(r.getUTCHours()), f(r.getUTCMinutes()), f(r.getUTCSeconds()), "Z"].join("") : "utctime" === e ? n = [f(r.getFullYear() % 100), f(r.getUTCMonth() + 1), f(r.getUTCDate()), f(r.getUTCHours()), f(r.getUTCMinutes()), f(r.getUTCSeconds()), "Z"].join("") : this.reporter.error("Encoding " + e + " time is not supported yet"), this._encodeStr(n, "octstr")
        }, c.prototype._encodeNull = function() {
            return this._createEncoderBuffer("")
        }, c.prototype._encodeInt = function(t, e) {
            if ("string" == typeof t) {
                if (!e) return this.reporter.error("String int or enum given, but no values map");
                if (!e.hasOwnProperty(t)) return this.reporter.error("Values map doesn't contain: " + JSON.stringify(t));
                t = e[t]
            }
            if ("number" != typeof t && !i.isBuffer(t)) {
                var n = t.toArray();
                !t.sign && 128 & n[0] && n.unshift(0), t = new i(n)
            }
            if (i.isBuffer(t)) {
                var r = t.length;
                0 === t.length && r++;
                var a = new i(r);
                return t.copy(a), 0 === t.length && (a[0] = 0), this._createEncoderBuffer(a)
            }
            if (t < 128) return this._createEncoderBuffer(t);
            if (t < 256) return this._createEncoderBuffer([0, t]);
            r = 1;
            for (var o = t; o >= 256; o >>= 8) r++;
            for (o = (a = new Array(r)).length - 1; o >= 0; o--) a[o] = 255 & t, t >>= 8;
            return 128 & a[0] && a.unshift(0), this._createEncoderBuffer(new i(a))
        }, c.prototype._encodeBool = function(t) {
            return this._createEncoderBuffer(t ? 255 : 0)
        }, c.prototype._use = function(t, e) {
            return "function" == typeof t && (t = t(e)), t._getEncoder("der").tree
        }, c.prototype._skipDefault = function(t, e, n) {
            var r, i = this._baseState;
            if (null === i.default) return !1;
            var a = t.join();
            if (void 0 === i.defaultBuffer && (i.defaultBuffer = this._encodeValue(i.default, e, n).join()), a.length !== i.defaultBuffer.length) return !1;
            for (r = 0; r < a.length; r++)
                if (a[r] !== i.defaultBuffer[r]) return !1;
            return !0
        }
    }, function(t) {
        t.exports = JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')
    }, function(t, e, n) {
        var r = n(53),
            i = n(3).Buffer;

        function a(t) {
            var e = i.allocUnsafe(4);
            return e.writeUInt32BE(t, 0), e
        }
        t.exports = function(t, e) {
            for (var n, o = i.alloc(0), s = 0; o.length < e;) n = a(s++), o = i.concat([o, r("sha1").update(t).update(n).digest()]);
            return o.slice(0, e)
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = t.length, r = -1; ++r < n;) t[r] ^= e[r];
            return t
        }
    }, function(t, e, n) {
        var r = n(5),
            i = n(3).Buffer;
        t.exports = function(t, e) {
            return i.from(t.toRed(r.mont(e.modulus)).redPow(new r(e.publicExponent)).fromRed().toArray())
        }
    }, function(t, e, n) {
        (function(t, n) {
            ! function(r) {
                var i = e,
                    a = t && t.exports == i && t,
                    o = "object" == typeof n && n;
                o.global !== o && o.window !== o || (r = o);
                var s = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
                    u = /[\x01-\x7F]/g,
                    c = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,
                    f = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,
                    l = {
                        "­": "shy",
                        "‌": "zwnj",
                        "‍": "zwj",
                        "‎": "lrm",
                        "⁣": "ic",
                        "⁢": "it",
                        "⁡": "af",
                        "‏": "rlm",
                        "​": "ZeroWidthSpace",
                        "⁠": "NoBreak",
                        "̑": "DownBreve",
                        "⃛": "tdot",
                        "⃜": "DotDot",
                        "\t": "Tab",
                        "\n": "NewLine",
                        " ": "puncsp",
                        " ": "MediumSpace",
                        " ": "thinsp",
                        " ": "hairsp",
                        " ": "emsp13",
                        " ": "ensp",
                        " ": "emsp14",
                        " ": "emsp",
                        " ": "numsp",
                        " ": "nbsp",
                        "  ": "ThickSpace",
                        "‾": "oline",
                        _: "lowbar",
                        "‐": "dash",
                        "–": "ndash",
                        "—": "mdash",
                        "―": "horbar",
                        ",": "comma",
                        ";": "semi",
                        "⁏": "bsemi",
                        ":": "colon",
                        "⩴": "Colone",
                        "!": "excl",
                        "¡": "iexcl",
                        "?": "quest",
                        "¿": "iquest",
                        ".": "period",
                        "‥": "nldr",
                        "…": "mldr",
                        "·": "middot",
                        "'": "apos",
                        "‘": "lsquo",
                        "’": "rsquo",
                        "‚": "sbquo",
                        "‹": "lsaquo",
                        "›": "rsaquo",
                        '"': "quot",
                        "“": "ldquo",
                        "”": "rdquo",
                        "„": "bdquo",
                        "«": "laquo",
                        "»": "raquo",
                        "(": "lpar",
                        ")": "rpar",
                        "[": "lsqb",
                        "]": "rsqb",
                        "{": "lcub",
                        "}": "rcub",
                        "⌈": "lceil",
                        "⌉": "rceil",
                        "⌊": "lfloor",
                        "⌋": "rfloor",
                        "⦅": "lopar",
                        "⦆": "ropar",
                        "⦋": "lbrke",
                        "⦌": "rbrke",
                        "⦍": "lbrkslu",
                        "⦎": "rbrksld",
                        "⦏": "lbrksld",
                        "⦐": "rbrkslu",
                        "⦑": "langd",
                        "⦒": "rangd",
                        "⦓": "lparlt",
                        "⦔": "rpargt",
                        "⦕": "gtlPar",
                        "⦖": "ltrPar",
                        "⟦": "lobrk",
                        "⟧": "robrk",
                        "⟨": "lang",
                        "⟩": "rang",
                        "⟪": "Lang",
                        "⟫": "Rang",
                        "⟬": "loang",
                        "⟭": "roang",
                        "❲": "lbbrk",
                        "❳": "rbbrk",
                        "‖": "Vert",
                        "§": "sect",
                        "¶": "para",
                        "@": "commat",
                        "*": "ast",
                        "/": "sol",
                        undefined: null,
                        "&": "amp",
                        "#": "num",
                        "%": "percnt",
                        "‰": "permil",
                        "‱": "pertenk",
                        "†": "dagger",
                        "‡": "Dagger",
                        "•": "bull",
                        "⁃": "hybull",
                        "′": "prime",
                        "″": "Prime",
                        "‴": "tprime",
                        "⁗": "qprime",
                        "‵": "bprime",
                        "⁁": "caret",
                        "`": "grave",
                        "´": "acute",
                        "˜": "tilde",
                        "^": "Hat",
                        "¯": "macr",
                        "˘": "breve",
                        "˙": "dot",
                        "¨": "die",
                        "˚": "ring",
                        "˝": "dblac",
                        "¸": "cedil",
                        "˛": "ogon",
                        "ˆ": "circ",
                        "ˇ": "caron",
                        "°": "deg",
                        "©": "copy",
                        "®": "reg",
                        "℗": "copysr",
                        "℘": "wp",
                        "℞": "rx",
                        "℧": "mho",
                        "℩": "iiota",
                        "←": "larr",
                        "↚": "nlarr",
                        "→": "rarr",
                        "↛": "nrarr",
                        "↑": "uarr",
                        "↓": "darr",
                        "↔": "harr",
                        "↮": "nharr",
                        "↕": "varr",
                        "↖": "nwarr",
                        "↗": "nearr",
                        "↘": "searr",
                        "↙": "swarr",
                        "↝": "rarrw",
                        "↝̸": "nrarrw",
                        "↞": "Larr",
                        "↟": "Uarr",
                        "↠": "Rarr",
                        "↡": "Darr",
                        "↢": "larrtl",
                        "↣": "rarrtl",
                        "↤": "mapstoleft",
                        "↥": "mapstoup",
                        "↦": "map",
                        "↧": "mapstodown",
                        "↩": "larrhk",
                        "↪": "rarrhk",
                        "↫": "larrlp",
                        "↬": "rarrlp",
                        "↭": "harrw",
                        "↰": "lsh",
                        "↱": "rsh",
                        "↲": "ldsh",
                        "↳": "rdsh",
                        "↵": "crarr",
                        "↶": "cularr",
                        "↷": "curarr",
                        "↺": "olarr",
                        "↻": "orarr",
                        "↼": "lharu",
                        "↽": "lhard",
                        "↾": "uharr",
                        "↿": "uharl",
                        "⇀": "rharu",
                        "⇁": "rhard",
                        "⇂": "dharr",
                        "⇃": "dharl",
                        "⇄": "rlarr",
                        "⇅": "udarr",
                        "⇆": "lrarr",
                        "⇇": "llarr",
                        "⇈": "uuarr",
                        "⇉": "rrarr",
                        "⇊": "ddarr",
                        "⇋": "lrhar",
                        "⇌": "rlhar",
                        "⇐": "lArr",
                        "⇍": "nlArr",
                        "⇑": "uArr",
                        "⇒": "rArr",
                        "⇏": "nrArr",
                        "⇓": "dArr",
                        "⇔": "iff",
                        "⇎": "nhArr",
                        "⇕": "vArr",
                        "⇖": "nwArr",
                        "⇗": "neArr",
                        "⇘": "seArr",
                        "⇙": "swArr",
                        "⇚": "lAarr",
                        "⇛": "rAarr",
                        "⇝": "zigrarr",
                        "⇤": "larrb",
                        "⇥": "rarrb",
                        "⇵": "duarr",
                        "⇽": "loarr",
                        "⇾": "roarr",
                        "⇿": "hoarr",
                        "∀": "forall",
                        "∁": "comp",
                        "∂": "part",
                        "∂̸": "npart",
                        "∃": "exist",
                        "∄": "nexist",
                        "∅": "empty",
                        "∇": "Del",
                        "∈": "in",
                        "∉": "notin",
                        "∋": "ni",
                        "∌": "notni",
                        "϶": "bepsi",
                        "∏": "prod",
                        "∐": "coprod",
                        "∑": "sum",
                        "+": "plus",
                        "±": "pm",
                        "÷": "div",
                        "×": "times",
                        "<": "lt",
                        "≮": "nlt",
                        "<⃒": "nvlt",
                        "=": "equals",
                        "≠": "ne",
                        "=⃥": "bne",
                        "⩵": "Equal",
                        ">": "gt",
                        "≯": "ngt",
                        ">⃒": "nvgt",
                        "¬": "not",
                        "|": "vert",
                        "¦": "brvbar",
                        "−": "minus",
                        "∓": "mp",
                        "∔": "plusdo",
                        "⁄": "frasl",
                        "∖": "setmn",
                        "∗": "lowast",
                        "∘": "compfn",
                        "√": "Sqrt",
                        "∝": "prop",
                        "∞": "infin",
                        "∟": "angrt",
                        "∠": "ang",
                        "∠⃒": "nang",
                        "∡": "angmsd",
                        "∢": "angsph",
                        "∣": "mid",
                        "∤": "nmid",
                        "∥": "par",
                        "∦": "npar",
                        "∧": "and",
                        "∨": "or",
                        "∩": "cap",
                        "∩︀": "caps",
                        "∪": "cup",
                        "∪︀": "cups",
                        "∫": "int",
                        "∬": "Int",
                        "∭": "tint",
                        "⨌": "qint",
                        "∮": "oint",
                        "∯": "Conint",
                        "∰": "Cconint",
                        "∱": "cwint",
                        "∲": "cwconint",
                        "∳": "awconint",
                        "∴": "there4",
                        "∵": "becaus",
                        "∶": "ratio",
                        "∷": "Colon",
                        "∸": "minusd",
                        "∺": "mDDot",
                        "∻": "homtht",
                        "∼": "sim",
                        "≁": "nsim",
                        "∼⃒": "nvsim",
                        "∽": "bsim",
                        "∽̱": "race",
                        "∾": "ac",
                        "∾̳": "acE",
                        "∿": "acd",
                        "≀": "wr",
                        "≂": "esim",
                        "≂̸": "nesim",
                        "≃": "sime",
                        "≄": "nsime",
                        "≅": "cong",
                        "≇": "ncong",
                        "≆": "simne",
                        "≈": "ap",
                        "≉": "nap",
                        "≊": "ape",
                        "≋": "apid",
                        "≋̸": "napid",
                        "≌": "bcong",
                        "≍": "CupCap",
                        "≭": "NotCupCap",
                        "≍⃒": "nvap",
                        "≎": "bump",
                        "≎̸": "nbump",
                        "≏": "bumpe",
                        "≏̸": "nbumpe",
                        "≐": "doteq",
                        "≐̸": "nedot",
                        "≑": "eDot",
                        "≒": "efDot",
                        "≓": "erDot",
                        "≔": "colone",
                        "≕": "ecolon",
                        "≖": "ecir",
                        "≗": "cire",
                        "≙": "wedgeq",
                        "≚": "veeeq",
                        "≜": "trie",
                        "≟": "equest",
                        "≡": "equiv",
                        "≢": "nequiv",
                        "≡⃥": "bnequiv",
                        "≤": "le",
                        "≰": "nle",
                        "≤⃒": "nvle",
                        "≥": "ge",
                        "≱": "nge",
                        "≥⃒": "nvge",
                        "≦": "lE",
                        "≦̸": "nlE",
                        "≧": "gE",
                        "≧̸": "ngE",
                        "≨︀": "lvnE",
                        "≨": "lnE",
                        "≩": "gnE",
                        "≩︀": "gvnE",
                        "≪": "ll",
                        "≪̸": "nLtv",
                        "≪⃒": "nLt",
                        "≫": "gg",
                        "≫̸": "nGtv",
                        "≫⃒": "nGt",
                        "≬": "twixt",
                        "≲": "lsim",
                        "≴": "nlsim",
                        "≳": "gsim",
                        "≵": "ngsim",
                        "≶": "lg",
                        "≸": "ntlg",
                        "≷": "gl",
                        "≹": "ntgl",
                        "≺": "pr",
                        "⊀": "npr",
                        "≻": "sc",
                        "⊁": "nsc",
                        "≼": "prcue",
                        "⋠": "nprcue",
                        "≽": "sccue",
                        "⋡": "nsccue",
                        "≾": "prsim",
                        "≿": "scsim",
                        "≿̸": "NotSucceedsTilde",
                        "⊂": "sub",
                        "⊄": "nsub",
                        "⊂⃒": "vnsub",
                        "⊃": "sup",
                        "⊅": "nsup",
                        "⊃⃒": "vnsup",
                        "⊆": "sube",
                        "⊈": "nsube",
                        "⊇": "supe",
                        "⊉": "nsupe",
                        "⊊︀": "vsubne",
                        "⊊": "subne",
                        "⊋︀": "vsupne",
                        "⊋": "supne",
                        "⊍": "cupdot",
                        "⊎": "uplus",
                        "⊏": "sqsub",
                        "⊏̸": "NotSquareSubset",
                        "⊐": "sqsup",
                        "⊐̸": "NotSquareSuperset",
                        "⊑": "sqsube",
                        "⋢": "nsqsube",
                        "⊒": "sqsupe",
                        "⋣": "nsqsupe",
                        "⊓": "sqcap",
                        "⊓︀": "sqcaps",
                        "⊔": "sqcup",
                        "⊔︀": "sqcups",
                        "⊕": "oplus",
                        "⊖": "ominus",
                        "⊗": "otimes",
                        "⊘": "osol",
                        "⊙": "odot",
                        "⊚": "ocir",
                        "⊛": "oast",
                        "⊝": "odash",
                        "⊞": "plusb",
                        "⊟": "minusb",
                        "⊠": "timesb",
                        "⊡": "sdotb",
                        "⊢": "vdash",
                        "⊬": "nvdash",
                        "⊣": "dashv",
                        "⊤": "top",
                        "⊥": "bot",
                        "⊧": "models",
                        "⊨": "vDash",
                        "⊭": "nvDash",
                        "⊩": "Vdash",
                        "⊮": "nVdash",
                        "⊪": "Vvdash",
                        "⊫": "VDash",
                        "⊯": "nVDash",
                        "⊰": "prurel",
                        "⊲": "vltri",
                        "⋪": "nltri",
                        "⊳": "vrtri",
                        "⋫": "nrtri",
                        "⊴": "ltrie",
                        "⋬": "nltrie",
                        "⊴⃒": "nvltrie",
                        "⊵": "rtrie",
                        "⋭": "nrtrie",
                        "⊵⃒": "nvrtrie",
                        "⊶": "origof",
                        "⊷": "imof",
                        "⊸": "mumap",
                        "⊹": "hercon",
                        "⊺": "intcal",
                        "⊻": "veebar",
                        "⊽": "barvee",
                        "⊾": "angrtvb",
                        "⊿": "lrtri",
                        "⋀": "Wedge",
                        "⋁": "Vee",
                        "⋂": "xcap",
                        "⋃": "xcup",
                        "⋄": "diam",
                        "⋅": "sdot",
                        "⋆": "Star",
                        "⋇": "divonx",
                        "⋈": "bowtie",
                        "⋉": "ltimes",
                        "⋊": "rtimes",
                        "⋋": "lthree",
                        "⋌": "rthree",
                        "⋍": "bsime",
                        "⋎": "cuvee",
                        "⋏": "cuwed",
                        "⋐": "Sub",
                        "⋑": "Sup",
                        "⋒": "Cap",
                        "⋓": "Cup",
                        "⋔": "fork",
                        "⋕": "epar",
                        "⋖": "ltdot",
                        "⋗": "gtdot",
                        "⋘": "Ll",
                        "⋘̸": "nLl",
                        "⋙": "Gg",
                        "⋙̸": "nGg",
                        "⋚︀": "lesg",
                        "⋚": "leg",
                        "⋛": "gel",
                        "⋛︀": "gesl",
                        "⋞": "cuepr",
                        "⋟": "cuesc",
                        "⋦": "lnsim",
                        "⋧": "gnsim",
                        "⋨": "prnsim",
                        "⋩": "scnsim",
                        "⋮": "vellip",
                        "⋯": "ctdot",
                        "⋰": "utdot",
                        "⋱": "dtdot",
                        "⋲": "disin",
                        "⋳": "isinsv",
                        "⋴": "isins",
                        "⋵": "isindot",
                        "⋵̸": "notindot",
                        "⋶": "notinvc",
                        "⋷": "notinvb",
                        "⋹": "isinE",
                        "⋹̸": "notinE",
                        "⋺": "nisd",
                        "⋻": "xnis",
                        "⋼": "nis",
                        "⋽": "notnivc",
                        "⋾": "notnivb",
                        "⌅": "barwed",
                        "⌆": "Barwed",
                        "⌌": "drcrop",
                        "⌍": "dlcrop",
                        "⌎": "urcrop",
                        "⌏": "ulcrop",
                        "⌐": "bnot",
                        "⌒": "profline",
                        "⌓": "profsurf",
                        "⌕": "telrec",
                        "⌖": "target",
                        "⌜": "ulcorn",
                        "⌝": "urcorn",
                        "⌞": "dlcorn",
                        "⌟": "drcorn",
                        "⌢": "frown",
                        "⌣": "smile",
                        "⌭": "cylcty",
                        "⌮": "profalar",
                        "⌶": "topbot",
                        "⌽": "ovbar",
                        "⌿": "solbar",
                        "⍼": "angzarr",
                        "⎰": "lmoust",
                        "⎱": "rmoust",
                        "⎴": "tbrk",
                        "⎵": "bbrk",
                        "⎶": "bbrktbrk",
                        "⏜": "OverParenthesis",
                        "⏝": "UnderParenthesis",
                        "⏞": "OverBrace",
                        "⏟": "UnderBrace",
                        "⏢": "trpezium",
                        "⏧": "elinters",
                        "␣": "blank",
                        "─": "boxh",
                        "│": "boxv",
                        "┌": "boxdr",
                        "┐": "boxdl",
                        "└": "boxur",
                        "┘": "boxul",
                        "├": "boxvr",
                        "┤": "boxvl",
                        "┬": "boxhd",
                        "┴": "boxhu",
                        "┼": "boxvh",
                        "═": "boxH",
                        "║": "boxV",
                        "╒": "boxdR",
                        "╓": "boxDr",
                        "╔": "boxDR",
                        "╕": "boxdL",
                        "╖": "boxDl",
                        "╗": "boxDL",
                        "╘": "boxuR",
                        "╙": "boxUr",
                        "╚": "boxUR",
                        "╛": "boxuL",
                        "╜": "boxUl",
                        "╝": "boxUL",
                        "╞": "boxvR",
                        "╟": "boxVr",
                        "╠": "boxVR",
                        "╡": "boxvL",
                        "╢": "boxVl",
                        "╣": "boxVL",
                        "╤": "boxHd",
                        "╥": "boxhD",
                        "╦": "boxHD",
                        "╧": "boxHu",
                        "╨": "boxhU",
                        "╩": "boxHU",
                        "╪": "boxvH",
                        "╫": "boxVh",
                        "╬": "boxVH",
                        "▀": "uhblk",
                        "▄": "lhblk",
                        "█": "block",
                        "░": "blk14",
                        "▒": "blk12",
                        "▓": "blk34",
                        "□": "squ",
                        "▪": "squf",
                        "▫": "EmptyVerySmallSquare",
                        "▭": "rect",
                        "▮": "marker",
                        "▱": "fltns",
                        "△": "xutri",
                        "▴": "utrif",
                        "▵": "utri",
                        "▸": "rtrif",
                        "▹": "rtri",
                        "▽": "xdtri",
                        "▾": "dtrif",
                        "▿": "dtri",
                        "◂": "ltrif",
                        "◃": "ltri",
                        "◊": "loz",
                        "○": "cir",
                        "◬": "tridot",
                        "◯": "xcirc",
                        "◸": "ultri",
                        "◹": "urtri",
                        "◺": "lltri",
                        "◻": "EmptySmallSquare",
                        "◼": "FilledSmallSquare",
                        "★": "starf",
                        "☆": "star",
                        "☎": "phone",
                        "♀": "female",
                        "♂": "male",
                        "♠": "spades",
                        "♣": "clubs",
                        "♥": "hearts",
                        "♦": "diams",
                        "♪": "sung",
                        "✓": "check",
                        "✗": "cross",
                        "✠": "malt",
                        "✶": "sext",
                        "❘": "VerticalSeparator",
                        "⟈": "bsolhsub",
                        "⟉": "suphsol",
                        "⟵": "xlarr",
                        "⟶": "xrarr",
                        "⟷": "xharr",
                        "⟸": "xlArr",
                        "⟹": "xrArr",
                        "⟺": "xhArr",
                        "⟼": "xmap",
                        "⟿": "dzigrarr",
                        "⤂": "nvlArr",
                        "⤃": "nvrArr",
                        "⤄": "nvHarr",
                        "⤅": "Map",
                        "⤌": "lbarr",
                        "⤍": "rbarr",
                        "⤎": "lBarr",
                        "⤏": "rBarr",
                        "⤐": "RBarr",
                        "⤑": "DDotrahd",
                        "⤒": "UpArrowBar",
                        "⤓": "DownArrowBar",
                        "⤖": "Rarrtl",
                        "⤙": "latail",
                        "⤚": "ratail",
                        "⤛": "lAtail",
                        "⤜": "rAtail",
                        "⤝": "larrfs",
                        "⤞": "rarrfs",
                        "⤟": "larrbfs",
                        "⤠": "rarrbfs",
                        "⤣": "nwarhk",
                        "⤤": "nearhk",
                        "⤥": "searhk",
                        "⤦": "swarhk",
                        "⤧": "nwnear",
                        "⤨": "toea",
                        "⤩": "tosa",
                        "⤪": "swnwar",
                        "⤳": "rarrc",
                        "⤳̸": "nrarrc",
                        "⤵": "cudarrr",
                        "⤶": "ldca",
                        "⤷": "rdca",
                        "⤸": "cudarrl",
                        "⤹": "larrpl",
                        "⤼": "curarrm",
                        "⤽": "cularrp",
                        "⥅": "rarrpl",
                        "⥈": "harrcir",
                        "⥉": "Uarrocir",
                        "⥊": "lurdshar",
                        "⥋": "ldrushar",
                        "⥎": "LeftRightVector",
                        "⥏": "RightUpDownVector",
                        "⥐": "DownLeftRightVector",
                        "⥑": "LeftUpDownVector",
                        "⥒": "LeftVectorBar",
                        "⥓": "RightVectorBar",
                        "⥔": "RightUpVectorBar",
                        "⥕": "RightDownVectorBar",
                        "⥖": "DownLeftVectorBar",
                        "⥗": "DownRightVectorBar",
                        "⥘": "LeftUpVectorBar",
                        "⥙": "LeftDownVectorBar",
                        "⥚": "LeftTeeVector",
                        "⥛": "RightTeeVector",
                        "⥜": "RightUpTeeVector",
                        "⥝": "RightDownTeeVector",
                        "⥞": "DownLeftTeeVector",
                        "⥟": "DownRightTeeVector",
                        "⥠": "LeftUpTeeVector",
                        "⥡": "LeftDownTeeVector",
                        "⥢": "lHar",
                        "⥣": "uHar",
                        "⥤": "rHar",
                        "⥥": "dHar",
                        "⥦": "luruhar",
                        "⥧": "ldrdhar",
                        "⥨": "ruluhar",
                        "⥩": "rdldhar",
                        "⥪": "lharul",
                        "⥫": "llhard",
                        "⥬": "rharul",
                        "⥭": "lrhard",
                        "⥮": "udhar",
                        "⥯": "duhar",
                        "⥰": "RoundImplies",
                        "⥱": "erarr",
                        "⥲": "simrarr",
                        "⥳": "larrsim",
                        "⥴": "rarrsim",
                        "⥵": "rarrap",
                        "⥶": "ltlarr",
                        "⥸": "gtrarr",
                        "⥹": "subrarr",
                        "⥻": "suplarr",
                        "⥼": "lfisht",
                        "⥽": "rfisht",
                        "⥾": "ufisht",
                        "⥿": "dfisht",
                        "⦚": "vzigzag",
                        "⦜": "vangrt",
                        "⦝": "angrtvbd",
                        "⦤": "ange",
                        "⦥": "range",
                        "⦦": "dwangle",
                        "⦧": "uwangle",
                        "⦨": "angmsdaa",
                        "⦩": "angmsdab",
                        "⦪": "angmsdac",
                        "⦫": "angmsdad",
                        "⦬": "angmsdae",
                        "⦭": "angmsdaf",
                        "⦮": "angmsdag",
                        "⦯": "angmsdah",
                        "⦰": "bemptyv",
                        "⦱": "demptyv",
                        "⦲": "cemptyv",
                        "⦳": "raemptyv",
                        "⦴": "laemptyv",
                        "⦵": "ohbar",
                        "⦶": "omid",
                        "⦷": "opar",
                        "⦹": "operp",
                        "⦻": "olcross",
                        "⦼": "odsold",
                        "⦾": "olcir",
                        "⦿": "ofcir",
                        "⧀": "olt",
                        "⧁": "ogt",
                        "⧂": "cirscir",
                        "⧃": "cirE",
                        "⧄": "solb",
                        "⧅": "bsolb",
                        "⧉": "boxbox",
                        "⧍": "trisb",
                        "⧎": "rtriltri",
                        "⧏": "LeftTriangleBar",
                        "⧏̸": "NotLeftTriangleBar",
                        "⧐": "RightTriangleBar",
                        "⧐̸": "NotRightTriangleBar",
                        "⧜": "iinfin",
                        "⧝": "infintie",
                        "⧞": "nvinfin",
                        "⧣": "eparsl",
                        "⧤": "smeparsl",
                        "⧥": "eqvparsl",
                        "⧫": "lozf",
                        "⧴": "RuleDelayed",
                        "⧶": "dsol",
                        "⨀": "xodot",
                        "⨁": "xoplus",
                        "⨂": "xotime",
                        "⨄": "xuplus",
                        "⨆": "xsqcup",
                        "⨍": "fpartint",
                        "⨐": "cirfnint",
                        "⨑": "awint",
                        "⨒": "rppolint",
                        "⨓": "scpolint",
                        "⨔": "npolint",
                        "⨕": "pointint",
                        "⨖": "quatint",
                        "⨗": "intlarhk",
                        "⨢": "pluscir",
                        "⨣": "plusacir",
                        "⨤": "simplus",
                        "⨥": "plusdu",
                        "⨦": "plussim",
                        "⨧": "plustwo",
                        "⨩": "mcomma",
                        "⨪": "minusdu",
                        "⨭": "loplus",
                        "⨮": "roplus",
                        "⨯": "Cross",
                        "⨰": "timesd",
                        "⨱": "timesbar",
                        "⨳": "smashp",
                        "⨴": "lotimes",
                        "⨵": "rotimes",
                        "⨶": "otimesas",
                        "⨷": "Otimes",
                        "⨸": "odiv",
                        "⨹": "triplus",
                        "⨺": "triminus",
                        "⨻": "tritime",
                        "⨼": "iprod",
                        "⨿": "amalg",
                        "⩀": "capdot",
                        "⩂": "ncup",
                        "⩃": "ncap",
                        "⩄": "capand",
                        "⩅": "cupor",
                        "⩆": "cupcap",
                        "⩇": "capcup",
                        "⩈": "cupbrcap",
                        "⩉": "capbrcup",
                        "⩊": "cupcup",
                        "⩋": "capcap",
                        "⩌": "ccups",
                        "⩍": "ccaps",
                        "⩐": "ccupssm",
                        "⩓": "And",
                        "⩔": "Or",
                        "⩕": "andand",
                        "⩖": "oror",
                        "⩗": "orslope",
                        "⩘": "andslope",
                        "⩚": "andv",
                        "⩛": "orv",
                        "⩜": "andd",
                        "⩝": "ord",
                        "⩟": "wedbar",
                        "⩦": "sdote",
                        "⩪": "simdot",
                        "⩭": "congdot",
                        "⩭̸": "ncongdot",
                        "⩮": "easter",
                        "⩯": "apacir",
                        "⩰": "apE",
                        "⩰̸": "napE",
                        "⩱": "eplus",
                        "⩲": "pluse",
                        "⩳": "Esim",
                        "⩷": "eDDot",
                        "⩸": "equivDD",
                        "⩹": "ltcir",
                        "⩺": "gtcir",
                        "⩻": "ltquest",
                        "⩼": "gtquest",
                        "⩽": "les",
                        "⩽̸": "nles",
                        "⩾": "ges",
                        "⩾̸": "nges",
                        "⩿": "lesdot",
                        "⪀": "gesdot",
                        "⪁": "lesdoto",
                        "⪂": "gesdoto",
                        "⪃": "lesdotor",
                        "⪄": "gesdotol",
                        "⪅": "lap",
                        "⪆": "gap",
                        "⪇": "lne",
                        "⪈": "gne",
                        "⪉": "lnap",
                        "⪊": "gnap",
                        "⪋": "lEg",
                        "⪌": "gEl",
                        "⪍": "lsime",
                        "⪎": "gsime",
                        "⪏": "lsimg",
                        "⪐": "gsiml",
                        "⪑": "lgE",
                        "⪒": "glE",
                        "⪓": "lesges",
                        "⪔": "gesles",
                        "⪕": "els",
                        "⪖": "egs",
                        "⪗": "elsdot",
                        "⪘": "egsdot",
                        "⪙": "el",
                        "⪚": "eg",
                        "⪝": "siml",
                        "⪞": "simg",
                        "⪟": "simlE",
                        "⪠": "simgE",
                        "⪡": "LessLess",
                        "⪡̸": "NotNestedLessLess",
                        "⪢": "GreaterGreater",
                        "⪢̸": "NotNestedGreaterGreater",
                        "⪤": "glj",
                        "⪥": "gla",
                        "⪦": "ltcc",
                        "⪧": "gtcc",
                        "⪨": "lescc",
                        "⪩": "gescc",
                        "⪪": "smt",
                        "⪫": "lat",
                        "⪬": "smte",
                        "⪬︀": "smtes",
                        "⪭": "late",
                        "⪭︀": "lates",
                        "⪮": "bumpE",
                        "⪯": "pre",
                        "⪯̸": "npre",
                        "⪰": "sce",
                        "⪰̸": "nsce",
                        "⪳": "prE",
                        "⪴": "scE",
                        "⪵": "prnE",
                        "⪶": "scnE",
                        "⪷": "prap",
                        "⪸": "scap",
                        "⪹": "prnap",
                        "⪺": "scnap",
                        "⪻": "Pr",
                        "⪼": "Sc",
                        "⪽": "subdot",
                        "⪾": "supdot",
                        "⪿": "subplus",
                        "⫀": "supplus",
                        "⫁": "submult",
                        "⫂": "supmult",
                        "⫃": "subedot",
                        "⫄": "supedot",
                        "⫅": "subE",
                        "⫅̸": "nsubE",
                        "⫆": "supE",
                        "⫆̸": "nsupE",
                        "⫇": "subsim",
                        "⫈": "supsim",
                        "⫋︀": "vsubnE",
                        "⫋": "subnE",
                        "⫌︀": "vsupnE",
                        "⫌": "supnE",
                        "⫏": "csub",
                        "⫐": "csup",
                        "⫑": "csube",
                        "⫒": "csupe",
                        "⫓": "subsup",
                        "⫔": "supsub",
                        "⫕": "subsub",
                        "⫖": "supsup",
                        "⫗": "suphsub",
                        "⫘": "supdsub",
                        "⫙": "forkv",
                        "⫚": "topfork",
                        "⫛": "mlcp",
                        "⫤": "Dashv",
                        "⫦": "Vdashl",
                        "⫧": "Barv",
                        "⫨": "vBar",
                        "⫩": "vBarv",
                        "⫫": "Vbar",
                        "⫬": "Not",
                        "⫭": "bNot",
                        "⫮": "rnmid",
                        "⫯": "cirmid",
                        "⫰": "midcir",
                        "⫱": "topcir",
                        "⫲": "nhpar",
                        "⫳": "parsim",
                        "⫽": "parsl",
                        "⫽⃥": "nparsl",
                        "♭": "flat",
                        "♮": "natur",
                        "♯": "sharp",
                        "¤": "curren",
                        "¢": "cent",
                        $: "dollar",
                        "£": "pound",
                        "¥": "yen",
                        "€": "euro",
                        "¹": "sup1",
                        "½": "half",
                        "⅓": "frac13",
                        "¼": "frac14",
                        "⅕": "frac15",
                        "⅙": "frac16",
                        "⅛": "frac18",
                        "²": "sup2",
                        "⅔": "frac23",
                        "⅖": "frac25",
                        "³": "sup3",
                        "¾": "frac34",
                        "⅗": "frac35",
                        "⅜": "frac38",
                        "⅘": "frac45",
                        "⅚": "frac56",
                        "⅝": "frac58",
                        "⅞": "frac78",
                        "𝒶": "ascr",
                        "𝕒": "aopf",
                        "𝔞": "afr",
                        "𝔸": "Aopf",
                        "𝔄": "Afr",
                        "𝒜": "Ascr",
                        "ª": "ordf",
                        "á": "aacute",
                        "Á": "Aacute",
                        "à": "agrave",
                        "À": "Agrave",
                        "ă": "abreve",
                        "Ă": "Abreve",
                        "â": "acirc",
                        "Â": "Acirc",
                        "å": "aring",
                        "Å": "angst",
                        "ä": "auml",
                        "Ä": "Auml",
                        "ã": "atilde",
                        "Ã": "Atilde",
                        "ą": "aogon",
                        "Ą": "Aogon",
                        "ā": "amacr",
                        "Ā": "Amacr",
                        "æ": "aelig",
                        "Æ": "AElig",
                        "𝒷": "bscr",
                        "𝕓": "bopf",
                        "𝔟": "bfr",
                        "𝔹": "Bopf",
                        "ℬ": "Bscr",
                        "𝔅": "Bfr",
                        "𝔠": "cfr",
                        "𝒸": "cscr",
                        "𝕔": "copf",
                        "ℭ": "Cfr",
                        "𝒞": "Cscr",
                        "ℂ": "Copf",
                        "ć": "cacute",
                        "Ć": "Cacute",
                        "ĉ": "ccirc",
                        "Ĉ": "Ccirc",
                        "č": "ccaron",
                        "Č": "Ccaron",
                        "ċ": "cdot",
                        "Ċ": "Cdot",
                        "ç": "ccedil",
                        "Ç": "Ccedil",
                        "℅": "incare",
                        "𝔡": "dfr",
                        "ⅆ": "dd",
                        "𝕕": "dopf",
                        "𝒹": "dscr",
                        "𝒟": "Dscr",
                        "𝔇": "Dfr",
                        "ⅅ": "DD",
                        "𝔻": "Dopf",
                        "ď": "dcaron",
                        "Ď": "Dcaron",
                        "đ": "dstrok",
                        "Đ": "Dstrok",
                        "ð": "eth",
                        "Ð": "ETH",
                        "ⅇ": "ee",
                        "ℯ": "escr",
                        "𝔢": "efr",
                        "𝕖": "eopf",
                        "ℰ": "Escr",
                        "𝔈": "Efr",
                        "𝔼": "Eopf",
                        "é": "eacute",
                        "É": "Eacute",
                        "è": "egrave",
                        "È": "Egrave",
                        "ê": "ecirc",
                        "Ê": "Ecirc",
                        "ě": "ecaron",
                        "Ě": "Ecaron",
                        "ë": "euml",
                        "Ë": "Euml",
                        "ė": "edot",
                        "Ė": "Edot",
                        "ę": "eogon",
                        "Ę": "Eogon",
                        "ē": "emacr",
                        "Ē": "Emacr",
                        "𝔣": "ffr",
                        "𝕗": "fopf",
                        "𝒻": "fscr",
                        "𝔉": "Ffr",
                        "𝔽": "Fopf",
                        "ℱ": "Fscr",
                        "ff": "fflig",
                        "ffi": "ffilig",
                        "ffl": "ffllig",
                        "fi": "filig",
                        fj: "fjlig",
                        "fl": "fllig",
                        "ƒ": "fnof",
                        "ℊ": "gscr",
                        "𝕘": "gopf",
                        "𝔤": "gfr",
                        "𝒢": "Gscr",
                        "𝔾": "Gopf",
                        "𝔊": "Gfr",
                        "ǵ": "gacute",
                        "ğ": "gbreve",
                        "Ğ": "Gbreve",
                        "ĝ": "gcirc",
                        "Ĝ": "Gcirc",
                        "ġ": "gdot",
                        "Ġ": "Gdot",
                        "Ģ": "Gcedil",
                        "𝔥": "hfr",
                        "ℎ": "planckh",
                        "𝒽": "hscr",
                        "𝕙": "hopf",
                        "ℋ": "Hscr",
                        "ℌ": "Hfr",
                        "ℍ": "Hopf",
                        "ĥ": "hcirc",
                        "Ĥ": "Hcirc",
                        "ℏ": "hbar",
                        "ħ": "hstrok",
                        "Ħ": "Hstrok",
                        "𝕚": "iopf",
                        "𝔦": "ifr",
                        "𝒾": "iscr",
                        "ⅈ": "ii",
                        "𝕀": "Iopf",
                        "ℐ": "Iscr",
                        "ℑ": "Im",
                        "í": "iacute",
                        "Í": "Iacute",
                        "ì": "igrave",
                        "Ì": "Igrave",
                        "î": "icirc",
                        "Î": "Icirc",
                        "ï": "iuml",
                        "Ï": "Iuml",
                        "ĩ": "itilde",
                        "Ĩ": "Itilde",
                        "İ": "Idot",
                        "į": "iogon",
                        "Į": "Iogon",
                        "ī": "imacr",
                        "Ī": "Imacr",
                        "ij": "ijlig",
                        "IJ": "IJlig",
                        "ı": "imath",
                        "𝒿": "jscr",
                        "𝕛": "jopf",
                        "𝔧": "jfr",
                        "𝒥": "Jscr",
                        "𝔍": "Jfr",
                        "𝕁": "Jopf",
                        "ĵ": "jcirc",
                        "Ĵ": "Jcirc",
                        "ȷ": "jmath",
                        "𝕜": "kopf",
                        "𝓀": "kscr",
                        "𝔨": "kfr",
                        "𝒦": "Kscr",
                        "𝕂": "Kopf",
                        "𝔎": "Kfr",
                        "ķ": "kcedil",
                        "Ķ": "Kcedil",
                        "𝔩": "lfr",
                        "𝓁": "lscr",
                        "ℓ": "ell",
                        "𝕝": "lopf",
                        "ℒ": "Lscr",
                        "𝔏": "Lfr",
                        "𝕃": "Lopf",
                        "ĺ": "lacute",
                        "Ĺ": "Lacute",
                        "ľ": "lcaron",
                        "Ľ": "Lcaron",
                        "ļ": "lcedil",
                        "Ļ": "Lcedil",
                        "ł": "lstrok",
                        "Ł": "Lstrok",
                        "ŀ": "lmidot",
                        "Ŀ": "Lmidot",
                        "𝔪": "mfr",
                        "𝕞": "mopf",
                        "𝓂": "mscr",
                        "𝔐": "Mfr",
                        "𝕄": "Mopf",
                        "ℳ": "Mscr",
                        "𝔫": "nfr",
                        "𝕟": "nopf",
                        "𝓃": "nscr",
                        "ℕ": "Nopf",
                        "𝒩": "Nscr",
                        "𝔑": "Nfr",
                        "ń": "nacute",
                        "Ń": "Nacute",
                        "ň": "ncaron",
                        "Ň": "Ncaron",
                        "ñ": "ntilde",
                        "Ñ": "Ntilde",
                        "ņ": "ncedil",
                        "Ņ": "Ncedil",
                        "№": "numero",
                        "ŋ": "eng",
                        "Ŋ": "ENG",
                        "𝕠": "oopf",
                        "𝔬": "ofr",
                        "ℴ": "oscr",
                        "𝒪": "Oscr",
                        "𝔒": "Ofr",
                        "𝕆": "Oopf",
                        "º": "ordm",
                        "ó": "oacute",
                        "Ó": "Oacute",
                        "ò": "ograve",
                        "Ò": "Ograve",
                        "ô": "ocirc",
                        "Ô": "Ocirc",
                        "ö": "ouml",
                        "Ö": "Ouml",
                        "ő": "odblac",
                        "Ő": "Odblac",
                        "õ": "otilde",
                        "Õ": "Otilde",
                        "ø": "oslash",
                        "Ø": "Oslash",
                        "ō": "omacr",
                        "Ō": "Omacr",
                        "œ": "oelig",
                        "Œ": "OElig",
                        "𝔭": "pfr",
                        "𝓅": "pscr",
                        "𝕡": "popf",
                        "ℙ": "Popf",
                        "𝔓": "Pfr",
                        "𝒫": "Pscr",
                        "𝕢": "qopf",
                        "𝔮": "qfr",
                        "𝓆": "qscr",
                        "𝒬": "Qscr",
                        "𝔔": "Qfr",
                        "ℚ": "Qopf",
                        "ĸ": "kgreen",
                        "𝔯": "rfr",
                        "𝕣": "ropf",
                        "𝓇": "rscr",
                        "ℛ": "Rscr",
                        "ℜ": "Re",
                        "ℝ": "Ropf",
                        "ŕ": "racute",
                        "Ŕ": "Racute",
                        "ř": "rcaron",
                        "Ř": "Rcaron",
                        "ŗ": "rcedil",
                        "Ŗ": "Rcedil",
                        "𝕤": "sopf",
                        "𝓈": "sscr",
                        "𝔰": "sfr",
                        "𝕊": "Sopf",
                        "𝔖": "Sfr",
                        "𝒮": "Sscr",
                        "Ⓢ": "oS",
                        "ś": "sacute",
                        "Ś": "Sacute",
                        "ŝ": "scirc",
                        "Ŝ": "Scirc",
                        "š": "scaron",
                        "Š": "Scaron",
                        "ş": "scedil",
                        "Ş": "Scedil",
                        "ß": "szlig",
                        "𝔱": "tfr",
                        "𝓉": "tscr",
                        "𝕥": "topf",
                        "𝒯": "Tscr",
                        "𝔗": "Tfr",
                        "𝕋": "Topf",
                        "ť": "tcaron",
                        "Ť": "Tcaron",
                        "ţ": "tcedil",
                        "Ţ": "Tcedil",
                        "™": "trade",
                        "ŧ": "tstrok",
                        "Ŧ": "Tstrok",
                        "𝓊": "uscr",
                        "𝕦": "uopf",
                        "𝔲": "ufr",
                        "𝕌": "Uopf",
                        "𝔘": "Ufr",
                        "𝒰": "Uscr",
                        "ú": "uacute",
                        "Ú": "Uacute",
                        "ù": "ugrave",
                        "Ù": "Ugrave",
                        "ŭ": "ubreve",
                        "Ŭ": "Ubreve",
                        "û": "ucirc",
                        "Û": "Ucirc",
                        "ů": "uring",
                        "Ů": "Uring",
                        "ü": "uuml",
                        "Ü": "Uuml",
                        "ű": "udblac",
                        "Ű": "Udblac",
                        "ũ": "utilde",
                        "Ũ": "Utilde",
                        "ų": "uogon",
                        "Ų": "Uogon",
                        "ū": "umacr",
                        "Ū": "Umacr",
                        "𝔳": "vfr",
                        "𝕧": "vopf",
                        "𝓋": "vscr",
                        "𝔙": "Vfr",
                        "𝕍": "Vopf",
                        "𝒱": "Vscr",
                        "𝕨": "wopf",
                        "𝓌": "wscr",
                        "𝔴": "wfr",
                        "𝒲": "Wscr",
                        "𝕎": "Wopf",
                        "𝔚": "Wfr",
                        "ŵ": "wcirc",
                        "Ŵ": "Wcirc",
                        "𝔵": "xfr",
                        "𝓍": "xscr",
                        "𝕩": "xopf",
                        "𝕏": "Xopf",
                        "𝔛": "Xfr",
                        "𝒳": "Xscr",
                        "𝔶": "yfr",
                        "𝓎": "yscr",
                        "𝕪": "yopf",
                        "𝒴": "Yscr",
                        "𝔜": "Yfr",
                        "𝕐": "Yopf",
                        "ý": "yacute",
                        "Ý": "Yacute",
                        "ŷ": "ycirc",
                        "Ŷ": "Ycirc",
                        "ÿ": "yuml",
                        "Ÿ": "Yuml",
                        "𝓏": "zscr",
                        "𝔷": "zfr",
                        "𝕫": "zopf",
                        "ℨ": "Zfr",
                        "ℤ": "Zopf",
                        "𝒵": "Zscr",
                        "ź": "zacute",
                        "Ź": "Zacute",
                        "ž": "zcaron",
                        "Ž": "Zcaron",
                        "ż": "zdot",
                        "Ż": "Zdot",
                        "Ƶ": "imped",
                        "þ": "thorn",
                        "Þ": "THORN",
                        "ʼn": "napos",
                        "α": "alpha",
                        "Α": "Alpha",
                        "β": "beta",
                        "Β": "Beta",
                        "γ": "gamma",
                        "Γ": "Gamma",
                        "δ": "delta",
                        "Δ": "Delta",
                        "ε": "epsi",
                        "ϵ": "epsiv",
                        "Ε": "Epsilon",
                        "ϝ": "gammad",
                        "Ϝ": "Gammad",
                        "ζ": "zeta",
                        "Ζ": "Zeta",
                        "η": "eta",
                        "Η": "Eta",
                        "θ": "theta",
                        "ϑ": "thetav",
                        "Θ": "Theta",
                        "ι": "iota",
                        "Ι": "Iota",
                        "κ": "kappa",
                        "ϰ": "kappav",
                        "Κ": "Kappa",
                        "λ": "lambda",
                        "Λ": "Lambda",
                        "μ": "mu",
                        "µ": "micro",
                        "Μ": "Mu",
                        "ν": "nu",
                        "Ν": "Nu",
                        "ξ": "xi",
                        "Ξ": "Xi",
                        "ο": "omicron",
                        "Ο": "Omicron",
                        "π": "pi",
                        "ϖ": "piv",
                        "Π": "Pi",
                        "ρ": "rho",
                        "ϱ": "rhov",
                        "Ρ": "Rho",
                        "σ": "sigma",
                        "Σ": "Sigma",
                        "ς": "sigmaf",
                        "τ": "tau",
                        "Τ": "Tau",
                        "υ": "upsi",
                        "Υ": "Upsilon",
                        "ϒ": "Upsi",
                        "φ": "phi",
                        "ϕ": "phiv",
                        "Φ": "Phi",
                        "χ": "chi",
                        "Χ": "Chi",
                        "ψ": "psi",
                        "Ψ": "Psi",
                        "ω": "omega",
                        "Ω": "ohm",
                        "а": "acy",
                        "А": "Acy",
                        "б": "bcy",
                        "Б": "Bcy",
                        "в": "vcy",
                        "В": "Vcy",
                        "г": "gcy",
                        "Г": "Gcy",
                        "ѓ": "gjcy",
                        "Ѓ": "GJcy",
                        "д": "dcy",
                        "Д": "Dcy",
                        "ђ": "djcy",
                        "Ђ": "DJcy",
                        "е": "iecy",
                        "Е": "IEcy",
                        "ё": "iocy",
                        "Ё": "IOcy",
                        "є": "jukcy",
                        "Є": "Jukcy",
                        "ж": "zhcy",
                        "Ж": "ZHcy",
                        "з": "zcy",
                        "З": "Zcy",
                        "ѕ": "dscy",
                        "Ѕ": "DScy",
                        "и": "icy",
                        "И": "Icy",
                        "і": "iukcy",
                        "І": "Iukcy",
                        "ї": "yicy",
                        "Ї": "YIcy",
                        "й": "jcy",
                        "Й": "Jcy",
                        "ј": "jsercy",
                        "Ј": "Jsercy",
                        "к": "kcy",
                        "К": "Kcy",
                        "ќ": "kjcy",
                        "Ќ": "KJcy",
                        "л": "lcy",
                        "Л": "Lcy",
                        "љ": "ljcy",
                        "Љ": "LJcy",
                        "м": "mcy",
                        "М": "Mcy",
                        "н": "ncy",
                        "Н": "Ncy",
                        "њ": "njcy",
                        "Њ": "NJcy",
                        "о": "ocy",
                        "О": "Ocy",
                        "п": "pcy",
                        "П": "Pcy",
                        "р": "rcy",
                        "Р": "Rcy",
                        "с": "scy",
                        "С": "Scy",
                        "т": "tcy",
                        "Т": "Tcy",
                        "ћ": "tshcy",
                        "Ћ": "TSHcy",
                        "у": "ucy",
                        "У": "Ucy",
                        "ў": "ubrcy",
                        "Ў": "Ubrcy",
                        "ф": "fcy",
                        "Ф": "Fcy",
                        "х": "khcy",
                        "Х": "KHcy",
                        "ц": "tscy",
                        "Ц": "TScy",
                        "ч": "chcy",
                        "Ч": "CHcy",
                        "џ": "dzcy",
                        "Џ": "DZcy",
                        "ш": "shcy",
                        "Ш": "SHcy",
                        "щ": "shchcy",
                        "Щ": "SHCHcy",
                        "ъ": "hardcy",
                        "Ъ": "HARDcy",
                        "ы": "ycy",
                        "Ы": "Ycy",
                        "ь": "softcy",
                        "Ь": "SOFTcy",
                        "э": "ecy",
                        "Э": "Ecy",
                        "ю": "yucy",
                        "Ю": "YUcy",
                        "я": "yacy",
                        "Я": "YAcy",
                        "ℵ": "aleph",
                        "ℶ": "beth",
                        "ℷ": "gimel",
                        "ℸ": "daleth"
                    },
                    h = /["&'<>`]/g,
                    d = {
                        '"': "&quot;",
                        "&": "&amp;",
                        "'": "&#x27;",
                        "<": "&lt;",
                        ">": "&gt;",
                        "`": "&#x60;"
                    },
                    p = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,
                    g = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,
                    y = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,
                    b = {
                        aacute: "á",
                        Aacute: "Á",
                        abreve: "ă",
                        Abreve: "Ă",
                        ac: "∾",
                        acd: "∿",
                        acE: "∾̳",
                        acirc: "â",
                        Acirc: "Â",
                        acute: "´",
                        acy: "а",
                        Acy: "А",
                        aelig: "æ",
                        AElig: "Æ",
                        af: "⁡",
                        afr: "𝔞",
                        Afr: "𝔄",
                        agrave: "à",
                        Agrave: "À",
                        alefsym: "ℵ",
                        aleph: "ℵ",
                        alpha: "α",
                        Alpha: "Α",
                        amacr: "ā",
                        Amacr: "Ā",
                        amalg: "⨿",
                        amp: "&",
                        AMP: "&",
                        and: "∧",
                        And: "⩓",
                        andand: "⩕",
                        andd: "⩜",
                        andslope: "⩘",
                        andv: "⩚",
                        ang: "∠",
                        ange: "⦤",
                        angle: "∠",
                        angmsd: "∡",
                        angmsdaa: "⦨",
                        angmsdab: "⦩",
                        angmsdac: "⦪",
                        angmsdad: "⦫",
                        angmsdae: "⦬",
                        angmsdaf: "⦭",
                        angmsdag: "⦮",
                        angmsdah: "⦯",
                        angrt: "∟",
                        angrtvb: "⊾",
                        angrtvbd: "⦝",
                        angsph: "∢",
                        angst: "Å",
                        angzarr: "⍼",
                        aogon: "ą",
                        Aogon: "Ą",
                        aopf: "𝕒",
                        Aopf: "𝔸",
                        ap: "≈",
                        apacir: "⩯",
                        ape: "≊",
                        apE: "⩰",
                        apid: "≋",
                        apos: "'",
                        ApplyFunction: "⁡",
                        approx: "≈",
                        approxeq: "≊",
                        aring: "å",
                        Aring: "Å",
                        ascr: "𝒶",
                        Ascr: "𝒜",
                        Assign: "≔",
                        ast: "*",
                        asymp: "≈",
                        asympeq: "≍",
                        atilde: "ã",
                        Atilde: "Ã",
                        auml: "ä",
                        Auml: "Ä",
                        awconint: "∳",
                        awint: "⨑",
                        backcong: "≌",
                        backepsilon: "϶",
                        backprime: "‵",
                        backsim: "∽",
                        backsimeq: "⋍",
                        Backslash: "∖",
                        Barv: "⫧",
                        barvee: "⊽",
                        barwed: "⌅",
                        Barwed: "⌆",
                        barwedge: "⌅",
                        bbrk: "⎵",
                        bbrktbrk: "⎶",
                        bcong: "≌",
                        bcy: "б",
                        Bcy: "Б",
                        bdquo: "„",
                        becaus: "∵",
                        because: "∵",
                        Because: "∵",
                        bemptyv: "⦰",
                        bepsi: "϶",
                        bernou: "ℬ",
                        Bernoullis: "ℬ",
                        beta: "β",
                        Beta: "Β",
                        beth: "ℶ",
                        between: "≬",
                        bfr: "𝔟",
                        Bfr: "𝔅",
                        bigcap: "⋂",
                        bigcirc: "◯",
                        bigcup: "⋃",
                        bigodot: "⨀",
                        bigoplus: "⨁",
                        bigotimes: "⨂",
                        bigsqcup: "⨆",
                        bigstar: "★",
                        bigtriangledown: "▽",
                        bigtriangleup: "△",
                        biguplus: "⨄",
                        bigvee: "⋁",
                        bigwedge: "⋀",
                        bkarow: "⤍",
                        blacklozenge: "⧫",
                        blacksquare: "▪",
                        blacktriangle: "▴",
                        blacktriangledown: "▾",
                        blacktriangleleft: "◂",
                        blacktriangleright: "▸",
                        blank: "␣",
                        blk12: "▒",
                        blk14: "░",
                        blk34: "▓",
                        block: "█",
                        bne: "=⃥",
                        bnequiv: "≡⃥",
                        bnot: "⌐",
                        bNot: "⫭",
                        bopf: "𝕓",
                        Bopf: "𝔹",
                        bot: "⊥",
                        bottom: "⊥",
                        bowtie: "⋈",
                        boxbox: "⧉",
                        boxdl: "┐",
                        boxdL: "╕",
                        boxDl: "╖",
                        boxDL: "╗",
                        boxdr: "┌",
                        boxdR: "╒",
                        boxDr: "╓",
                        boxDR: "╔",
                        boxh: "─",
                        boxH: "═",
                        boxhd: "┬",
                        boxhD: "╥",
                        boxHd: "╤",
                        boxHD: "╦",
                        boxhu: "┴",
                        boxhU: "╨",
                        boxHu: "╧",
                        boxHU: "╩",
                        boxminus: "⊟",
                        boxplus: "⊞",
                        boxtimes: "⊠",
                        boxul: "┘",
                        boxuL: "╛",
                        boxUl: "╜",
                        boxUL: "╝",
                        boxur: "└",
                        boxuR: "╘",
                        boxUr: "╙",
                        boxUR: "╚",
                        boxv: "│",
                        boxV: "║",
                        boxvh: "┼",
                        boxvH: "╪",
                        boxVh: "╫",
                        boxVH: "╬",
                        boxvl: "┤",
                        boxvL: "╡",
                        boxVl: "╢",
                        boxVL: "╣",
                        boxvr: "├",
                        boxvR: "╞",
                        boxVr: "╟",
                        boxVR: "╠",
                        bprime: "‵",
                        breve: "˘",
                        Breve: "˘",
                        brvbar: "¦",
                        bscr: "𝒷",
                        Bscr: "ℬ",
                        bsemi: "⁏",
                        bsim: "∽",
                        bsime: "⋍",
                        bsol: "\\",
                        bsolb: "⧅",
                        bsolhsub: "⟈",
                        bull: "•",
                        bullet: "•",
                        bump: "≎",
                        bumpe: "≏",
                        bumpE: "⪮",
                        bumpeq: "≏",
                        Bumpeq: "≎",
                        cacute: "ć",
                        Cacute: "Ć",
                        cap: "∩",
                        Cap: "⋒",
                        capand: "⩄",
                        capbrcup: "⩉",
                        capcap: "⩋",
                        capcup: "⩇",
                        capdot: "⩀",
                        CapitalDifferentialD: "ⅅ",
                        caps: "∩︀",
                        caret: "⁁",
                        caron: "ˇ",
                        Cayleys: "ℭ",
                        ccaps: "⩍",
                        ccaron: "č",
                        Ccaron: "Č",
                        ccedil: "ç",
                        Ccedil: "Ç",
                        ccirc: "ĉ",
                        Ccirc: "Ĉ",
                        Cconint: "∰",
                        ccups: "⩌",
                        ccupssm: "⩐",
                        cdot: "ċ",
                        Cdot: "Ċ",
                        cedil: "¸",
                        Cedilla: "¸",
                        cemptyv: "⦲",
                        cent: "¢",
                        centerdot: "·",
                        CenterDot: "·",
                        cfr: "𝔠",
                        Cfr: "ℭ",
                        chcy: "ч",
                        CHcy: "Ч",
                        check: "✓",
                        checkmark: "✓",
                        chi: "χ",
                        Chi: "Χ",
                        cir: "○",
                        circ: "ˆ",
                        circeq: "≗",
                        circlearrowleft: "↺",
                        circlearrowright: "↻",
                        circledast: "⊛",
                        circledcirc: "⊚",
                        circleddash: "⊝",
                        CircleDot: "⊙",
                        circledR: "®",
                        circledS: "Ⓢ",
                        CircleMinus: "⊖",
                        CirclePlus: "⊕",
                        CircleTimes: "⊗",
                        cire: "≗",
                        cirE: "⧃",
                        cirfnint: "⨐",
                        cirmid: "⫯",
                        cirscir: "⧂",
                        ClockwiseContourIntegral: "∲",
                        CloseCurlyDoubleQuote: "”",
                        CloseCurlyQuote: "’",
                        clubs: "♣",
                        clubsuit: "♣",
                        colon: ":",
                        Colon: "∷",
                        colone: "≔",
                        Colone: "⩴",
                        coloneq: "≔",
                        comma: ",",
                        commat: "@",
                        comp: "∁",
                        compfn: "∘",
                        complement: "∁",
                        complexes: "ℂ",
                        cong: "≅",
                        congdot: "⩭",
                        Congruent: "≡",
                        conint: "∮",
                        Conint: "∯",
                        ContourIntegral: "∮",
                        copf: "𝕔",
                        Copf: "ℂ",
                        coprod: "∐",
                        Coproduct: "∐",
                        copy: "©",
                        COPY: "©",
                        copysr: "℗",
                        CounterClockwiseContourIntegral: "∳",
                        crarr: "↵",
                        cross: "✗",
                        Cross: "⨯",
                        cscr: "𝒸",
                        Cscr: "𝒞",
                        csub: "⫏",
                        csube: "⫑",
                        csup: "⫐",
                        csupe: "⫒",
                        ctdot: "⋯",
                        cudarrl: "⤸",
                        cudarrr: "⤵",
                        cuepr: "⋞",
                        cuesc: "⋟",
                        cularr: "↶",
                        cularrp: "⤽",
                        cup: "∪",
                        Cup: "⋓",
                        cupbrcap: "⩈",
                        cupcap: "⩆",
                        CupCap: "≍",
                        cupcup: "⩊",
                        cupdot: "⊍",
                        cupor: "⩅",
                        cups: "∪︀",
                        curarr: "↷",
                        curarrm: "⤼",
                        curlyeqprec: "⋞",
                        curlyeqsucc: "⋟",
                        curlyvee: "⋎",
                        curlywedge: "⋏",
                        curren: "¤",
                        curvearrowleft: "↶",
                        curvearrowright: "↷",
                        cuvee: "⋎",
                        cuwed: "⋏",
                        cwconint: "∲",
                        cwint: "∱",
                        cylcty: "⌭",
                        dagger: "†",
                        Dagger: "‡",
                        daleth: "ℸ",
                        darr: "↓",
                        dArr: "⇓",
                        Darr: "↡",
                        dash: "‐",
                        dashv: "⊣",
                        Dashv: "⫤",
                        dbkarow: "⤏",
                        dblac: "˝",
                        dcaron: "ď",
                        Dcaron: "Ď",
                        dcy: "д",
                        Dcy: "Д",
                        dd: "ⅆ",
                        DD: "ⅅ",
                        ddagger: "‡",
                        ddarr: "⇊",
                        DDotrahd: "⤑",
                        ddotseq: "⩷",
                        deg: "°",
                        Del: "∇",
                        delta: "δ",
                        Delta: "Δ",
                        demptyv: "⦱",
                        dfisht: "⥿",
                        dfr: "𝔡",
                        Dfr: "𝔇",
                        dHar: "⥥",
                        dharl: "⇃",
                        dharr: "⇂",
                        DiacriticalAcute: "´",
                        DiacriticalDot: "˙",
                        DiacriticalDoubleAcute: "˝",
                        DiacriticalGrave: "`",
                        DiacriticalTilde: "˜",
                        diam: "⋄",
                        diamond: "⋄",
                        Diamond: "⋄",
                        diamondsuit: "♦",
                        diams: "♦",
                        die: "¨",
                        DifferentialD: "ⅆ",
                        digamma: "ϝ",
                        disin: "⋲",
                        div: "÷",
                        divide: "÷",
                        divideontimes: "⋇",
                        divonx: "⋇",
                        djcy: "ђ",
                        DJcy: "Ђ",
                        dlcorn: "⌞",
                        dlcrop: "⌍",
                        dollar: "$",
                        dopf: "𝕕",
                        Dopf: "𝔻",
                        dot: "˙",
                        Dot: "¨",
                        DotDot: "⃜",
                        doteq: "≐",
                        doteqdot: "≑",
                        DotEqual: "≐",
                        dotminus: "∸",
                        dotplus: "∔",
                        dotsquare: "⊡",
                        doublebarwedge: "⌆",
                        DoubleContourIntegral: "∯",
                        DoubleDot: "¨",
                        DoubleDownArrow: "⇓",
                        DoubleLeftArrow: "⇐",
                        DoubleLeftRightArrow: "⇔",
                        DoubleLeftTee: "⫤",
                        DoubleLongLeftArrow: "⟸",
                        DoubleLongLeftRightArrow: "⟺",
                        DoubleLongRightArrow: "⟹",
                        DoubleRightArrow: "⇒",
                        DoubleRightTee: "⊨",
                        DoubleUpArrow: "⇑",
                        DoubleUpDownArrow: "⇕",
                        DoubleVerticalBar: "∥",
                        downarrow: "↓",
                        Downarrow: "⇓",
                        DownArrow: "↓",
                        DownArrowBar: "⤓",
                        DownArrowUpArrow: "⇵",
                        DownBreve: "̑",
                        downdownarrows: "⇊",
                        downharpoonleft: "⇃",
                        downharpoonright: "⇂",
                        DownLeftRightVector: "⥐",
                        DownLeftTeeVector: "⥞",
                        DownLeftVector: "↽",
                        DownLeftVectorBar: "⥖",
                        DownRightTeeVector: "⥟",
                        DownRightVector: "⇁",
                        DownRightVectorBar: "⥗",
                        DownTee: "⊤",
                        DownTeeArrow: "↧",
                        drbkarow: "⤐",
                        drcorn: "⌟",
                        drcrop: "⌌",
                        dscr: "𝒹",
                        Dscr: "𝒟",
                        dscy: "ѕ",
                        DScy: "Ѕ",
                        dsol: "⧶",
                        dstrok: "đ",
                        Dstrok: "Đ",
                        dtdot: "⋱",
                        dtri: "▿",
                        dtrif: "▾",
                        duarr: "⇵",
                        duhar: "⥯",
                        dwangle: "⦦",
                        dzcy: "џ",
                        DZcy: "Џ",
                        dzigrarr: "⟿",
                        eacute: "é",
                        Eacute: "É",
                        easter: "⩮",
                        ecaron: "ě",
                        Ecaron: "Ě",
                        ecir: "≖",
                        ecirc: "ê",
                        Ecirc: "Ê",
                        ecolon: "≕",
                        ecy: "э",
                        Ecy: "Э",
                        eDDot: "⩷",
                        edot: "ė",
                        eDot: "≑",
                        Edot: "Ė",
                        ee: "ⅇ",
                        efDot: "≒",
                        efr: "𝔢",
                        Efr: "𝔈",
                        eg: "⪚",
                        egrave: "è",
                        Egrave: "È",
                        egs: "⪖",
                        egsdot: "⪘",
                        el: "⪙",
                        Element: "∈",
                        elinters: "⏧",
                        ell: "ℓ",
                        els: "⪕",
                        elsdot: "⪗",
                        emacr: "ē",
                        Emacr: "Ē",
                        empty: "∅",
                        emptyset: "∅",
                        EmptySmallSquare: "◻",
                        emptyv: "∅",
                        EmptyVerySmallSquare: "▫",
                        emsp: " ",
                        emsp13: " ",
                        emsp14: " ",
                        eng: "ŋ",
                        ENG: "Ŋ",
                        ensp: " ",
                        eogon: "ę",
                        Eogon: "Ę",
                        eopf: "𝕖",
                        Eopf: "𝔼",
                        epar: "⋕",
                        eparsl: "⧣",
                        eplus: "⩱",
                        epsi: "ε",
                        epsilon: "ε",
                        Epsilon: "Ε",
                        epsiv: "ϵ",
                        eqcirc: "≖",
                        eqcolon: "≕",
                        eqsim: "≂",
                        eqslantgtr: "⪖",
                        eqslantless: "⪕",
                        Equal: "⩵",
                        equals: "=",
                        EqualTilde: "≂",
                        equest: "≟",
                        Equilibrium: "⇌",
                        equiv: "≡",
                        equivDD: "⩸",
                        eqvparsl: "⧥",
                        erarr: "⥱",
                        erDot: "≓",
                        escr: "ℯ",
                        Escr: "ℰ",
                        esdot: "≐",
                        esim: "≂",
                        Esim: "⩳",
                        eta: "η",
                        Eta: "Η",
                        eth: "ð",
                        ETH: "Ð",
                        euml: "ë",
                        Euml: "Ë",
                        euro: "€",
                        excl: "!",
                        exist: "∃",
                        Exists: "∃",
                        expectation: "ℰ",
                        exponentiale: "ⅇ",
                        ExponentialE: "ⅇ",
                        fallingdotseq: "≒",
                        fcy: "ф",
                        Fcy: "Ф",
                        female: "♀",
                        ffilig: "ffi",
                        fflig: "ff",
                        ffllig: "ffl",
                        ffr: "𝔣",
                        Ffr: "𝔉",
                        filig: "fi",
                        FilledSmallSquare: "◼",
                        FilledVerySmallSquare: "▪",
                        fjlig: "fj",
                        flat: "♭",
                        fllig: "fl",
                        fltns: "▱",
                        fnof: "ƒ",
                        fopf: "𝕗",
                        Fopf: "𝔽",
                        forall: "∀",
                        ForAll: "∀",
                        fork: "⋔",
                        forkv: "⫙",
                        Fouriertrf: "ℱ",
                        fpartint: "⨍",
                        frac12: "½",
                        frac13: "⅓",
                        frac14: "¼",
                        frac15: "⅕",
                        frac16: "⅙",
                        frac18: "⅛",
                        frac23: "⅔",
                        frac25: "⅖",
                        frac34: "¾",
                        frac35: "⅗",
                        frac38: "⅜",
                        frac45: "⅘",
                        frac56: "⅚",
                        frac58: "⅝",
                        frac78: "⅞",
                        frasl: "⁄",
                        frown: "⌢",
                        fscr: "𝒻",
                        Fscr: "ℱ",
                        gacute: "ǵ",
                        gamma: "γ",
                        Gamma: "Γ",
                        gammad: "ϝ",
                        Gammad: "Ϝ",
                        gap: "⪆",
                        gbreve: "ğ",
                        Gbreve: "Ğ",
                        Gcedil: "Ģ",
                        gcirc: "ĝ",
                        Gcirc: "Ĝ",
                        gcy: "г",
                        Gcy: "Г",
                        gdot: "ġ",
                        Gdot: "Ġ",
                        ge: "≥",
                        gE: "≧",
                        gel: "⋛",
                        gEl: "⪌",
                        geq: "≥",
                        geqq: "≧",
                        geqslant: "⩾",
                        ges: "⩾",
                        gescc: "⪩",
                        gesdot: "⪀",
                        gesdoto: "⪂",
                        gesdotol: "⪄",
                        gesl: "⋛︀",
                        gesles: "⪔",
                        gfr: "𝔤",
                        Gfr: "𝔊",
                        gg: "≫",
                        Gg: "⋙",
                        ggg: "⋙",
                        gimel: "ℷ",
                        gjcy: "ѓ",
                        GJcy: "Ѓ",
                        gl: "≷",
                        gla: "⪥",
                        glE: "⪒",
                        glj: "⪤",
                        gnap: "⪊",
                        gnapprox: "⪊",
                        gne: "⪈",
                        gnE: "≩",
                        gneq: "⪈",
                        gneqq: "≩",
                        gnsim: "⋧",
                        gopf: "𝕘",
                        Gopf: "𝔾",
                        grave: "`",
                        GreaterEqual: "≥",
                        GreaterEqualLess: "⋛",
                        GreaterFullEqual: "≧",
                        GreaterGreater: "⪢",
                        GreaterLess: "≷",
                        GreaterSlantEqual: "⩾",
                        GreaterTilde: "≳",
                        gscr: "ℊ",
                        Gscr: "𝒢",
                        gsim: "≳",
                        gsime: "⪎",
                        gsiml: "⪐",
                        gt: ">",
                        Gt: "≫",
                        GT: ">",
                        gtcc: "⪧",
                        gtcir: "⩺",
                        gtdot: "⋗",
                        gtlPar: "⦕",
                        gtquest: "⩼",
                        gtrapprox: "⪆",
                        gtrarr: "⥸",
                        gtrdot: "⋗",
                        gtreqless: "⋛",
                        gtreqqless: "⪌",
                        gtrless: "≷",
                        gtrsim: "≳",
                        gvertneqq: "≩︀",
                        gvnE: "≩︀",
                        Hacek: "ˇ",
                        hairsp: " ",
                        half: "½",
                        hamilt: "ℋ",
                        hardcy: "ъ",
                        HARDcy: "Ъ",
                        harr: "↔",
                        hArr: "⇔",
                        harrcir: "⥈",
                        harrw: "↭",
                        Hat: "^",
                        hbar: "ℏ",
                        hcirc: "ĥ",
                        Hcirc: "Ĥ",
                        hearts: "♥",
                        heartsuit: "♥",
                        hellip: "…",
                        hercon: "⊹",
                        hfr: "𝔥",
                        Hfr: "ℌ",
                        HilbertSpace: "ℋ",
                        hksearow: "⤥",
                        hkswarow: "⤦",
                        hoarr: "⇿",
                        homtht: "∻",
                        hookleftarrow: "↩",
                        hookrightarrow: "↪",
                        hopf: "𝕙",
                        Hopf: "ℍ",
                        horbar: "―",
                        HorizontalLine: "─",
                        hscr: "𝒽",
                        Hscr: "ℋ",
                        hslash: "ℏ",
                        hstrok: "ħ",
                        Hstrok: "Ħ",
                        HumpDownHump: "≎",
                        HumpEqual: "≏",
                        hybull: "⁃",
                        hyphen: "‐",
                        iacute: "í",
                        Iacute: "Í",
                        ic: "⁣",
                        icirc: "î",
                        Icirc: "Î",
                        icy: "и",
                        Icy: "И",
                        Idot: "İ",
                        iecy: "е",
                        IEcy: "Е",
                        iexcl: "¡",
                        iff: "⇔",
                        ifr: "𝔦",
                        Ifr: "ℑ",
                        igrave: "ì",
                        Igrave: "Ì",
                        ii: "ⅈ",
                        iiiint: "⨌",
                        iiint: "∭",
                        iinfin: "⧜",
                        iiota: "℩",
                        ijlig: "ij",
                        IJlig: "IJ",
                        Im: "ℑ",
                        imacr: "ī",
                        Imacr: "Ī",
                        image: "ℑ",
                        ImaginaryI: "ⅈ",
                        imagline: "ℐ",
                        imagpart: "ℑ",
                        imath: "ı",
                        imof: "⊷",
                        imped: "Ƶ",
                        Implies: "⇒",
                        in : "∈",
                        incare: "℅",
                        infin: "∞",
                        infintie: "⧝",
                        inodot: "ı",
                        int: "∫",
                        Int: "∬",
                        intcal: "⊺",
                        integers: "ℤ",
                        Integral: "∫",
                        intercal: "⊺",
                        Intersection: "⋂",
                        intlarhk: "⨗",
                        intprod: "⨼",
                        InvisibleComma: "⁣",
                        InvisibleTimes: "⁢",
                        iocy: "ё",
                        IOcy: "Ё",
                        iogon: "į",
                        Iogon: "Į",
                        iopf: "𝕚",
                        Iopf: "𝕀",
                        iota: "ι",
                        Iota: "Ι",
                        iprod: "⨼",
                        iquest: "¿",
                        iscr: "𝒾",
                        Iscr: "ℐ",
                        isin: "∈",
                        isindot: "⋵",
                        isinE: "⋹",
                        isins: "⋴",
                        isinsv: "⋳",
                        isinv: "∈",
                        it: "⁢",
                        itilde: "ĩ",
                        Itilde: "Ĩ",
                        iukcy: "і",
                        Iukcy: "І",
                        iuml: "ï",
                        Iuml: "Ï",
                        jcirc: "ĵ",
                        Jcirc: "Ĵ",
                        jcy: "й",
                        Jcy: "Й",
                        jfr: "𝔧",
                        Jfr: "𝔍",
                        jmath: "ȷ",
                        jopf: "𝕛",
                        Jopf: "𝕁",
                        jscr: "𝒿",
                        Jscr: "𝒥",
                        jsercy: "ј",
                        Jsercy: "Ј",
                        jukcy: "є",
                        Jukcy: "Є",
                        kappa: "κ",
                        Kappa: "Κ",
                        kappav: "ϰ",
                        kcedil: "ķ",
                        Kcedil: "Ķ",
                        kcy: "к",
                        Kcy: "К",
                        kfr: "𝔨",
                        Kfr: "𝔎",
                        kgreen: "ĸ",
                        khcy: "х",
                        KHcy: "Х",
                        kjcy: "ќ",
                        KJcy: "Ќ",
                        kopf: "𝕜",
                        Kopf: "𝕂",
                        kscr: "𝓀",
                        Kscr: "𝒦",
                        lAarr: "⇚",
                        lacute: "ĺ",
                        Lacute: "Ĺ",
                        laemptyv: "⦴",
                        lagran: "ℒ",
                        lambda: "λ",
                        Lambda: "Λ",
                        lang: "⟨",
                        Lang: "⟪",
                        langd: "⦑",
                        langle: "⟨",
                        lap: "⪅",
                        Laplacetrf: "ℒ",
                        laquo: "«",
                        larr: "←",
                        lArr: "⇐",
                        Larr: "↞",
                        larrb: "⇤",
                        larrbfs: "⤟",
                        larrfs: "⤝",
                        larrhk: "↩",
                        larrlp: "↫",
                        larrpl: "⤹",
                        larrsim: "⥳",
                        larrtl: "↢",
                        lat: "⪫",
                        latail: "⤙",
                        lAtail: "⤛",
                        late: "⪭",
                        lates: "⪭︀",
                        lbarr: "⤌",
                        lBarr: "⤎",
                        lbbrk: "❲",
                        lbrace: "{",
                        lbrack: "[",
                        lbrke: "⦋",
                        lbrksld: "⦏",
                        lbrkslu: "⦍",
                        lcaron: "ľ",
                        Lcaron: "Ľ",
                        lcedil: "ļ",
                        Lcedil: "Ļ",
                        lceil: "⌈",
                        lcub: "{",
                        lcy: "л",
                        Lcy: "Л",
                        ldca: "⤶",
                        ldquo: "“",
                        ldquor: "„",
                        ldrdhar: "⥧",
                        ldrushar: "⥋",
                        ldsh: "↲",
                        le: "≤",
                        lE: "≦",
                        LeftAngleBracket: "⟨",
                        leftarrow: "←",
                        Leftarrow: "⇐",
                        LeftArrow: "←",
                        LeftArrowBar: "⇤",
                        LeftArrowRightArrow: "⇆",
                        leftarrowtail: "↢",
                        LeftCeiling: "⌈",
                        LeftDoubleBracket: "⟦",
                        LeftDownTeeVector: "⥡",
                        LeftDownVector: "⇃",
                        LeftDownVectorBar: "⥙",
                        LeftFloor: "⌊",
                        leftharpoondown: "↽",
                        leftharpoonup: "↼",
                        leftleftarrows: "⇇",
                        leftrightarrow: "↔",
                        Leftrightarrow: "⇔",
                        LeftRightArrow: "↔",
                        leftrightarrows: "⇆",
                        leftrightharpoons: "⇋",
                        leftrightsquigarrow: "↭",
                        LeftRightVector: "⥎",
                        LeftTee: "⊣",
                        LeftTeeArrow: "↤",
                        LeftTeeVector: "⥚",
                        leftthreetimes: "⋋",
                        LeftTriangle: "⊲",
                        LeftTriangleBar: "⧏",
                        LeftTriangleEqual: "⊴",
                        LeftUpDownVector: "⥑",
                        LeftUpTeeVector: "⥠",
                        LeftUpVector: "↿",
                        LeftUpVectorBar: "⥘",
                        LeftVector: "↼",
                        LeftVectorBar: "⥒",
                        leg: "⋚",
                        lEg: "⪋",
                        leq: "≤",
                        leqq: "≦",
                        leqslant: "⩽",
                        les: "⩽",
                        lescc: "⪨",
                        lesdot: "⩿",
                        lesdoto: "⪁",
                        lesdotor: "⪃",
                        lesg: "⋚︀",
                        lesges: "⪓",
                        lessapprox: "⪅",
                        lessdot: "⋖",
                        lesseqgtr: "⋚",
                        lesseqqgtr: "⪋",
                        LessEqualGreater: "⋚",
                        LessFullEqual: "≦",
                        LessGreater: "≶",
                        lessgtr: "≶",
                        LessLess: "⪡",
                        lesssim: "≲",
                        LessSlantEqual: "⩽",
                        LessTilde: "≲",
                        lfisht: "⥼",
                        lfloor: "⌊",
                        lfr: "𝔩",
                        Lfr: "𝔏",
                        lg: "≶",
                        lgE: "⪑",
                        lHar: "⥢",
                        lhard: "↽",
                        lharu: "↼",
                        lharul: "⥪",
                        lhblk: "▄",
                        ljcy: "љ",
                        LJcy: "Љ",
                        ll: "≪",
                        Ll: "⋘",
                        llarr: "⇇",
                        llcorner: "⌞",
                        Lleftarrow: "⇚",
                        llhard: "⥫",
                        lltri: "◺",
                        lmidot: "ŀ",
                        Lmidot: "Ŀ",
                        lmoust: "⎰",
                        lmoustache: "⎰",
                        lnap: "⪉",
                        lnapprox: "⪉",
                        lne: "⪇",
                        lnE: "≨",
                        lneq: "⪇",
                        lneqq: "≨",
                        lnsim: "⋦",
                        loang: "⟬",
                        loarr: "⇽",
                        lobrk: "⟦",
                        longleftarrow: "⟵",
                        Longleftarrow: "⟸",
                        LongLeftArrow: "⟵",
                        longleftrightarrow: "⟷",
                        Longleftrightarrow: "⟺",
                        LongLeftRightArrow: "⟷",
                        longmapsto: "⟼",
                        longrightarrow: "⟶",
                        Longrightarrow: "⟹",
                        LongRightArrow: "⟶",
                        looparrowleft: "↫",
                        looparrowright: "↬",
                        lopar: "⦅",
                        lopf: "𝕝",
                        Lopf: "𝕃",
                        loplus: "⨭",
                        lotimes: "⨴",
                        lowast: "∗",
                        lowbar: "_",
                        LowerLeftArrow: "↙",
                        LowerRightArrow: "↘",
                        loz: "◊",
                        lozenge: "◊",
                        lozf: "⧫",
                        lpar: "(",
                        lparlt: "⦓",
                        lrarr: "⇆",
                        lrcorner: "⌟",
                        lrhar: "⇋",
                        lrhard: "⥭",
                        lrm: "‎",
                        lrtri: "⊿",
                        lsaquo: "‹",
                        lscr: "𝓁",
                        Lscr: "ℒ",
                        lsh: "↰",
                        Lsh: "↰",
                        lsim: "≲",
                        lsime: "⪍",
                        lsimg: "⪏",
                        lsqb: "[",
                        lsquo: "‘",
                        lsquor: "‚",
                        lstrok: "ł",
                        Lstrok: "Ł",
                        lt: "<",
                        Lt: "≪",
                        LT: "<",
                        ltcc: "⪦",
                        ltcir: "⩹",
                        ltdot: "⋖",
                        lthree: "⋋",
                        ltimes: "⋉",
                        ltlarr: "⥶",
                        ltquest: "⩻",
                        ltri: "◃",
                        ltrie: "⊴",
                        ltrif: "◂",
                        ltrPar: "⦖",
                        lurdshar: "⥊",
                        luruhar: "⥦",
                        lvertneqq: "≨︀",
                        lvnE: "≨︀",
                        macr: "¯",
                        male: "♂",
                        malt: "✠",
                        maltese: "✠",
                        map: "↦",
                        Map: "⤅",
                        mapsto: "↦",
                        mapstodown: "↧",
                        mapstoleft: "↤",
                        mapstoup: "↥",
                        marker: "▮",
                        mcomma: "⨩",
                        mcy: "м",
                        Mcy: "М",
                        mdash: "—",
                        mDDot: "∺",
                        measuredangle: "∡",
                        MediumSpace: " ",
                        Mellintrf: "ℳ",
                        mfr: "𝔪",
                        Mfr: "𝔐",
                        mho: "℧",
                        micro: "µ",
                        mid: "∣",
                        midast: "*",
                        midcir: "⫰",
                        middot: "·",
                        minus: "−",
                        minusb: "⊟",
                        minusd: "∸",
                        minusdu: "⨪",
                        MinusPlus: "∓",
                        mlcp: "⫛",
                        mldr: "…",
                        mnplus: "∓",
                        models: "⊧",
                        mopf: "𝕞",
                        Mopf: "𝕄",
                        mp: "∓",
                        mscr: "𝓂",
                        Mscr: "ℳ",
                        mstpos: "∾",
                        mu: "μ",
                        Mu: "Μ",
                        multimap: "⊸",
                        mumap: "⊸",
                        nabla: "∇",
                        nacute: "ń",
                        Nacute: "Ń",
                        nang: "∠⃒",
                        nap: "≉",
                        napE: "⩰̸",
                        napid: "≋̸",
                        napos: "ʼn",
                        napprox: "≉",
                        natur: "♮",
                        natural: "♮",
                        naturals: "ℕ",
                        nbsp: " ",
                        nbump: "≎̸",
                        nbumpe: "≏̸",
                        ncap: "⩃",
                        ncaron: "ň",
                        Ncaron: "Ň",
                        ncedil: "ņ",
                        Ncedil: "Ņ",
                        ncong: "≇",
                        ncongdot: "⩭̸",
                        ncup: "⩂",
                        ncy: "н",
                        Ncy: "Н",
                        ndash: "–",
                        ne: "≠",
                        nearhk: "⤤",
                        nearr: "↗",
                        neArr: "⇗",
                        nearrow: "↗",
                        nedot: "≐̸",
                        NegativeMediumSpace: "​",
                        NegativeThickSpace: "​",
                        NegativeThinSpace: "​",
                        NegativeVeryThinSpace: "​",
                        nequiv: "≢",
                        nesear: "⤨",
                        nesim: "≂̸",
                        NestedGreaterGreater: "≫",
                        NestedLessLess: "≪",
                        NewLine: "\n",
                        nexist: "∄",
                        nexists: "∄",
                        nfr: "𝔫",
                        Nfr: "𝔑",
                        nge: "≱",
                        ngE: "≧̸",
                        ngeq: "≱",
                        ngeqq: "≧̸",
                        ngeqslant: "⩾̸",
                        nges: "⩾̸",
                        nGg: "⋙̸",
                        ngsim: "≵",
                        ngt: "≯",
                        nGt: "≫⃒",
                        ngtr: "≯",
                        nGtv: "≫̸",
                        nharr: "↮",
                        nhArr: "⇎",
                        nhpar: "⫲",
                        ni: "∋",
                        nis: "⋼",
                        nisd: "⋺",
                        niv: "∋",
                        njcy: "њ",
                        NJcy: "Њ",
                        nlarr: "↚",
                        nlArr: "⇍",
                        nldr: "‥",
                        nle: "≰",
                        nlE: "≦̸",
                        nleftarrow: "↚",
                        nLeftarrow: "⇍",
                        nleftrightarrow: "↮",
                        nLeftrightarrow: "⇎",
                        nleq: "≰",
                        nleqq: "≦̸",
                        nleqslant: "⩽̸",
                        nles: "⩽̸",
                        nless: "≮",
                        nLl: "⋘̸",
                        nlsim: "≴",
                        nlt: "≮",
                        nLt: "≪⃒",
                        nltri: "⋪",
                        nltrie: "⋬",
                        nLtv: "≪̸",
                        nmid: "∤",
                        NoBreak: "⁠",
                        NonBreakingSpace: " ",
                        nopf: "𝕟",
                        Nopf: "ℕ",
                        not: "¬",
                        Not: "⫬",
                        NotCongruent: "≢",
                        NotCupCap: "≭",
                        NotDoubleVerticalBar: "∦",
                        NotElement: "∉",
                        NotEqual: "≠",
                        NotEqualTilde: "≂̸",
                        NotExists: "∄",
                        NotGreater: "≯",
                        NotGreaterEqual: "≱",
                        NotGreaterFullEqual: "≧̸",
                        NotGreaterGreater: "≫̸",
                        NotGreaterLess: "≹",
                        NotGreaterSlantEqual: "⩾̸",
                        NotGreaterTilde: "≵",
                        NotHumpDownHump: "≎̸",
                        NotHumpEqual: "≏̸",
                        notin: "∉",
                        notindot: "⋵̸",
                        notinE: "⋹̸",
                        notinva: "∉",
                        notinvb: "⋷",
                        notinvc: "⋶",
                        NotLeftTriangle: "⋪",
                        NotLeftTriangleBar: "⧏̸",
                        NotLeftTriangleEqual: "⋬",
                        NotLess: "≮",
                        NotLessEqual: "≰",
                        NotLessGreater: "≸",
                        NotLessLess: "≪̸",
                        NotLessSlantEqual: "⩽̸",
                        NotLessTilde: "≴",
                        NotNestedGreaterGreater: "⪢̸",
                        NotNestedLessLess: "⪡̸",
                        notni: "∌",
                        notniva: "∌",
                        notnivb: "⋾",
                        notnivc: "⋽",
                        NotPrecedes: "⊀",
                        NotPrecedesEqual: "⪯̸",
                        NotPrecedesSlantEqual: "⋠",
                        NotReverseElement: "∌",
                        NotRightTriangle: "⋫",
                        NotRightTriangleBar: "⧐̸",
                        NotRightTriangleEqual: "⋭",
                        NotSquareSubset: "⊏̸",
                        NotSquareSubsetEqual: "⋢",
                        NotSquareSuperset: "⊐̸",
                        NotSquareSupersetEqual: "⋣",
                        NotSubset: "⊂⃒",
                        NotSubsetEqual: "⊈",
                        NotSucceeds: "⊁",
                        NotSucceedsEqual: "⪰̸",
                        NotSucceedsSlantEqual: "⋡",
                        NotSucceedsTilde: "≿̸",
                        NotSuperset: "⊃⃒",
                        NotSupersetEqual: "⊉",
                        NotTilde: "≁",
                        NotTildeEqual: "≄",
                        NotTildeFullEqual: "≇",
                        NotTildeTilde: "≉",
                        NotVerticalBar: "∤",
                        npar: "∦",
                        nparallel: "∦",
                        nparsl: "⫽⃥",
                        npart: "∂̸",
                        npolint: "⨔",
                        npr: "⊀",
                        nprcue: "⋠",
                        npre: "⪯̸",
                        nprec: "⊀",
                        npreceq: "⪯̸",
                        nrarr: "↛",
                        nrArr: "⇏",
                        nrarrc: "⤳̸",
                        nrarrw: "↝̸",
                        nrightarrow: "↛",
                        nRightarrow: "⇏",
                        nrtri: "⋫",
                        nrtrie: "⋭",
                        nsc: "⊁",
                        nsccue: "⋡",
                        nsce: "⪰̸",
                        nscr: "𝓃",
                        Nscr: "𝒩",
                        nshortmid: "∤",
                        nshortparallel: "∦",
                        nsim: "≁",
                        nsime: "≄",
                        nsimeq: "≄",
                        nsmid: "∤",
                        nspar: "∦",
                        nsqsube: "⋢",
                        nsqsupe: "⋣",
                        nsub: "⊄",
                        nsube: "⊈",
                        nsubE: "⫅̸",
                        nsubset: "⊂⃒",
                        nsubseteq: "⊈",
                        nsubseteqq: "⫅̸",
                        nsucc: "⊁",
                        nsucceq: "⪰̸",
                        nsup: "⊅",
                        nsupe: "⊉",
                        nsupE: "⫆̸",
                        nsupset: "⊃⃒",
                        nsupseteq: "⊉",
                        nsupseteqq: "⫆̸",
                        ntgl: "≹",
                        ntilde: "ñ",
                        Ntilde: "Ñ",
                        ntlg: "≸",
                        ntriangleleft: "⋪",
                        ntrianglelefteq: "⋬",
                        ntriangleright: "⋫",
                        ntrianglerighteq: "⋭",
                        nu: "ν",
                        Nu: "Ν",
                        num: "#",
                        numero: "№",
                        numsp: " ",
                        nvap: "≍⃒",
                        nvdash: "⊬",
                        nvDash: "⊭",
                        nVdash: "⊮",
                        nVDash: "⊯",
                        nvge: "≥⃒",
                        nvgt: ">⃒",
                        nvHarr: "⤄",
                        nvinfin: "⧞",
                        nvlArr: "⤂",
                        nvle: "≤⃒",
                        nvlt: "<⃒",
                        nvltrie: "⊴⃒",
                        nvrArr: "⤃",
                        nvrtrie: "⊵⃒",
                        nvsim: "∼⃒",
                        nwarhk: "⤣",
                        nwarr: "↖",
                        nwArr: "⇖",
                        nwarrow: "↖",
                        nwnear: "⤧",
                        oacute: "ó",
                        Oacute: "Ó",
                        oast: "⊛",
                        ocir: "⊚",
                        ocirc: "ô",
                        Ocirc: "Ô",
                        ocy: "о",
                        Ocy: "О",
                        odash: "⊝",
                        odblac: "ő",
                        Odblac: "Ő",
                        odiv: "⨸",
                        odot: "⊙",
                        odsold: "⦼",
                        oelig: "œ",
                        OElig: "Œ",
                        ofcir: "⦿",
                        ofr: "𝔬",
                        Ofr: "𝔒",
                        ogon: "˛",
                        ograve: "ò",
                        Ograve: "Ò",
                        ogt: "⧁",
                        ohbar: "⦵",
                        ohm: "Ω",
                        oint: "∮",
                        olarr: "↺",
                        olcir: "⦾",
                        olcross: "⦻",
                        oline: "‾",
                        olt: "⧀",
                        omacr: "ō",
                        Omacr: "Ō",
                        omega: "ω",
                        Omega: "Ω",
                        omicron: "ο",
                        Omicron: "Ο",
                        omid: "⦶",
                        ominus: "⊖",
                        oopf: "𝕠",
                        Oopf: "𝕆",
                        opar: "⦷",
                        OpenCurlyDoubleQuote: "“",
                        OpenCurlyQuote: "‘",
                        operp: "⦹",
                        oplus: "⊕",
                        or: "∨",
                        Or: "⩔",
                        orarr: "↻",
                        ord: "⩝",
                        order: "ℴ",
                        orderof: "ℴ",
                        ordf: "ª",
                        ordm: "º",
                        origof: "⊶",
                        oror: "⩖",
                        orslope: "⩗",
                        orv: "⩛",
                        oS: "Ⓢ",
                        oscr: "ℴ",
                        Oscr: "𝒪",
                        oslash: "ø",
                        Oslash: "Ø",
                        osol: "⊘",
                        otilde: "õ",
                        Otilde: "Õ",
                        otimes: "⊗",
                        Otimes: "⨷",
                        otimesas: "⨶",
                        ouml: "ö",
                        Ouml: "Ö",
                        ovbar: "⌽",
                        OverBar: "‾",
                        OverBrace: "⏞",
                        OverBracket: "⎴",
                        OverParenthesis: "⏜",
                        par: "∥",
                        para: "¶",
                        parallel: "∥",
                        parsim: "⫳",
                        parsl: "⫽",
                        part: "∂",
                        PartialD: "∂",
                        pcy: "п",
                        Pcy: "П",
                        percnt: "%",
                        period: ".",
                        permil: "‰",
                        perp: "⊥",
                        pertenk: "‱",
                        pfr: "𝔭",
                        Pfr: "𝔓",
                        phi: "φ",
                        Phi: "Φ",
                        phiv: "ϕ",
                        phmmat: "ℳ",
                        phone: "☎",
                        pi: "π",
                        Pi: "Π",
                        pitchfork: "⋔",
                        piv: "ϖ",
                        planck: "ℏ",
                        planckh: "ℎ",
                        plankv: "ℏ",
                        plus: "+",
                        plusacir: "⨣",
                        plusb: "⊞",
                        pluscir: "⨢",
                        plusdo: "∔",
                        plusdu: "⨥",
                        pluse: "⩲",
                        PlusMinus: "±",
                        plusmn: "±",
                        plussim: "⨦",
                        plustwo: "⨧",
                        pm: "±",
                        Poincareplane: "ℌ",
                        pointint: "⨕",
                        popf: "𝕡",
                        Popf: "ℙ",
                        pound: "£",
                        pr: "≺",
                        Pr: "⪻",
                        prap: "⪷",
                        prcue: "≼",
                        pre: "⪯",
                        prE: "⪳",
                        prec: "≺",
                        precapprox: "⪷",
                        preccurlyeq: "≼",
                        Precedes: "≺",
                        PrecedesEqual: "⪯",
                        PrecedesSlantEqual: "≼",
                        PrecedesTilde: "≾",
                        preceq: "⪯",
                        precnapprox: "⪹",
                        precneqq: "⪵",
                        precnsim: "⋨",
                        precsim: "≾",
                        prime: "′",
                        Prime: "″",
                        primes: "ℙ",
                        prnap: "⪹",
                        prnE: "⪵",
                        prnsim: "⋨",
                        prod: "∏",
                        Product: "∏",
                        profalar: "⌮",
                        profline: "⌒",
                        profsurf: "⌓",
                        prop: "∝",
                        Proportion: "∷",
                        Proportional: "∝",
                        propto: "∝",
                        prsim: "≾",
                        prurel: "⊰",
                        pscr: "𝓅",
                        Pscr: "𝒫",
                        psi: "ψ",
                        Psi: "Ψ",
                        puncsp: " ",
                        qfr: "𝔮",
                        Qfr: "𝔔",
                        qint: "⨌",
                        qopf: "𝕢",
                        Qopf: "ℚ",
                        qprime: "⁗",
                        qscr: "𝓆",
                        Qscr: "𝒬",
                        quaternions: "ℍ",
                        quatint: "⨖",
                        quest: "?",
                        questeq: "≟",
                        quot: '"',
                        QUOT: '"',
                        rAarr: "⇛",
                        race: "∽̱",
                        racute: "ŕ",
                        Racute: "Ŕ",
                        radic: "√",
                        raemptyv: "⦳",
                        rang: "⟩",
                        Rang: "⟫",
                        rangd: "⦒",
                        range: "⦥",
                        rangle: "⟩",
                        raquo: "»",
                        rarr: "→",
                        rArr: "⇒",
                        Rarr: "↠",
                        rarrap: "⥵",
                        rarrb: "⇥",
                        rarrbfs: "⤠",
                        rarrc: "⤳",
                        rarrfs: "⤞",
                        rarrhk: "↪",
                        rarrlp: "↬",
                        rarrpl: "⥅",
                        rarrsim: "⥴",
                        rarrtl: "↣",
                        Rarrtl: "⤖",
                        rarrw: "↝",
                        ratail: "⤚",
                        rAtail: "⤜",
                        ratio: "∶",
                        rationals: "ℚ",
                        rbarr: "⤍",
                        rBarr: "⤏",
                        RBarr: "⤐",
                        rbbrk: "❳",
                        rbrace: "}",
                        rbrack: "]",
                        rbrke: "⦌",
                        rbrksld: "⦎",
                        rbrkslu: "⦐",
                        rcaron: "ř",
                        Rcaron: "Ř",
                        rcedil: "ŗ",
                        Rcedil: "Ŗ",
                        rceil: "⌉",
                        rcub: "}",
                        rcy: "р",
                        Rcy: "Р",
                        rdca: "⤷",
                        rdldhar: "⥩",
                        rdquo: "”",
                        rdquor: "”",
                        rdsh: "↳",
                        Re: "ℜ",
                        real: "ℜ",
                        realine: "ℛ",
                        realpart: "ℜ",
                        reals: "ℝ",
                        rect: "▭",
                        reg: "®",
                        REG: "®",
                        ReverseElement: "∋",
                        ReverseEquilibrium: "⇋",
                        ReverseUpEquilibrium: "⥯",
                        rfisht: "⥽",
                        rfloor: "⌋",
                        rfr: "𝔯",
                        Rfr: "ℜ",
                        rHar: "⥤",
                        rhard: "⇁",
                        rharu: "⇀",
                        rharul: "⥬",
                        rho: "ρ",
                        Rho: "Ρ",
                        rhov: "ϱ",
                        RightAngleBracket: "⟩",
                        rightarrow: "→",
                        Rightarrow: "⇒",
                        RightArrow: "→",
                        RightArrowBar: "⇥",
                        RightArrowLeftArrow: "⇄",
                        rightarrowtail: "↣",
                        RightCeiling: "⌉",
                        RightDoubleBracket: "⟧",
                        RightDownTeeVector: "⥝",
                        RightDownVector: "⇂",
                        RightDownVectorBar: "⥕",
                        RightFloor: "⌋",
                        rightharpoondown: "⇁",
                        rightharpoonup: "⇀",
                        rightleftarrows: "⇄",
                        rightleftharpoons: "⇌",
                        rightrightarrows: "⇉",
                        rightsquigarrow: "↝",
                        RightTee: "⊢",
                        RightTeeArrow: "↦",
                        RightTeeVector: "⥛",
                        rightthreetimes: "⋌",
                        RightTriangle: "⊳",
                        RightTriangleBar: "⧐",
                        RightTriangleEqual: "⊵",
                        RightUpDownVector: "⥏",
                        RightUpTeeVector: "⥜",
                        RightUpVector: "↾",
                        RightUpVectorBar: "⥔",
                        RightVector: "⇀",
                        RightVectorBar: "⥓",
                        ring: "˚",
                        risingdotseq: "≓",
                        rlarr: "⇄",
                        rlhar: "⇌",
                        rlm: "‏",
                        rmoust: "⎱",
                        rmoustache: "⎱",
                        rnmid: "⫮",
                        roang: "⟭",
                        roarr: "⇾",
                        robrk: "⟧",
                        ropar: "⦆",
                        ropf: "𝕣",
                        Ropf: "ℝ",
                        roplus: "⨮",
                        rotimes: "⨵",
                        RoundImplies: "⥰",
                        rpar: ")",
                        rpargt: "⦔",
                        rppolint: "⨒",
                        rrarr: "⇉",
                        Rrightarrow: "⇛",
                        rsaquo: "›",
                        rscr: "𝓇",
                        Rscr: "ℛ",
                        rsh: "↱",
                        Rsh: "↱",
                        rsqb: "]",
                        rsquo: "’",
                        rsquor: "’",
                        rthree: "⋌",
                        rtimes: "⋊",
                        rtri: "▹",
                        rtrie: "⊵",
                        rtrif: "▸",
                        rtriltri: "⧎",
                        RuleDelayed: "⧴",
                        ruluhar: "⥨",
                        rx: "℞",
                        sacute: "ś",
                        Sacute: "Ś",
                        sbquo: "‚",
                        sc: "≻",
                        Sc: "⪼",
                        scap: "⪸",
                        scaron: "š",
                        Scaron: "Š",
                        sccue: "≽",
                        sce: "⪰",
                        scE: "⪴",
                        scedil: "ş",
                        Scedil: "Ş",
                        scirc: "ŝ",
                        Scirc: "Ŝ",
                        scnap: "⪺",
                        scnE: "⪶",
                        scnsim: "⋩",
                        scpolint: "⨓",
                        scsim: "≿",
                        scy: "с",
                        Scy: "С",
                        sdot: "⋅",
                        sdotb: "⊡",
                        sdote: "⩦",
                        searhk: "⤥",
                        searr: "↘",
                        seArr: "⇘",
                        searrow: "↘",
                        sect: "§",
                        semi: ";",
                        seswar: "⤩",
                        setminus: "∖",
                        setmn: "∖",
                        sext: "✶",
                        sfr: "𝔰",
                        Sfr: "𝔖",
                        sfrown: "⌢",
                        sharp: "♯",
                        shchcy: "щ",
                        SHCHcy: "Щ",
                        shcy: "ш",
                        SHcy: "Ш",
                        ShortDownArrow: "↓",
                        ShortLeftArrow: "←",
                        shortmid: "∣",
                        shortparallel: "∥",
                        ShortRightArrow: "→",
                        ShortUpArrow: "↑",
                        shy: "­",
                        sigma: "σ",
                        Sigma: "Σ",
                        sigmaf: "ς",
                        sigmav: "ς",
                        sim: "∼",
                        simdot: "⩪",
                        sime: "≃",
                        simeq: "≃",
                        simg: "⪞",
                        simgE: "⪠",
                        siml: "⪝",
                        simlE: "⪟",
                        simne: "≆",
                        simplus: "⨤",
                        simrarr: "⥲",
                        slarr: "←",
                        SmallCircle: "∘",
                        smallsetminus: "∖",
                        smashp: "⨳",
                        smeparsl: "⧤",
                        smid: "∣",
                        smile: "⌣",
                        smt: "⪪",
                        smte: "⪬",
                        smtes: "⪬︀",
                        softcy: "ь",
                        SOFTcy: "Ь",
                        sol: "/",
                        solb: "⧄",
                        solbar: "⌿",
                        sopf: "𝕤",
                        Sopf: "𝕊",
                        spades: "♠",
                        spadesuit: "♠",
                        spar: "∥",
                        sqcap: "⊓",
                        sqcaps: "⊓︀",
                        sqcup: "⊔",
                        sqcups: "⊔︀",
                        Sqrt: "√",
                        sqsub: "⊏",
                        sqsube: "⊑",
                        sqsubset: "⊏",
                        sqsubseteq: "⊑",
                        sqsup: "⊐",
                        sqsupe: "⊒",
                        sqsupset: "⊐",
                        sqsupseteq: "⊒",
                        squ: "□",
                        square: "□",
                        Square: "□",
                        SquareIntersection: "⊓",
                        SquareSubset: "⊏",
                        SquareSubsetEqual: "⊑",
                        SquareSuperset: "⊐",
                        SquareSupersetEqual: "⊒",
                        SquareUnion: "⊔",
                        squarf: "▪",
                        squf: "▪",
                        srarr: "→",
                        sscr: "𝓈",
                        Sscr: "𝒮",
                        ssetmn: "∖",
                        ssmile: "⌣",
                        sstarf: "⋆",
                        star: "☆",
                        Star: "⋆",
                        starf: "★",
                        straightepsilon: "ϵ",
                        straightphi: "ϕ",
                        strns: "¯",
                        sub: "⊂",
                        Sub: "⋐",
                        subdot: "⪽",
                        sube: "⊆",
                        subE: "⫅",
                        subedot: "⫃",
                        submult: "⫁",
                        subne: "⊊",
                        subnE: "⫋",
                        subplus: "⪿",
                        subrarr: "⥹",
                        subset: "⊂",
                        Subset: "⋐",
                        subseteq: "⊆",
                        subseteqq: "⫅",
                        SubsetEqual: "⊆",
                        subsetneq: "⊊",
                        subsetneqq: "⫋",
                        subsim: "⫇",
                        subsub: "⫕",
                        subsup: "⫓",
                        succ: "≻",
                        succapprox: "⪸",
                        succcurlyeq: "≽",
                        Succeeds: "≻",
                        SucceedsEqual: "⪰",
                        SucceedsSlantEqual: "≽",
                        SucceedsTilde: "≿",
                        succeq: "⪰",
                        succnapprox: "⪺",
                        succneqq: "⪶",
                        succnsim: "⋩",
                        succsim: "≿",
                        SuchThat: "∋",
                        sum: "∑",
                        Sum: "∑",
                        sung: "♪",
                        sup: "⊃",
                        Sup: "⋑",
                        sup1: "¹",
                        sup2: "²",
                        sup3: "³",
                        supdot: "⪾",
                        supdsub: "⫘",
                        supe: "⊇",
                        supE: "⫆",
                        supedot: "⫄",
                        Superset: "⊃",
                        SupersetEqual: "⊇",
                        suphsol: "⟉",
                        suphsub: "⫗",
                        suplarr: "⥻",
                        supmult: "⫂",
                        supne: "⊋",
                        supnE: "⫌",
                        supplus: "⫀",
                        supset: "⊃",
                        Supset: "⋑",
                        supseteq: "⊇",
                        supseteqq: "⫆",
                        supsetneq: "⊋",
                        supsetneqq: "⫌",
                        supsim: "⫈",
                        supsub: "⫔",
                        supsup: "⫖",
                        swarhk: "⤦",
                        swarr: "↙",
                        swArr: "⇙",
                        swarrow: "↙",
                        swnwar: "⤪",
                        szlig: "ß",
                        Tab: "\t",
                        target: "⌖",
                        tau: "τ",
                        Tau: "Τ",
                        tbrk: "⎴",
                        tcaron: "ť",
                        Tcaron: "Ť",
                        tcedil: "ţ",
                        Tcedil: "Ţ",
                        tcy: "т",
                        Tcy: "Т",
                        tdot: "⃛",
                        telrec: "⌕",
                        tfr: "𝔱",
                        Tfr: "𝔗",
                        there4: "∴",
                        therefore: "∴",
                        Therefore: "∴",
                        theta: "θ",
                        Theta: "Θ",
                        thetasym: "ϑ",
                        thetav: "ϑ",
                        thickapprox: "≈",
                        thicksim: "∼",
                        ThickSpace: "  ",
                        thinsp: " ",
                        ThinSpace: " ",
                        thkap: "≈",
                        thksim: "∼",
                        thorn: "þ",
                        THORN: "Þ",
                        tilde: "˜",
                        Tilde: "∼",
                        TildeEqual: "≃",
                        TildeFullEqual: "≅",
                        TildeTilde: "≈",
                        times: "×",
                        timesb: "⊠",
                        timesbar: "⨱",
                        timesd: "⨰",
                        tint: "∭",
                        toea: "⤨",
                        top: "⊤",
                        topbot: "⌶",
                        topcir: "⫱",
                        topf: "𝕥",
                        Topf: "𝕋",
                        topfork: "⫚",
                        tosa: "⤩",
                        tprime: "‴",
                        trade: "™",
                        TRADE: "™",
                        triangle: "▵",
                        triangledown: "▿",
                        triangleleft: "◃",
                        trianglelefteq: "⊴",
                        triangleq: "≜",
                        triangleright: "▹",
                        trianglerighteq: "⊵",
                        tridot: "◬",
                        trie: "≜",
                        triminus: "⨺",
                        TripleDot: "⃛",
                        triplus: "⨹",
                        trisb: "⧍",
                        tritime: "⨻",
                        trpezium: "⏢",
                        tscr: "𝓉",
                        Tscr: "𝒯",
                        tscy: "ц",
                        TScy: "Ц",
                        tshcy: "ћ",
                        TSHcy: "Ћ",
                        tstrok: "ŧ",
                        Tstrok: "Ŧ",
                        twixt: "≬",
                        twoheadleftarrow: "↞",
                        twoheadrightarrow: "↠",
                        uacute: "ú",
                        Uacute: "Ú",
                        uarr: "↑",
                        uArr: "⇑",
                        Uarr: "↟",
                        Uarrocir: "⥉",
                        ubrcy: "ў",
                        Ubrcy: "Ў",
                        ubreve: "ŭ",
                        Ubreve: "Ŭ",
                        ucirc: "û",
                        Ucirc: "Û",
                        ucy: "у",
                        Ucy: "У",
                        udarr: "⇅",
                        udblac: "ű",
                        Udblac: "Ű",
                        udhar: "⥮",
                        ufisht: "⥾",
                        ufr: "𝔲",
                        Ufr: "𝔘",
                        ugrave: "ù",
                        Ugrave: "Ù",
                        uHar: "⥣",
                        uharl: "↿",
                        uharr: "↾",
                        uhblk: "▀",
                        ulcorn: "⌜",
                        ulcorner: "⌜",
                        ulcrop: "⌏",
                        ultri: "◸",
                        umacr: "ū",
                        Umacr: "Ū",
                        uml: "¨",
                        UnderBar: "_",
                        UnderBrace: "⏟",
                        UnderBracket: "⎵",
                        UnderParenthesis: "⏝",
                        Union: "⋃",
                        UnionPlus: "⊎",
                        uogon: "ų",
                        Uogon: "Ų",
                        uopf: "𝕦",
                        Uopf: "𝕌",
                        uparrow: "↑",
                        Uparrow: "⇑",
                        UpArrow: "↑",
                        UpArrowBar: "⤒",
                        UpArrowDownArrow: "⇅",
                        updownarrow: "↕",
                        Updownarrow: "⇕",
                        UpDownArrow: "↕",
                        UpEquilibrium: "⥮",
                        upharpoonleft: "↿",
                        upharpoonright: "↾",
                        uplus: "⊎",
                        UpperLeftArrow: "↖",
                        UpperRightArrow: "↗",
                        upsi: "υ",
                        Upsi: "ϒ",
                        upsih: "ϒ",
                        upsilon: "υ",
                        Upsilon: "Υ",
                        UpTee: "⊥",
                        UpTeeArrow: "↥",
                        upuparrows: "⇈",
                        urcorn: "⌝",
                        urcorner: "⌝",
                        urcrop: "⌎",
                        uring: "ů",
                        Uring: "Ů",
                        urtri: "◹",
                        uscr: "𝓊",
                        Uscr: "𝒰",
                        utdot: "⋰",
                        utilde: "ũ",
                        Utilde: "Ũ",
                        utri: "▵",
                        utrif: "▴",
                        uuarr: "⇈",
                        uuml: "ü",
                        Uuml: "Ü",
                        uwangle: "⦧",
                        vangrt: "⦜",
                        varepsilon: "ϵ",
                        varkappa: "ϰ",
                        varnothing: "∅",
                        varphi: "ϕ",
                        varpi: "ϖ",
                        varpropto: "∝",
                        varr: "↕",
                        vArr: "⇕",
                        varrho: "ϱ",
                        varsigma: "ς",
                        varsubsetneq: "⊊︀",
                        varsubsetneqq: "⫋︀",
                        varsupsetneq: "⊋︀",
                        varsupsetneqq: "⫌︀",
                        vartheta: "ϑ",
                        vartriangleleft: "⊲",
                        vartriangleright: "⊳",
                        vBar: "⫨",
                        Vbar: "⫫",
                        vBarv: "⫩",
                        vcy: "в",
                        Vcy: "В",
                        vdash: "⊢",
                        vDash: "⊨",
                        Vdash: "⊩",
                        VDash: "⊫",
                        Vdashl: "⫦",
                        vee: "∨",
                        Vee: "⋁",
                        veebar: "⊻",
                        veeeq: "≚",
                        vellip: "⋮",
                        verbar: "|",
                        Verbar: "‖",
                        vert: "|",
                        Vert: "‖",
                        VerticalBar: "∣",
                        VerticalLine: "|",
                        VerticalSeparator: "❘",
                        VerticalTilde: "≀",
                        VeryThinSpace: " ",
                        vfr: "𝔳",
                        Vfr: "𝔙",
                        vltri: "⊲",
                        vnsub: "⊂⃒",
                        vnsup: "⊃⃒",
                        vopf: "𝕧",
                        Vopf: "𝕍",
                        vprop: "∝",
                        vrtri: "⊳",
                        vscr: "𝓋",
                        Vscr: "𝒱",
                        vsubne: "⊊︀",
                        vsubnE: "⫋︀",
                        vsupne: "⊋︀",
                        vsupnE: "⫌︀",
                        Vvdash: "⊪",
                        vzigzag: "⦚",
                        wcirc: "ŵ",
                        Wcirc: "Ŵ",
                        wedbar: "⩟",
                        wedge: "∧",
                        Wedge: "⋀",
                        wedgeq: "≙",
                        weierp: "℘",
                        wfr: "𝔴",
                        Wfr: "𝔚",
                        wopf: "𝕨",
                        Wopf: "𝕎",
                        wp: "℘",
                        wr: "≀",
                        wreath: "≀",
                        wscr: "𝓌",
                        Wscr: "𝒲",
                        xcap: "⋂",
                        xcirc: "◯",
                        xcup: "⋃",
                        xdtri: "▽",
                        xfr: "𝔵",
                        Xfr: "𝔛",
                        xharr: "⟷",
                        xhArr: "⟺",
                        xi: "ξ",
                        Xi: "Ξ",
                        xlarr: "⟵",
                        xlArr: "⟸",
                        xmap: "⟼",
                        xnis: "⋻",
                        xodot: "⨀",
                        xopf: "𝕩",
                        Xopf: "𝕏",
                        xoplus: "⨁",
                        xotime: "⨂",
                        xrarr: "⟶",
                        xrArr: "⟹",
                        xscr: "𝓍",
                        Xscr: "𝒳",
                        xsqcup: "⨆",
                        xuplus: "⨄",
                        xutri: "△",
                        xvee: "⋁",
                        xwedge: "⋀",
                        yacute: "ý",
                        Yacute: "Ý",
                        yacy: "я",
                        YAcy: "Я",
                        ycirc: "ŷ",
                        Ycirc: "Ŷ",
                        ycy: "ы",
                        Ycy: "Ы",
                        yen: "¥",
                        yfr: "𝔶",
                        Yfr: "𝔜",
                        yicy: "ї",
                        YIcy: "Ї",
                        yopf: "𝕪",
                        Yopf: "𝕐",
                        yscr: "𝓎",
                        Yscr: "𝒴",
                        yucy: "ю",
                        YUcy: "Ю",
                        yuml: "ÿ",
                        Yuml: "Ÿ",
                        zacute: "ź",
                        Zacute: "Ź",
                        zcaron: "ž",
                        Zcaron: "Ž",
                        zcy: "з",
                        Zcy: "З",
                        zdot: "ż",
                        Zdot: "Ż",
                        zeetrf: "ℨ",
                        ZeroWidthSpace: "​",
                        zeta: "ζ",
                        Zeta: "Ζ",
                        zfr: "𝔷",
                        Zfr: "ℨ",
                        zhcy: "ж",
                        ZHcy: "Ж",
                        zigrarr: "⇝",
                        zopf: "𝕫",
                        Zopf: "ℤ",
                        zscr: "𝓏",
                        Zscr: "𝒵",
                        zwj: "‍",
                        zwnj: "‌"
                    },
                    v = {
                        aacute: "á",
                        Aacute: "Á",
                        acirc: "â",
                        Acirc: "Â",
                        acute: "´",
                        aelig: "æ",
                        AElig: "Æ",
                        agrave: "à",
                        Agrave: "À",
                        amp: "&",
                        AMP: "&",
                        aring: "å",
                        Aring: "Å",
                        atilde: "ã",
                        Atilde: "Ã",
                        auml: "ä",
                        Auml: "Ä",
                        brvbar: "¦",
                        ccedil: "ç",
                        Ccedil: "Ç",
                        cedil: "¸",
                        cent: "¢",
                        copy: "©",
                        COPY: "©",
                        curren: "¤",
                        deg: "°",
                        divide: "÷",
                        eacute: "é",
                        Eacute: "É",
                        ecirc: "ê",
                        Ecirc: "Ê",
                        egrave: "è",
                        Egrave: "È",
                        eth: "ð",
                        ETH: "Ð",
                        euml: "ë",
                        Euml: "Ë",
                        frac12: "½",
                        frac14: "¼",
                        frac34: "¾",
                        gt: ">",
                        GT: ">",
                        iacute: "í",
                        Iacute: "Í",
                        icirc: "î",
                        Icirc: "Î",
                        iexcl: "¡",
                        igrave: "ì",
                        Igrave: "Ì",
                        iquest: "¿",
                        iuml: "ï",
                        Iuml: "Ï",
                        laquo: "«",
                        lt: "<",
                        LT: "<",
                        macr: "¯",
                        micro: "µ",
                        middot: "·",
                        nbsp: " ",
                        not: "¬",
                        ntilde: "ñ",
                        Ntilde: "Ñ",
                        oacute: "ó",
                        Oacute: "Ó",
                        ocirc: "ô",
                        Ocirc: "Ô",
                        ograve: "ò",
                        Ograve: "Ò",
                        ordf: "ª",
                        ordm: "º",
                        oslash: "ø",
                        Oslash: "Ø",
                        otilde: "õ",
                        Otilde: "Õ",
                        ouml: "ö",
                        Ouml: "Ö",
                        para: "¶",
                        plusmn: "±",
                        pound: "£",
                        quot: '"',
                        QUOT: '"',
                        raquo: "»",
                        reg: "®",
                        REG: "®",
                        sect: "§",
                        shy: "­",
                        sup1: "¹",
                        sup2: "²",
                        sup3: "³",
                        szlig: "ß",
                        thorn: "þ",
                        THORN: "Þ",
                        times: "×",
                        uacute: "ú",
                        Uacute: "Ú",
                        ucirc: "û",
                        Ucirc: "Û",
                        ugrave: "ù",
                        Ugrave: "Ù",
                        uml: "¨",
                        uuml: "ü",
                        Uuml: "Ü",
                        yacute: "ý",
                        Yacute: "Ý",
                        yen: "¥",
                        yuml: "ÿ"
                    },
                    m = {
                        0: "�",
                        128: "€",
                        130: "‚",
                        131: "ƒ",
                        132: "„",
                        133: "…",
                        134: "†",
                        135: "‡",
                        136: "ˆ",
                        137: "‰",
                        138: "Š",
                        139: "‹",
                        140: "Œ",
                        142: "Ž",
                        145: "‘",
                        146: "’",
                        147: "“",
                        148: "”",
                        149: "•",
                        150: "–",
                        151: "—",
                        152: "˜",
                        153: "™",
                        154: "š",
                        155: "›",
                        156: "œ",
                        158: "ž",
                        159: "Ÿ"
                    },
                    _ = [1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977, 64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987, 64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997, 64998, 64999, 65e3, 65001, 65002, 65003, 65004, 65005, 65006, 65007, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111],
                    w = String.fromCharCode,
                    x = {}.hasOwnProperty,
                    k = function(t, e) {
                        return x.call(t, e)
                    },
                    E = function(t, e) {
                        if (!t) return e;
                        var n, r = {};
                        for (n in e) r[n] = k(t, n) ? t[n] : e[n];
                        return r
                    },
                    A = function(t, e) {
                        var n = "";
                        return t >= 55296 && t <= 57343 || t > 1114111 ? (e && T("character reference outside the permissible Unicode range"), "�") : k(m, t) ? (e && T("disallowed character reference"), m[t]) : (e && function(t, e) {
                            for (var n = -1, r = t.length; ++n < r;)
                                if (t[n] == e) return !0;
                            return !1
                        }(_, t) && T("disallowed character reference"), t > 65535 && (n += w((t -= 65536) >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), n += w(t))
                    },
                    S = function(t) {
                        return "&#x" + t.toString(16).toUpperCase() + ";"
                    },
                    M = function(t) {
                        return "&#" + t + ";"
                    },
                    T = function(t) {
                        throw Error("Parse error: " + t)
                    },
                    D = function(t, e) {
                        (e = E(e, D.options)).strict && g.test(t) && T("forbidden code point");
                        var n = e.encodeEverything,
                            r = e.useNamedReferences,
                            i = e.allowUnsafeSymbols,
                            a = e.decimal ? M : S,
                            o = function(t) {
                                return a(t.charCodeAt(0))
                            };
                        return n ? (t = t.replace(u, (function(t) {
                            return r && k(l, t) ? "&" + l[t] + ";" : o(t)
                        })), r && (t = t.replace(/&gt;\u20D2/g, "&nvgt;").replace(/&lt;\u20D2/g, "&nvlt;").replace(/&#x66;&#x6A;/g, "&fjlig;")), r && (t = t.replace(f, (function(t) {
                            return "&" + l[t] + ";"
                        })))) : r ? (i || (t = t.replace(h, (function(t) {
                            return "&" + l[t] + ";"
                        }))), t = (t = t.replace(/&gt;\u20D2/g, "&nvgt;").replace(/&lt;\u20D2/g, "&nvlt;")).replace(f, (function(t) {
                            return "&" + l[t] + ";"
                        }))) : i || (t = t.replace(h, o)), t.replace(s, (function(t) {
                            var e = t.charCodeAt(0),
                                n = t.charCodeAt(1);
                            return a(1024 * (e - 55296) + n - 56320 + 65536)
                        })).replace(c, o)
                    };
                D.options = {
                    allowUnsafeSymbols: !1,
                    encodeEverything: !1,
                    strict: !1,
                    useNamedReferences: !1,
                    decimal: !1
                };
                var C = function(t, e) {
                    var n = (e = E(e, C.options)).strict;
                    return n && p.test(t) && T("malformed character reference"), t.replace(y, (function(t, r, i, a, o, s, u, c, f) {
                        var l, h, d, p, g, y;
                        return r ? b[g = r] : i ? (g = i, (y = a) && e.isAttributeValue ? (n && "=" == y && T("`&` did not start a character reference"), t) : (n && T("named character reference was not terminated by a semicolon"), v[g] + (y || ""))) : o ? (d = o, h = s, n && !h && T("character reference was not terminated by a semicolon"), l = parseInt(d, 10), A(l, n)) : u ? (p = u, h = c, n && !h && T("character reference was not terminated by a semicolon"), l = parseInt(p, 16), A(l, n)) : (n && T("named character reference was not terminated by a semicolon"), t)
                    }))
                };
                C.options = {
                    isAttributeValue: !1,
                    strict: !1
                };
                var N = {
                    version: "1.2.0",
                    encode: D,
                    decode: C,
                    escape: function(t) {
                        return t.replace(h, (function(t) {
                            return d[t]
                        }))
                    },
                    unescape: C
                };
                if ("function" == typeof define && "object" == typeof define.amd && define.amd) define((function() {
                    return N
                }));
                else if (i && !i.nodeType)
                    if (a) a.exports = N;
                    else
                        for (var I in N) k(N, I) && (i[I] = N[I]);
                else r.he = N
            }(this)
        }).call(this, n(9)(t), n(12))
    }, function(t, e, n) {
        "use strict";
        var r = n(231),
            i = n(232),
            a = n(233);

        function o(t, e, n) {
            if (!t) return t;
            if (!e) return t;
            "string" == typeof n && (n = {
                keyframes: n
            }), n || (n = {
                keyframes: !1
            }), t = s(t, e + " $1$2");
            var i = e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
            t = (t = (t = (t = t.replace(new RegExp("(" + i + ")\\s*\\1(?=[\\s\\r\\n,{])", "g"), "$1")).replace(new RegExp("(" + i + ")\\s*:host", "g"), "$1")).replace(new RegExp("(" + i + ")\\s*@", "g"), "@")).replace(new RegExp("(" + i + ")\\s*:root", "g"), ":root");
            for (var a, o = [], u = /@keyframes\s+([a-zA-Z0-9_-]+)\s*{/g; null !== (a = u.exec(t));) o.indexOf(a[1]) < 0 && o.push(a[1]);
            var c = r(e);
            return o.forEach((function(e) {
                var r = (!0 === n.keyframes ? c + "-" : "string" == typeof n.keyframes ? n.keyframes : "") + e;
                t = (t = t.replace(new RegExp("(@keyframes\\s+)" + e + "(\\s*{)", "g"), "$1" + r + "$2")).replace(new RegExp("(animation(?:-name)?\\s*:[^;]*\\s*)" + e + "([\\s;}])", "g"), "$1" + r + "$2")
            })), t = t.replace(new RegExp("(" + i + " )(\\s*(?:to|from|[+-]?(?:(?:\\.\\d+)|(?:\\d+(?:\\.\\d*)?))%))(?=[\\s\\r\\n,{])", "g"), "$2")
        }

        function s(t, e) {
            var n = [];
            return t = a(t), t = (t = i.replace(t, !0, n)).replace(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g, e), t = i.paste(t, n)
        }
        t.exports = o, o.replace = s
    }, function(t, e, n) {
        "use strict";
        const r = n(420),
            i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~".split(""),
            a = (t, e) => {
                const n = e.length,
                    i = Math.floor(65536 / n) * n - 1,
                    a = 2 * Math.ceil(1.1 * t);
                let o = "",
                    s = 0;
                for (; s < t;) {
                    const u = r.randomBytes(a);
                    let c = 0;
                    for (; c < a && s < t;) {
                        const t = u.readUInt16LE(c);
                        c += 2, t > i || (o += e[t % n], s++)
                    }
                }
                return o
            },
            o = [void 0, "hex", "base64", "url-safe"];
        t.exports = ({
            length: t,
            type: e,
            characters: n
        }) => {
            if (!(t >= 0 && Number.isFinite(t))) throw new TypeError("Expected a `length` to be a non-negative finite number");
            if (void 0 !== e && void 0 !== n) throw new TypeError("Expected either `type` or `characters`");
            if (void 0 !== n && "string" != typeof n) throw new TypeError("Expected `characters` to be string");
            if (!o.includes(e)) throw new TypeError(`Unknown type: ${e}`);
            if (void 0 === e && void 0 === n && (e = "hex"), "hex" === e || void 0 === e && void 0 === n) return r.randomBytes(Math.ceil(.5 * t)).toString("hex").slice(0, t);
            if ("base64" === e) return r.randomBytes(Math.ceil(.75 * t)).toString("base64").slice(0, t);
            if ("url-safe" === e) return a(t, i);
            if (0 === n.length) throw new TypeError("Expected `characters` string length to be greater than or equal to 1");
            if (n.length > 65536) throw new TypeError("Expected `characters` string length to be less or equal to 65536");
            return a(t, n.split(""))
        }
    }, function(t, e, n) {
        var r;
        r = function() {
            var t = JSON.parse('{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","‘":"\'","’":"\'","“":"\\"","”":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial"}'),
                e = JSON.parse('{"vi":{"Đ":"D","đ":"d"}}');

            function n(n, r) {
                if ("string" != typeof n) throw new Error("slugify: string argument expected");
                var i = e[(r = "string" == typeof r ? {
                        replacement: r
                    } : r || {}).locale] || {},
                    a = n.split("").reduce((function(e, n) {
                        return e + (i[n] || t[n] || n).replace(r.remove || /[^\w\s$*_+~.()'"!\-:@]/g, "")
                    }), "").trim().replace(/[-\s]+/g, r.replacement || "-");
                return r.lower ? a.toLowerCase() : a
            }
            return n.extend = function(e) {
                for (var n in e) t[n] = e[n]
            }, n
        }, t.exports = r(), t.exports.default = r()
    }, function(t, e, n) {
        /*!
         * Escaper v2.5.3
         * https://github.com/kobezzza/Escaper
         *
         * Released under the MIT license
         * https://github.com/kobezzza/Escaper/blob/master/LICENSE
         *
         * Date: Tue, 23 Jan 2018 15:58:45 GMT
         */
        ! function(t) {
            "use strict";
            var e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                    return typeof t
                } : function(t) {
                    return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                },
                n = void 0,
                r = n = {
                    VERSION: [2, 5, 3],
                    content: [],
                    cache: {},
                    snakeskinRgxp: null,
                    symbols: null,
                    replace: T,
                    paste: C
                },
                i = {
                    '"': !0,
                    "'": !0,
                    "`": !0
                },
                a = {
                    "/": !0
                };
            for (var o in i) {
                if (!i.hasOwnProperty(o)) break;
                a[o] = !0
            }
            var s = {
                    "//": !0,
                    "//*": !0,
                    "//!": !0,
                    "//#": !0,
                    "//@": !0,
                    "//$": !0
                },
                u = {
                    "/*": !0,
                    "/**": !0,
                    "/*!": !0,
                    "/*#": !0,
                    "/*@": !0,
                    "/*$": !0
                },
                c = [],
                f = {};
            for (var l in a) {
                if (!a.hasOwnProperty(l)) break;
                c.push(l), f[l] = !0
            }
            for (var h in s) {
                if (!s.hasOwnProperty(h)) break;
                c.push(h), f[h] = !0
            }
            for (var d in u) {
                if (!u.hasOwnProperty(d)) break;
                c.push(d), f[d] = !0
            }
            var p = [],
                g = {
                    g: !0,
                    m: !0,
                    i: !0,
                    y: !0,
                    u: !0
                };
            for (var y in g) {
                if (!g.hasOwnProperty(y)) break;
                p.push(y)
            }
            var b = {
                    "-": !0,
                    "+": !0,
                    "*": !0,
                    "%": !0,
                    "~": !0,
                    ">": !0,
                    "<": !0,
                    "^": !0,
                    ",": !0,
                    ";": !0,
                    "=": !0,
                    "|": !0,
                    "&": !0,
                    "!": !0,
                    "?": !0,
                    ":": !0,
                    "(": !0,
                    "{": !0,
                    "[": !0
                },
                v = {
                    return: !0,
                    yield: !0,
                    await: !0,
                    typeof: !0,
                    void: !0,
                    instanceof: !0,
                    delete: !0,
                    in : !0,
                    new: !0,
                    of : !0
                };

            function m(t, e, n) {
                for (var r in t) {
                    if (!t.hasOwnProperty(r)) break;
                    r in e == 0 && (e[r] = n)
                }
            }
            var _ = void 0,
                w = void 0,
                x = /[^\s/]/,
                k = /[a-z]/,
                E = /\s/,
                A = /[\r\n]/,
                S = /\${pos}/g,
                M = {
                    object: !0,
                    function: !0
                };

            function T(t, r, o, l) {
                _ = _ || n.symbols || "a-z", w = w || n.snakeskinRgxp || new RegExp("[!$" + _ + "_]", "i");
                var h = n,
                    d = h.cache,
                    y = h.content,
                    T = Boolean(r && M[void 0 === r ? "undefined" : e(r)]),
                    D = T ? Object(r) : {};

                function C(t) {
                    return D["@label"] ? D["@label"].replace(S, t) : "__ESCAPER_QUOT__" + t + "_"
                }
                var N = !1;
                "boolean" == typeof r && (N = Boolean(r)), "@comments" in D && (m(u, D, D["@comments"]), m(s, D, D["@comments"]), delete D["@comments"]), "@strings" in D && (m(i, D, D["@strings"]), delete D["@strings"]), "@literals" in D && (m(a, D, D["@literals"]), delete D["@literals"]), "@all" in D && (m(f, D, D["@all"]), delete D["@all"]);
                for (var I = "", L = -1; ++L < c.length;) {
                    var B = c[L];
                    u[B] || s[B] ? D[B] = N || D[B] : D[B] = D[B] || !T, I += D[B] + ","
                }
                var O = t,
                    R = o || y;
                if (R === y && d[I] && d[I][O]) return d[I][O];
                for (var P = !1, F = !0, q = !1, j = !1, U = 0, z = !1, Y = 0, V = !1, H = void 0, G = void 0, $ = "", W = "", K = -1; ++K < t.length;) {
                    var X = t.charAt(K),
                        Z = t.charAt(K + 1),
                        J = t.substr(K, 2),
                        Q = t.substr(K, 3);
                    if (j)(A.test(Z) && s[j] || u[X + t.charAt(K - 1)] && K - U > 2 && u[j]) && (D[j] && (H = t.substring(U, K + 1), -1 === D[j] ? G = "" : (G = C(R.length), R.push(H)), t = t.substring(0, U) + G + t.substring(K + 1), K += G.length - H.length), j = !1);
                    else {
                        if (!P) {
                            if ("/" === X && ((s[J] || u[J]) && (j = s[Q] || u[Q] ? Q : J), j)) {
                                U = K;
                                continue
                            }
                            b[X] || v[W] ? (F = !0, W = "") : x.test(X) && (F = !1), k.test(X) ? $ += X : (W = $, $ = "");
                            var tt = !1;
                            l && ("|" === X && w.test(Z) ? (V = !0, F = !1, tt = !0) : V && E.test(X) && (V = !1, F = !0, tt = !0)), tt || (b[X] ? F = !0 : x.test(X) && (F = !1))
                        }
                        if ("/" !== P || q || ("[" === X ? z = !0 : "]" === X && (z = !1)), !P && Y && ("}" === X ? Y-- : "{" === X && Y++, Y || (X = "`")), "`" !== P || q || "${" !== J || (X = "`", K++, Y++), !f[X] || "/" === X && !F || P) {
                            if (P && ("\\" === X || q)) q = !q;
                            else if (f[X] && P === X && !q && ("/" !== P || !z)) {
                                if ("/" === X)
                                    for (var et = -1; ++et < p.length;) g[t.charAt(K + 1)] && K++;
                                P = !1, F = !1, D[X] && (H = t.substring(U, K + 1), -1 === D[X] ? G = "" : (G = C(R.length), R.push(H)), t = t.substring(0, U) + G + t.substring(K + 1), K += G.length - H.length)
                            }
                        } else P = X, U = K
                    }
                }
                return R === y && (d[I] = d[I] || {}, d[I][O] = t), t
            }
            var D = /__ESCAPER_QUOT__(\d+)_/g;

            function C(t, e, r) {
                return t.replace(r || D, (function(t, r) {
                    return (e || n.content)[r]
                }))
            }
            t.default = r, t.replace = T, t.paste = C, Object.defineProperty(t, "__esModule", {
                value: !0
            })
        }(e)
    }, function(t, e, n) {
        "use strict";
        var r = n(234);
        t.exports = function(t, e) {
            var n;
            t = t.toString();
            var i = "",
                a = "",
                o = !1,
                s = !(!1 === (e = e || {}).preserve || !0 === e.all),
                u = "";
            "function" == typeof e.preserve ? (s = !1, n = e.preserve) : r(e.preserve) && (s = !1, n = function(t) {
                return e.preserve.test(t)
            });
            for (var c = 0; c < t.length; c++)
                if (a = t[c], "\\" !== t[c - 1] && ('"' !== a && "'" !== a || (o === a ? o = !1 : o || (o = a))), o || "/" !== a || "*" !== t[c + 1] || s && "!" === t[c + 2]) u += a;
                else {
                    for (var f = c + 2; f < t.length; f++) {
                        if ("*" === t[f] && "/" === t[f + 1]) {
                            n && (u = n(i) ? u + "/*" + i + "*/" : u, i = "");
                            break
                        }
                        n && (i += t[f])
                    }
                    c = f + 1
                } return u
        }
    }, function(t, e, n) {
        "use strict";
        t.exports = function(t) {
            return "[object RegExp]" === Object.prototype.toString.call(t)
        }
    }, function(t, e, n) {
        var r = {
            "./locale": 129,
            "./locale.js": 129
        };

        function i(t) {
            var e = a(t);
            return n(e)
        }

        function a(t) {
            if (!n.o(r, t)) {
                var e = new Error("Cannot find module '" + t + "'");
                throw e.code = "MODULE_NOT_FOUND", e
            }
            return r[t]
        }
        i.keys = function() {
            return Object.keys(r)
        }, i.resolve = a, t.exports = i, i.id = 235
    }, function(t, e, n) {
        t.exports = {
            Graph: n(89),
            version: n(337)
        }
    }, function(t, e, n) {
        var r = n(130),
            i = 4;
        t.exports = function(t) {
            return r(t, i)
        }
    }, function(t, e) {
        t.exports = function() {
            this.__data__ = [], this.size = 0
        }
    }, function(t, e, n) {
        var r = n(63),
            i = Array.prototype.splice;
        t.exports = function(t) {
            var e = this.__data__,
                n = r(e, t);
            return !(n < 0) && (n == e.length - 1 ? e.pop() : i.call(e, n, 1), --this.size, !0)
        }
    }, function(t, e, n) {
        var r = n(63);
        t.exports = function(t) {
            var e = this.__data__,
                n = r(e, t);
            return n < 0 ? void 0 : e[n][1]
        }
    }, function(t, e, n) {
        var r = n(63);
        t.exports = function(t) {
            return r(this.__data__, t) > -1
        }
    }, function(t, e, n) {
        var r = n(63);
        t.exports = function(t, e) {
            var n = this.__data__,
                i = r(n, t);
            return i < 0 ? (++this.size, n.push([t, e])) : n[i][1] = e, this
        }
    }, function(t, e, n) {
        var r = n(62);
        t.exports = function() {
            this.__data__ = new r, this.size = 0
        }
    }, function(t, e) {
        t.exports = function(t) {
            var e = this.__data__,
                n = e.delete(t);
            return this.size = e.size, n
        }
    }, function(t, e) {
        t.exports = function(t) {
            return this.__data__.get(t)
        }
    }, function(t, e) {
        t.exports = function(t) {
            return this.__data__.has(t)
        }
    }, function(t, e, n) {
        var r = n(62),
            i = n(90),
            a = n(91),
            o = 200;
        t.exports = function(t, e) {
            var n = this.__data__;
            if (n instanceof r) {
                var s = n.__data__;
                if (!i || s.length < o - 1) return s.push([t, e]), this.size = ++n.size, this;
                n = this.__data__ = new a(s)
            }
            return n.set(t, e), this.size = n.size, this
        }
    }, function(t, e, n) {
        var r = n(37),
            i = n(251),
            a = n(14),
            o = n(132),
            s = /^\[object .+?Constructor\]$/,
            u = Function.prototype,
            c = Object.prototype,
            f = u.toString,
            l = c.hasOwnProperty,
            h = RegExp("^" + f.call(l).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
        t.exports = function(t) {
            return !(!a(t) || i(t)) && (r(t) ? h : s).test(o(t))
        }
    }, function(t, e, n) {
        var r = n(38),
            i = Object.prototype,
            a = i.hasOwnProperty,
            o = i.toString,
            s = r ? r.toStringTag : void 0;
        t.exports = function(t) {
            var e = a.call(t, s),
                n = t[s];
            try {
                t[s] = void 0;
                var r = !0
            } catch (t) {}
            var i = o.call(t);
            return r && (e ? t[s] = n : delete t[s]), i
        }
    }, function(t, e) {
        var n = Object.prototype.toString;
        t.exports = function(t) {
            return n.call(t)
        }
    }, function(t, e, n) {
        var r, i = n(252),
            a = (r = /[^.]+$/.exec(i && i.keys && i.keys.IE_PROTO || "")) ? "Symbol(src)_1." + r : "";
        t.exports = function(t) {
            return !!a && a in t
        }
    }, function(t, e, n) {
        var r = n(18)["__core-js_shared__"];
        t.exports = r
    }, function(t, e) {
        t.exports = function(t, e) {
            return null == t ? void 0 : t[e]
        }
    }, function(t, e, n) {
        var r = n(255),
            i = n(62),
            a = n(90);
        t.exports = function() {
            this.size = 0, this.__data__ = {
                hash: new r,
                map: new(a || i),
                string: new r
            }
        }
    }, function(t, e, n) {
        var r = n(256),
            i = n(257),
            a = n(258),
            o = n(259),
            s = n(260);

        function u(t) {
            var e = -1,
                n = null == t ? 0 : t.length;
            for (this.clear(); ++e < n;) {
                var r = t[e];
                this.set(r[0], r[1])
            }
        }
        u.prototype.clear = r, u.prototype.delete = i, u.prototype.get = a, u.prototype.has = o, u.prototype.set = s, t.exports = u
    }, function(t, e, n) {
        var r = n(64);
        t.exports = function() {
            this.__data__ = r ? r(null) : {}, this.size = 0
        }
    }, function(t, e) {
        t.exports = function(t) {
            var e = this.has(t) && delete this.__data__[t];
            return this.size -= e ? 1 : 0, e
        }
    }, function(t, e, n) {
        var r = n(64),
            i = "__lodash_hash_undefined__",
            a = Object.prototype.hasOwnProperty;
        t.exports = function(t) {
            var e = this.__data__;
            if (r) {
                var n = e[t];
                return n === i ? void 0 : n
            }
            return a.call(e, t) ? e[t] : void 0
        }
    }, function(t, e, n) {
        var r = n(64),
            i = Object.prototype.hasOwnProperty;
        t.exports = function(t) {
            var e = this.__data__;
            return r ? void 0 !== e[t] : i.call(e, t)
        }
    }, function(t, e, n) {
        var r = n(64),
            i = "__lodash_hash_undefined__";
        t.exports = function(t, e) {
            var n = this.__data__;
            return this.size += this.has(t) ? 0 : 1, n[t] = r && void 0 === e ? i : e, this
        }
    }, function(t, e, n) {
        var r = n(65);
        t.exports = function(t) {
            var e = r(this, t).delete(t);
            return this.size -= e ? 1 : 0, e
        }
    }, function(t, e) {
        t.exports = function(t) {
            var e = typeof t;
            return "string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t
        }
    }, function(t, e, n) {
        var r = n(65);
        t.exports = function(t) {
            return r(this, t).get(t)
        }
    }, function(t, e, n) {
        var r = n(65);
        t.exports = function(t) {
            return r(this, t).has(t)
        }
    }, function(t, e, n) {
        var r = n(65);
        t.exports = function(t, e) {
            var n = r(this, t),
                i = n.size;
            return n.set(t, e), this.size += n.size == i ? 0 : 1, this
        }
    }, function(t, e, n) {
        var r = n(49),
            i = n(27);
        t.exports = function(t, e) {
            return t && r(e, i(e), t)
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = -1, r = Array(t); ++n < t;) r[n] = e(n);
            return r
        }
    }, function(t, e, n) {
        var r = n(33),
            i = n(20),
            a = "[object Arguments]";
        t.exports = function(t) {
            return i(t) && r(t) == a
        }
    }, function(t, e) {
        t.exports = function() {
            return !1
        }
    }, function(t, e, n) {
        var r = n(33),
            i = n(93),
            a = n(20),
            o = {};
        o["[object Float32Array]"] = o["[object Float64Array]"] = o["[object Int8Array]"] = o["[object Int16Array]"] = o["[object Int32Array]"] = o["[object Uint8Array]"] = o["[object Uint8ClampedArray]"] = o["[object Uint16Array]"] = o["[object Uint32Array]"] = !0, o["[object Arguments]"] = o["[object Array]"] = o["[object ArrayBuffer]"] = o["[object Boolean]"] = o["[object DataView]"] = o["[object Date]"] = o["[object Error]"] = o["[object Function]"] = o["[object Map]"] = o["[object Number]"] = o["[object Object]"] = o["[object RegExp]"] = o["[object Set]"] = o["[object String]"] = o["[object WeakMap]"] = !1, t.exports = function(t) {
            return a(t) && i(t.length) && !!o[r(t)]
        }
    }, function(t, e, n) {
        var r = n(135)(Object.keys, Object);
        t.exports = r
    }, function(t, e, n) {
        var r = n(49),
            i = n(40);
        t.exports = function(t, e) {
            return t && r(e, i(e), t)
        }
    }, function(t, e, n) {
        var r = n(14),
            i = n(70),
            a = n(274),
            o = Object.prototype.hasOwnProperty;
        t.exports = function(t) {
            if (!r(t)) return a(t);
            var e = i(t),
                n = [];
            for (var s in t)("constructor" != s || !e && o.call(t, s)) && n.push(s);
            return n
        }
    }, function(t, e) {
        t.exports = function(t) {
            var e = [];
            if (null != t)
                for (var n in Object(t)) e.push(n);
            return e
        }
    }, function(t, e, n) {
        var r = n(49),
            i = n(96);
        t.exports = function(t, e) {
            return r(t, i(t), e)
        }
    }, function(t, e, n) {
        var r = n(49),
            i = n(140);
        t.exports = function(t, e) {
            return r(t, i(t), e)
        }
    }, function(t, e, n) {
        var r = n(142),
            i = n(140),
            a = n(40);
        t.exports = function(t) {
            return r(t, a, i)
        }
    }, function(t, e, n) {
        var r = n(32)(n(18), "DataView");
        t.exports = r
    }, function(t, e, n) {
        var r = n(32)(n(18), "Promise");
        t.exports = r
    }, function(t, e, n) {
        var r = n(32)(n(18), "WeakMap");
        t.exports = r
    }, function(t, e) {
        var n = Object.prototype.hasOwnProperty;
        t.exports = function(t) {
            var e = t.length,
                r = new t.constructor(e);
            return e && "string" == typeof t[0] && n.call(t, "index") && (r.index = t.index, r.input = t.input), r
        }
    }, function(t, e, n) {
        var r = n(98),
            i = n(283),
            a = n(284),
            o = n(285),
            s = n(145),
            u = "[object Boolean]",
            c = "[object Date]",
            f = "[object Map]",
            l = "[object Number]",
            h = "[object RegExp]",
            d = "[object Set]",
            p = "[object String]",
            g = "[object Symbol]",
            y = "[object ArrayBuffer]",
            b = "[object DataView]",
            v = "[object Float32Array]",
            m = "[object Float64Array]",
            _ = "[object Int8Array]",
            w = "[object Int16Array]",
            x = "[object Int32Array]",
            k = "[object Uint8Array]",
            E = "[object Uint8ClampedArray]",
            A = "[object Uint16Array]",
            S = "[object Uint32Array]";
        t.exports = function(t, e, n) {
            var M = t.constructor;
            switch (e) {
                case y:
                    return r(t);
                case u:
                case c:
                    return new M(+t);
                case b:
                    return i(t, n);
                case v:
                case m:
                case _:
                case w:
                case x:
                case k:
                case E:
                case A:
                case S:
                    return s(t, n);
                case f:
                    return new M;
                case l:
                case p:
                    return new M(t);
                case h:
                    return a(t);
                case d:
                    return new M;
                case g:
                    return o(t)
            }
        }
    }, function(t, e, n) {
        var r = n(98);
        t.exports = function(t, e) {
            var n = e ? r(t.buffer) : t.buffer;
            return new t.constructor(n, t.byteOffset, t.byteLength)
        }
    }, function(t, e) {
        var n = /\w*$/;
        t.exports = function(t) {
            var e = new t.constructor(t.source, n.exec(t));
            return e.lastIndex = t.lastIndex, e
        }
    }, function(t, e, n) {
        var r = n(38),
            i = r ? r.prototype : void 0,
            a = i ? i.valueOf : void 0;
        t.exports = function(t) {
            return a ? Object(a.call(t)) : {}
        }
    }, function(t, e, n) {
        var r = n(287),
            i = n(69),
            a = n(94),
            o = a && a.isMap,
            s = o ? i(o) : r;
        t.exports = s
    }, function(t, e, n) {
        var r = n(41),
            i = n(20),
            a = "[object Map]";
        t.exports = function(t) {
            return i(t) && r(t) == a
        }
    }, function(t, e, n) {
        var r = n(289),
            i = n(69),
            a = n(94),
            o = a && a.isSet,
            s = o ? i(o) : r;
        t.exports = s
    }, function(t, e, n) {
        var r = n(41),
            i = n(20),
            a = "[object Set]";
        t.exports = function(t) {
            return i(t) && r(t) == a
        }
    }, function(t, e) {
        t.exports = function(t) {
            return function(e, n, r) {
                for (var i = -1, a = Object(e), o = r(e), s = o.length; s--;) {
                    var u = o[t ? s : ++i];
                    if (!1 === n(a[u], u, a)) break
                }
                return e
            }
        }
    }, function(t, e, n) {
        var r = n(23);
        t.exports = function(t, e) {
            return function(n, i) {
                if (null == n) return n;
                if (!r(n)) return t(n, i);
                for (var a = n.length, o = e ? a : -1, s = Object(n);
                    (e ? o-- : ++o < a) && !1 !== i(s[o], o, s););
                return n
            }
        }
    }, function(t, e, n) {
        var r = n(72);
        t.exports = function(t, e) {
            var n = [];
            return r(t, (function(t, r, i) {
                e(t, r, i) && n.push(t)
            })), n
        }
    }, function(t, e, n) {
        var r = n(294),
            i = n(302),
            a = n(156);
        t.exports = function(t) {
            var e = i(t);
            return 1 == e.length && e[0][2] ? a(e[0][0], e[0][1]) : function(n) {
                return n === t || r(n, t, e)
            }
        }
    }, function(t, e, n) {
        var r = n(61),
            i = n(151),
            a = 1,
            o = 2;
        t.exports = function(t, e, n, s) {
            var u = n.length,
                c = u,
                f = !s;
            if (null == t) return !c;
            for (t = Object(t); u--;) {
                var l = n[u];
                if (f && l[2] ? l[1] !== t[l[0]] : !(l[0] in t)) return !1
            }
            for (; ++u < c;) {
                var h = (l = n[u])[0],
                    d = t[h],
                    p = l[1];
                if (f && l[2]) {
                    if (void 0 === d && !(h in t)) return !1
                } else {
                    var g = new r;
                    if (s) var y = s(d, p, h, t, e, g);
                    if (!(void 0 === y ? i(p, d, a | o, s, g) : y)) return !1
                }
            }
            return !0
        }
    }, function(t, e, n) {
        var r = n(61),
            i = n(152),
            a = n(299),
            o = n(301),
            s = n(41),
            u = n(6),
            c = n(39),
            f = n(51),
            l = 1,
            h = "[object Arguments]",
            d = "[object Array]",
            p = "[object Object]",
            g = Object.prototype.hasOwnProperty;
        t.exports = function(t, e, n, y, b, v) {
            var m = u(t),
                _ = u(e),
                w = m ? d : s(t),
                x = _ ? d : s(e),
                k = (w = w == h ? p : w) == p,
                E = (x = x == h ? p : x) == p,
                A = w == x;
            if (A && c(t)) {
                if (!c(e)) return !1;
                m = !0, k = !1
            }
            if (A && !k) return v || (v = new r), m || f(t) ? i(t, e, n, y, b, v) : a(t, e, w, n, y, b, v);
            if (!(n & l)) {
                var S = k && g.call(t, "__wrapped__"),
                    M = E && g.call(e, "__wrapped__");
                if (S || M) {
                    var T = S ? t.value() : t,
                        D = M ? e.value() : e;
                    return v || (v = new r), b(T, D, n, y, v)
                }
            }
            return !!A && (v || (v = new r), o(t, e, n, y, b, v))
        }
    }, function(t, e) {
        var n = "__lodash_hash_undefined__";
        t.exports = function(t) {
            return this.__data__.set(t, n), this
        }
    }, function(t, e) {
        t.exports = function(t) {
            return this.__data__.has(t)
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
                if (e(t[n], n, t)) return !0;
            return !1
        }
    }, function(t, e, n) {
        var r = n(38),
            i = n(144),
            a = n(36),
            o = n(152),
            s = n(300),
            u = n(103),
            c = 1,
            f = 2,
            l = "[object Boolean]",
            h = "[object Date]",
            d = "[object Error]",
            p = "[object Map]",
            g = "[object Number]",
            y = "[object RegExp]",
            b = "[object Set]",
            v = "[object String]",
            m = "[object Symbol]",
            _ = "[object ArrayBuffer]",
            w = "[object DataView]",
            x = r ? r.prototype : void 0,
            k = x ? x.valueOf : void 0;
        t.exports = function(t, e, n, r, x, E, A) {
            switch (n) {
                case w:
                    if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1;
                    t = t.buffer, e = e.buffer;
                case _:
                    return !(t.byteLength != e.byteLength || !E(new i(t), new i(e)));
                case l:
                case h:
                case g:
                    return a(+t, +e);
                case d:
                    return t.name == e.name && t.message == e.message;
                case y:
                case v:
                    return t == e + "";
                case p:
                    var S = s;
                case b:
                    var M = r & c;
                    if (S || (S = u), t.size != e.size && !M) return !1;
                    var T = A.get(t);
                    if (T) return T == e;
                    r |= f, A.set(t, e);
                    var D = o(S(t), S(e), r, x, E, A);
                    return A.delete(t), D;
                case m:
                    if (k) return k.call(t) == k.call(e)
            }
            return !1
        }
    }, function(t, e) {
        t.exports = function(t) {
            var e = -1,
                n = Array(t.size);
            return t.forEach((function(t, r) {
                n[++e] = [r, t]
            })), n
        }
    }, function(t, e, n) {
        var r = n(141),
            i = 1,
            a = Object.prototype.hasOwnProperty;
        t.exports = function(t, e, n, o, s, u) {
            var c = n & i,
                f = r(t),
                l = f.length;
            if (l != r(e).length && !c) return !1;
            for (var h = l; h--;) {
                var d = f[h];
                if (!(c ? d in e : a.call(e, d))) return !1
            }
            var p = u.get(t);
            if (p && u.get(e)) return p == e;
            var g = !0;
            u.set(t, e), u.set(e, t);
            for (var y = c; ++h < l;) {
                var b = t[d = f[h]],
                    v = e[d];
                if (o) var m = c ? o(v, b, d, e, t, u) : o(b, v, d, t, e, u);
                if (!(void 0 === m ? b === v || s(b, v, n, o, u) : m)) {
                    g = !1;
                    break
                }
                y || (y = "constructor" == d)
            }
            if (g && !y) {
                var _ = t.constructor,
                    w = e.constructor;
                _ != w && "constructor" in t && "constructor" in e && !("function" == typeof _ && _ instanceof _ && "function" == typeof w && w instanceof w) && (g = !1)
            }
            return u.delete(t), u.delete(e), g
        }
    }, function(t, e, n) {
        var r = n(155),
            i = n(27);
        t.exports = function(t) {
            for (var e = i(t), n = e.length; n--;) {
                var a = e[n],
                    o = t[a];
                e[n] = [a, o, r(o)]
            }
            return e
        }
    }, function(t, e, n) {
        var r = n(151),
            i = n(304),
            a = n(158),
            o = n(105),
            s = n(155),
            u = n(156),
            c = n(52),
            f = 1,
            l = 2;
        t.exports = function(t, e) {
            return o(t) && s(e) ? u(c(t), e) : function(n) {
                var o = i(n, t);
                return void 0 === o && o === e ? a(n, t) : r(e, o, f | l)
            }
        }
    }, function(t, e, n) {
        var r = n(104);
        t.exports = function(t, e, n) {
            var i = null == t ? void 0 : r(t, e);
            return void 0 === i ? n : i
        }
    }, function(t, e, n) {
        var r = n(306),
            i = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
            a = /\\(\\)?/g,
            o = r((function(t) {
                var e = [];
                return 46 === t.charCodeAt(0) && e.push(""), t.replace(i, (function(t, n, r, i) {
                    e.push(r ? i.replace(a, "$1") : n || t)
                })), e
            }));
        t.exports = o
    }, function(t, e, n) {
        var r = n(307),
            i = 500;
        t.exports = function(t) {
            var e = r(t, (function(t) {
                    return n.size === i && n.clear(), t
                })),
                n = e.cache;
            return e
        }
    }, function(t, e, n) {
        var r = n(91),
            i = "Expected a function";

        function a(t, e) {
            if ("function" != typeof t || null != e && "function" != typeof e) throw new TypeError(i);
            var n = function() {
                var r = arguments,
                    i = e ? e.apply(this, r) : r[0],
                    a = n.cache;
                if (a.has(i)) return a.get(i);
                var o = t.apply(this, r);
                return n.cache = a.set(i, o) || a, o
            };
            return n.cache = new(a.Cache || r), n
        }
        a.Cache = r, t.exports = a
    }, function(t, e, n) {
        var r = n(38),
            i = n(74),
            a = n(6),
            o = n(42),
            s = 1 / 0,
            u = r ? r.prototype : void 0,
            c = u ? u.toString : void 0;
        t.exports = function t(e) {
            if ("string" == typeof e) return e;
            if (a(e)) return i(e, t) + "";
            if (o(e)) return c ? c.call(e) : "";
            var n = e + "";
            return "0" == n && 1 / e == -s ? "-0" : n
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return null != t && e in Object(t)
        }
    }, function(t, e, n) {
        var r = n(160),
            i = n(311),
            a = n(105),
            o = n(52);
        t.exports = function(t) {
            return a(t) ? r(o(t)) : i(t)
        }
    }, function(t, e, n) {
        var r = n(104);
        t.exports = function(t) {
            return function(e) {
                return r(e, t)
            }
        }
    }, function(t, e) {
        var n = Object.prototype.hasOwnProperty;
        t.exports = function(t, e) {
            return null != t && n.call(t, e)
        }
    }, function(t, e, n) {
        var r = n(95),
            i = n(41),
            a = n(50),
            o = n(6),
            s = n(23),
            u = n(39),
            c = n(70),
            f = n(51),
            l = "[object Map]",
            h = "[object Set]",
            d = Object.prototype.hasOwnProperty;
        t.exports = function(t) {
            if (null == t) return !0;
            if (s(t) && (o(t) || "string" == typeof t || "function" == typeof t.splice || u(t) || f(t) || a(t))) return !t.length;
            var e = i(t);
            if (e == l || e == h) return !t.size;
            if (c(t)) return !r(t).length;
            for (var n in t)
                if (d.call(t, n)) return !1;
            return !0
        }
    }, function(t, e) {
        t.exports = function(t, e, n, r) {
            var i = -1,
                a = null == t ? 0 : t.length;
            for (r && a && (n = t[++i]); ++i < a;) n = e(n, t[i], i, t);
            return n
        }
    }, function(t, e) {
        t.exports = function(t, e, n, r, i) {
            return i(t, (function(t, i, a) {
                n = r ? (r = !1, t) : e(n, t, i, a)
            })), n
        }
    }, function(t, e, n) {
        var r = n(95),
            i = n(41),
            a = n(23),
            o = n(317),
            s = n(318),
            u = "[object Map]",
            c = "[object Set]";
        t.exports = function(t) {
            if (null == t) return 0;
            if (a(t)) return o(t) ? s(t) : t.length;
            var e = i(t);
            return e == u || e == c ? t.size : r(t).length
        }
    }, function(t, e, n) {
        var r = n(33),
            i = n(6),
            a = n(20),
            o = "[object String]";
        t.exports = function(t) {
            return "string" == typeof t || !i(t) && a(t) && r(t) == o
        }
    }, function(t, e, n) {
        var r = n(319),
            i = n(320),
            a = n(321);
        t.exports = function(t) {
            return i(t) ? a(t) : r(t)
        }
    }, function(t, e, n) {
        var r = n(160)("length");
        t.exports = r
    }, function(t, e) {
        var n = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");
        t.exports = function(t) {
            return n.test(t)
        }
    }, function(t, e) {
        var n = "[\\ud800-\\udfff]",
            r = "[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",
            i = "\\ud83c[\\udffb-\\udfff]",
            a = "[^\\ud800-\\udfff]",
            o = "(?:\\ud83c[\\udde6-\\uddff]){2}",
            s = "[\\ud800-\\udbff][\\udc00-\\udfff]",
            u = "(?:" + r + "|" + i + ")" + "?",
            c = "[\\ufe0e\\ufe0f]?" + u + ("(?:\\u200d(?:" + [a, o, s].join("|") + ")[\\ufe0e\\ufe0f]?" + u + ")*"),
            f = "(?:" + [a + r + "?", r, o, s, n].join("|") + ")",
            l = RegExp(i + "(?=" + i + ")|" + f + c, "g");
        t.exports = function(t) {
            for (var e = l.lastIndex = 0; l.test(t);) ++e;
            return e
        }
    }, function(t, e, n) {
        var r = n(92),
            i = n(147),
            a = n(101),
            o = n(24),
            s = n(71),
            u = n(6),
            c = n(39),
            f = n(37),
            l = n(14),
            h = n(51);
        t.exports = function(t, e, n) {
            var d = u(t),
                p = d || c(t) || h(t);
            if (e = o(e, 4), null == n) {
                var g = t && t.constructor;
                n = p ? d ? new g : [] : l(t) && f(g) ? i(s(t)) : {}
            }
            return (p ? r : a)(t, (function(t, r, i) {
                return e(n, t, r, i)
            })), n
        }
    }, function(t, e, n) {
        var r = n(107),
            i = n(75),
            a = n(328),
            o = n(168),
            s = i((function(t) {
                return a(r(t, 1, o, !0))
            }));
        t.exports = s
    }, function(t, e, n) {
        var r = n(38),
            i = n(50),
            a = n(6),
            o = r ? r.isConcatSpreadable : void 0;
        t.exports = function(t) {
            return a(t) || i(t) || !!(o && t && t[o])
        }
    }, function(t, e) {
        t.exports = function(t, e, n) {
            switch (n.length) {
                case 0:
                    return t.call(e);
                case 1:
                    return t.call(e, n[0]);
                case 2:
                    return t.call(e, n[0], n[1]);
                case 3:
                    return t.call(e, n[0], n[1], n[2])
            }
            return t.apply(e, n)
        }
    }, function(t, e, n) {
        var r = n(99),
            i = n(133),
            a = n(34),
            o = i ? function(t, e) {
                return i(t, "toString", {
                    configurable: !0,
                    enumerable: !1,
                    value: r(e),
                    writable: !0
                })
            } : a;
        t.exports = o
    }, function(t, e) {
        var n = 800,
            r = 16,
            i = Date.now;
        t.exports = function(t) {
            var e = 0,
                a = 0;
            return function() {
                var o = i(),
                    s = r - (o - a);
                if (a = o, s > 0) {
                    if (++e >= n) return arguments[0]
                } else e = 0;
                return t.apply(void 0, arguments)
            }
        }
    }, function(t, e, n) {
        var r = n(153),
            i = n(329),
            a = n(333),
            o = n(154),
            s = n(334),
            u = n(103),
            c = 200;
        t.exports = function(t, e, n) {
            var f = -1,
                l = i,
                h = t.length,
                d = !0,
                p = [],
                g = p;
            if (n) d = !1, l = a;
            else if (h >= c) {
                var y = e ? null : s(t);
                if (y) return u(y);
                d = !1, l = o, g = new r
            } else g = e ? [] : p;
            t: for (; ++f < h;) {
                var b = t[f],
                    v = e ? e(b) : b;
                if (b = n || 0 !== b ? b : 0, d && v == v) {
                    for (var m = g.length; m--;)
                        if (g[m] === v) continue t;
                    e && g.push(v), p.push(b)
                } else l(g, v, n) || (g !== p && g.push(v), p.push(b))
            }
            return p
        }
    }, function(t, e, n) {
        var r = n(330);
        t.exports = function(t, e) {
            return !!(null == t ? 0 : t.length) && r(t, e, 0) > -1
        }
    }, function(t, e, n) {
        var r = n(167),
            i = n(331),
            a = n(332);
        t.exports = function(t, e, n) {
            return e == e ? a(t, e, n) : r(t, i, n)
        }
    }, function(t, e) {
        t.exports = function(t) {
            return t != t
        }
    }, function(t, e) {
        t.exports = function(t, e, n) {
            for (var r = n - 1, i = t.length; ++r < i;)
                if (t[r] === e) return r;
            return -1
        }
    }, function(t, e) {
        t.exports = function(t, e, n) {
            for (var r = -1, i = null == t ? 0 : t.length; ++r < i;)
                if (n(e, t[r])) return !0;
            return !1
        }
    }, function(t, e, n) {
        var r = n(143),
            i = n(335),
            a = n(103),
            o = r && 1 / a(new r([, -0]))[1] == 1 / 0 ? function(t) {
                return new r(t)
            } : i;
        t.exports = o
    }, function(t, e) {
        t.exports = function() {}
    }, function(t, e, n) {
        var r = n(74);
        t.exports = function(t, e) {
            return r(e, (function(e) {
                return t[e]
            }))
        }
    }, function(t, e) {
        t.exports = "2.1.8"
    }, function(t, e, n) {
        var r = n(13),
            i = n(89);

        function a(t) {
            return r.map(t.nodes(), (function(e) {
                var n = t.node(e),
                    i = t.parent(e),
                    a = {
                        v: e
                    };
                return r.isUndefined(n) || (a.value = n), r.isUndefined(i) || (a.parent = i), a
            }))
        }

        function o(t) {
            return r.map(t.edges(), (function(e) {
                var n = t.edge(e),
                    i = {
                        v: e.v,
                        w: e.w
                    };
                return r.isUndefined(e.name) || (i.name = e.name), r.isUndefined(n) || (i.value = n), i
            }))
        }
        t.exports = {
            write: function(t) {
                var e = {
                    options: {
                        directed: t.isDirected(),
                        multigraph: t.isMultigraph(),
                        compound: t.isCompound()
                    },
                    nodes: a(t),
                    edges: o(t)
                };
                r.isUndefined(t.graph()) || (e.value = r.clone(t.graph()));
                return e
            },
            read: function(t) {
                var e = new i(t.options).setGraph(t.value);
                return r.each(t.nodes, (function(t) {
                    e.setNode(t.v, t.value), t.parent && e.setParent(t.v, t.parent)
                })), r.each(t.edges, (function(t) {
                    e.setEdge({
                        v: t.v,
                        w: t.w,
                        name: t.name
                    }, t.value)
                })), e
            }
        }
    }, function(t, e, n) {
        t.exports = {
            components: n(340),
            dijkstra: n(170),
            dijkstraAll: n(341),
            findCycles: n(342),
            floydWarshall: n(343),
            isAcyclic: n(344),
            postorder: n(345),
            preorder: n(346),
            prim: n(347),
            tarjan: n(172),
            topsort: n(173)
        }
    }, function(t, e, n) {
        var r = n(13);
        t.exports = function(t) {
            var e, n = {},
                i = [];

            function a(i) {
                r.has(n, i) || (n[i] = !0, e.push(i), r.each(t.successors(i), a), r.each(t.predecessors(i), a))
            }
            return r.each(t.nodes(), (function(t) {
                e = [], a(t), e.length && i.push(e)
            })), i
        }
    }, function(t, e, n) {
        var r = n(170),
            i = n(13);
        t.exports = function(t, e, n) {
            return i.transform(t.nodes(), (function(i, a) {
                i[a] = r(t, a, e, n)
            }), {})
        }
    }, function(t, e, n) {
        var r = n(13),
            i = n(172);
        t.exports = function(t) {
            return r.filter(i(t), (function(e) {
                return e.length > 1 || 1 === e.length && t.hasEdge(e[0], e[0])
            }))
        }
    }, function(t, e, n) {
        var r = n(13);
        t.exports = function(t, e, n) {
            return function(t, e, n) {
                var r = {},
                    i = t.nodes();
                return i.forEach((function(t) {
                    r[t] = {}, r[t][t] = {
                        distance: 0
                    }, i.forEach((function(e) {
                        t !== e && (r[t][e] = {
                            distance: Number.POSITIVE_INFINITY
                        })
                    })), n(t).forEach((function(n) {
                        var i = n.v === t ? n.w : n.v,
                            a = e(n);
                        r[t][i] = {
                            distance: a,
                            predecessor: t
                        }
                    }))
                })), i.forEach((function(t) {
                    var e = r[t];
                    i.forEach((function(n) {
                        var a = r[n];
                        i.forEach((function(n) {
                            var r = a[t],
                                i = e[n],
                                o = a[n],
                                s = r.distance + i.distance;
                            s < o.distance && (o.distance = s, o.predecessor = i.predecessor)
                        }))
                    }))
                })), r
            }(t, e || i, n || function(e) {
                return t.outEdges(e)
            })
        };
        var i = r.constant(1)
    }, function(t, e, n) {
        var r = n(173);
        t.exports = function(t) {
            try {
                r(t)
            } catch (t) {
                if (t instanceof r.CycleException) return !1;
                throw t
            }
            return !0
        }
    }, function(t, e, n) {
        var r = n(174);
        t.exports = function(t, e) {
            return r(t, e, "post")
        }
    }, function(t, e, n) {
        var r = n(174);
        t.exports = function(t, e) {
            return r(t, e, "pre")
        }
    }, function(t, e, n) {
        var r = n(13),
            i = n(89),
            a = n(171);
        t.exports = function(t, e) {
            var n, o = new i,
                s = {},
                u = new a;

            function c(t) {
                var r = t.v === n ? t.w : t.v,
                    i = u.priority(r);
                if (void 0 !== i) {
                    var a = e(t);
                    a < i && (s[r] = n, u.decrease(r, a))
                }
            }
            if (0 === t.nodeCount()) return o;
            r.each(t.nodes(), (function(t) {
                u.add(t, Number.POSITIVE_INFINITY), o.setNode(t)
            })), u.decrease(t.nodes()[0], 0);
            var f = !1;
            for (; u.size() > 0;) {
                if (n = u.removeMin(), r.has(s, n)) o.setEdge(n, s[n]);
                else {
                    if (f) throw new Error("Input graph is not connected: " + t);
                    f = !0
                }
                t.nodeEdges(n).forEach(c)
            }
            return o
        }
    }, function(t, e, n) {
        var r;
        try {
            r = n(25)
        } catch (t) {}
        r || (r = window.graphlib), t.exports = r
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(382),
            a = n(385),
            o = n(386),
            s = n(10).normalizeRanks,
            u = n(388),
            c = n(10).removeEmptyRanks,
            f = n(389),
            l = n(390),
            h = n(391),
            d = n(392),
            p = n(401),
            g = n(10),
            y = n(19).Graph;
        t.exports = function(t, e) {
            var n = e && e.debugTiming ? g.time : g.notime;
            n("layout", (function() {
                var e = n("  buildLayoutGraph", (function() {
                    return function(t) {
                        var e = new y({
                                multigraph: !0,
                                compound: !0
                            }),
                            n = S(t.graph());
                        return e.setGraph(r.merge({}, v, A(n, b), r.pick(n, m))), r.forEach(t.nodes(), (function(n) {
                            var i = S(t.node(n));
                            e.setNode(n, r.defaults(A(i, _), w)), e.setParent(n, t.parent(n))
                        })), r.forEach(t.edges(), (function(n) {
                            var i = S(t.edge(n));
                            e.setEdge(n, r.merge({}, k, A(i, x), r.pick(i, E)))
                        })), e
                    }(t)
                }));
                n("  runLayout", (function() {
                    ! function(t, e) {
                        e("    makeSpaceForEdgeLabels", (function() {
                            ! function(t) {
                                var e = t.graph();
                                e.ranksep /= 2, r.forEach(t.edges(), (function(n) {
                                    var r = t.edge(n);
                                    r.minlen *= 2, "c" !== r.labelpos.toLowerCase() && ("TB" === e.rankdir || "BT" === e.rankdir ? r.width += r.labeloffset : r.height += r.labeloffset)
                                }))
                            }(t)
                        })), e("    removeSelfEdges", (function() {
                            ! function(t) {
                                r.forEach(t.edges(), (function(e) {
                                    if (e.v === e.w) {
                                        var n = t.node(e.v);
                                        n.selfEdges || (n.selfEdges = []), n.selfEdges.push({
                                            e: e,
                                            label: t.edge(e)
                                        }), t.removeEdge(e)
                                    }
                                }))
                            }(t)
                        })), e("    acyclic", (function() {
                            i.run(t)
                        })), e("    nestingGraph.run", (function() {
                            f.run(t)
                        })), e("    rank", (function() {
                            o(g.asNonCompoundGraph(t))
                        })), e("    injectEdgeLabelProxies", (function() {
                            ! function(t) {
                                r.forEach(t.edges(), (function(e) {
                                    var n = t.edge(e);
                                    if (n.width && n.height) {
                                        var r = t.node(e.v),
                                            i = {
                                                rank: (t.node(e.w).rank - r.rank) / 2 + r.rank,
                                                e: e
                                            };
                                        g.addDummyNode(t, "edge-proxy", i, "_ep")
                                    }
                                }))
                            }(t)
                        })), e("    removeEmptyRanks", (function() {
                            c(t)
                        })), e("    nestingGraph.cleanup", (function() {
                            f.cleanup(t)
                        })), e("    normalizeRanks", (function() {
                            s(t)
                        })), e("    assignRankMinMax", (function() {
                            ! function(t) {
                                var e = 0;
                                r.forEach(t.nodes(), (function(n) {
                                    var i = t.node(n);
                                    i.borderTop && (i.minRank = t.node(i.borderTop).rank, i.maxRank = t.node(i.borderBottom).rank, e = r.max(e, i.maxRank))
                                })), t.graph().maxRank = e
                            }(t)
                        })), e("    removeEdgeLabelProxies", (function() {
                            ! function(t) {
                                r.forEach(t.nodes(), (function(e) {
                                    var n = t.node(e);
                                    "edge-proxy" === n.dummy && (t.edge(n.e).labelRank = n.rank, t.removeNode(e))
                                }))
                            }(t)
                        })), e("    normalize.run", (function() {
                            a.run(t)
                        })), e("    parentDummyChains", (function() {
                            u(t)
                        })), e("    addBorderSegments", (function() {
                            l(t)
                        })), e("    order", (function() {
                            d(t)
                        })), e("    insertSelfEdges", (function() {
                            ! function(t) {
                                var e = g.buildLayerMatrix(t);
                                r.forEach(e, (function(e) {
                                    var n = 0;
                                    r.forEach(e, (function(e, i) {
                                        var a = t.node(e);
                                        a.order = i + n, r.forEach(a.selfEdges, (function(e) {
                                            g.addDummyNode(t, "selfedge", {
                                                width: e.label.width,
                                                height: e.label.height,
                                                rank: a.rank,
                                                order: i + ++n,
                                                e: e.e,
                                                label: e.label
                                            }, "_se")
                                        })), delete a.selfEdges
                                    }))
                                }))
                            }(t)
                        })), e("    adjustCoordinateSystem", (function() {
                            h.adjust(t)
                        })), e("    position", (function() {
                            p(t)
                        })), e("    positionSelfEdges", (function() {
                            ! function(t) {
                                r.forEach(t.nodes(), (function(e) {
                                    var n = t.node(e);
                                    if ("selfedge" === n.dummy) {
                                        var r = t.node(n.e.v),
                                            i = r.x + r.width / 2,
                                            a = r.y,
                                            o = n.x - i,
                                            s = r.height / 2;
                                        t.setEdge(n.e, n.label), t.removeNode(e), n.label.points = [{
                                            x: i + 2 * o / 3,
                                            y: a - s
                                        }, {
                                            x: i + 5 * o / 6,
                                            y: a - s
                                        }, {
                                            x: i + o,
                                            y: a
                                        }, {
                                            x: i + 5 * o / 6,
                                            y: a + s
                                        }, {
                                            x: i + 2 * o / 3,
                                            y: a + s
                                        }], n.label.x = n.x, n.label.y = n.y
                                    }
                                }))
                            }(t)
                        })), e("    removeBorderNodes", (function() {
                            ! function(t) {
                                r.forEach(t.nodes(), (function(e) {
                                    if (t.children(e).length) {
                                        var n = t.node(e),
                                            i = t.node(n.borderTop),
                                            a = t.node(n.borderBottom),
                                            o = t.node(r.last(n.borderLeft)),
                                            s = t.node(r.last(n.borderRight));
                                        n.width = Math.abs(s.x - o.x), n.height = Math.abs(a.y - i.y), n.x = o.x + n.width / 2, n.y = i.y + n.height / 2
                                    }
                                })), r.forEach(t.nodes(), (function(e) {
                                    "border" === t.node(e).dummy && t.removeNode(e)
                                }))
                            }(t)
                        })), e("    normalize.undo", (function() {
                            a.undo(t)
                        })), e("    fixupEdgeLabelCoords", (function() {
                            ! function(t) {
                                r.forEach(t.edges(), (function(e) {
                                    var n = t.edge(e);
                                    if (r.has(n, "x")) switch ("l" !== n.labelpos && "r" !== n.labelpos || (n.width -= n.labeloffset), n.labelpos) {
                                        case "l":
                                            n.x -= n.width / 2 + n.labeloffset;
                                            break;
                                        case "r":
                                            n.x += n.width / 2 + n.labeloffset
                                    }
                                }))
                            }(t)
                        })), e("    undoCoordinateSystem", (function() {
                            h.undo(t)
                        })), e("    translateGraph", (function() {
                            ! function(t) {
                                var e = Number.POSITIVE_INFINITY,
                                    n = 0,
                                    i = Number.POSITIVE_INFINITY,
                                    a = 0,
                                    o = t.graph(),
                                    s = o.marginx || 0,
                                    u = o.marginy || 0;

                                function c(t) {
                                    var r = t.x,
                                        o = t.y,
                                        s = t.width,
                                        u = t.height;
                                    e = Math.min(e, r - s / 2), n = Math.max(n, r + s / 2), i = Math.min(i, o - u / 2), a = Math.max(a, o + u / 2)
                                }
                                r.forEach(t.nodes(), (function(e) {
                                    c(t.node(e))
                                })), r.forEach(t.edges(), (function(e) {
                                    var n = t.edge(e);
                                    r.has(n, "x") && c(n)
                                })), e -= s, i -= u, r.forEach(t.nodes(), (function(n) {
                                    var r = t.node(n);
                                    r.x -= e, r.y -= i
                                })), r.forEach(t.edges(), (function(n) {
                                    var a = t.edge(n);
                                    r.forEach(a.points, (function(t) {
                                        t.x -= e, t.y -= i
                                    })), r.has(a, "x") && (a.x -= e), r.has(a, "y") && (a.y -= i)
                                })), o.width = n - e + s, o.height = a - i + u
                            }(t)
                        })), e("    assignNodeIntersects", (function() {
                            ! function(t) {
                                r.forEach(t.edges(), (function(e) {
                                    var n, r, i = t.edge(e),
                                        a = t.node(e.v),
                                        o = t.node(e.w);
                                    i.points ? (n = i.points[0], r = i.points[i.points.length - 1]) : (i.points = [], n = o, r = a), i.points.unshift(g.intersectRect(a, n)), i.points.push(g.intersectRect(o, r))
                                }))
                            }(t)
                        })), e("    reversePoints", (function() {
                            ! function(t) {
                                r.forEach(t.edges(), (function(e) {
                                    var n = t.edge(e);
                                    n.reversed && n.points.reverse()
                                }))
                            }(t)
                        })), e("    acyclic.undo", (function() {
                            i.undo(t)
                        }))
                    }(e, n)
                })), n("  updateInputGraph", (function() {
                    ! function(t, e) {
                        r.forEach(t.nodes(), (function(n) {
                            var r = t.node(n),
                                i = e.node(n);
                            r && (r.x = i.x, r.y = i.y, e.children(n).length && (r.width = i.width, r.height = i.height))
                        })), r.forEach(t.edges(), (function(n) {
                            var i = t.edge(n),
                                a = e.edge(n);
                            i.points = a.points, r.has(a, "x") && (i.x = a.x, i.y = a.y)
                        })), t.graph().width = e.graph().width, t.graph().height = e.graph().height
                    }(t, e)
                }))
            }))
        };
        var b = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"],
            v = {
                ranksep: 50,
                edgesep: 20,
                nodesep: 50,
                rankdir: "tb"
            },
            m = ["acyclicer", "ranker", "rankdir", "align"],
            _ = ["width", "height"],
            w = {
                width: 0,
                height: 0
            },
            x = ["minlen", "weight", "width", "height", "labeloffset"],
            k = {
                minlen: 1,
                weight: 1,
                width: 0,
                height: 0,
                labeloffset: 10,
                labelpos: "r"
            },
            E = ["labelpos"];

        function A(t, e) {
            return r.mapValues(r.pick(t, e), Number)
        }

        function S(t) {
            var e = {};
            return r.forEach(t, (function(t, n) {
                e[n.toLowerCase()] = t
            })), e
        }
    }, function(t, e, n) {
        var r = n(130),
            i = 1,
            a = 4;
        t.exports = function(t) {
            return r(t, i | a)
        }
    }, function(t, e, n) {
        var r = n(352)(n(353));
        t.exports = r
    }, function(t, e, n) {
        var r = n(24),
            i = n(23),
            a = n(27);
        t.exports = function(t) {
            return function(e, n, o) {
                var s = Object(e);
                if (!i(e)) {
                    var u = r(n, 3);
                    e = a(e), n = function(t) {
                        return u(s[t], t, s)
                    }
                }
                var c = t(e, n, o);
                return c > -1 ? s[u ? e[c] : c] : void 0
            }
        }
    }, function(t, e, n) {
        var r = n(167),
            i = n(24),
            a = n(354),
            o = Math.max;
        t.exports = function(t, e, n) {
            var s = null == t ? 0 : t.length;
            if (!s) return -1;
            var u = null == n ? 0 : a(n);
            return u < 0 && (u = o(s + u, 0)), r(t, i(e, 3), u)
        }
    }, function(t, e, n) {
        var r = n(177);
        t.exports = function(t) {
            var e = r(t),
                n = e % 1;
            return e == e ? n ? e - n : e : 0
        }
    }, function(t, e, n) {
        var r = n(14),
            i = n(42),
            a = NaN,
            o = /^\s+|\s+$/g,
            s = /^[-+]0x[0-9a-f]+$/i,
            u = /^0b[01]+$/i,
            c = /^0o[0-7]+$/i,
            f = parseInt;
        t.exports = function(t) {
            if ("number" == typeof t) return t;
            if (i(t)) return a;
            if (r(t)) {
                var e = "function" == typeof t.valueOf ? t.valueOf() : t;
                t = r(e) ? e + "" : e
            }
            if ("string" != typeof t) return 0 === t ? t : +t;
            t = t.replace(o, "");
            var n = u.test(t);
            return n || c.test(t) ? f(t.slice(2), n ? 2 : 8) : s.test(t) ? a : +t
        }
    }, function(t, e, n) {
        var r = n(102),
            i = n(149),
            a = n(40);
        t.exports = function(t, e) {
            return null == t ? t : r(t, i(e), a)
        }
    }, function(t, e) {
        t.exports = function(t) {
            var e = null == t ? 0 : t.length;
            return e ? t[e - 1] : void 0
        }
    }, function(t, e, n) {
        var r = n(67),
            i = n(101),
            a = n(24);
        t.exports = function(t, e) {
            var n = {};
            return e = a(e, 3), i(t, (function(t, i, a) {
                r(n, i, e(t, i, a))
            })), n
        }
    }, function(t, e, n) {
        var r = n(108),
            i = n(360),
            a = n(34);
        t.exports = function(t) {
            return t && t.length ? r(t, a, i) : void 0
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            return t > e
        }
    }, function(t, e, n) {
        var r = n(362),
            i = n(365)((function(t, e, n) {
                r(t, e, n)
            }));
        t.exports = i
    }, function(t, e, n) {
        var r = n(61),
            i = n(179),
            a = n(102),
            o = n(363),
            s = n(14),
            u = n(40),
            c = n(181);
        t.exports = function t(e, n, f, l, h) {
            e !== n && a(n, (function(a, u) {
                if (h || (h = new r), s(a)) o(e, n, u, f, t, l, h);
                else {
                    var d = l ? l(c(e, u), a, u + "", e, n, h) : void 0;
                    void 0 === d && (d = a), i(e, u, d)
                }
            }), u)
        }
    }, function(t, e, n) {
        var r = n(179),
            i = n(136),
            a = n(145),
            o = n(137),
            s = n(146),
            u = n(50),
            c = n(6),
            f = n(168),
            l = n(39),
            h = n(37),
            d = n(14),
            p = n(180),
            g = n(51),
            y = n(181),
            b = n(364);
        t.exports = function(t, e, n, v, m, _, w) {
            var x = y(t, n),
                k = y(e, n),
                E = w.get(k);
            if (E) r(t, n, E);
            else {
                var A = _ ? _(x, k, n + "", t, e, w) : void 0,
                    S = void 0 === A;
                if (S) {
                    var M = c(k),
                        T = !M && l(k),
                        D = !M && !T && g(k);
                    A = k, M || T || D ? c(x) ? A = x : f(x) ? A = o(x) : T ? (S = !1, A = i(k, !0)) : D ? (S = !1, A = a(k, !0)) : A = [] : p(k) || u(k) ? (A = x, u(x) ? A = b(x) : d(x) && !h(x) || (A = s(k))) : S = !1
                }
                S && (w.set(k, A), m(A, k, v, _, w), w.delete(k)), r(t, n, A)
            }
        }
    }, function(t, e, n) {
        var r = n(49),
            i = n(40);
        t.exports = function(t) {
            return r(t, i(t))
        }
    }, function(t, e, n) {
        var r = n(75),
            i = n(76);
        t.exports = function(t) {
            return r((function(e, n) {
                var r = -1,
                    a = n.length,
                    o = a > 1 ? n[a - 1] : void 0,
                    s = a > 2 ? n[2] : void 0;
                for (o = t.length > 3 && "function" == typeof o ? (a--, o) : void 0, s && i(n[0], n[1], s) && (o = a < 3 ? void 0 : o, a = 1), e = Object(e); ++r < a;) {
                    var u = n[r];
                    u && t(e, u, r, o)
                }
                return e
            }))
        }
    }, function(t, e, n) {
        var r = n(108),
            i = n(182),
            a = n(34);
        t.exports = function(t) {
            return t && t.length ? r(t, a, i) : void 0
        }
    }, function(t, e, n) {
        var r = n(108),
            i = n(24),
            a = n(182);
        t.exports = function(t, e) {
            return t && t.length ? r(t, i(e, 2), a) : void 0
        }
    }, function(t, e, n) {
        var r = n(18);
        t.exports = function() {
            return r.Date.now()
        }
    }, function(t, e, n) {
        var r = n(370),
            i = n(158);
        t.exports = function(t, e) {
            return r(t, e, (function(e, n) {
                return i(t, n)
            }))
        }
    }, function(t, e, n) {
        var r = n(104),
            i = n(371),
            a = n(73);
        t.exports = function(t, e, n) {
            for (var o = -1, s = e.length, u = {}; ++o < s;) {
                var c = e[o],
                    f = r(t, c);
                n(f, c) && i(u, a(c, t), f)
            }
            return u
        }
    }, function(t, e, n) {
        var r = n(66),
            i = n(73),
            a = n(68),
            o = n(14),
            s = n(52);
        t.exports = function(t, e, n, u) {
            if (!o(t)) return t;
            for (var c = -1, f = (e = i(e, t)).length, l = f - 1, h = t; null != h && ++c < f;) {
                var d = s(e[c]),
                    p = n;
                if (c != l) {
                    var g = h[d];
                    void 0 === (p = u ? u(g, d, h) : void 0) && (p = o(g) ? g : a(e[c + 1]) ? [] : {})
                }
                r(h, d, p), h = h[d]
            }
            return t
        }
    }, function(t, e, n) {
        var r = n(178),
            i = n(165),
            a = n(166);
        t.exports = function(t) {
            return a(i(t, void 0, r), t + "")
        }
    }, function(t, e, n) {
        var r = n(374),
            i = n(76),
            a = n(177);
        t.exports = function(t) {
            return function(e, n, o) {
                return o && "number" != typeof o && i(e, n, o) && (n = o = void 0), e = a(e), void 0 === n ? (n = e, e = 0) : n = a(n), o = void 0 === o ? e < n ? 1 : -1 : a(o), r(e, n, o, t)
            }
        }
    }, function(t, e) {
        var n = Math.ceil,
            r = Math.max;
        t.exports = function(t, e, i, a) {
            for (var o = -1, s = r(n((e - t) / (i || 1)), 0), u = Array(s); s--;) u[a ? s : ++o] = t, t += i;
            return u
        }
    }, function(t, e, n) {
        var r = n(107),
            i = n(376),
            a = n(75),
            o = n(76),
            s = a((function(t, e) {
                if (null == t) return [];
                var n = e.length;
                return n > 1 && o(t, e[0], e[1]) ? e = [] : n > 2 && o(e[0], e[1], e[2]) && (e = [e[0]]), i(t, r(e, 1), [])
            }));
        t.exports = s
    }, function(t, e, n) {
        var r = n(74),
            i = n(24),
            a = n(163),
            o = n(377),
            s = n(69),
            u = n(378),
            c = n(34);
        t.exports = function(t, e, n) {
            var f = -1;
            e = r(e.length ? e : [c], s(i));
            var l = a(t, (function(t, n, i) {
                return {
                    criteria: r(e, (function(e) {
                        return e(t)
                    })),
                    index: ++f,
                    value: t
                }
            }));
            return o(l, (function(t, e) {
                return u(t, e, n)
            }))
        }
    }, function(t, e) {
        t.exports = function(t, e) {
            var n = t.length;
            for (t.sort(e); n--;) t[n] = t[n].value;
            return t
        }
    }, function(t, e, n) {
        var r = n(379);
        t.exports = function(t, e, n) {
            for (var i = -1, a = t.criteria, o = e.criteria, s = a.length, u = n.length; ++i < s;) {
                var c = r(a[i], o[i]);
                if (c) return i >= u ? c : c * ("desc" == n[i] ? -1 : 1)
            }
            return t.index - e.index
        }
    }, function(t, e, n) {
        var r = n(42);
        t.exports = function(t, e) {
            if (t !== e) {
                var n = void 0 !== t,
                    i = null === t,
                    a = t == t,
                    o = r(t),
                    s = void 0 !== e,
                    u = null === e,
                    c = e == e,
                    f = r(e);
                if (!u && !f && !o && t > e || o && s && c && !u && !f || i && s && c || !n && c || !a) return 1;
                if (!i && !o && !f && t < e || f && n && a && !i && !o || u && n && a || !s && a || !c) return -1
            }
            return 0
        }
    }, function(t, e, n) {
        var r = n(66),
            i = n(381);
        t.exports = function(t, e) {
            return i(t || [], e || [], r)
        }
    }, function(t, e) {
        t.exports = function(t, e, n) {
            for (var r = -1, i = t.length, a = e.length, o = {}; ++r < i;) {
                var s = r < a ? e[r] : void 0;
                n(o, t[r], s)
            }
            return o
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(383);
        t.exports = {
            run: function(t) {
                var e = "greedy" === t.graph().acyclicer ? i(t, function(t) {
                    return function(e) {
                        return t.edge(e).weight
                    }
                }(t)) : function(t) {
                    var e = [],
                        n = {},
                        i = {};
                    return r.forEach(t.nodes(), (function a(o) {
                        if (r.has(i, o)) return;
                        i[o] = !0, n[o] = !0, r.forEach(t.outEdges(o), (function(t) {
                            r.has(n, t.w) ? e.push(t) : a(t.w)
                        })), delete n[o]
                    })), e
                }(t);
                r.forEach(e, (function(e) {
                    var n = t.edge(e);
                    t.removeEdge(e), n.forwardName = e.name, n.reversed = !0, t.setEdge(e.w, e.v, n, r.uniqueId("rev"))
                }))
            },
            undo: function(t) {
                r.forEach(t.edges(), (function(e) {
                    var n = t.edge(e);
                    if (n.reversed) {
                        t.removeEdge(e);
                        var r = n.forwardName;
                        delete n.reversed, delete n.forwardName, t.setEdge(e.w, e.v, n, r)
                    }
                }))
            }
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(19).Graph,
            a = n(384);
        t.exports = function(t, e) {
            if (t.nodeCount() <= 1) return [];
            var n = function(t, e) {
                    var n = new i,
                        o = 0,
                        s = 0;
                    r.forEach(t.nodes(), (function(t) {
                        n.setNode(t, {
                            v: t,
                            in : 0,
                            out: 0
                        })
                    })), r.forEach(t.edges(), (function(t) {
                        var r = n.edge(t.v, t.w) || 0,
                            i = e(t),
                            a = r + i;
                        n.setEdge(t.v, t.w, a), s = Math.max(s, n.node(t.v).out += i), o = Math.max(o, n.node(t.w).in += i)
                    }));
                    var c = r.range(s + o + 3).map((function() {
                            return new a
                        })),
                        f = o + 1;
                    return r.forEach(n.nodes(), (function(t) {
                        u(c, f, n.node(t))
                    })), {
                        graph: n,
                        buckets: c,
                        zeroIdx: f
                    }
                }(t, e || o),
                c = function(t, e, n) {
                    var r, i = [],
                        a = e[e.length - 1],
                        o = e[0];
                    for (; t.nodeCount();) {
                        for (; r = o.dequeue();) s(t, e, n, r);
                        for (; r = a.dequeue();) s(t, e, n, r);
                        if (t.nodeCount())
                            for (var u = e.length - 2; u > 0; --u)
                                if (r = e[u].dequeue()) {
                                    i = i.concat(s(t, e, n, r, !0));
                                    break
                                }
                    }
                    return i
                }(n.graph, n.buckets, n.zeroIdx);
            return r.flatten(r.map(c, (function(e) {
                return t.outEdges(e.v, e.w)
            })), !0)
        };
        var o = r.constant(1);

        function s(t, e, n, i, a) {
            var o = a ? [] : void 0;
            return r.forEach(t.inEdges(i.v), (function(r) {
                var i = t.edge(r),
                    s = t.node(r.v);
                a && o.push({
                    v: r.v,
                    w: r.w
                }), s.out -= i, u(e, n, s)
            })), r.forEach(t.outEdges(i.v), (function(r) {
                var i = t.edge(r),
                    a = r.w,
                    o = t.node(a);
                o.in -= i, u(e, n, o)
            })), t.removeNode(i.v), o
        }

        function u(t, e, n) {
            n.out ? n.in ? t[n.out - n.in + e].enqueue(n) : t[t.length - 1].enqueue(n) : t[0].enqueue(n)
        }
    }, function(t, e) {
        function n() {
            var t = {};
            t._next = t._prev = t, this._sentinel = t
        }

        function r(t) {
            t._prev._next = t._next, t._next._prev = t._prev, delete t._next, delete t._prev
        }

        function i(t, e) {
            if ("_next" !== t && "_prev" !== t) return e
        }
        t.exports = n, n.prototype.dequeue = function() {
            var t = this._sentinel,
                e = t._prev;
            if (e !== t) return r(e), e
        }, n.prototype.enqueue = function(t) {
            var e = this._sentinel;
            t._prev && t._next && r(t), t._next = e._next, e._next._prev = t, e._next = t, t._prev = e
        }, n.prototype.toString = function() {
            for (var t = [], e = this._sentinel, n = e._prev; n !== e;) t.push(JSON.stringify(n, i)), n = n._prev;
            return "[" + t.join(", ") + "]"
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(10);
        t.exports = {
            run: function(t) {
                t.graph().dummyChains = [], r.forEach(t.edges(), (function(e) {
                    ! function(t, e) {
                        var n, r, a, o = e.v,
                            s = t.node(o).rank,
                            u = e.w,
                            c = t.node(u).rank,
                            f = e.name,
                            l = t.edge(e),
                            h = l.labelRank;
                        if (c === s + 1) return;
                        for (t.removeEdge(e), a = 0, ++s; s < c; ++a, ++s) l.points = [], r = {
                            width: 0,
                            height: 0,
                            edgeLabel: l,
                            edgeObj: e,
                            rank: s
                        }, n = i.addDummyNode(t, "edge", r, "_d"), s === h && (r.width = l.width, r.height = l.height, r.dummy = "edge-label", r.labelpos = l.labelpos), t.setEdge(o, n, {
                            weight: l.weight
                        }, f), 0 === a && t.graph().dummyChains.push(n), o = n;
                        t.setEdge(o, u, {
                            weight: l.weight
                        }, f)
                    }(t, e)
                }))
            },
            undo: function(t) {
                r.forEach(t.graph().dummyChains, (function(e) {
                    var n, r = t.node(e),
                        i = r.edgeLabel;
                    for (t.setEdge(r.edgeObj, i); r.dummy;) n = t.successors(e)[0], t.removeNode(e), i.points.push({
                        x: r.x,
                        y: r.y
                    }), "edge-label" === r.dummy && (i.x = r.x, i.y = r.y, i.width = r.width, i.height = r.height), e = n, r = t.node(e)
                }))
            }
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(77).longestPath,
            i = n(186),
            a = n(387);
        t.exports = function(t) {
            switch (t.graph().ranker) {
                case "network-simplex":
                    s(t);
                    break;
                case "tight-tree":
                    ! function(t) {
                        r(t), i(t)
                    }(t);
                    break;
                case "longest-path":
                    o(t);
                    break;
                default:
                    s(t)
            }
        };
        var o = r;

        function s(t) {
            a(t)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(186),
            a = n(77).slack,
            o = n(77).longestPath,
            s = n(19).alg.preorder,
            u = n(19).alg.postorder,
            c = n(10).simplify;

        function f(t) {
            t = c(t), o(t);
            var e, n = i(t);
            for (d(n), l(n, t); e = p(n);) y(n, t, e, g(n, t, e))
        }

        function l(t, e) {
            var n = u(t, t.nodes());
            n = n.slice(0, n.length - 1), r.forEach(n, (function(n) {
                ! function(t, e, n) {
                    var r = t.node(n).parent;
                    t.edge(n, r).cutvalue = h(t, e, n)
                }(t, e, n)
            }))
        }

        function h(t, e, n) {
            var i = t.node(n).parent,
                a = !0,
                o = e.edge(n, i),
                s = 0;
            return o || (a = !1, o = e.edge(i, n)), s = o.weight, r.forEach(e.nodeEdges(n), (function(r) {
                var o, u, c = r.v === n,
                    f = c ? r.w : r.v;
                if (f !== i) {
                    var l = c === a,
                        h = e.edge(r).weight;
                    if (s += l ? h : -h, o = n, u = f, t.hasEdge(o, u)) {
                        var d = t.edge(n, f).cutvalue;
                        s += l ? -d : d
                    }
                }
            })), s
        }

        function d(t, e) {
            arguments.length < 2 && (e = t.nodes()[0]),
                function t(e, n, i, a, o) {
                    var s = i,
                        u = e.node(a);
                    n[a] = !0, r.forEach(e.neighbors(a), (function(o) {
                        r.has(n, o) || (i = t(e, n, i, o, a))
                    })), u.low = s, u.lim = i++, o ? u.parent = o : delete u.parent;
                    return i
                }(t, {}, 1, e)
        }

        function p(t) {
            return r.find(t.edges(), (function(e) {
                return t.edge(e).cutvalue < 0
            }))
        }

        function g(t, e, n) {
            var i = n.v,
                o = n.w;
            e.hasEdge(i, o) || (i = n.w, o = n.v);
            var s = t.node(i),
                u = t.node(o),
                c = s,
                f = !1;
            s.lim > u.lim && (c = u, f = !0);
            var l = r.filter(e.edges(), (function(e) {
                return f === b(t, t.node(e.v), c) && f !== b(t, t.node(e.w), c)
            }));
            return r.minBy(l, (function(t) {
                return a(e, t)
            }))
        }

        function y(t, e, n, i) {
            var a = n.v,
                o = n.w;
            t.removeEdge(a, o), t.setEdge(i.v, i.w, {}), d(t), l(t, e),
                function(t, e) {
                    var n = r.find(t.nodes(), (function(t) {
                            return !e.node(t).parent
                        })),
                        i = s(t, n);
                    i = i.slice(1), r.forEach(i, (function(n) {
                        var r = t.node(n).parent,
                            i = e.edge(n, r),
                            a = !1;
                        i || (i = e.edge(r, n), a = !0), e.node(n).rank = e.node(r).rank + (a ? i.minlen : -i.minlen)
                    }))
                }(t, e)
        }

        function b(t, e, n) {
            return n.low <= e.lim && e.lim <= n.lim
        }
        t.exports = f, f.initLowLimValues = d, f.initCutValues = l, f.calcCutValue = h, f.leaveEdge = p, f.enterEdge = g, f.exchangeEdges = y
    }, function(t, e, n) {
        var r = n(4);
        t.exports = function(t) {
            var e = function(t) {
                var e = {},
                    n = 0;
                return r.forEach(t.children(), (function i(a) {
                    var o = n;
                    r.forEach(t.children(a), i), e[a] = {
                        low: o,
                        lim: n++
                    }
                })), e
            }(t);
            r.forEach(t.graph().dummyChains, (function(n) {
                for (var r = t.node(n), i = r.edgeObj, a = function(t, e, n, r) {
                        var i, a, o = [],
                            s = [],
                            u = Math.min(e[n].low, e[r].low),
                            c = Math.max(e[n].lim, e[r].lim);
                        i = n;
                        do {
                            i = t.parent(i), o.push(i)
                        } while (i && (e[i].low > u || c > e[i].lim));
                        a = i, i = r;
                        for (;
                            (i = t.parent(i)) !== a;) s.push(i);
                        return {
                            path: o.concat(s.reverse()),
                            lca: a
                        }
                    }(t, e, i.v, i.w), o = a.path, s = a.lca, u = 0, c = o[u], f = !0; n !== i.w;) {
                    if (r = t.node(n), f) {
                        for (;
                            (c = o[u]) !== s && t.node(c).maxRank < r.rank;) u++;
                        c === s && (f = !1)
                    }
                    if (!f) {
                        for (; u < o.length - 1 && t.node(c = o[u + 1]).minRank <= r.rank;) u++;
                        c = o[u]
                    }
                    t.setParent(n, c), n = t.successors(n)[0]
                }
            }))
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(10);
        t.exports = {
            run: function(t) {
                var e = i.addDummyNode(t, "root", {}, "_root"),
                    n = function(t) {
                        var e = {};
                        return r.forEach(t.children(), (function(n) {
                            ! function n(i, a) {
                                var o = t.children(i);
                                o && o.length && r.forEach(o, (function(t) {
                                    n(t, a + 1)
                                }));
                                e[i] = a
                            }(n, 1)
                        })), e
                    }(t),
                    a = r.max(r.values(n)) - 1,
                    o = 2 * a + 1;
                t.graph().nestingRoot = e, r.forEach(t.edges(), (function(e) {
                    t.edge(e).minlen *= o
                }));
                var s = function(t) {
                    return r.reduce(t.edges(), (function(e, n) {
                        return e + t.edge(n).weight
                    }), 0)
                }(t) + 1;
                r.forEach(t.children(), (function(u) {
                    ! function t(e, n, a, o, s, u, c) {
                        var f = e.children(c);
                        if (!f.length) return void(c !== n && e.setEdge(n, c, {
                            weight: 0,
                            minlen: a
                        }));
                        var l = i.addBorderNode(e, "_bt"),
                            h = i.addBorderNode(e, "_bb"),
                            d = e.node(c);
                        e.setParent(l, c), d.borderTop = l, e.setParent(h, c), d.borderBottom = h, r.forEach(f, (function(r) {
                            t(e, n, a, o, s, u, r);
                            var i = e.node(r),
                                f = i.borderTop ? i.borderTop : r,
                                d = i.borderBottom ? i.borderBottom : r,
                                p = i.borderTop ? o : 2 * o,
                                g = f !== d ? 1 : s - u[c] + 1;
                            e.setEdge(l, f, {
                                weight: p,
                                minlen: g,
                                nestingEdge: !0
                            }), e.setEdge(d, h, {
                                weight: p,
                                minlen: g,
                                nestingEdge: !0
                            })
                        })), e.parent(c) || e.setEdge(n, l, {
                            weight: 0,
                            minlen: s + u[c]
                        })
                    }(t, e, o, s, a, n, u)
                })), t.graph().nodeRankFactor = o
            },
            cleanup: function(t) {
                var e = t.graph();
                t.removeNode(e.nestingRoot), delete e.nestingRoot, r.forEach(t.edges(), (function(e) {
                    t.edge(e).nestingEdge && t.removeEdge(e)
                }))
            }
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(10);

        function a(t, e, n, r, a, o) {
            var s = {
                    width: 0,
                    height: 0,
                    rank: o,
                    borderType: e
                },
                u = a[e][o - 1],
                c = i.addDummyNode(t, "border", s, n);
            a[e][o] = c, t.setParent(c, r), u && t.setEdge(u, c, {
                weight: 1
            })
        }
        t.exports = function(t) {
            r.forEach(t.children(), (function e(n) {
                var i = t.children(n),
                    o = t.node(n);
                if (i.length && r.forEach(i, e), r.has(o, "minRank")) {
                    o.borderLeft = [], o.borderRight = [];
                    for (var s = o.minRank, u = o.maxRank + 1; s < u; ++s) a(t, "borderLeft", "_bl", n, o, s), a(t, "borderRight", "_br", n, o, s)
                }
            }))
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4);

        function i(t) {
            r.forEach(t.nodes(), (function(e) {
                a(t.node(e))
            })), r.forEach(t.edges(), (function(e) {
                a(t.edge(e))
            }))
        }

        function a(t) {
            var e = t.width;
            t.width = t.height, t.height = e
        }

        function o(t) {
            t.y = -t.y
        }

        function s(t) {
            var e = t.x;
            t.x = t.y, t.y = e
        }
        t.exports = {
            adjust: function(t) {
                var e = t.graph().rankdir.toLowerCase();
                "lr" !== e && "rl" !== e || i(t)
            },
            undo: function(t) {
                var e = t.graph().rankdir.toLowerCase();
                "bt" !== e && "rl" !== e || function(t) {
                    r.forEach(t.nodes(), (function(e) {
                        o(t.node(e))
                    })), r.forEach(t.edges(), (function(e) {
                        var n = t.edge(e);
                        r.forEach(n.points, o), r.has(n, "y") && o(n)
                    }))
                }(t);
                "lr" !== e && "rl" !== e || (! function(t) {
                    r.forEach(t.nodes(), (function(e) {
                        s(t.node(e))
                    })), r.forEach(t.edges(), (function(e) {
                        var n = t.edge(e);
                        r.forEach(n.points, s), r.has(n, "x") && s(n)
                    }))
                }(t), i(t))
            }
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(393),
            a = n(394),
            o = n(395),
            s = n(399),
            u = n(400),
            c = n(19).Graph,
            f = n(10);

        function l(t, e, n) {
            return r.map(e, (function(e) {
                return s(t, e, n)
            }))
        }

        function h(t, e) {
            var n = new c;
            r.forEach(t, (function(t) {
                var i = t.graph().root,
                    a = o(t, i, n, e);
                r.forEach(a.vs, (function(e, n) {
                    t.node(e).order = n
                })), u(t, n, a.vs)
            }))
        }

        function d(t, e) {
            r.forEach(e, (function(e) {
                r.forEach(e, (function(e, n) {
                    t.node(e).order = n
                }))
            }))
        }
        t.exports = function(t) {
            var e = f.maxRank(t),
                n = l(t, r.range(1, e + 1), "inEdges"),
                o = l(t, r.range(e - 1, -1, -1), "outEdges"),
                s = i(t);
            d(t, s);
            for (var u, c = Number.POSITIVE_INFINITY, p = 0, g = 0; g < 4; ++p, ++g) {
                h(p % 2 ? n : o, p % 4 >= 2), s = f.buildLayerMatrix(t);
                var y = a(t, s);
                y < c && (g = 0, u = r.cloneDeep(s), c = y)
            }
            d(t, u)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4);
        t.exports = function(t) {
            var e = {},
                n = r.filter(t.nodes(), (function(e) {
                    return !t.children(e).length
                })),
                i = r.max(r.map(n, (function(e) {
                    return t.node(e).rank
                }))),
                a = r.map(r.range(i + 1), (function() {
                    return []
                }));
            var o = r.sortBy(n, (function(e) {
                return t.node(e).rank
            }));
            return r.forEach(o, (function n(i) {
                if (r.has(e, i)) return;
                e[i] = !0;
                var o = t.node(i);
                a[o.rank].push(i), r.forEach(t.successors(i), n)
            })), a
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4);

        function i(t, e, n) {
            for (var i = r.zipObject(n, r.map(n, (function(t, e) {
                    return e
                }))), a = r.flatten(r.map(e, (function(e) {
                    return r.sortBy(r.map(t.outEdges(e), (function(e) {
                        return {
                            pos: i[e.w],
                            weight: t.edge(e).weight
                        }
                    })), "pos")
                })), !0), o = 1; o < n.length;) o <<= 1;
            var s = 2 * o - 1;
            o -= 1;
            var u = r.map(new Array(s), (function() {
                    return 0
                })),
                c = 0;
            return r.forEach(a.forEach((function(t) {
                var e = t.pos + o;
                u[e] += t.weight;
                for (var n = 0; e > 0;) e % 2 && (n += u[e + 1]), u[e = e - 1 >> 1] += t.weight;
                c += t.weight * n
            }))), c
        }
        t.exports = function(t, e) {
            for (var n = 0, r = 1; r < e.length; ++r) n += i(t, e[r - 1], e[r]);
            return n
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(396),
            a = n(397),
            o = n(398);
        t.exports = function t(e, n, s, u) {
            var c = e.children(n),
                f = e.node(n),
                l = f ? f.borderLeft : void 0,
                h = f ? f.borderRight : void 0,
                d = {};
            l && (c = r.filter(c, (function(t) {
                return t !== l && t !== h
            })));
            var p = i(e, c);
            r.forEach(p, (function(n) {
                if (e.children(n.v).length) {
                    var i = t(e, n.v, s, u);
                    d[n.v] = i, r.has(i, "barycenter") && (a = n, o = i, r.isUndefined(a.barycenter) ? (a.barycenter = o.barycenter, a.weight = o.weight) : (a.barycenter = (a.barycenter * a.weight + o.barycenter * o.weight) / (a.weight + o.weight), a.weight += o.weight))
                }
                var a, o
            }));
            var g = a(p, s);
            ! function(t, e) {
                r.forEach(t, (function(t) {
                    t.vs = r.flatten(t.vs.map((function(t) {
                        return e[t] ? e[t].vs : t
                    })), !0)
                }))
            }(g, d);
            var y = o(g, u);
            if (l && (y.vs = r.flatten([l, y.vs, h], !0), e.predecessors(l).length)) {
                var b = e.node(e.predecessors(l)[0]),
                    v = e.node(e.predecessors(h)[0]);
                r.has(y, "barycenter") || (y.barycenter = 0, y.weight = 0), y.barycenter = (y.barycenter * y.weight + b.order + v.order) / (y.weight + 2), y.weight += 2
            }
            return y
        }
    }, function(t, e, n) {
        var r = n(4);
        t.exports = function(t, e) {
            return r.map(e, (function(e) {
                var n = t.inEdges(e);
                if (n.length) {
                    var i = r.reduce(n, (function(e, n) {
                        var r = t.edge(n),
                            i = t.node(n.v);
                        return {
                            sum: e.sum + r.weight * i.order,
                            weight: e.weight + r.weight
                        }
                    }), {
                        sum: 0,
                        weight: 0
                    });
                    return {
                        v: e,
                        barycenter: i.sum / i.weight,
                        weight: i.weight
                    }
                }
                return {
                    v: e
                }
            }))
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4);
        t.exports = function(t, e) {
            var n = {};
            return r.forEach(t, (function(t, e) {
                    var i = n[t.v] = {
                        indegree: 0,
                        in : [],
                        out: [],
                        vs: [t.v],
                        i: e
                    };
                    r.isUndefined(t.barycenter) || (i.barycenter = t.barycenter, i.weight = t.weight)
                })), r.forEach(e.edges(), (function(t) {
                    var e = n[t.v],
                        i = n[t.w];
                    r.isUndefined(e) || r.isUndefined(i) || (i.indegree++, e.out.push(n[t.w]))
                })),
                function(t) {
                    var e = [];

                    function n(t) {
                        return function(e) {
                            e.merged || (r.isUndefined(e.barycenter) || r.isUndefined(t.barycenter) || e.barycenter >= t.barycenter) && function(t, e) {
                                var n = 0,
                                    r = 0;
                                t.weight && (n += t.barycenter * t.weight, r += t.weight);
                                e.weight && (n += e.barycenter * e.weight, r += e.weight);
                                t.vs = e.vs.concat(t.vs), t.barycenter = n / r, t.weight = r, t.i = Math.min(e.i, t.i), e.merged = !0
                            }(t, e)
                        }
                    }

                    function i(e) {
                        return function(n) {
                            n.in.push(e), 0 == --n.indegree && t.push(n)
                        }
                    }
                    for (; t.length;) {
                        var a = t.pop();
                        e.push(a), r.forEach(a.in.reverse(), n(a)), r.forEach(a.out, i(a))
                    }
                    return r.map(r.filter(e, (function(t) {
                        return !t.merged
                    })), (function(t) {
                        return r.pick(t, ["vs", "i", "barycenter", "weight"])
                    }))
                }(r.filter(n, (function(t) {
                    return !t.indegree
                })))
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(10);

        function a(t, e, n) {
            for (var i; e.length && (i = r.last(e)).i <= n;) e.pop(), t.push(i.vs), n++;
            return n
        }
        t.exports = function(t, e) {
            var n = i.partition(t, (function(t) {
                    return r.has(t, "barycenter")
                })),
                o = n.lhs,
                s = r.sortBy(n.rhs, (function(t) {
                    return -t.i
                })),
                u = [],
                c = 0,
                f = 0,
                l = 0;
            o.sort((h = !!e, function(t, e) {
                return t.barycenter < e.barycenter ? -1 : t.barycenter > e.barycenter ? 1 : h ? e.i - t.i : t.i - e.i
            })), l = a(u, s, l), r.forEach(o, (function(t) {
                l += t.vs.length, u.push(t.vs), c += t.barycenter * t.weight, f += t.weight, l = a(u, s, l)
            }));
            var h;
            var d = {
                vs: r.flatten(u, !0)
            };
            f && (d.barycenter = c / f, d.weight = f);
            return d
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(19).Graph;
        t.exports = function(t, e, n) {
            var a = function(t) {
                    var e;
                    for (; t.hasNode(e = r.uniqueId("_root")););
                    return e
                }(t),
                o = new i({
                    compound: !0
                }).setGraph({
                    root: a
                }).setDefaultNodeLabel((function(e) {
                    return t.node(e)
                }));
            return r.forEach(t.nodes(), (function(i) {
                var s = t.node(i),
                    u = t.parent(i);
                (s.rank === e || s.minRank <= e && e <= s.maxRank) && (o.setNode(i), o.setParent(i, u || a), r.forEach(t[n](i), (function(e) {
                    var n = e.v === i ? e.w : e.v,
                        a = o.edge(n, i),
                        s = r.isUndefined(a) ? 0 : a.weight;
                    o.setEdge(n, i, {
                        weight: t.edge(e).weight + s
                    })
                })), r.has(s, "minRank") && o.setNode(i, {
                    borderLeft: s.borderLeft[e],
                    borderRight: s.borderRight[e]
                }))
            })), o
        }
    }, function(t, e, n) {
        var r = n(4);
        t.exports = function(t, e, n) {
            var i, a = {};
            r.forEach(n, (function(n) {
                for (var r, o, s = t.parent(n); s;) {
                    if ((r = t.parent(s)) ? (o = a[r], a[r] = s) : (o = i, i = s), o && o !== s) return void e.setEdge(o, s);
                    s = r
                }
            }))
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(10),
            a = n(402).positionX;
        t.exports = function(t) {
            (function(t) {
                var e = i.buildLayerMatrix(t),
                    n = t.graph().ranksep,
                    a = 0;
                r.forEach(e, (function(e) {
                    var i = r.max(r.map(e, (function(e) {
                        return t.node(e).height
                    })));
                    r.forEach(e, (function(e) {
                        t.node(e).y = a + i / 2
                    })), a += i + n
                }))
            })(t = i.asNonCompoundGraph(t)), r.forEach(a(t), (function(e, n) {
                t.node(n).x = e
            }))
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(4),
            i = n(19).Graph,
            a = n(10);

        function o(t, e) {
            var n = {};
            return r.reduce(e, (function(e, i) {
                var a = 0,
                    o = 0,
                    s = e.length,
                    c = r.last(i);
                return r.forEach(i, (function(e, f) {
                    var l = function(t, e) {
                            if (t.node(e).dummy) return r.find(t.predecessors(e), (function(e) {
                                return t.node(e).dummy
                            }))
                        }(t, e),
                        h = l ? t.node(l).order : s;
                    (l || e === c) && (r.forEach(i.slice(o, f + 1), (function(e) {
                        r.forEach(t.predecessors(e), (function(r) {
                            var i = t.node(r),
                                o = i.order;
                            !(o < a || h < o) || i.dummy && t.node(e).dummy || u(n, r, e)
                        }))
                    })), o = f + 1, a = h)
                })), i
            })), n
        }

        function s(t, e) {
            var n = {};

            function i(e, i, a, o, s) {
                var c;
                r.forEach(r.range(i, a), (function(i) {
                    c = e[i], t.node(c).dummy && r.forEach(t.predecessors(c), (function(e) {
                        var r = t.node(e);
                        r.dummy && (r.order < o || r.order > s) && u(n, e, c)
                    }))
                }))
            }
            return r.reduce(e, (function(e, n) {
                var a, o = -1,
                    s = 0;
                return r.forEach(n, (function(r, u) {
                    if ("border" === t.node(r).dummy) {
                        var c = t.predecessors(r);
                        c.length && (a = t.node(c[0]).order, i(n, s, u, o, a), s = u, o = a)
                    }
                    i(n, s, n.length, a, e.length)
                })), n
            })), n
        }

        function u(t, e, n) {
            if (e > n) {
                var r = e;
                e = n, n = r
            }
            var i = t[e];
            i || (t[e] = i = {}), i[n] = !0
        }

        function c(t, e, n) {
            if (e > n) {
                var i = e;
                e = n, n = i
            }
            return r.has(t[e], n)
        }

        function f(t, e, n, i) {
            var a = {},
                o = {},
                s = {};
            return r.forEach(e, (function(t) {
                r.forEach(t, (function(t, e) {
                    a[t] = t, o[t] = t, s[t] = e
                }))
            })), r.forEach(e, (function(t) {
                var e = -1;
                r.forEach(t, (function(t) {
                    var u = i(t);
                    if (u.length)
                        for (var f = ((u = r.sortBy(u, (function(t) {
                                return s[t]
                            }))).length - 1) / 2, l = Math.floor(f), h = Math.ceil(f); l <= h; ++l) {
                            var d = u[l];
                            o[t] === t && e < s[d] && !c(n, t, d) && (o[d] = t, o[t] = a[t] = a[d], e = s[d])
                        }
                }))
            })), {
                root: a,
                align: o
            }
        }

        function l(t, e, n, a, o) {
            var s = {},
                u = function(t, e, n, a) {
                    var o = new i,
                        s = t.graph(),
                        u = function(t, e, n) {
                            return function(i, a, o) {
                                var s, u = i.node(a),
                                    c = i.node(o),
                                    f = 0;
                                if (f += u.width / 2, r.has(u, "labelpos")) switch (u.labelpos.toLowerCase()) {
                                    case "l":
                                        s = -u.width / 2;
                                        break;
                                    case "r":
                                        s = u.width / 2
                                }
                                if (s && (f += n ? s : -s), s = 0, f += (u.dummy ? e : t) / 2, f += (c.dummy ? e : t) / 2, f += c.width / 2, r.has(c, "labelpos")) switch (c.labelpos.toLowerCase()) {
                                    case "l":
                                        s = c.width / 2;
                                        break;
                                    case "r":
                                        s = -c.width / 2
                                }
                                return s && (f += n ? s : -s), s = 0, f
                            }
                        }(s.nodesep, s.edgesep, a);
                    return r.forEach(e, (function(e) {
                        var i;
                        r.forEach(e, (function(e) {
                            var r = n[e];
                            if (o.setNode(r), i) {
                                var a = n[i],
                                    s = o.edge(a, r);
                                o.setEdge(a, r, Math.max(u(t, e, i), s || 0))
                            }
                            i = e
                        }))
                    })), o
                }(t, e, n, o),
                c = o ? "borderLeft" : "borderRight";

            function f(t, e) {
                for (var n = u.nodes(), r = n.pop(), i = {}; r;) i[r] ? t(r) : (i[r] = !0, n.push(r), n = n.concat(e(r))), r = n.pop()
            }
            return f((function(t) {
                s[t] = u.inEdges(t).reduce((function(t, e) {
                    return Math.max(t, s[e.v] + u.edge(e))
                }), 0)
            }), u.predecessors.bind(u)), f((function(e) {
                var n = u.outEdges(e).reduce((function(t, e) {
                        return Math.min(t, s[e.w] - u.edge(e))
                    }), Number.POSITIVE_INFINITY),
                    r = t.node(e);
                n !== Number.POSITIVE_INFINITY && r.borderType !== c && (s[e] = Math.max(s[e], n))
            }), u.successors.bind(u)), r.forEach(a, (function(t) {
                s[t] = s[n[t]]
            })), s
        }

        function h(t, e) {
            return r.minBy(r.values(e), (function(e) {
                var n = Number.NEGATIVE_INFINITY,
                    i = Number.POSITIVE_INFINITY;
                return r.forIn(e, (function(e, r) {
                    var a = function(t, e) {
                        return t.node(e).width
                    }(t, r) / 2;
                    n = Math.max(e + a, n), i = Math.min(e - a, i)
                })), n - i
            }))
        }

        function d(t, e) {
            var n = r.values(e),
                i = r.min(n),
                a = r.max(n);
            r.forEach(["u", "d"], (function(n) {
                r.forEach(["l", "r"], (function(o) {
                    var s, u = n + o,
                        c = t[u];
                    if (c !== e) {
                        var f = r.values(c);
                        (s = "l" === o ? i - r.min(f) : a - r.max(f)) && (t[u] = r.mapValues(c, (function(t) {
                            return t + s
                        })))
                    }
                }))
            }))
        }

        function p(t, e) {
            return r.mapValues(t.ul, (function(n, i) {
                if (e) return t[e.toLowerCase()][i];
                var a = r.sortBy(r.map(t, i));
                return (a[1] + a[2]) / 2
            }))
        }
        t.exports = {
            positionX: function(t) {
                var e, n = a.buildLayerMatrix(t),
                    i = r.merge(o(t, n), s(t, n)),
                    u = {};
                r.forEach(["u", "d"], (function(a) {
                    e = "u" === a ? n : r.values(n).reverse(), r.forEach(["l", "r"], (function(n) {
                        "r" === n && (e = r.map(e, (function(t) {
                            return r.values(t).reverse()
                        })));
                        var o = ("u" === a ? t.predecessors : t.successors).bind(t),
                            s = f(t, e, i, o),
                            c = l(t, e, s.root, s.align, "r" === n);
                        "r" === n && (c = r.mapValues(c, (function(t) {
                            return -t
                        }))), u[a + n] = c
                    }))
                }));
                var c = h(t, u);
                return d(u, c), p(u, t.graph().align)
            },
            findType1Conflicts: o,
            findType2Conflicts: s,
            addConflict: u,
            hasConflict: c,
            verticalAlignment: f,
            horizontalCompaction: l,
            alignCoordinates: d,
            findSmallestWidthAlignment: h,
            balance: p
        }
    }, function(t, e, n) {
        var r = n(4),
            i = n(10),
            a = n(19).Graph;
        t.exports = {
            debugOrdering: function(t) {
                var e = i.buildLayerMatrix(t),
                    n = new a({
                        compound: !0,
                        multigraph: !0
                    }).setGraph({});
                return r.forEach(t.nodes(), (function(e) {
                    n.setNode(e, {
                        label: e
                    }), n.setParent(e, "layer" + t.node(e).rank)
                })), r.forEach(t.edges(), (function(t) {
                    n.setEdge(t.v, t.w, {}, t.name)
                })), r.forEach(e, (function(t, e) {
                    var i = "layer" + e;
                    n.setNode(i, {
                        rank: "same"
                    }), r.reduce(t, (function(t, e) {
                        return n.setEdge(t, e, {
                            style: "invis"
                        }), e
                    }))
                })), n
            }
        }
    }, function(t, e) {
        t.exports = "0.8.5"
    }, function(t, e, n) {
        t.exports = {
            node: n(187),
            circle: n(188),
            ellipse: n(109),
            polygon: n(189),
            rect: n(190)
        }
    }, function(t, e) {
        function n(t, e) {
            return t * e > 0
        }
        t.exports = function(t, e, r, i) {
            var a, o, s, u, c, f, l, h, d, p, g, y, b;
            if (a = e.y - t.y, s = t.x - e.x, c = e.x * t.y - t.x * e.y, d = a * r.x + s * r.y + c, p = a * i.x + s * i.y + c, 0 !== d && 0 !== p && n(d, p)) return;
            if (o = i.y - r.y, u = r.x - i.x, f = i.x * r.y - r.x * i.y, l = o * t.x + u * t.y + f, h = o * e.x + u * e.y + f, 0 !== l && 0 !== h && n(l, h)) return;
            if (0 === (g = a * u - o * s)) return;
            return y = Math.abs(g / 2), {
                x: (b = s * f - u * c) < 0 ? (b - y) / g : (b + y) / g,
                y: (b = o * c - a * f) < 0 ? (b - y) / g : (b + y) / g
            }
        }
    }, function(t, e, n) {
        var r = n(43),
            i = n(30),
            a = n(175).layout;
        t.exports = function() {
            var t = n(408),
                e = n(411),
                i = n(412),
                c = n(413),
                f = n(414),
                l = n(415),
                h = n(416),
                d = n(417),
                p = n(418),
                g = function(n, g) {
                    ! function(t) {
                        t.nodes().forEach((function(e) {
                            var n = t.node(e);
                            r.has(n, "label") || t.children(e).length || (n.label = e), r.has(n, "paddingX") && r.defaults(n, {
                                paddingLeft: n.paddingX,
                                paddingRight: n.paddingX
                            }), r.has(n, "paddingY") && r.defaults(n, {
                                paddingTop: n.paddingY,
                                paddingBottom: n.paddingY
                            }), r.has(n, "padding") && r.defaults(n, {
                                paddingLeft: n.padding,
                                paddingRight: n.padding,
                                paddingTop: n.padding,
                                paddingBottom: n.padding
                            }), r.defaults(n, o), r.each(["paddingLeft", "paddingRight", "paddingTop", "paddingBottom"], (function(t) {
                                n[t] = Number(n[t])
                            })), r.has(n, "width") && (n._prevWidth = n.width), r.has(n, "height") && (n._prevHeight = n.height)
                        })), t.edges().forEach((function(e) {
                            var n = t.edge(e);
                            r.has(n, "label") || (n.label = ""), r.defaults(n, s)
                        }))
                    }(g);
                    var y = u(n, "output"),
                        b = u(y, "clusters"),
                        v = u(y, "edgePaths"),
                        m = i(u(y, "edgeLabels"), g),
                        _ = t(u(y, "nodes"), g, d);
                    a(g), f(_, g), l(m, g), c(v, g, p);
                    var w = e(b, g);
                    h(w, g),
                        function(t) {
                            r.each(t.nodes(), (function(e) {
                                var n = t.node(e);
                                r.has(n, "_prevWidth") ? n.width = n._prevWidth : delete n.width, r.has(n, "_prevHeight") ? n.height = n._prevHeight : delete n.height, delete n._prevWidth, delete n._prevHeight
                            }))
                        }(g)
                };
            return g.createNodes = function(e) {
                return arguments.length ? (t = e, g) : t
            }, g.createClusters = function(t) {
                return arguments.length ? (e = t, g) : e
            }, g.createEdgeLabels = function(t) {
                return arguments.length ? (i = t, g) : i
            }, g.createEdgePaths = function(t) {
                return arguments.length ? (c = t, g) : c
            }, g.shapes = function(t) {
                return arguments.length ? (d = t, g) : d
            }, g.arrows = function(t) {
                return arguments.length ? (p = t, g) : p
            }, g
        };
        var o = {
                paddingLeft: 10,
                paddingRight: 10,
                paddingTop: 10,
                paddingBottom: 10,
                rx: 0,
                ry: 0,
                shape: "rect"
            },
            s = {
                arrowhead: "normal",
                curve: i.curveLinear
            };

        function u(t, e) {
            var n = t.select("g." + e);
            return n.empty() && (n = t.append("g").attr("class", e)), n
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(43),
            i = n(110),
            a = n(15),
            o = n(30);
        t.exports = function(t, e, n) {
            var s, u = e.nodes().filter((function(t) {
                    return !a.isSubgraph(e, t)
                })),
                c = t.selectAll("g.node").data(u, (function(t) {
                    return t
                })).classed("update", !0);
            c.exit().remove(), c.enter().append("g").attr("class", "node").style("opacity", 0), (c = t.selectAll("g.node")).each((function(t) {
                var s = e.node(t),
                    u = o.select(this);
                a.applyClass(u, s.class, (u.classed("update") ? "update " : "") + "node"), u.select("g.label").remove();
                var c = u.append("g").attr("class", "label"),
                    f = i(c, s),
                    l = n[s.shape],
                    h = r.pick(f.node().getBBox(), "width", "height");
                s.elem = this, s.id && u.attr("id", s.id), s.labelId && c.attr("id", s.labelId), r.has(s, "width") && (h.width = s.width), r.has(s, "height") && (h.height = s.height), h.width += s.paddingLeft + s.paddingRight, h.height += s.paddingTop + s.paddingBottom, c.attr("transform", "translate(" + (s.paddingLeft - s.paddingRight) / 2 + "," + (s.paddingTop - s.paddingBottom) / 2 + ")");
                var d = o.select(this);
                d.select(".label-container").remove();
                var p = l(d, h, s).classed("label-container", !0);
                a.applyStyle(p, s.style);
                var g = p.node().getBBox();
                s.width = g.width, s.height = g.height
            })), s = c.exit ? c.exit() : c.selectAll(null);
            return a.applyTransition(s, e).style("opacity", 0).remove(), c
        }
    }, function(t, e, n) {
        var r = n(15);
        t.exports = function(t, e) {
            for (var n = t.append("text"), i = function(t) {
                    for (var e, n = "", r = !1, i = 0; i < t.length; ++i)
                        if (e = t[i], r) {
                            switch (e) {
                                case "n":
                                    n += "\n";
                                    break;
                                default:
                                    n += e
                            }
                            r = !1
                        } else "\\" === e ? r = !0 : n += e;
                    return n
                }(e.label).split("\n"), a = 0; a < i.length; a++) n.append("tspan").attr("xml:space", "preserve").attr("dy", "1em").attr("x", "1").text(i[a]);
            return r.applyStyle(n, e.labelStyle), n
        }
    }, function(t, e, n) {
        var r = n(15);
        t.exports = function(t, e) {
            var n = t;
            return n.node().appendChild(e.label), r.applyStyle(n, e.labelStyle), n
        }
    }, function(t, e, n) {
        var r = n(15),
            i = n(30),
            a = n(110);
        t.exports = function(t, e) {
            var n, o = e.nodes().filter((function(t) {
                    return r.isSubgraph(e, t)
                })),
                s = t.selectAll("g.cluster").data(o, (function(t) {
                    return t
                }));
            s.selectAll("*").remove(), s.enter().append("g").attr("class", "cluster").attr("id", (function(t) {
                return e.node(t).id
            })).style("opacity", 0), s = t.selectAll("g.cluster"), r.applyTransition(s, e).style("opacity", 1), s.each((function(t) {
                var n = e.node(t),
                    r = i.select(this);
                i.select(this).append("rect");
                var o = r.append("g").attr("class", "label");
                a(o, n, n.clusterLabelPos)
            })), s.selectAll("rect").each((function(t) {
                var n = e.node(t),
                    a = i.select(this);
                r.applyStyle(a, n.style)
            })), n = s.exit ? s.exit() : s.selectAll(null);
            return r.applyTransition(n, e).style("opacity", 0).remove(), s
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(43),
            i = n(110),
            a = n(15),
            o = n(30);
        t.exports = function(t, e) {
            var n, s = t.selectAll("g.edgeLabel").data(e.edges(), (function(t) {
                return a.edgeToId(t)
            })).classed("update", !0);
            s.exit().remove(), s.enter().append("g").classed("edgeLabel", !0).style("opacity", 0), (s = t.selectAll("g.edgeLabel")).each((function(t) {
                var n = o.select(this);
                n.select(".label").remove();
                var a = e.edge(t),
                    s = i(n, e.edge(t), 0, 0).classed("label", !0),
                    u = s.node().getBBox();
                a.labelId && s.attr("id", a.labelId), r.has(a, "width") || (a.width = u.width), r.has(a, "height") || (a.height = u.height)
            })), n = s.exit ? s.exit() : s.selectAll(null);
            return a.applyTransition(n, e).style("opacity", 0).remove(), s
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(43),
            i = n(187),
            a = n(15),
            o = n(30);

        function s(t, e) {
            var n = (o.line || o.svg.line)().x((function(t) {
                return t.x
            })).y((function(t) {
                return t.y
            }));
            return (n.curve || n.interpolate)(t.curve), n(e)
        }
        t.exports = function(t, e, n) {
            var u = t.selectAll("g.edgePath").data(e.edges(), (function(t) {
                    return a.edgeToId(t)
                })).classed("update", !0),
                c = function(t, e) {
                    var n = t.enter().append("g").attr("class", "edgePath").style("opacity", 0);
                    return n.append("path").attr("class", "path").attr("d", (function(t) {
                        var n = e.edge(t),
                            i = e.node(t.v).elem;
                        return s(n, r.range(n.points.length).map((function() {
                            return e = (t = i).getBBox(), {
                                x: (n = t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width / 2, e.height / 2)).e,
                                y: n.f
                            };
                            var t, e, n
                        })))
                    })), n.append("defs"), n
                }(u, e);
            ! function(t, e) {
                var n = t.exit();
                a.applyTransition(n, e).style("opacity", 0).remove()
            }(u, e);
            var f = void 0 !== u.merge ? u.merge(c) : u;
            return a.applyTransition(f, e).style("opacity", 1), f.each((function(t) {
                var n = o.select(this),
                    r = e.edge(t);
                r.elem = this, r.id && n.attr("id", r.id), a.applyClass(n, r.class, (n.classed("update") ? "update " : "") + "edgePath")
            })), f.selectAll("path.path").each((function(t) {
                var n = e.edge(t);
                n.arrowheadId = r.uniqueId("arrowhead");
                var u = o.select(this).attr("marker-end", (function() {
                    return "url(" + (t = location.href, e = n.arrowheadId, t.split("#")[0] + "#" + e) + ")";
                    var t, e
                })).style("fill", "none");
                a.applyTransition(u, e).attr("d", (function(t) {
                    return function(t, e) {
                        var n = t.edge(e),
                            r = t.node(e.v),
                            a = t.node(e.w),
                            o = n.points.slice(1, n.points.length - 1);
                        return o.unshift(i(r, o[0])), o.push(i(a, o[o.length - 1])), s(n, o)
                    }(e, t)
                })), a.applyStyle(u, n.style)
            })), f.selectAll("defs *").remove(), f.selectAll("defs").each((function(t) {
                var r = e.edge(t);
                (0, n[r.arrowhead])(o.select(this), r.arrowheadId, r, "arrowhead")
            })), f
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(15),
            i = n(30);
        t.exports = function(t, e) {
            function n(t) {
                var n = e.node(t);
                return "translate(" + n.x + "," + n.y + ")"
            }
            t.filter((function() {
                return !i.select(this).classed("update")
            })).attr("transform", n), r.applyTransition(t, e).style("opacity", 1).attr("transform", n)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(15),
            i = n(30),
            a = n(43);
        t.exports = function(t, e) {
            function n(t) {
                var n = e.edge(t);
                return a.has(n, "x") ? "translate(" + n.x + "," + n.y + ")" : ""
            }
            t.filter((function() {
                return !i.select(this).classed("update")
            })).attr("transform", n), r.applyTransition(t, e).style("opacity", 1).attr("transform", n)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(15),
            i = n(30);
        t.exports = function(t, e) {
            var n = t.filter((function() {
                return !i.select(this).classed("update")
            }));

            function a(t) {
                var n = e.node(t);
                return "translate(" + n.x + "," + n.y + ")"
            }
            n.attr("transform", a), r.applyTransition(t, e).style("opacity", 1).attr("transform", a), r.applyTransition(n.selectAll("rect"), e).attr("width", (function(t) {
                return e.node(t).width
            })).attr("height", (function(t) {
                return e.node(t).height
            })).attr("x", (function(t) {
                return -e.node(t).width / 2
            })).attr("y", (function(t) {
                return -e.node(t).height / 2
            }))
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(190),
            i = n(109),
            a = n(188),
            o = n(189);
        t.exports = {
            rect: function(t, e, n) {
                var i = t.insert("rect", ":first-child").attr("rx", n.rx).attr("ry", n.ry).attr("x", -e.width / 2).attr("y", -e.height / 2).attr("width", e.width).attr("height", e.height);
                return n.intersect = function(t) {
                    return r(n, t)
                }, i
            },
            ellipse: function(t, e, n) {
                var r = e.width / 2,
                    a = e.height / 2,
                    o = t.insert("ellipse", ":first-child").attr("x", -e.width / 2).attr("y", -e.height / 2).attr("rx", r).attr("ry", a);
                return n.intersect = function(t) {
                    return i(n, r, a, t)
                }, o
            },
            circle: function(t, e, n) {
                var r = Math.max(e.width, e.height) / 2,
                    i = t.insert("circle", ":first-child").attr("x", -e.width / 2).attr("y", -e.height / 2).attr("r", r);
                return n.intersect = function(t) {
                    return a(n, r, t)
                }, i
            },
            diamond: function(t, e, n) {
                var r = e.width * Math.SQRT2 / 2,
                    i = e.height * Math.SQRT2 / 2,
                    a = [{
                        x: 0,
                        y: -i
                    }, {
                        x: -r,
                        y: 0
                    }, {
                        x: 0,
                        y: i
                    }, {
                        x: r,
                        y: 0
                    }],
                    s = t.insert("polygon", ":first-child").attr("points", a.map((function(t) {
                        return t.x + "," + t.y
                    })).join(" "));
                return n.intersect = function(t) {
                    return o(n, a, t)
                }, s
            }
        }
    }, function(t, e, n) {
        var r = n(15);

        function i(t, e, n, i) {
            var a = t.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").style("stroke-width", 1).style("stroke-dasharray", "1,0");
            r.applyStyle(a, n[i + "Style"]), n[i + "Class"] && a.attr("class", n[i + "Class"])
        }
        t.exports = {
            default: i,
            normal: i,
            vee: function(t, e, n, i) {
                var a = t.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width", 1).style("stroke-dasharray", "1,0");
                r.applyStyle(a, n[i + "Style"]), n[i + "Class"] && a.attr("class", n[i + "Class"])
            },
            undirected: function(t, e, n, i) {
                var a = t.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 5").style("stroke-width", 1).style("stroke-dasharray", "1,0");
                r.applyStyle(a, n[i + "Style"]), n[i + "Class"] && a.attr("class", n[i + "Class"])
            }
        }
    }, function(t, e) {
        t.exports = "0.6.4"
    }, function(t, e, n) {
        "use strict";
        e.randomBytes = e.rng = e.pseudoRandomBytes = e.prng = n(44), e.createHash = e.Hash = n(53), e.createHmac = e.Hmac = n(199);
        var r = n(439),
            i = Object.keys(r),
            a = ["sha1", "sha224", "sha256", "sha384", "sha512", "md5", "rmd160"].concat(i);
        e.getHashes = function() {
            return a
        };
        var o = n(202);
        e.pbkdf2 = o.pbkdf2, e.pbkdf2Sync = o.pbkdf2Sync;
        var s = n(441);
        e.Cipher = s.Cipher, e.createCipher = s.createCipher, e.Cipheriv = s.Cipheriv, e.createCipheriv = s.createCipheriv, e.Decipher = s.Decipher, e.createDecipher = s.createDecipher, e.Decipheriv = s.Decipheriv, e.createDecipheriv = s.createDecipheriv, e.getCiphers = s.getCiphers, e.listCiphers = s.listCiphers;
        var u = n(456);
        e.DiffieHellmanGroup = u.DiffieHellmanGroup, e.createDiffieHellmanGroup = u.createDiffieHellmanGroup, e.getDiffieHellman = u.getDiffieHellman, e.createDiffieHellman = u.createDiffieHellman, e.DiffieHellman = u.DiffieHellman;
        var c = n(461);
        e.createSign = c.createSign, e.Sign = c.Sign, e.createVerify = c.createVerify, e.Verify = c.Verify, e.createECDH = n(495);
        var f = n(496);
        e.publicEncrypt = f.publicEncrypt, e.privateEncrypt = f.privateEncrypt, e.publicDecrypt = f.publicDecrypt, e.privateDecrypt = f.privateDecrypt;
        var l = n(499);
        e.randomFill = l.randomFill, e.randomFillSync = l.randomFillSync, e.createCredentials = function() {
            throw new Error(["sorry, createCredentials is not implemented yet", "we accept pull requests", "https://github.com/crypto-browserify/crypto-browserify"].join("\n"))
        }, e.constants = {
            DH_CHECK_P_NOT_SAFE_PRIME: 2,
            DH_CHECK_P_NOT_PRIME: 1,
            DH_UNABLE_TO_CHECK_GENERATOR: 4,
            DH_NOT_SUITABLE_GENERATOR: 8,
            NPN_ENABLED: 1,
            ALPN_ENABLED: 1,
            RSA_PKCS1_PADDING: 1,
            RSA_SSLV23_PADDING: 2,
            RSA_NO_PADDING: 3,
            RSA_PKCS1_OAEP_PADDING: 4,
            RSA_X931_PADDING: 5,
            RSA_PKCS1_PSS_PADDING: 6,
            POINT_CONVERSION_COMPRESSED: 2,
            POINT_CONVERSION_UNCOMPRESSED: 4,
            POINT_CONVERSION_HYBRID: 6
        }
    }, function(t, e, n) {
        "use strict";
        e.byteLength = function(t) {
            var e = c(t),
                n = e[0],
                r = e[1];
            return 3 * (n + r) / 4 - r
        }, e.toByteArray = function(t) {
            var e, n, r = c(t),
                o = r[0],
                s = r[1],
                u = new a(function(t, e, n) {
                    return 3 * (e + n) / 4 - n
                }(0, o, s)),
                f = 0,
                l = s > 0 ? o - 4 : o;
            for (n = 0; n < l; n += 4) e = i[t.charCodeAt(n)] << 18 | i[t.charCodeAt(n + 1)] << 12 | i[t.charCodeAt(n + 2)] << 6 | i[t.charCodeAt(n + 3)], u[f++] = e >> 16 & 255, u[f++] = e >> 8 & 255, u[f++] = 255 & e;
            2 === s && (e = i[t.charCodeAt(n)] << 2 | i[t.charCodeAt(n + 1)] >> 4, u[f++] = 255 & e);
            1 === s && (e = i[t.charCodeAt(n)] << 10 | i[t.charCodeAt(n + 1)] << 4 | i[t.charCodeAt(n + 2)] >> 2, u[f++] = e >> 8 & 255, u[f++] = 255 & e);
            return u
        }, e.fromByteArray = function(t) {
            for (var e, n = t.length, i = n % 3, a = [], o = 0, s = n - i; o < s; o += 16383) a.push(f(t, o, o + 16383 > s ? s : o + 16383));
            1 === i ? (e = t[n - 1], a.push(r[e >> 2] + r[e << 4 & 63] + "==")) : 2 === i && (e = (t[n - 2] << 8) + t[n - 1], a.push(r[e >> 10] + r[e >> 4 & 63] + r[e << 2 & 63] + "="));
            return a.join("")
        };
        for (var r = [], i = [], a = "undefined" != typeof Uint8Array ? Uint8Array : Array, o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, u = o.length; s < u; ++s) r[s] = o[s], i[o.charCodeAt(s)] = s;

        function c(t) {
            var e = t.length;
            if (e % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
            var n = t.indexOf("=");
            return -1 === n && (n = e), [n, n === e ? 0 : 4 - n % 4]
        }

        function f(t, e, n) {
            for (var i, a, o = [], s = e; s < n; s += 3) i = (t[s] << 16 & 16711680) + (t[s + 1] << 8 & 65280) + (255 & t[s + 2]), o.push(r[(a = i) >> 18 & 63] + r[a >> 12 & 63] + r[a >> 6 & 63] + r[63 & a]);
            return o.join("")
        }
        i["-".charCodeAt(0)] = 62, i["_".charCodeAt(0)] = 63
    }, function(t, e) {
        e.read = function(t, e, n, r, i) {
            var a, o, s = 8 * i - r - 1,
                u = (1 << s) - 1,
                c = u >> 1,
                f = -7,
                l = n ? i - 1 : 0,
                h = n ? -1 : 1,
                d = t[e + l];
            for (l += h, a = d & (1 << -f) - 1, d >>= -f, f += s; f > 0; a = 256 * a + t[e + l], l += h, f -= 8);
            for (o = a & (1 << -f) - 1, a >>= -f, f += r; f > 0; o = 256 * o + t[e + l], l += h, f -= 8);
            if (0 === a) a = 1 - c;
            else {
                if (a === u) return o ? NaN : 1 / 0 * (d ? -1 : 1);
                o += Math.pow(2, r), a -= c
            }
            return (d ? -1 : 1) * o * Math.pow(2, a - r)
        }, e.write = function(t, e, n, r, i, a) {
            var o, s, u, c = 8 * a - i - 1,
                f = (1 << c) - 1,
                l = f >> 1,
                h = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0,
                d = r ? 0 : a - 1,
                p = r ? 1 : -1,
                g = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
            for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0, o = f) : (o = Math.floor(Math.log(e) / Math.LN2), e * (u = Math.pow(2, -o)) < 1 && (o--, u *= 2), (e += o + l >= 1 ? h / u : h * Math.pow(2, 1 - l)) * u >= 2 && (o++, u /= 2), o + l >= f ? (s = 0, o = f) : o + l >= 1 ? (s = (e * u - 1) * Math.pow(2, i), o += l) : (s = e * Math.pow(2, l - 1) * Math.pow(2, i), o = 0)); i >= 8; t[n + d] = 255 & s, d += p, s /= 256, i -= 8);
            for (o = o << i | s, c += i; c > 0; t[n + d] = 255 & o, d += p, o /= 256, c -= 8);
            t[n + d - p] |= 128 * g
        }
    }, function(t, e) {}, function(t, e, n) {
        "use strict";
        var r = n(115).Buffer,
            i = n(425);
        t.exports = function() {
            function t() {
                ! function(t, e) {
                    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                }(this, t), this.head = null, this.tail = null, this.length = 0
            }
            return t.prototype.push = function(t) {
                var e = {
                    data: t,
                    next: null
                };
                this.length > 0 ? this.tail.next = e : this.head = e, this.tail = e, ++this.length
            }, t.prototype.unshift = function(t) {
                var e = {
                    data: t,
                    next: this.head
                };
                0 === this.length && (this.tail = e), this.head = e, ++this.length
            }, t.prototype.shift = function() {
                if (0 !== this.length) {
                    var t = this.head.data;
                    return 1 === this.length ? this.head = this.tail = null : this.head = this.head.next, --this.length, t
                }
            }, t.prototype.clear = function() {
                this.head = this.tail = null, this.length = 0
            }, t.prototype.join = function(t) {
                if (0 === this.length) return "";
                for (var e = this.head, n = "" + e.data; e = e.next;) n += t + e.data;
                return n
            }, t.prototype.concat = function(t) {
                if (0 === this.length) return r.alloc(0);
                if (1 === this.length) return this.head.data;
                for (var e, n, i, a = r.allocUnsafe(t >>> 0), o = this.head, s = 0; o;) e = o.data, n = a, i = s, e.copy(n, i), s += o.data.length, o = o.next;
                return a
            }, t
        }(), i && i.inspect && i.inspect.custom && (t.exports.prototype[i.inspect.custom] = function() {
            var t = i.inspect({
                length: this.length
            });
            return this.constructor.name + " " + t
        })
    }, function(t, e) {}, function(t, e, n) {
        (function(t) {
            var r = void 0 !== t && t || "undefined" != typeof self && self || window,
                i = Function.prototype.apply;

            function a(t, e) {
                this._id = t, this._clearFn = e
            }
            e.setTimeout = function() {
                return new a(i.call(setTimeout, r, arguments), clearTimeout)
            }, e.setInterval = function() {
                return new a(i.call(setInterval, r, arguments), clearInterval)
            }, e.clearTimeout = e.clearInterval = function(t) {
                t && t.close()
            }, a.prototype.unref = a.prototype.ref = function() {}, a.prototype.close = function() {
                this._clearFn.call(r, this._id)
            }, e.enroll = function(t, e) {
                clearTimeout(t._idleTimeoutId), t._idleTimeout = e
            }, e.unenroll = function(t) {
                clearTimeout(t._idleTimeoutId), t._idleTimeout = -1
            }, e._unrefActive = e.active = function(t) {
                clearTimeout(t._idleTimeoutId);
                var e = t._idleTimeout;
                e >= 0 && (t._idleTimeoutId = setTimeout((function() {
                    t._onTimeout && t._onTimeout()
                }), e))
            }, n(427), e.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== t && t.setImmediate || this && this.setImmediate, e.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== t && t.clearImmediate || this && this.clearImmediate
        }).call(this, n(12))
    }, function(t, e, n) {
        (function(t, e) {
            ! function(t, n) {
                "use strict";
                if (!t.setImmediate) {
                    var r, i, a, o, s, u = 1,
                        c = {},
                        f = !1,
                        l = t.document,
                        h = Object.getPrototypeOf && Object.getPrototypeOf(t);
                    h = h && h.setTimeout ? h : t, "[object process]" === {}.toString.call(t.process) ? r = function(t) {
                        e.nextTick((function() {
                            p(t)
                        }))
                    } : ! function() {
                        if (t.postMessage && !t.importScripts) {
                            var e = !0,
                                n = t.onmessage;
                            return t.onmessage = function() {
                                e = !1
                            }, t.postMessage("", "*"), t.onmessage = n, e
                        }
                    }() ? t.MessageChannel ? ((a = new MessageChannel).port1.onmessage = function(t) {
                        p(t.data)
                    }, r = function(t) {
                        a.port2.postMessage(t)
                    }) : l && "onreadystatechange" in l.createElement("script") ? (i = l.documentElement, r = function(t) {
                        var e = l.createElement("script");
                        e.onreadystatechange = function() {
                            p(t), e.onreadystatechange = null, i.removeChild(e), e = null
                        }, i.appendChild(e)
                    }) : r = function(t) {
                        setTimeout(p, 0, t)
                    } : (o = "setImmediate$" + Math.random() + "$", s = function(e) {
                        e.source === t && "string" == typeof e.data && 0 === e.data.indexOf(o) && p(+e.data.slice(o.length))
                    }, t.addEventListener ? t.addEventListener("message", s, !1) : t.attachEvent("onmessage", s), r = function(e) {
                        t.postMessage(o + e, "*")
                    }), h.setImmediate = function(t) {
                        "function" != typeof t && (t = new Function("" + t));
                        for (var e = new Array(arguments.length - 1), n = 0; n < e.length; n++) e[n] = arguments[n + 1];
                        var i = {
                            callback: t,
                            args: e
                        };
                        return c[u] = i, r(u), u++
                    }, h.clearImmediate = d
                }

                function d(t) {
                    delete c[t]
                }

                function p(t) {
                    if (f) setTimeout(p, 0, t);
                    else {
                        var e = c[t];
                        if (e) {
                            f = !0;
                            try {
                                ! function(t) {
                                    var e = t.callback,
                                        r = t.args;
                                    switch (r.length) {
                                        case 0:
                                            e();
                                            break;
                                        case 1:
                                            e(r[0]);
                                            break;
                                        case 2:
                                            e(r[0], r[1]);
                                            break;
                                        case 3:
                                            e(r[0], r[1], r[2]);
                                            break;
                                        default:
                                            e.apply(n, r)
                                    }
                                }(e)
                            } finally {
                                d(t), f = !1
                            }
                        }
                    }
                }
            }("undefined" == typeof self ? void 0 === t ? this : t : self)
        }).call(this, n(12), n(7))
    }, function(t, e, n) {
        (function(e) {
            function n(t) {
                try {
                    if (!e.localStorage) return !1
                } catch (t) {
                    return !1
                }
                var n = e.localStorage[t];
                return null != n && "true" === String(n).toLowerCase()
            }
            t.exports = function(t, e) {
                if (n("noDeprecation")) return t;
                var r = !1;
                return function() {
                    if (!r) {
                        if (n("throwDeprecation")) throw new Error(e);
                        n("traceDeprecation") ? console.trace(e) : console.warn(e), r = !0
                    }
                    return t.apply(this, arguments)
                }
            }
        }).call(this, n(12))
    }, function(t, e, n) {
        "use strict";
        t.exports = a;
        var r = n(196),
            i = n(54);

        function a(t) {
            if (!(this instanceof a)) return new a(t);
            r.call(this, t)
        }
        i.inherits = n(2), i.inherits(a, r), a.prototype._transform = function(t, e, n) {
            n(null, t)
        }
    }, function(t, e, n) {
        t.exports = n(116)
    }, function(t, e, n) {
        t.exports = n(35)
    }, function(t, e, n) {
        t.exports = n(114).Transform
    }, function(t, e, n) {
        t.exports = n(114).PassThrough
    }, function(t, e, n) {
        var r = n(2),
            i = n(45),
            a = n(3).Buffer,
            o = [1518500249, 1859775393, -1894007588, -899497514],
            s = new Array(80);

        function u() {
            this.init(), this._w = s, i.call(this, 64, 56)
        }

        function c(t) {
            return t << 30 | t >>> 2
        }

        function f(t, e, n, r) {
            return 0 === t ? e & n | ~e & r : 2 === t ? e & n | e & r | n & r : e ^ n ^ r
        }
        r(u, i), u.prototype.init = function() {
            return this._a = 1732584193, this._b = 4023233417, this._c = 2562383102, this._d = 271733878, this._e = 3285377520, this
        }, u.prototype._update = function(t) {
            for (var e, n = this._w, r = 0 | this._a, i = 0 | this._b, a = 0 | this._c, s = 0 | this._d, u = 0 | this._e, l = 0; l < 16; ++l) n[l] = t.readInt32BE(4 * l);
            for (; l < 80; ++l) n[l] = n[l - 3] ^ n[l - 8] ^ n[l - 14] ^ n[l - 16];
            for (var h = 0; h < 80; ++h) {
                var d = ~~(h / 20),
                    p = 0 | ((e = r) << 5 | e >>> 27) + f(d, i, a, s) + u + n[h] + o[d];
                u = s, s = a, a = c(i), i = r, r = p
            }
            this._a = r + this._a | 0, this._b = i + this._b | 0, this._c = a + this._c | 0, this._d = s + this._d | 0, this._e = u + this._e | 0
        }, u.prototype._hash = function() {
            var t = a.allocUnsafe(20);
            return t.writeInt32BE(0 | this._a, 0), t.writeInt32BE(0 | this._b, 4), t.writeInt32BE(0 | this._c, 8), t.writeInt32BE(0 | this._d, 12), t.writeInt32BE(0 | this._e, 16), t
        }, t.exports = u
    }, function(t, e, n) {
        var r = n(2),
            i = n(45),
            a = n(3).Buffer,
            o = [1518500249, 1859775393, -1894007588, -899497514],
            s = new Array(80);

        function u() {
            this.init(), this._w = s, i.call(this, 64, 56)
        }

        function c(t) {
            return t << 5 | t >>> 27
        }

        function f(t) {
            return t << 30 | t >>> 2
        }

        function l(t, e, n, r) {
            return 0 === t ? e & n | ~e & r : 2 === t ? e & n | e & r | n & r : e ^ n ^ r
        }
        r(u, i), u.prototype.init = function() {
            return this._a = 1732584193, this._b = 4023233417, this._c = 2562383102, this._d = 271733878, this._e = 3285377520, this
        }, u.prototype._update = function(t) {
            for (var e, n = this._w, r = 0 | this._a, i = 0 | this._b, a = 0 | this._c, s = 0 | this._d, u = 0 | this._e, h = 0; h < 16; ++h) n[h] = t.readInt32BE(4 * h);
            for (; h < 80; ++h) n[h] = (e = n[h - 3] ^ n[h - 8] ^ n[h - 14] ^ n[h - 16]) << 1 | e >>> 31;
            for (var d = 0; d < 80; ++d) {
                var p = ~~(d / 20),
                    g = c(r) + l(p, i, a, s) + u + n[d] + o[p] | 0;
                u = s, s = a, a = f(i), i = r, r = g
            }
            this._a = r + this._a | 0, this._b = i + this._b | 0, this._c = a + this._c | 0, this._d = s + this._d | 0, this._e = u + this._e | 0
        }, u.prototype._hash = function() {
            var t = a.allocUnsafe(20);
            return t.writeInt32BE(0 | this._a, 0), t.writeInt32BE(0 | this._b, 4), t.writeInt32BE(0 | this._c, 8), t.writeInt32BE(0 | this._d, 12), t.writeInt32BE(0 | this._e, 16), t
        }, t.exports = u
    }, function(t, e, n) {
        var r = n(2),
            i = n(197),
            a = n(45),
            o = n(3).Buffer,
            s = new Array(64);

        function u() {
            this.init(), this._w = s, a.call(this, 64, 56)
        }
        r(u, i), u.prototype.init = function() {
            return this._a = 3238371032, this._b = 914150663, this._c = 812702999, this._d = 4144912697, this._e = 4290775857, this._f = 1750603025, this._g = 1694076839, this._h = 3204075428, this
        }, u.prototype._hash = function() {
            var t = o.allocUnsafe(28);
            return t.writeInt32BE(this._a, 0), t.writeInt32BE(this._b, 4), t.writeInt32BE(this._c, 8), t.writeInt32BE(this._d, 12), t.writeInt32BE(this._e, 16), t.writeInt32BE(this._f, 20), t.writeInt32BE(this._g, 24), t
        }, t.exports = u
    }, function(t, e, n) {
        var r = n(2),
            i = n(198),
            a = n(45),
            o = n(3).Buffer,
            s = new Array(160);

        function u() {
            this.init(), this._w = s, a.call(this, 128, 112)
        }
        r(u, i), u.prototype.init = function() {
            return this._ah = 3418070365, this._bh = 1654270250, this._ch = 2438529370, this._dh = 355462360, this._eh = 1731405415, this._fh = 2394180231, this._gh = 3675008525, this._hh = 1203062813, this._al = 3238371032, this._bl = 914150663, this._cl = 812702999, this._dl = 4144912697, this._el = 4290775857, this._fl = 1750603025, this._gl = 1694076839, this._hl = 3204075428, this
        }, u.prototype._hash = function() {
            var t = o.allocUnsafe(48);

            function e(e, n, r) {
                t.writeInt32BE(e, r), t.writeInt32BE(n, r + 4)
            }
            return e(this._ah, this._al, 0), e(this._bh, this._bl, 8), e(this._ch, this._cl, 16), e(this._dh, this._dl, 24), e(this._eh, this._el, 32), e(this._fh, this._fl, 40), t
        }, t.exports = u
    }, function(t, e, n) {
        "use strict";
        var r = n(2),
            i = n(3).Buffer,
            a = n(31),
            o = i.alloc(128),
            s = 64;

        function u(t, e) {
            a.call(this, "digest"), "string" == typeof e && (e = i.from(e)), this._alg = t, this._key = e, e.length > s ? e = t(e) : e.length < s && (e = i.concat([e, o], s));
            for (var n = this._ipad = i.allocUnsafe(s), r = this._opad = i.allocUnsafe(s), u = 0; u < s; u++) n[u] = 54 ^ e[u], r[u] = 92 ^ e[u];
            this._hash = [n]
        }
        r(u, a), u.prototype._update = function(t) {
            this._hash.push(t)
        }, u.prototype._final = function() {
            var t = this._alg(i.concat(this._hash));
            return this._alg(i.concat([this._opad, t]))
        }, t.exports = u
    }, function(t, e, n) {
        t.exports = n(201)
    }, function(t, e, n) {
        (function(e, r) {
            var i, a = n(203),
                o = n(204),
                s = n(205),
                u = n(3).Buffer,
                c = e.crypto && e.crypto.subtle,
                f = {
                    sha: "SHA-1",
                    "sha-1": "SHA-1",
                    sha1: "SHA-1",
                    sha256: "SHA-256",
                    "sha-256": "SHA-256",
                    sha384: "SHA-384",
                    "sha-384": "SHA-384",
                    "sha-512": "SHA-512",
                    sha512: "SHA-512"
                },
                l = [];

            function h(t, e, n, r, i) {
                return c.importKey("raw", t, {
                    name: "PBKDF2"
                }, !1, ["deriveBits"]).then((function(t) {
                    return c.deriveBits({
                        name: "PBKDF2",
                        salt: e,
                        iterations: n,
                        hash: {
                            name: i
                        }
                    }, t, r << 3)
                })).then((function(t) {
                    return u.from(t)
                }))
            }
            t.exports = function(t, n, d, p, g, y) {
                "function" == typeof g && (y = g, g = void 0);
                var b = f[(g = g || "sha1").toLowerCase()];
                if (!b || "function" != typeof e.Promise) return r.nextTick((function() {
                    var e;
                    try {
                        e = s(t, n, d, p, g)
                    } catch (t) {
                        return y(t)
                    }
                    y(null, e)
                }));
                if (a(t, n, d, p), "function" != typeof y) throw new Error("No callback provided to pbkdf2");
                u.isBuffer(t) || (t = u.from(t, o)), u.isBuffer(n) || (n = u.from(n, o)),
                    function(t, e) {
                        t.then((function(t) {
                            r.nextTick((function() {
                                e(null, t)
                            }))
                        }), (function(t) {
                            r.nextTick((function() {
                                e(t)
                            }))
                        }))
                    }(function(t) {
                        if (e.process && !e.process.browser) return Promise.resolve(!1);
                        if (!c || !c.importKey || !c.deriveBits) return Promise.resolve(!1);
                        if (void 0 !== l[t]) return l[t];
                        var n = h(i = i || u.alloc(8), i, 10, 128, t).then((function() {
                            return !0
                        })).catch((function() {
                            return !1
                        }));
                        return l[t] = n, n
                    }(b).then((function(e) {
                        return e ? h(t, n, d, p, b) : s(t, n, d, p, g)
                    })), y)
            }
        }).call(this, n(12), n(7))
    }, function(t, e, n) {
        var r = n(442),
            i = n(121),
            a = n(122),
            o = n(455),
            s = n(80);

        function u(t, e, n) {
            if (t = t.toLowerCase(), a[t]) return i.createCipheriv(t, e, n);
            if (o[t]) return new r({
                key: e,
                iv: n,
                mode: t
            });
            throw new TypeError("invalid suite type")
        }

        function c(t, e, n) {
            if (t = t.toLowerCase(), a[t]) return i.createDecipheriv(t, e, n);
            if (o[t]) return new r({
                key: e,
                iv: n,
                mode: t,
                decrypt: !0
            });
            throw new TypeError("invalid suite type")
        }
        e.createCipher = e.Cipher = function(t, e) {
            var n, r;
            if (t = t.toLowerCase(), a[t]) n = a[t].key, r = a[t].iv;
            else {
                if (!o[t]) throw new TypeError("invalid suite type");
                n = 8 * o[t].key, r = o[t].iv
            }
            var i = s(e, !1, n, r);
            return u(t, i.key, i.iv)
        }, e.createCipheriv = e.Cipheriv = u, e.createDecipher = e.Decipher = function(t, e) {
            var n, r;
            if (t = t.toLowerCase(), a[t]) n = a[t].key, r = a[t].iv;
            else {
                if (!o[t]) throw new TypeError("invalid suite type");
                n = 8 * o[t].key, r = o[t].iv
            }
            var i = s(e, !1, n, r);
            return c(t, i.key, i.iv)
        }, e.createDecipheriv = e.Decipheriv = c, e.listCiphers = e.getCiphers = function() {
            return Object.keys(o).concat(i.getCiphers())
        }
    }, function(t, e, n) {
        var r = n(31),
            i = n(443),
            a = n(2),
            o = n(3).Buffer,
            s = {
                "des-ede3-cbc": i.CBC.instantiate(i.EDE),
                "des-ede3": i.EDE,
                "des-ede-cbc": i.CBC.instantiate(i.EDE),
                "des-ede": i.EDE,
                "des-cbc": i.CBC.instantiate(i.DES),
                "des-ecb": i.DES
            };

        function u(t) {
            r.call(this);
            var e, n = t.mode.toLowerCase(),
                i = s[n];
            e = t.decrypt ? "decrypt" : "encrypt";
            var a = t.key;
            o.isBuffer(a) || (a = o.from(a)), "des-ede" !== n && "des-ede-cbc" !== n || (a = o.concat([a, a.slice(0, 8)]));
            var u = t.iv;
            o.isBuffer(u) || (u = o.from(u)), this._des = i.create({
                key: a,
                iv: u,
                type: e
            })
        }
        s.des = s["des-cbc"], s.des3 = s["des-ede3-cbc"], t.exports = u, a(u, r), u.prototype._update = function(t) {
            return o.from(this._des.update(t))
        }, u.prototype._final = function() {
            return o.from(this._des.final())
        }
    }, function(t, e, n) {
        "use strict";
        e.utils = n(206), e.Cipher = n(120), e.DES = n(207), e.CBC = n(444), e.EDE = n(445)
    }, function(t, e, n) {
        "use strict";
        var r = n(16),
            i = n(2),
            a = {};

        function o(t) {
            r.equal(t.length, 8, "Invalid IV length"), this.iv = new Array(8);
            for (var e = 0; e < this.iv.length; e++) this.iv[e] = t[e]
        }
        e.instantiate = function(t) {
            function e(e) {
                t.call(this, e), this._cbcInit()
            }
            i(e, t);
            for (var n = Object.keys(a), r = 0; r < n.length; r++) {
                var o = n[r];
                e.prototype[o] = a[o]
            }
            return e.create = function(t) {
                return new e(t)
            }, e
        }, a._cbcInit = function() {
            var t = new o(this.options.iv);
            this._cbcState = t
        }, a._update = function(t, e, n, r) {
            var i = this._cbcState,
                a = this.constructor.super_.prototype,
                o = i.iv;
            if ("encrypt" === this.type) {
                for (var s = 0; s < this.blockSize; s++) o[s] ^= t[e + s];
                a._update.call(this, o, 0, n, r);
                for (s = 0; s < this.blockSize; s++) o[s] = n[r + s]
            } else {
                a._update.call(this, t, e, n, r);
                for (s = 0; s < this.blockSize; s++) n[r + s] ^= o[s];
                for (s = 0; s < this.blockSize; s++) o[s] = t[e + s]
            }
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(16),
            i = n(2),
            a = n(120),
            o = n(207);

        function s(t, e) {
            r.equal(e.length, 24, "Invalid key length");
            var n = e.slice(0, 8),
                i = e.slice(8, 16),
                a = e.slice(16, 24);
            this.ciphers = "encrypt" === t ? [o.create({
                type: "encrypt",
                key: n
            }), o.create({
                type: "decrypt",
                key: i
            }), o.create({
                type: "encrypt",
                key: a
            })] : [o.create({
                type: "decrypt",
                key: a
            }), o.create({
                type: "encrypt",
                key: i
            }), o.create({
                type: "decrypt",
                key: n
            })]
        }

        function u(t) {
            a.call(this, t);
            var e = new s(this.type, this.options.key);
            this._edeState = e
        }
        i(u, a), t.exports = u, u.create = function(t) {
            return new u(t)
        }, u.prototype._update = function(t, e, n, r) {
            var i = this._edeState;
            i.ciphers[0]._update(t, e, n, r), i.ciphers[1]._update(n, r, n, r), i.ciphers[2]._update(n, r, n, r)
        }, u.prototype._pad = o.prototype._pad, u.prototype._unpad = o.prototype._unpad
    }, function(t, e, n) {
        var r = n(122),
            i = n(211),
            a = n(3).Buffer,
            o = n(212),
            s = n(31),
            u = n(79),
            c = n(80);

        function f(t, e, n) {
            s.call(this), this._cache = new h, this._cipher = new u.AES(e), this._prev = a.from(n), this._mode = t, this._autopadding = !0
        }
        n(2)(f, s), f.prototype._update = function(t) {
            var e, n;
            this._cache.add(t);
            for (var r = []; e = this._cache.get();) n = this._mode.encrypt(this, e), r.push(n);
            return a.concat(r)
        };
        var l = a.alloc(16, 16);

        function h() {
            this.cache = a.allocUnsafe(0)
        }

        function d(t, e, n) {
            var s = r[t.toLowerCase()];
            if (!s) throw new TypeError("invalid suite type");
            if ("string" == typeof e && (e = a.from(e)), e.length !== s.key / 8) throw new TypeError("invalid key length " + e.length);
            if ("string" == typeof n && (n = a.from(n)), "GCM" !== s.mode && n.length !== s.iv) throw new TypeError("invalid iv length " + n.length);
            return "stream" === s.type ? new o(s.module, e, n) : "auth" === s.type ? new i(s.module, e, n) : new f(s.module, e, n)
        }
        f.prototype._final = function() {
            var t = this._cache.flush();
            if (this._autopadding) return t = this._mode.encrypt(this, t), this._cipher.scrub(), t;
            if (!t.equals(l)) throw this._cipher.scrub(), new Error("data not multiple of block length")
        }, f.prototype.setAutoPadding = function(t) {
            return this._autopadding = !!t, this
        }, h.prototype.add = function(t) {
            this.cache = a.concat([this.cache, t])
        }, h.prototype.get = function() {
            if (this.cache.length > 15) {
                var t = this.cache.slice(0, 16);
                return this.cache = this.cache.slice(16), t
            }
            return null
        }, h.prototype.flush = function() {
            for (var t = 16 - this.cache.length, e = a.allocUnsafe(t), n = -1; ++n < t;) e.writeUInt8(t, n);
            return a.concat([this.cache, e])
        }, e.createCipheriv = d, e.createCipher = function(t, e) {
            var n = r[t.toLowerCase()];
            if (!n) throw new TypeError("invalid suite type");
            var i = c(e, !1, n.key, n.iv);
            return d(t, i.key, i.iv)
        }
    }, function(t, e) {
        e.encrypt = function(t, e) {
            return t._cipher.encryptBlock(e)
        }, e.decrypt = function(t, e) {
            return t._cipher.decryptBlock(e)
        }
    }, function(t, e, n) {
        var r = n(55);
        e.encrypt = function(t, e) {
            var n = r(e, t._prev);
            return t._prev = t._cipher.encryptBlock(n), t._prev
        }, e.decrypt = function(t, e) {
            var n = t._prev;
            t._prev = e;
            var i = t._cipher.decryptBlock(e);
            return r(i, n)
        }
    }, function(t, e, n) {
        var r = n(3).Buffer,
            i = n(55);

        function a(t, e, n) {
            var a = e.length,
                o = i(e, t._cache);
            return t._cache = t._cache.slice(a), t._prev = r.concat([t._prev, n ? e : o]), o
        }
        e.encrypt = function(t, e, n) {
            for (var i, o = r.allocUnsafe(0); e.length;) {
                if (0 === t._cache.length && (t._cache = t._cipher.encryptBlock(t._prev), t._prev = r.allocUnsafe(0)), !(t._cache.length <= e.length)) {
                    o = r.concat([o, a(t, e, n)]);
                    break
                }
                i = t._cache.length, o = r.concat([o, a(t, e.slice(0, i), n)]), e = e.slice(i)
            }
            return o
        }
    }, function(t, e, n) {
        var r = n(3).Buffer;

        function i(t, e, n) {
            var i = t._cipher.encryptBlock(t._prev)[0] ^ e;
            return t._prev = r.concat([t._prev.slice(1), r.from([n ? e : i])]), i
        }
        e.encrypt = function(t, e, n) {
            for (var a = e.length, o = r.allocUnsafe(a), s = -1; ++s < a;) o[s] = i(t, e[s], n);
            return o
        }
    }, function(t, e, n) {
        var r = n(3).Buffer;

        function i(t, e, n) {
            for (var r, i, o = -1, s = 0; ++o < 8;) r = e & 1 << 7 - o ? 128 : 0, s += (128 & (i = t._cipher.encryptBlock(t._prev)[0] ^ r)) >> o % 8, t._prev = a(t._prev, n ? r : i);
            return s
        }

        function a(t, e) {
            var n = t.length,
                i = -1,
                a = r.allocUnsafe(t.length);
            for (t = r.concat([t, r.from([e])]); ++i < n;) a[i] = t[i] << 1 | t[i + 1] >> 7;
            return a
        }
        e.encrypt = function(t, e, n) {
            for (var a = e.length, o = r.allocUnsafe(a), s = -1; ++s < a;) o[s] = i(t, e[s], n);
            return o
        }
    }, function(t, e, n) {
        (function(t) {
            var r = n(55);

            function i(t) {
                return t._prev = t._cipher.encryptBlock(t._prev), t._prev
            }
            e.encrypt = function(e, n) {
                for (; e._cache.length < n.length;) e._cache = t.concat([e._cache, i(e)]);
                var a = e._cache.slice(0, n.length);
                return e._cache = e._cache.slice(n.length), r(n, a)
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        var r = n(3).Buffer,
            i = r.alloc(16, 0);

        function a(t) {
            var e = r.allocUnsafe(16);
            return e.writeUInt32BE(t[0] >>> 0, 0), e.writeUInt32BE(t[1] >>> 0, 4), e.writeUInt32BE(t[2] >>> 0, 8), e.writeUInt32BE(t[3] >>> 0, 12), e
        }

        function o(t) {
            this.h = t, this.state = r.alloc(16, 0), this.cache = r.allocUnsafe(0)
        }
        o.prototype.ghash = function(t) {
            for (var e = -1; ++e < t.length;) this.state[e] ^= t[e];
            this._multiply()
        }, o.prototype._multiply = function() {
            for (var t, e, n, r = [(t = this.h).readUInt32BE(0), t.readUInt32BE(4), t.readUInt32BE(8), t.readUInt32BE(12)], i = [0, 0, 0, 0], o = -1; ++o < 128;) {
                for (0 != (this.state[~~(o / 8)] & 1 << 7 - o % 8) && (i[0] ^= r[0], i[1] ^= r[1], i[2] ^= r[2], i[3] ^= r[3]), n = 0 != (1 & r[3]), e = 3; e > 0; e--) r[e] = r[e] >>> 1 | (1 & r[e - 1]) << 31;
                r[0] = r[0] >>> 1, n && (r[0] = r[0] ^ 225 << 24)
            }
            this.state = a(i)
        }, o.prototype.update = function(t) {
            var e;
            for (this.cache = r.concat([this.cache, t]); this.cache.length >= 16;) e = this.cache.slice(0, 16), this.cache = this.cache.slice(16), this.ghash(e)
        }, o.prototype.final = function(t, e) {
            return this.cache.length && this.ghash(r.concat([this.cache, i], 16)), this.ghash(a([0, t, 0, e])), this.state
        }, t.exports = o
    }, function(t, e, n) {
        var r = n(211),
            i = n(3).Buffer,
            a = n(122),
            o = n(212),
            s = n(31),
            u = n(79),
            c = n(80);

        function f(t, e, n) {
            s.call(this), this._cache = new l, this._last = void 0, this._cipher = new u.AES(e), this._prev = i.from(n), this._mode = t, this._autopadding = !0
        }

        function l() {
            this.cache = i.allocUnsafe(0)
        }

        function h(t, e, n) {
            var s = a[t.toLowerCase()];
            if (!s) throw new TypeError("invalid suite type");
            if ("string" == typeof n && (n = i.from(n)), "GCM" !== s.mode && n.length !== s.iv) throw new TypeError("invalid iv length " + n.length);
            if ("string" == typeof e && (e = i.from(e)), e.length !== s.key / 8) throw new TypeError("invalid key length " + e.length);
            return "stream" === s.type ? new o(s.module, e, n, !0) : "auth" === s.type ? new r(s.module, e, n, !0) : new f(s.module, e, n)
        }
        n(2)(f, s), f.prototype._update = function(t) {
            var e, n;
            this._cache.add(t);
            for (var r = []; e = this._cache.get(this._autopadding);) n = this._mode.decrypt(this, e), r.push(n);
            return i.concat(r)
        }, f.prototype._final = function() {
            var t = this._cache.flush();
            if (this._autopadding) return function(t) {
                var e = t[15];
                if (e < 1 || e > 16) throw new Error("unable to decrypt data");
                var n = -1;
                for (; ++n < e;)
                    if (t[n + (16 - e)] !== e) throw new Error("unable to decrypt data");
                if (16 === e) return;
                return t.slice(0, 16 - e)
            }(this._mode.decrypt(this, t));
            if (t) throw new Error("data not multiple of block length")
        }, f.prototype.setAutoPadding = function(t) {
            return this._autopadding = !!t, this
        }, l.prototype.add = function(t) {
            this.cache = i.concat([this.cache, t])
        }, l.prototype.get = function(t) {
            var e;
            if (t) {
                if (this.cache.length > 16) return e = this.cache.slice(0, 16), this.cache = this.cache.slice(16), e
            } else if (this.cache.length >= 16) return e = this.cache.slice(0, 16), this.cache = this.cache.slice(16), e;
            return null
        }, l.prototype.flush = function() {
            if (this.cache.length) return this.cache
        }, e.createDecipher = function(t, e) {
            var n = a[t.toLowerCase()];
            if (!n) throw new TypeError("invalid suite type");
            var r = c(e, !1, n.key, n.iv);
            return h(t, r.key, r.iv)
        }, e.createDecipheriv = h
    }, function(t, e) {
        e["des-ecb"] = {
            key: 8,
            iv: 0
        }, e["des-cbc"] = e.des = {
            key: 8,
            iv: 8
        }, e["des-ede3-cbc"] = e.des3 = {
            key: 24,
            iv: 8
        }, e["des-ede3"] = {
            key: 24,
            iv: 0
        }, e["des-ede-cbc"] = {
            key: 16,
            iv: 8
        }, e["des-ede"] = {
            key: 16,
            iv: 0
        }
    }, function(t, e, n) {
        (function(t) {
            var r = n(213),
                i = n(459),
                a = n(460);
            var o = {
                binary: !0,
                hex: !0,
                base64: !0
            };
            e.DiffieHellmanGroup = e.createDiffieHellmanGroup = e.getDiffieHellman = function(e) {
                var n = new t(i[e].prime, "hex"),
                    r = new t(i[e].gen, "hex");
                return new a(n, r)
            }, e.createDiffieHellman = e.DiffieHellman = function e(n, i, s, u) {
                return t.isBuffer(i) || void 0 === o[i] ? e(n, "binary", i, s) : (i = i || "binary", u = u || "binary", s = s || new t([2]), t.isBuffer(s) || (s = new t(s, u)), "number" == typeof n ? new a(r(n, s), s, !0) : (t.isBuffer(n) || (n = new t(n, i)), new a(n, s, !0)))
            }
        }).call(this, n(8).Buffer)
    }, function(t, e) {}, function(t, e) {}, function(t) {
        t.exports = JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')
    }, function(t, e, n) {
        (function(e) {
            var r = n(5),
                i = new(n(214)),
                a = new r(24),
                o = new r(11),
                s = new r(10),
                u = new r(3),
                c = new r(7),
                f = n(213),
                l = n(44);

            function h(t, n) {
                return n = n || "utf8", e.isBuffer(t) || (t = new e(t, n)), this._pub = new r(t), this
            }

            function d(t, n) {
                return n = n || "utf8", e.isBuffer(t) || (t = new e(t, n)), this._priv = new r(t), this
            }
            t.exports = g;
            var p = {};

            function g(t, e, n) {
                this.setGenerator(e), this.__prime = new r(t), this._prime = r.mont(this.__prime), this._primeLen = t.length, this._pub = void 0, this._priv = void 0, this._primeCode = void 0, n ? (this.setPublicKey = h, this.setPrivateKey = d) : this._primeCode = 8
            }

            function y(t, n) {
                var r = new e(t.toArray());
                return n ? r.toString(n) : r
            }
            Object.defineProperty(g.prototype, "verifyError", {
                enumerable: !0,
                get: function() {
                    return "number" != typeof this._primeCode && (this._primeCode = function(t, e) {
                        var n = e.toString("hex"),
                            r = [n, t.toString(16)].join("_");
                        if (r in p) return p[r];
                        var l, h = 0;
                        if (t.isEven() || !f.simpleSieve || !f.fermatTest(t) || !i.test(t)) return h += 1, h += "02" === n || "05" === n ? 8 : 4, p[r] = h, h;
                        switch (i.test(t.shrn(1)) || (h += 2), n) {
                            case "02":
                                t.mod(a).cmp(o) && (h += 8);
                                break;
                            case "05":
                                (l = t.mod(s)).cmp(u) && l.cmp(c) && (h += 8);
                                break;
                            default:
                                h += 4
                        }
                        return p[r] = h, h
                    }(this.__prime, this.__gen)), this._primeCode
                }
            }), g.prototype.generateKeys = function() {
                return this._priv || (this._priv = new r(l(this._primeLen))), this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(), this.getPublicKey()
            }, g.prototype.computeSecret = function(t) {
                var n = (t = (t = new r(t)).toRed(this._prime)).redPow(this._priv).fromRed(),
                    i = new e(n.toArray()),
                    a = this.getPrime();
                if (i.length < a.length) {
                    var o = new e(a.length - i.length);
                    o.fill(0), i = e.concat([o, i])
                }
                return i
            }, g.prototype.getPublicKey = function(t) {
                return y(this._pub, t)
            }, g.prototype.getPrivateKey = function(t) {
                return y(this._priv, t)
            }, g.prototype.getPrime = function(t) {
                return y(this.__prime, t)
            }, g.prototype.getGenerator = function(t) {
                return y(this._gen, t)
            }, g.prototype.setGenerator = function(t, n) {
                return n = n || "utf8", e.isBuffer(t) || (t = new e(t, n)), this.__gen = t, this._gen = new r(t), this
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        (function(e) {
            var r = n(53),
                i = n(112),
                a = n(2),
                o = n(462),
                s = n(494),
                u = n(201);

            function c(t) {
                i.Writable.call(this);
                var e = u[t];
                if (!e) throw new Error("Unknown message digest");
                this._hashType = e.hash, this._hash = r(e.hash), this._tag = e.id, this._signType = e.sign
            }

            function f(t) {
                i.Writable.call(this);
                var e = u[t];
                if (!e) throw new Error("Unknown message digest");
                this._hash = r(e.hash), this._tag = e.id, this._signType = e.sign
            }

            function l(t) {
                return new c(t)
            }

            function h(t) {
                return new f(t)
            }
            Object.keys(u).forEach((function(t) {
                u[t].id = new e(u[t].id, "hex"), u[t.toLowerCase()] = u[t]
            })), a(c, i.Writable), c.prototype._write = function(t, e, n) {
                this._hash.update(t), n()
            }, c.prototype.update = function(t, n) {
                return "string" == typeof t && (t = new e(t, n)), this._hash.update(t), this
            }, c.prototype.sign = function(t, e) {
                this.end();
                var n = this._hash.digest(),
                    r = o(n, t, this._hashType, this._signType, this._tag);
                return e ? r.toString(e) : r
            }, a(f, i.Writable), f.prototype._write = function(t, e, n) {
                this._hash.update(t), n()
            }, f.prototype.update = function(t, n) {
                return "string" == typeof t && (t = new e(t, n)), this._hash.update(t), this
            }, f.prototype.verify = function(t, n, r) {
                "string" == typeof n && (n = new e(n, r)), this.end();
                var i = this._hash.digest();
                return s(n, i, t, this._signType, this._tag)
            }, t.exports = {
                Sign: l,
                Verify: h,
                createSign: l,
                createVerify: h
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        (function(e) {
            var r = n(199),
                i = n(124),
                a = n(125).ec,
                o = n(5),
                s = n(82),
                u = n(224);

            function c(t, n, i, a) {
                if ((t = new e(t.toArray())).length < n.byteLength()) {
                    var o = new e(n.byteLength() - t.length);
                    o.fill(0), t = e.concat([o, t])
                }
                var s = i.length,
                    u = function(t, n) {
                        t = (t = f(t, n)).mod(n);
                        var r = new e(t.toArray());
                        if (r.length < n.byteLength()) {
                            var i = new e(n.byteLength() - r.length);
                            i.fill(0), r = e.concat([i, r])
                        }
                        return r
                    }(i, n),
                    c = new e(s);
                c.fill(1);
                var l = new e(s);
                return l.fill(0), l = r(a, l).update(c).update(new e([0])).update(t).update(u).digest(), c = r(a, l).update(c).digest(), {
                    k: l = r(a, l).update(c).update(new e([1])).update(t).update(u).digest(),
                    v: c = r(a, l).update(c).digest()
                }
            }

            function f(t, e) {
                var n = new o(t),
                    r = (t.length << 3) - e.bitLength();
                return r > 0 && n.ishrn(r), n
            }

            function l(t, n, i) {
                var a, o;
                do {
                    for (a = new e(0); 8 * a.length < t.bitLength();) n.v = r(i, n.k).update(n.v).digest(), a = e.concat([a, n.v]);
                    o = f(a, t), n.k = r(i, n.k).update(n.v).update(new e([0])).digest(), n.v = r(i, n.k).update(n.v).digest()
                } while (-1 !== o.cmp(t));
                return o
            }

            function h(t, e, n, r) {
                return t.toRed(o.mont(n)).redPow(e).fromRed().mod(r)
            }
            t.exports = function(t, n, r, d, p) {
                var g = s(n);
                if (g.curve) {
                    if ("ecdsa" !== d && "ecdsa/rsa" !== d) throw new Error("wrong private key type");
                    return function(t, n) {
                        var r = u[n.curve.join(".")];
                        if (!r) throw new Error("unknown curve " + n.curve.join("."));
                        var i = new a(r).keyFromPrivate(n.privateKey).sign(t);
                        return new e(i.toDER())
                    }(t, g)
                }
                if ("dsa" === g.type) {
                    if ("dsa" !== d) throw new Error("wrong private key type");
                    return function(t, n, r) {
                        var i, a = n.params.priv_key,
                            s = n.params.p,
                            u = n.params.q,
                            d = n.params.g,
                            p = new o(0),
                            g = f(t, u).mod(u),
                            y = !1,
                            b = c(a, u, t, r);
                        for (; !1 === y;) i = l(u, b, r), p = h(d, i, s, u), 0 === (y = i.invm(u).imul(g.add(a.mul(p))).mod(u)).cmpn(0) && (y = !1, p = new o(0));
                        return function(t, n) {
                            t = t.toArray(), n = n.toArray(), 128 & t[0] && (t = [0].concat(t));
                            128 & n[0] && (n = [0].concat(n));
                            var r = [48, t.length + n.length + 4, 2, t.length];
                            return r = r.concat(t, [2, n.length], n), new e(r)
                        }(p, y)
                    }(t, g, r)
                }
                if ("rsa" !== d && "ecdsa/rsa" !== d) throw new Error("wrong private key type");
                t = e.concat([p, t]);
                for (var y = g.modulus.byteLength(), b = [0, 1]; t.length + b.length + 1 < y;) b.push(255);
                b.push(0);
                for (var v = -1; ++v < t.length;) b.push(t[v]);
                return i(b, g)
            }, t.exports.getKey = c, t.exports.makeKey = l
        }).call(this, n(8).Buffer)
    }, function(t) {
        t.exports = JSON.parse('{"name":"elliptic","version":"6.5.2","description":"EC cryptography","main":"lib/elliptic.js","files":["lib"],"scripts":{"jscs":"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js","jshint":"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js","lint":"npm run jscs && npm run jshint","unit":"istanbul test _mocha --reporter=spec test/index.js","test":"npm run lint && npm run unit","version":"grunt dist && git add dist/"},"repository":{"type":"git","url":"git@github.com:indutny/elliptic"},"keywords":["EC","Elliptic","curve","Cryptography"],"author":"Fedor Indutny <fedor@indutny.com>","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^1.4.3","coveralls":"^3.0.8","grunt":"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.2","jscs":"^3.0.7","jshint":"^2.10.3","mocha":"^6.2.2"},"dependencies":{"bn.js":"^4.4.0","brorand":"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0","inherits":"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"}}')
    }, function(t, e, n) {
        "use strict";
        var r = n(17),
            i = n(5),
            a = n(2),
            o = n(81),
            s = r.assert;

        function u(t) {
            o.call(this, "short", t), this.a = new i(t.a, 16).toRed(this.red), this.b = new i(t.b, 16).toRed(this.red), this.tinv = this.two.redInvm(), this.zeroA = 0 === this.a.fromRed().cmpn(0), this.threeA = 0 === this.a.fromRed().sub(this.p).cmpn(-3), this.endo = this._getEndomorphism(t), this._endoWnafT1 = new Array(4), this._endoWnafT2 = new Array(4)
        }

        function c(t, e, n, r) {
            o.BasePoint.call(this, t, "affine"), null === e && null === n ? (this.x = null, this.y = null, this.inf = !0) : (this.x = new i(e, 16), this.y = new i(n, 16), r && (this.x.forceRed(this.curve.red), this.y.forceRed(this.curve.red)), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.y.red || (this.y = this.y.toRed(this.curve.red)), this.inf = !1)
        }

        function f(t, e, n, r) {
            o.BasePoint.call(this, t, "jacobian"), null === e && null === n && null === r ? (this.x = this.curve.one, this.y = this.curve.one, this.z = new i(0)) : (this.x = new i(e, 16), this.y = new i(n, 16), this.z = new i(r, 16)), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.y.red || (this.y = this.y.toRed(this.curve.red)), this.z.red || (this.z = this.z.toRed(this.curve.red)), this.zOne = this.z === this.curve.one
        }
        a(u, o), t.exports = u, u.prototype._getEndomorphism = function(t) {
            if (this.zeroA && this.g && this.n && 1 === this.p.modn(3)) {
                var e, n;
                if (t.beta) e = new i(t.beta, 16).toRed(this.red);
                else {
                    var r = this._getEndoRoots(this.p);
                    e = (e = r[0].cmp(r[1]) < 0 ? r[0] : r[1]).toRed(this.red)
                }
                if (t.lambda) n = new i(t.lambda, 16);
                else {
                    var a = this._getEndoRoots(this.n);
                    0 === this.g.mul(a[0]).x.cmp(this.g.x.redMul(e)) ? n = a[0] : (n = a[1], s(0 === this.g.mul(n).x.cmp(this.g.x.redMul(e))))
                }
                return {
                    beta: e,
                    lambda: n,
                    basis: t.basis ? t.basis.map((function(t) {
                        return {
                            a: new i(t.a, 16),
                            b: new i(t.b, 16)
                        }
                    })) : this._getEndoBasis(n)
                }
            }
        }, u.prototype._getEndoRoots = function(t) {
            var e = t === this.p ? this.red : i.mont(t),
                n = new i(2).toRed(e).redInvm(),
                r = n.redNeg(),
                a = new i(3).toRed(e).redNeg().redSqrt().redMul(n);
            return [r.redAdd(a).fromRed(), r.redSub(a).fromRed()]
        }, u.prototype._getEndoBasis = function(t) {
            for (var e, n, r, a, o, s, u, c, f, l = this.n.ushrn(Math.floor(this.n.bitLength() / 2)), h = t, d = this.n.clone(), p = new i(1), g = new i(0), y = new i(0), b = new i(1), v = 0; 0 !== h.cmpn(0);) {
                var m = d.div(h);
                c = d.sub(m.mul(h)), f = y.sub(m.mul(p));
                var _ = b.sub(m.mul(g));
                if (!r && c.cmp(l) < 0) e = u.neg(), n = p, r = c.neg(), a = f;
                else if (r && 2 == ++v) break;
                u = c, d = h, h = c, y = p, p = f, b = g, g = _
            }
            o = c.neg(), s = f;
            var w = r.sqr().add(a.sqr());
            return o.sqr().add(s.sqr()).cmp(w) >= 0 && (o = e, s = n), r.negative && (r = r.neg(), a = a.neg()), o.negative && (o = o.neg(), s = s.neg()), [{
                a: r,
                b: a
            }, {
                a: o,
                b: s
            }]
        }, u.prototype._endoSplit = function(t) {
            var e = this.endo.basis,
                n = e[0],
                r = e[1],
                i = r.b.mul(t).divRound(this.n),
                a = n.b.neg().mul(t).divRound(this.n),
                o = i.mul(n.a),
                s = a.mul(r.a),
                u = i.mul(n.b),
                c = a.mul(r.b);
            return {
                k1: t.sub(o).sub(s),
                k2: u.add(c).neg()
            }
        }, u.prototype.pointFromX = function(t, e) {
            (t = new i(t, 16)).red || (t = t.toRed(this.red));
            var n = t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),
                r = n.redSqrt();
            if (0 !== r.redSqr().redSub(n).cmp(this.zero)) throw new Error("invalid point");
            var a = r.fromRed().isOdd();
            return (e && !a || !e && a) && (r = r.redNeg()), this.point(t, r)
        }, u.prototype.validate = function(t) {
            if (t.inf) return !0;
            var e = t.x,
                n = t.y,
                r = this.a.redMul(e),
                i = e.redSqr().redMul(e).redIAdd(r).redIAdd(this.b);
            return 0 === n.redSqr().redISub(i).cmpn(0)
        }, u.prototype._endoWnafMulAdd = function(t, e, n) {
            for (var r = this._endoWnafT1, i = this._endoWnafT2, a = 0; a < t.length; a++) {
                var o = this._endoSplit(e[a]),
                    s = t[a],
                    u = s._getBeta();
                o.k1.negative && (o.k1.ineg(), s = s.neg(!0)), o.k2.negative && (o.k2.ineg(), u = u.neg(!0)), r[2 * a] = s, r[2 * a + 1] = u, i[2 * a] = o.k1, i[2 * a + 1] = o.k2
            }
            for (var c = this._wnafMulAdd(1, r, i, 2 * a, n), f = 0; f < 2 * a; f++) r[f] = null, i[f] = null;
            return c
        }, a(c, o.BasePoint), u.prototype.point = function(t, e, n) {
            return new c(this, t, e, n)
        }, u.prototype.pointFromJSON = function(t, e) {
            return c.fromJSON(this, t, e)
        }, c.prototype._getBeta = function() {
            if (this.curve.endo) {
                var t = this.precomputed;
                if (t && t.beta) return t.beta;
                var e = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
                if (t) {
                    var n = this.curve,
                        r = function(t) {
                            return n.point(t.x.redMul(n.endo.beta), t.y)
                        };
                    t.beta = e, e.precomputed = {
                        beta: null,
                        naf: t.naf && {
                            wnd: t.naf.wnd,
                            points: t.naf.points.map(r)
                        },
                        doubles: t.doubles && {
                            step: t.doubles.step,
                            points: t.doubles.points.map(r)
                        }
                    }
                }
                return e
            }
        }, c.prototype.toJSON = function() {
            return this.precomputed ? [this.x, this.y, this.precomputed && {
                doubles: this.precomputed.doubles && {
                    step: this.precomputed.doubles.step,
                    points: this.precomputed.doubles.points.slice(1)
                },
                naf: this.precomputed.naf && {
                    wnd: this.precomputed.naf.wnd,
                    points: this.precomputed.naf.points.slice(1)
                }
            }] : [this.x, this.y]
        }, c.fromJSON = function(t, e, n) {
            "string" == typeof e && (e = JSON.parse(e));
            var r = t.point(e[0], e[1], n);
            if (!e[2]) return r;

            function i(e) {
                return t.point(e[0], e[1], n)
            }
            var a = e[2];
            return r.precomputed = {
                beta: null,
                doubles: a.doubles && {
                    step: a.doubles.step,
                    points: [r].concat(a.doubles.points.map(i))
                },
                naf: a.naf && {
                    wnd: a.naf.wnd,
                    points: [r].concat(a.naf.points.map(i))
                }
            }, r
        }, c.prototype.inspect = function() {
            return this.isInfinity() ? "<EC Point Infinity>" : "<EC Point x: " + this.x.fromRed().toString(16, 2) + " y: " + this.y.fromRed().toString(16, 2) + ">"
        }, c.prototype.isInfinity = function() {
            return this.inf
        }, c.prototype.add = function(t) {
            if (this.inf) return t;
            if (t.inf) return this;
            if (this.eq(t)) return this.dbl();
            if (this.neg().eq(t)) return this.curve.point(null, null);
            if (0 === this.x.cmp(t.x)) return this.curve.point(null, null);
            var e = this.y.redSub(t.y);
            0 !== e.cmpn(0) && (e = e.redMul(this.x.redSub(t.x).redInvm()));
            var n = e.redSqr().redISub(this.x).redISub(t.x),
                r = e.redMul(this.x.redSub(n)).redISub(this.y);
            return this.curve.point(n, r)
        }, c.prototype.dbl = function() {
            if (this.inf) return this;
            var t = this.y.redAdd(this.y);
            if (0 === t.cmpn(0)) return this.curve.point(null, null);
            var e = this.curve.a,
                n = this.x.redSqr(),
                r = t.redInvm(),
                i = n.redAdd(n).redIAdd(n).redIAdd(e).redMul(r),
                a = i.redSqr().redISub(this.x.redAdd(this.x)),
                o = i.redMul(this.x.redSub(a)).redISub(this.y);
            return this.curve.point(a, o)
        }, c.prototype.getX = function() {
            return this.x.fromRed()
        }, c.prototype.getY = function() {
            return this.y.fromRed()
        }, c.prototype.mul = function(t) {
            return t = new i(t, 16), this.isInfinity() ? this : this._hasDoubles(t) ? this.curve._fixedNafMul(this, t) : this.curve.endo ? this.curve._endoWnafMulAdd([this], [t]) : this.curve._wnafMul(this, t)
        }, c.prototype.mulAdd = function(t, e, n) {
            var r = [this, e],
                i = [t, n];
            return this.curve.endo ? this.curve._endoWnafMulAdd(r, i) : this.curve._wnafMulAdd(1, r, i, 2)
        }, c.prototype.jmulAdd = function(t, e, n) {
            var r = [this, e],
                i = [t, n];
            return this.curve.endo ? this.curve._endoWnafMulAdd(r, i, !0) : this.curve._wnafMulAdd(1, r, i, 2, !0)
        }, c.prototype.eq = function(t) {
            return this === t || this.inf === t.inf && (this.inf || 0 === this.x.cmp(t.x) && 0 === this.y.cmp(t.y))
        }, c.prototype.neg = function(t) {
            if (this.inf) return this;
            var e = this.curve.point(this.x, this.y.redNeg());
            if (t && this.precomputed) {
                var n = this.precomputed,
                    r = function(t) {
                        return t.neg()
                    };
                e.precomputed = {
                    naf: n.naf && {
                        wnd: n.naf.wnd,
                        points: n.naf.points.map(r)
                    },
                    doubles: n.doubles && {
                        step: n.doubles.step,
                        points: n.doubles.points.map(r)
                    }
                }
            }
            return e
        }, c.prototype.toJ = function() {
            return this.inf ? this.curve.jpoint(null, null, null) : this.curve.jpoint(this.x, this.y, this.curve.one)
        }, a(f, o.BasePoint), u.prototype.jpoint = function(t, e, n) {
            return new f(this, t, e, n)
        }, f.prototype.toP = function() {
            if (this.isInfinity()) return this.curve.point(null, null);
            var t = this.z.redInvm(),
                e = t.redSqr(),
                n = this.x.redMul(e),
                r = this.y.redMul(e).redMul(t);
            return this.curve.point(n, r)
        }, f.prototype.neg = function() {
            return this.curve.jpoint(this.x, this.y.redNeg(), this.z)
        }, f.prototype.add = function(t) {
            if (this.isInfinity()) return t;
            if (t.isInfinity()) return this;
            var e = t.z.redSqr(),
                n = this.z.redSqr(),
                r = this.x.redMul(e),
                i = t.x.redMul(n),
                a = this.y.redMul(e.redMul(t.z)),
                o = t.y.redMul(n.redMul(this.z)),
                s = r.redSub(i),
                u = a.redSub(o);
            if (0 === s.cmpn(0)) return 0 !== u.cmpn(0) ? this.curve.jpoint(null, null, null) : this.dbl();
            var c = s.redSqr(),
                f = c.redMul(s),
                l = r.redMul(c),
                h = u.redSqr().redIAdd(f).redISub(l).redISub(l),
                d = u.redMul(l.redISub(h)).redISub(a.redMul(f)),
                p = this.z.redMul(t.z).redMul(s);
            return this.curve.jpoint(h, d, p)
        }, f.prototype.mixedAdd = function(t) {
            if (this.isInfinity()) return t.toJ();
            if (t.isInfinity()) return this;
            var e = this.z.redSqr(),
                n = this.x,
                r = t.x.redMul(e),
                i = this.y,
                a = t.y.redMul(e).redMul(this.z),
                o = n.redSub(r),
                s = i.redSub(a);
            if (0 === o.cmpn(0)) return 0 !== s.cmpn(0) ? this.curve.jpoint(null, null, null) : this.dbl();
            var u = o.redSqr(),
                c = u.redMul(o),
                f = n.redMul(u),
                l = s.redSqr().redIAdd(c).redISub(f).redISub(f),
                h = s.redMul(f.redISub(l)).redISub(i.redMul(c)),
                d = this.z.redMul(o);
            return this.curve.jpoint(l, h, d)
        }, f.prototype.dblp = function(t) {
            if (0 === t) return this;
            if (this.isInfinity()) return this;
            if (!t) return this.dbl();
            if (this.curve.zeroA || this.curve.threeA) {
                for (var e = this, n = 0; n < t; n++) e = e.dbl();
                return e
            }
            var r = this.curve.a,
                i = this.curve.tinv,
                a = this.x,
                o = this.y,
                s = this.z,
                u = s.redSqr().redSqr(),
                c = o.redAdd(o);
            for (n = 0; n < t; n++) {
                var f = a.redSqr(),
                    l = c.redSqr(),
                    h = l.redSqr(),
                    d = f.redAdd(f).redIAdd(f).redIAdd(r.redMul(u)),
                    p = a.redMul(l),
                    g = d.redSqr().redISub(p.redAdd(p)),
                    y = p.redISub(g),
                    b = d.redMul(y);
                b = b.redIAdd(b).redISub(h);
                var v = c.redMul(s);
                n + 1 < t && (u = u.redMul(h)), a = g, s = v, c = b
            }
            return this.curve.jpoint(a, c.redMul(i), s)
        }, f.prototype.dbl = function() {
            return this.isInfinity() ? this : this.curve.zeroA ? this._zeroDbl() : this.curve.threeA ? this._threeDbl() : this._dbl()
        }, f.prototype._zeroDbl = function() {
            var t, e, n;
            if (this.zOne) {
                var r = this.x.redSqr(),
                    i = this.y.redSqr(),
                    a = i.redSqr(),
                    o = this.x.redAdd(i).redSqr().redISub(r).redISub(a);
                o = o.redIAdd(o);
                var s = r.redAdd(r).redIAdd(r),
                    u = s.redSqr().redISub(o).redISub(o),
                    c = a.redIAdd(a);
                c = (c = c.redIAdd(c)).redIAdd(c), t = u, e = s.redMul(o.redISub(u)).redISub(c), n = this.y.redAdd(this.y)
            } else {
                var f = this.x.redSqr(),
                    l = this.y.redSqr(),
                    h = l.redSqr(),
                    d = this.x.redAdd(l).redSqr().redISub(f).redISub(h);
                d = d.redIAdd(d);
                var p = f.redAdd(f).redIAdd(f),
                    g = p.redSqr(),
                    y = h.redIAdd(h);
                y = (y = y.redIAdd(y)).redIAdd(y), t = g.redISub(d).redISub(d), e = p.redMul(d.redISub(t)).redISub(y), n = (n = this.y.redMul(this.z)).redIAdd(n)
            }
            return this.curve.jpoint(t, e, n)
        }, f.prototype._threeDbl = function() {
            var t, e, n;
            if (this.zOne) {
                var r = this.x.redSqr(),
                    i = this.y.redSqr(),
                    a = i.redSqr(),
                    o = this.x.redAdd(i).redSqr().redISub(r).redISub(a);
                o = o.redIAdd(o);
                var s = r.redAdd(r).redIAdd(r).redIAdd(this.curve.a),
                    u = s.redSqr().redISub(o).redISub(o);
                t = u;
                var c = a.redIAdd(a);
                c = (c = c.redIAdd(c)).redIAdd(c), e = s.redMul(o.redISub(u)).redISub(c), n = this.y.redAdd(this.y)
            } else {
                var f = this.z.redSqr(),
                    l = this.y.redSqr(),
                    h = this.x.redMul(l),
                    d = this.x.redSub(f).redMul(this.x.redAdd(f));
                d = d.redAdd(d).redIAdd(d);
                var p = h.redIAdd(h),
                    g = (p = p.redIAdd(p)).redAdd(p);
                t = d.redSqr().redISub(g), n = this.y.redAdd(this.z).redSqr().redISub(l).redISub(f);
                var y = l.redSqr();
                y = (y = (y = y.redIAdd(y)).redIAdd(y)).redIAdd(y), e = d.redMul(p.redISub(t)).redISub(y)
            }
            return this.curve.jpoint(t, e, n)
        }, f.prototype._dbl = function() {
            var t = this.curve.a,
                e = this.x,
                n = this.y,
                r = this.z,
                i = r.redSqr().redSqr(),
                a = e.redSqr(),
                o = n.redSqr(),
                s = a.redAdd(a).redIAdd(a).redIAdd(t.redMul(i)),
                u = e.redAdd(e),
                c = (u = u.redIAdd(u)).redMul(o),
                f = s.redSqr().redISub(c.redAdd(c)),
                l = c.redISub(f),
                h = o.redSqr();
            h = (h = (h = h.redIAdd(h)).redIAdd(h)).redIAdd(h);
            var d = s.redMul(l).redISub(h),
                p = n.redAdd(n).redMul(r);
            return this.curve.jpoint(f, d, p)
        }, f.prototype.trpl = function() {
            if (!this.curve.zeroA) return this.dbl().add(this);
            var t = this.x.redSqr(),
                e = this.y.redSqr(),
                n = this.z.redSqr(),
                r = e.redSqr(),
                i = t.redAdd(t).redIAdd(t),
                a = i.redSqr(),
                o = this.x.redAdd(e).redSqr().redISub(t).redISub(r),
                s = (o = (o = (o = o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(a)).redSqr(),
                u = r.redIAdd(r);
            u = (u = (u = u.redIAdd(u)).redIAdd(u)).redIAdd(u);
            var c = i.redIAdd(o).redSqr().redISub(a).redISub(s).redISub(u),
                f = e.redMul(c);
            f = (f = f.redIAdd(f)).redIAdd(f);
            var l = this.x.redMul(s).redISub(f);
            l = (l = l.redIAdd(l)).redIAdd(l);
            var h = this.y.redMul(c.redMul(u.redISub(c)).redISub(o.redMul(s)));
            h = (h = (h = h.redIAdd(h)).redIAdd(h)).redIAdd(h);
            var d = this.z.redAdd(o).redSqr().redISub(n).redISub(s);
            return this.curve.jpoint(l, h, d)
        }, f.prototype.mul = function(t, e) {
            return t = new i(t, e), this.curve._wnafMul(this, t)
        }, f.prototype.eq = function(t) {
            if ("affine" === t.type) return this.eq(t.toJ());
            if (this === t) return !0;
            var e = this.z.redSqr(),
                n = t.z.redSqr();
            if (0 !== this.x.redMul(n).redISub(t.x.redMul(e)).cmpn(0)) return !1;
            var r = e.redMul(this.z),
                i = n.redMul(t.z);
            return 0 === this.y.redMul(i).redISub(t.y.redMul(r)).cmpn(0)
        }, f.prototype.eqXToP = function(t) {
            var e = this.z.redSqr(),
                n = t.toRed(this.curve.red).redMul(e);
            if (0 === this.x.cmp(n)) return !0;
            for (var r = t.clone(), i = this.curve.redN.redMul(e);;) {
                if (r.iadd(this.curve.n), r.cmp(this.curve.p) >= 0) return !1;
                if (n.redIAdd(i), 0 === this.x.cmp(n)) return !0
            }
        }, f.prototype.inspect = function() {
            return this.isInfinity() ? "<EC JPoint Infinity>" : "<EC JPoint x: " + this.x.toString(16, 2) + " y: " + this.y.toString(16, 2) + " z: " + this.z.toString(16, 2) + ">"
        }, f.prototype.isInfinity = function() {
            return 0 === this.z.cmpn(0)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(5),
            i = n(2),
            a = n(81),
            o = n(17);

        function s(t) {
            a.call(this, "mont", t), this.a = new r(t.a, 16).toRed(this.red), this.b = new r(t.b, 16).toRed(this.red), this.i4 = new r(4).toRed(this.red).redInvm(), this.two = new r(2).toRed(this.red), this.a24 = this.i4.redMul(this.a.redAdd(this.two))
        }

        function u(t, e, n) {
            a.BasePoint.call(this, t, "projective"), null === e && null === n ? (this.x = this.curve.one, this.z = this.curve.zero) : (this.x = new r(e, 16), this.z = new r(n, 16), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.z.red || (this.z = this.z.toRed(this.curve.red)))
        }
        i(s, a), t.exports = s, s.prototype.validate = function(t) {
            var e = t.normalize().x,
                n = e.redSqr(),
                r = n.redMul(e).redAdd(n.redMul(this.a)).redAdd(e);
            return 0 === r.redSqrt().redSqr().cmp(r)
        }, i(u, a.BasePoint), s.prototype.decodePoint = function(t, e) {
            return this.point(o.toArray(t, e), 1)
        }, s.prototype.point = function(t, e) {
            return new u(this, t, e)
        }, s.prototype.pointFromJSON = function(t) {
            return u.fromJSON(this, t)
        }, u.prototype.precompute = function() {}, u.prototype._encode = function() {
            return this.getX().toArray("be", this.curve.p.byteLength())
        }, u.fromJSON = function(t, e) {
            return new u(t, e[0], e[1] || t.one)
        }, u.prototype.inspect = function() {
            return this.isInfinity() ? "<EC Point Infinity>" : "<EC Point x: " + this.x.fromRed().toString(16, 2) + " z: " + this.z.fromRed().toString(16, 2) + ">"
        }, u.prototype.isInfinity = function() {
            return 0 === this.z.cmpn(0)
        }, u.prototype.dbl = function() {
            var t = this.x.redAdd(this.z).redSqr(),
                e = this.x.redSub(this.z).redSqr(),
                n = t.redSub(e),
                r = t.redMul(e),
                i = n.redMul(e.redAdd(this.curve.a24.redMul(n)));
            return this.curve.point(r, i)
        }, u.prototype.add = function() {
            throw new Error("Not supported on Montgomery curve")
        }, u.prototype.diffAdd = function(t, e) {
            var n = this.x.redAdd(this.z),
                r = this.x.redSub(this.z),
                i = t.x.redAdd(t.z),
                a = t.x.redSub(t.z).redMul(n),
                o = i.redMul(r),
                s = e.z.redMul(a.redAdd(o).redSqr()),
                u = e.x.redMul(a.redISub(o).redSqr());
            return this.curve.point(s, u)
        }, u.prototype.mul = function(t) {
            for (var e = t.clone(), n = this, r = this.curve.point(null, null), i = []; 0 !== e.cmpn(0); e.iushrn(1)) i.push(e.andln(1));
            for (var a = i.length - 1; a >= 0; a--) 0 === i[a] ? (n = n.diffAdd(r, this), r = r.dbl()) : (r = n.diffAdd(r, this), n = n.dbl());
            return r
        }, u.prototype.mulAdd = function() {
            throw new Error("Not supported on Montgomery curve")
        }, u.prototype.jumlAdd = function() {
            throw new Error("Not supported on Montgomery curve")
        }, u.prototype.eq = function(t) {
            return 0 === this.getX().cmp(t.getX())
        }, u.prototype.normalize = function() {
            return this.x = this.x.redMul(this.z.redInvm()), this.z = this.curve.one, this
        }, u.prototype.getX = function() {
            return this.normalize(), this.x.fromRed()
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(17),
            i = n(5),
            a = n(2),
            o = n(81),
            s = r.assert;

        function u(t) {
            this.twisted = 1 != (0 | t.a), this.mOneA = this.twisted && -1 == (0 | t.a), this.extended = this.mOneA, o.call(this, "edwards", t), this.a = new i(t.a, 16).umod(this.red.m), this.a = this.a.toRed(this.red), this.c = new i(t.c, 16).toRed(this.red), this.c2 = this.c.redSqr(), this.d = new i(t.d, 16).toRed(this.red), this.dd = this.d.redAdd(this.d), s(!this.twisted || 0 === this.c.fromRed().cmpn(1)), this.oneC = 1 == (0 | t.c)
        }

        function c(t, e, n, r, a) {
            o.BasePoint.call(this, t, "projective"), null === e && null === n && null === r ? (this.x = this.curve.zero, this.y = this.curve.one, this.z = this.curve.one, this.t = this.curve.zero, this.zOne = !0) : (this.x = new i(e, 16), this.y = new i(n, 16), this.z = r ? new i(r, 16) : this.curve.one, this.t = a && new i(a, 16), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.y.red || (this.y = this.y.toRed(this.curve.red)), this.z.red || (this.z = this.z.toRed(this.curve.red)), this.t && !this.t.red && (this.t = this.t.toRed(this.curve.red)), this.zOne = this.z === this.curve.one, this.curve.extended && !this.t && (this.t = this.x.redMul(this.y), this.zOne || (this.t = this.t.redMul(this.z.redInvm()))))
        }
        a(u, o), t.exports = u, u.prototype._mulA = function(t) {
            return this.mOneA ? t.redNeg() : this.a.redMul(t)
        }, u.prototype._mulC = function(t) {
            return this.oneC ? t : this.c.redMul(t)
        }, u.prototype.jpoint = function(t, e, n, r) {
            return this.point(t, e, n, r)
        }, u.prototype.pointFromX = function(t, e) {
            (t = new i(t, 16)).red || (t = t.toRed(this.red));
            var n = t.redSqr(),
                r = this.c2.redSub(this.a.redMul(n)),
                a = this.one.redSub(this.c2.redMul(this.d).redMul(n)),
                o = r.redMul(a.redInvm()),
                s = o.redSqrt();
            if (0 !== s.redSqr().redSub(o).cmp(this.zero)) throw new Error("invalid point");
            var u = s.fromRed().isOdd();
            return (e && !u || !e && u) && (s = s.redNeg()), this.point(t, s)
        }, u.prototype.pointFromY = function(t, e) {
            (t = new i(t, 16)).red || (t = t.toRed(this.red));
            var n = t.redSqr(),
                r = n.redSub(this.c2),
                a = n.redMul(this.d).redMul(this.c2).redSub(this.a),
                o = r.redMul(a.redInvm());
            if (0 === o.cmp(this.zero)) {
                if (e) throw new Error("invalid point");
                return this.point(this.zero, t)
            }
            var s = o.redSqrt();
            if (0 !== s.redSqr().redSub(o).cmp(this.zero)) throw new Error("invalid point");
            return s.fromRed().isOdd() !== e && (s = s.redNeg()), this.point(s, t)
        }, u.prototype.validate = function(t) {
            if (t.isInfinity()) return !0;
            t.normalize();
            var e = t.x.redSqr(),
                n = t.y.redSqr(),
                r = e.redMul(this.a).redAdd(n),
                i = this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(n)));
            return 0 === r.cmp(i)
        }, a(c, o.BasePoint), u.prototype.pointFromJSON = function(t) {
            return c.fromJSON(this, t)
        }, u.prototype.point = function(t, e, n, r) {
            return new c(this, t, e, n, r)
        }, c.fromJSON = function(t, e) {
            return new c(t, e[0], e[1], e[2])
        }, c.prototype.inspect = function() {
            return this.isInfinity() ? "<EC Point Infinity>" : "<EC Point x: " + this.x.fromRed().toString(16, 2) + " y: " + this.y.fromRed().toString(16, 2) + " z: " + this.z.fromRed().toString(16, 2) + ">"
        }, c.prototype.isInfinity = function() {
            return 0 === this.x.cmpn(0) && (0 === this.y.cmp(this.z) || this.zOne && 0 === this.y.cmp(this.curve.c))
        }, c.prototype._extDbl = function() {
            var t = this.x.redSqr(),
                e = this.y.redSqr(),
                n = this.z.redSqr();
            n = n.redIAdd(n);
            var r = this.curve._mulA(t),
                i = this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),
                a = r.redAdd(e),
                o = a.redSub(n),
                s = r.redSub(e),
                u = i.redMul(o),
                c = a.redMul(s),
                f = i.redMul(s),
                l = o.redMul(a);
            return this.curve.point(u, c, l, f)
        }, c.prototype._projDbl = function() {
            var t, e, n, r = this.x.redAdd(this.y).redSqr(),
                i = this.x.redSqr(),
                a = this.y.redSqr();
            if (this.curve.twisted) {
                var o = (c = this.curve._mulA(i)).redAdd(a);
                if (this.zOne) t = r.redSub(i).redSub(a).redMul(o.redSub(this.curve.two)), e = o.redMul(c.redSub(a)), n = o.redSqr().redSub(o).redSub(o);
                else {
                    var s = this.z.redSqr(),
                        u = o.redSub(s).redISub(s);
                    t = r.redSub(i).redISub(a).redMul(u), e = o.redMul(c.redSub(a)), n = o.redMul(u)
                }
            } else {
                var c = i.redAdd(a);
                s = this.curve._mulC(this.z).redSqr(), u = c.redSub(s).redSub(s);
                t = this.curve._mulC(r.redISub(c)).redMul(u), e = this.curve._mulC(c).redMul(i.redISub(a)), n = c.redMul(u)
            }
            return this.curve.point(t, e, n)
        }, c.prototype.dbl = function() {
            return this.isInfinity() ? this : this.curve.extended ? this._extDbl() : this._projDbl()
        }, c.prototype._extAdd = function(t) {
            var e = this.y.redSub(this.x).redMul(t.y.redSub(t.x)),
                n = this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),
                r = this.t.redMul(this.curve.dd).redMul(t.t),
                i = this.z.redMul(t.z.redAdd(t.z)),
                a = n.redSub(e),
                o = i.redSub(r),
                s = i.redAdd(r),
                u = n.redAdd(e),
                c = a.redMul(o),
                f = s.redMul(u),
                l = a.redMul(u),
                h = o.redMul(s);
            return this.curve.point(c, f, h, l)
        }, c.prototype._projAdd = function(t) {
            var e, n, r = this.z.redMul(t.z),
                i = r.redSqr(),
                a = this.x.redMul(t.x),
                o = this.y.redMul(t.y),
                s = this.curve.d.redMul(a).redMul(o),
                u = i.redSub(s),
                c = i.redAdd(s),
                f = this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(a).redISub(o),
                l = r.redMul(u).redMul(f);
            return this.curve.twisted ? (e = r.redMul(c).redMul(o.redSub(this.curve._mulA(a))), n = u.redMul(c)) : (e = r.redMul(c).redMul(o.redSub(a)), n = this.curve._mulC(u).redMul(c)), this.curve.point(l, e, n)
        }, c.prototype.add = function(t) {
            return this.isInfinity() ? t : t.isInfinity() ? this : this.curve.extended ? this._extAdd(t) : this._projAdd(t)
        }, c.prototype.mul = function(t) {
            return this._hasDoubles(t) ? this.curve._fixedNafMul(this, t) : this.curve._wnafMul(this, t)
        }, c.prototype.mulAdd = function(t, e, n) {
            return this.curve._wnafMulAdd(1, [this, e], [t, n], 2, !1)
        }, c.prototype.jmulAdd = function(t, e, n) {
            return this.curve._wnafMulAdd(1, [this, e], [t, n], 2, !0)
        }, c.prototype.normalize = function() {
            if (this.zOne) return this;
            var t = this.z.redInvm();
            return this.x = this.x.redMul(t), this.y = this.y.redMul(t), this.t && (this.t = this.t.redMul(t)), this.z = this.curve.one, this.zOne = !0, this
        }, c.prototype.neg = function() {
            return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg())
        }, c.prototype.getX = function() {
            return this.normalize(), this.x.fromRed()
        }, c.prototype.getY = function() {
            return this.normalize(), this.y.fromRed()
        }, c.prototype.eq = function(t) {
            return this === t || 0 === this.getX().cmp(t.getX()) && 0 === this.getY().cmp(t.getY())
        }, c.prototype.eqXToP = function(t) {
            var e = t.toRed(this.curve.red).redMul(this.z);
            if (0 === this.x.cmp(e)) return !0;
            for (var n = t.clone(), r = this.curve.redN.redMul(this.z);;) {
                if (n.iadd(this.curve.n), n.cmp(this.curve.p) >= 0) return !1;
                if (e.redIAdd(r), 0 === this.x.cmp(e)) return !0
            }
        }, c.prototype.toP = c.prototype.normalize, c.prototype.mixedAdd = c.prototype.add
    }, function(t, e, n) {
        "use strict";
        e.sha1 = n(468), e.sha224 = n(469), e.sha256 = n(218), e.sha384 = n(470), e.sha512 = n(219)
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(56),
            a = n(217),
            o = r.rotl32,
            s = r.sum32,
            u = r.sum32_5,
            c = a.ft_1,
            f = i.BlockHash,
            l = [1518500249, 1859775393, 2400959708, 3395469782];

        function h() {
            if (!(this instanceof h)) return new h;
            f.call(this), this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520], this.W = new Array(80)
        }
        r.inherits(h, f), t.exports = h, h.blockSize = 512, h.outSize = 160, h.hmacStrength = 80, h.padLength = 64, h.prototype._update = function(t, e) {
            for (var n = this.W, r = 0; r < 16; r++) n[r] = t[e + r];
            for (; r < n.length; r++) n[r] = o(n[r - 3] ^ n[r - 8] ^ n[r - 14] ^ n[r - 16], 1);
            var i = this.h[0],
                a = this.h[1],
                f = this.h[2],
                h = this.h[3],
                d = this.h[4];
            for (r = 0; r < n.length; r++) {
                var p = ~~(r / 20),
                    g = u(o(i, 5), c(p, a, f, h), d, n[r], l[p]);
                d = h, h = f, f = o(a, 30), a = i, i = g
            }
            this.h[0] = s(this.h[0], i), this.h[1] = s(this.h[1], a), this.h[2] = s(this.h[2], f), this.h[3] = s(this.h[3], h), this.h[4] = s(this.h[4], d)
        }, h.prototype._digest = function(t) {
            return "hex" === t ? r.toHex32(this.h, "big") : r.split32(this.h, "big")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(218);

        function a() {
            if (!(this instanceof a)) return new a;
            i.call(this), this.h = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]
        }
        r.inherits(a, i), t.exports = a, a.blockSize = 512, a.outSize = 224, a.hmacStrength = 192, a.padLength = 64, a.prototype._digest = function(t) {
            return "hex" === t ? r.toHex32(this.h.slice(0, 7), "big") : r.split32(this.h.slice(0, 7), "big")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(219);

        function a() {
            if (!(this instanceof a)) return new a;
            i.call(this), this.h = [3418070365, 3238371032, 1654270250, 914150663, 2438529370, 812702999, 355462360, 4144912697, 1731405415, 4290775857, 2394180231, 1750603025, 3675008525, 1694076839, 1203062813, 3204075428]
        }
        r.inherits(a, i), t.exports = a, a.blockSize = 1024, a.outSize = 384, a.hmacStrength = 192, a.padLength = 128, a.prototype._digest = function(t) {
            return "hex" === t ? r.toHex32(this.h.slice(0, 12), "big") : r.split32(this.h.slice(0, 12), "big")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(56),
            a = r.rotl32,
            o = r.sum32,
            s = r.sum32_3,
            u = r.sum32_4,
            c = i.BlockHash;

        function f() {
            if (!(this instanceof f)) return new f;
            c.call(this), this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520], this.endian = "little"
        }

        function l(t, e, n, r) {
            return t <= 15 ? e ^ n ^ r : t <= 31 ? e & n | ~e & r : t <= 47 ? (e | ~n) ^ r : t <= 63 ? e & r | n & ~r : e ^ (n | ~r)
        }

        function h(t) {
            return t <= 15 ? 0 : t <= 31 ? 1518500249 : t <= 47 ? 1859775393 : t <= 63 ? 2400959708 : 2840853838
        }

        function d(t) {
            return t <= 15 ? 1352829926 : t <= 31 ? 1548603684 : t <= 47 ? 1836072691 : t <= 63 ? 2053994217 : 0
        }
        r.inherits(f, c), e.ripemd160 = f, f.blockSize = 512, f.outSize = 160, f.hmacStrength = 192, f.padLength = 64, f.prototype._update = function(t, e) {
            for (var n = this.h[0], r = this.h[1], i = this.h[2], c = this.h[3], f = this.h[4], v = n, m = r, _ = i, w = c, x = f, k = 0; k < 80; k++) {
                var E = o(a(u(n, l(k, r, i, c), t[p[k] + e], h(k)), y[k]), f);
                n = f, f = c, c = a(i, 10), i = r, r = E, E = o(a(u(v, l(79 - k, m, _, w), t[g[k] + e], d(k)), b[k]), x), v = x, x = w, w = a(_, 10), _ = m, m = E
            }
            E = s(this.h[1], i, w), this.h[1] = s(this.h[2], c, x), this.h[2] = s(this.h[3], f, v), this.h[3] = s(this.h[4], n, m), this.h[4] = s(this.h[0], r, _), this.h[0] = E
        }, f.prototype._digest = function(t) {
            return "hex" === t ? r.toHex32(this.h, "little") : r.split32(this.h, "little")
        };
        var p = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13],
            g = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11],
            y = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6],
            b = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]
    }, function(t, e, n) {
        "use strict";
        var r = n(21),
            i = n(16);

        function a(t, e, n) {
            if (!(this instanceof a)) return new a(t, e, n);
            this.Hash = t, this.blockSize = t.blockSize / 8, this.outSize = t.outSize / 8, this.inner = null, this.outer = null, this._init(r.toArray(e, n))
        }
        t.exports = a, a.prototype._init = function(t) {
            t.length > this.blockSize && (t = (new this.Hash).update(t).digest()), i(t.length <= this.blockSize);
            for (var e = t.length; e < this.blockSize; e++) t.push(0);
            for (e = 0; e < t.length; e++) t[e] ^= 54;
            for (this.inner = (new this.Hash).update(t), e = 0; e < t.length; e++) t[e] ^= 106;
            this.outer = (new this.Hash).update(t)
        }, a.prototype.update = function(t, e) {
            return this.inner.update(t, e), this
        }, a.prototype.digest = function(t) {
            return this.outer.update(this.inner.digest()), this.outer.digest(t)
        }
    }, function(t, e) {
        t.exports = {
            doubles: {
                step: 4,
                points: [
                    ["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a", "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],
                    ["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508", "11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],
                    ["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739", "d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],
                    ["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640", "4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],
                    ["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c", "4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],
                    ["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda", "96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],
                    ["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa", "5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],
                    ["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0", "cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],
                    ["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d", "9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],
                    ["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d", "e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],
                    ["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1", "9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],
                    ["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0", "5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],
                    ["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047", "10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],
                    ["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862", "283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],
                    ["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7", "7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],
                    ["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd", "56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],
                    ["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83", "7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],
                    ["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a", "53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],
                    ["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8", "bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],
                    ["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d", "4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],
                    ["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725", "7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],
                    ["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754", "4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],
                    ["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c", "17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],
                    ["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6", "6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],
                    ["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39", "c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],
                    ["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891", "893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],
                    ["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b", "febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],
                    ["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03", "2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],
                    ["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d", "eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],
                    ["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070", "7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],
                    ["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4", "e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],
                    ["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da", "662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],
                    ["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11", "1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],
                    ["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e", "efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],
                    ["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41", "2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],
                    ["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef", "67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],
                    ["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8", "db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],
                    ["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d", "648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],
                    ["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96", "35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],
                    ["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd", "ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],
                    ["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5", "9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],
                    ["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266", "40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],
                    ["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71", "34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],
                    ["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac", "c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],
                    ["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751", "1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],
                    ["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e", "493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],
                    ["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241", "c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],
                    ["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3", "be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],
                    ["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f", "4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],
                    ["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19", "aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],
                    ["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be", "b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],
                    ["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9", "6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],
                    ["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2", "8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],
                    ["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13", "7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],
                    ["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c", "ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],
                    ["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba", "2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],
                    ["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151", "e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],
                    ["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073", "d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],
                    ["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458", "38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],
                    ["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b", "69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],
                    ["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366", "d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],
                    ["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa", "40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],
                    ["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0", "620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],
                    ["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787", "7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],
                    ["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e", "ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]
                ]
            },
            naf: {
                wnd: 7,
                points: [
                    ["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],
                    ["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4", "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],
                    ["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],
                    ["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe", "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],
                    ["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb", "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],
                    ["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8", "ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],
                    ["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e", "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],
                    ["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34", "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],
                    ["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c", "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],
                    ["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", "321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],
                    ["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f", "2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],
                    ["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714", "73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],
                    ["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729", "a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],
                    ["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db", "2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],
                    ["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4", "e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],
                    ["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5", "b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],
                    ["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479", "2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],
                    ["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d", "80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],
                    ["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f", "1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],
                    ["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb", "d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],
                    ["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9", "eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],
                    ["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963", "758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],
                    ["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74", "958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],
                    ["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", "e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],
                    ["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b", "5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],
                    ["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247", "cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],
                    ["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1", "cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],
                    ["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120", "4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],
                    ["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435", "91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],
                    ["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18", "673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],
                    ["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8", "59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],
                    ["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb", "3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],
                    ["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f", "55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],
                    ["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143", "efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],
                    ["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba", "e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],
                    ["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45", "f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],
                    ["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a", "744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],
                    ["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e", "c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],
                    ["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8", "e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],
                    ["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c", "30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],
                    ["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519", "e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],
                    ["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab", "100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],
                    ["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca", "ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],
                    ["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf", "8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],
                    ["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610", "68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],
                    ["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4", "f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],
                    ["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c", "d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],
                    ["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940", "edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],
                    ["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980", "a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],
                    ["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3", "66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],
                    ["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf", "9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],
                    ["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63", "4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],
                    ["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448", "fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],
                    ["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf", "5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],
                    ["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5", "8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],
                    ["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6", "8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],
                    ["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5", "5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],
                    ["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99", "f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],
                    ["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51", "f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],
                    ["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5", "42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],
                    ["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5", "204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],
                    ["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997", "4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],
                    ["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881", "73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],
                    ["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5", "39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],
                    ["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66", "d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],
                    ["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726", "ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],
                    ["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede", "6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],
                    ["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94", "60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],
                    ["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31", "3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],
                    ["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51", "b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],
                    ["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252", "ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],
                    ["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5", "cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],
                    ["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b", "6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],
                    ["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4", "322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],
                    ["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f", "6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],
                    ["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889", "2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],
                    ["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246", "b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],
                    ["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984", "998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],
                    ["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a", "b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],
                    ["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030", "bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],
                    ["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197", "6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],
                    ["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593", "c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],
                    ["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef", "21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],
                    ["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38", "60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],
                    ["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a", "49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],
                    ["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111", "5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],
                    ["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502", "7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],
                    ["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea", "be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],
                    ["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26", "8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],
                    ["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986", "39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],
                    ["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e", "62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],
                    ["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4", "25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],
                    ["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda", "ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],
                    ["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859", "cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],
                    ["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f", "f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],
                    ["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c", "6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],
                    ["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942", "fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],
                    ["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a", "1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],
                    ["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80", "5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],
                    ["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d", "438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],
                    ["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1", "cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],
                    ["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63", "c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],
                    ["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352", "6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],
                    ["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193", "ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],
                    ["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00", "9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],
                    ["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58", "ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],
                    ["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7", "d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],
                    ["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8", "c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],
                    ["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e", "67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],
                    ["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d", "cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],
                    ["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b", "299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],
                    ["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f", "f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],
                    ["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6", "462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],
                    ["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297", "62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],
                    ["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a", "7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],
                    ["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c", "ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],
                    ["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52", "4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],
                    ["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb", "bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],
                    ["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065", "bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],
                    ["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917", "603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],
                    ["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9", "cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],
                    ["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3", "553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],
                    ["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57", "712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],
                    ["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66", "ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],
                    ["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8", "9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],
                    ["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721", "9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],
                    ["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180", "4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]
                ]
            }
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(5),
            i = n(475),
            a = n(17),
            o = n(126),
            s = n(123),
            u = a.assert,
            c = n(476),
            f = n(477);

        function l(t) {
            if (!(this instanceof l)) return new l(t);
            "string" == typeof t && (u(o.hasOwnProperty(t), "Unknown curve " + t), t = o[t]), t instanceof o.PresetCurve && (t = {
                curve: t
            }), this.curve = t.curve.curve, this.n = this.curve.n, this.nh = this.n.ushrn(1), this.g = this.curve.g, this.g = t.curve.g, this.g.precompute(t.curve.n.bitLength() + 1), this.hash = t.hash || t.curve.hash
        }
        t.exports = l, l.prototype.keyPair = function(t) {
            return new c(this, t)
        }, l.prototype.keyFromPrivate = function(t, e) {
            return c.fromPrivate(this, t, e)
        }, l.prototype.keyFromPublic = function(t, e) {
            return c.fromPublic(this, t, e)
        }, l.prototype.genKeyPair = function(t) {
            t || (t = {});
            for (var e = new i({
                    hash: this.hash,
                    pers: t.pers,
                    persEnc: t.persEnc || "utf8",
                    entropy: t.entropy || s(this.hash.hmacStrength),
                    entropyEnc: t.entropy && t.entropyEnc || "utf8",
                    nonce: this.n.toArray()
                }), n = this.n.byteLength(), a = this.n.sub(new r(2));;) {
                var o = new r(e.generate(n));
                if (!(o.cmp(a) > 0)) return o.iaddn(1), this.keyFromPrivate(o)
            }
        }, l.prototype._truncateToN = function(t, e) {
            var n = 8 * t.byteLength() - this.n.bitLength();
            return n > 0 && (t = t.ushrn(n)), !e && t.cmp(this.n) >= 0 ? t.sub(this.n) : t
        }, l.prototype.sign = function(t, e, n, a) {
            "object" == typeof n && (a = n, n = null), a || (a = {}), e = this.keyFromPrivate(e, n), t = this._truncateToN(new r(t, 16));
            for (var o = this.n.byteLength(), s = e.getPrivate().toArray("be", o), u = t.toArray("be", o), c = new i({
                    hash: this.hash,
                    entropy: s,
                    nonce: u,
                    pers: a.pers,
                    persEnc: a.persEnc || "utf8"
                }), l = this.n.sub(new r(1)), h = 0;; h++) {
                var d = a.k ? a.k(h) : new r(c.generate(this.n.byteLength()));
                if (!((d = this._truncateToN(d, !0)).cmpn(1) <= 0 || d.cmp(l) >= 0)) {
                    var p = this.g.mul(d);
                    if (!p.isInfinity()) {
                        var g = p.getX(),
                            y = g.umod(this.n);
                        if (0 !== y.cmpn(0)) {
                            var b = d.invm(this.n).mul(y.mul(e.getPrivate()).iadd(t));
                            if (0 !== (b = b.umod(this.n)).cmpn(0)) {
                                var v = (p.getY().isOdd() ? 1 : 0) | (0 !== g.cmp(y) ? 2 : 0);
                                return a.canonical && b.cmp(this.nh) > 0 && (b = this.n.sub(b), v ^= 1), new f({
                                    r: y,
                                    s: b,
                                    recoveryParam: v
                                })
                            }
                        }
                    }
                }
            }
        }, l.prototype.verify = function(t, e, n, i) {
            t = this._truncateToN(new r(t, 16)), n = this.keyFromPublic(n, i);
            var a = (e = new f(e, "hex")).r,
                o = e.s;
            if (a.cmpn(1) < 0 || a.cmp(this.n) >= 0) return !1;
            if (o.cmpn(1) < 0 || o.cmp(this.n) >= 0) return !1;
            var s, u = o.invm(this.n),
                c = u.mul(t).umod(this.n),
                l = u.mul(a).umod(this.n);
            return this.curve._maxwellTrick ? !(s = this.g.jmulAdd(c, n.getPublic(), l)).isInfinity() && s.eqXToP(a) : !(s = this.g.mulAdd(c, n.getPublic(), l)).isInfinity() && 0 === s.getX().umod(this.n).cmp(a)
        }, l.prototype.recoverPubKey = function(t, e, n, i) {
            u((3 & n) === n, "The recovery param is more than two bits"), e = new f(e, i);
            var a = this.n,
                o = new r(t),
                s = e.r,
                c = e.s,
                l = 1 & n,
                h = n >> 1;
            if (s.cmp(this.curve.p.umod(this.curve.n)) >= 0 && h) throw new Error("Unable to find sencond key candinate");
            s = h ? this.curve.pointFromX(s.add(this.curve.n), l) : this.curve.pointFromX(s, l);
            var d = e.r.invm(a),
                p = a.sub(o).mul(d).umod(a),
                g = c.mul(d).umod(a);
            return this.g.mulAdd(p, s, g)
        }, l.prototype.getKeyRecoveryParam = function(t, e, n, r) {
            if (null !== (e = new f(e, r)).recoveryParam) return e.recoveryParam;
            for (var i = 0; i < 4; i++) {
                var a;
                try {
                    a = this.recoverPubKey(t, e, i)
                } catch (t) {
                    continue
                }
                if (a.eq(n)) return i
            }
            throw new Error("Unable to find valid recovery factor")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(127),
            i = n(215),
            a = n(16);

        function o(t) {
            if (!(this instanceof o)) return new o(t);
            this.hash = t.hash, this.predResist = !!t.predResist, this.outLen = this.hash.outSize, this.minEntropy = t.minEntropy || this.hash.hmacStrength, this._reseed = null, this.reseedInterval = null, this.K = null, this.V = null;
            var e = i.toArray(t.entropy, t.entropyEnc || "hex"),
                n = i.toArray(t.nonce, t.nonceEnc || "hex"),
                r = i.toArray(t.pers, t.persEnc || "hex");
            a(e.length >= this.minEntropy / 8, "Not enough entropy. Minimum is: " + this.minEntropy + " bits"), this._init(e, n, r)
        }
        t.exports = o, o.prototype._init = function(t, e, n) {
            var r = t.concat(e).concat(n);
            this.K = new Array(this.outLen / 8), this.V = new Array(this.outLen / 8);
            for (var i = 0; i < this.V.length; i++) this.K[i] = 0, this.V[i] = 1;
            this._update(r), this._reseed = 1, this.reseedInterval = 281474976710656
        }, o.prototype._hmac = function() {
            return new r.hmac(this.hash, this.K)
        }, o.prototype._update = function(t) {
            var e = this._hmac().update(this.V).update([0]);
            t && (e = e.update(t)), this.K = e.digest(), this.V = this._hmac().update(this.V).digest(), t && (this.K = this._hmac().update(this.V).update([1]).update(t).digest(), this.V = this._hmac().update(this.V).digest())
        }, o.prototype.reseed = function(t, e, n, r) {
            "string" != typeof e && (r = n, n = e, e = null), t = i.toArray(t, e), n = i.toArray(n, r), a(t.length >= this.minEntropy / 8, "Not enough entropy. Minimum is: " + this.minEntropy + " bits"), this._update(t.concat(n || [])), this._reseed = 1
        }, o.prototype.generate = function(t, e, n, r) {
            if (this._reseed > this.reseedInterval) throw new Error("Reseed is required");
            "string" != typeof e && (r = n, n = e, e = null), n && (n = i.toArray(n, r || "hex"), this._update(n));
            for (var a = []; a.length < t;) this.V = this._hmac().update(this.V).digest(), a = a.concat(this.V);
            var o = a.slice(0, t);
            return this._update(n), this._reseed++, i.encode(o, e)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(5),
            i = n(17).assert;

        function a(t, e) {
            this.ec = t, this.priv = null, this.pub = null, e.priv && this._importPrivate(e.priv, e.privEnc), e.pub && this._importPublic(e.pub, e.pubEnc)
        }
        t.exports = a, a.fromPublic = function(t, e, n) {
            return e instanceof a ? e : new a(t, {
                pub: e,
                pubEnc: n
            })
        }, a.fromPrivate = function(t, e, n) {
            return e instanceof a ? e : new a(t, {
                priv: e,
                privEnc: n
            })
        }, a.prototype.validate = function() {
            var t = this.getPublic();
            return t.isInfinity() ? {
                result: !1,
                reason: "Invalid public key"
            } : t.validate() ? t.mul(this.ec.curve.n).isInfinity() ? {
                result: !0,
                reason: null
            } : {
                result: !1,
                reason: "Public key * N != O"
            } : {
                result: !1,
                reason: "Public key is not a point"
            }
        }, a.prototype.getPublic = function(t, e) {
            return "string" == typeof t && (e = t, t = null), this.pub || (this.pub = this.ec.g.mul(this.priv)), e ? this.pub.encode(e, t) : this.pub
        }, a.prototype.getPrivate = function(t) {
            return "hex" === t ? this.priv.toString(16, 2) : this.priv
        }, a.prototype._importPrivate = function(t, e) {
            this.priv = new r(t, e || 16), this.priv = this.priv.umod(this.ec.curve.n)
        }, a.prototype._importPublic = function(t, e) {
            if (t.x || t.y) return "mont" === this.ec.curve.type ? i(t.x, "Need x coordinate") : "short" !== this.ec.curve.type && "edwards" !== this.ec.curve.type || i(t.x && t.y, "Need both x and y coordinate"), void(this.pub = this.ec.curve.point(t.x, t.y));
            this.pub = this.ec.curve.decodePoint(t, e)
        }, a.prototype.derive = function(t) {
            return t.mul(this.priv).getX()
        }, a.prototype.sign = function(t, e, n) {
            return this.ec.sign(t, this, e, n)
        }, a.prototype.verify = function(t, e) {
            return this.ec.verify(t, e, this)
        }, a.prototype.inspect = function() {
            return "<Key priv: " + (this.priv && this.priv.toString(16, 2)) + " pub: " + (this.pub && this.pub.inspect()) + " >"
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(5),
            i = n(17),
            a = i.assert;

        function o(t, e) {
            if (t instanceof o) return t;
            this._importDER(t, e) || (a(t.r && t.s, "Signature without r or s"), this.r = new r(t.r, 16), this.s = new r(t.s, 16), void 0 === t.recoveryParam ? this.recoveryParam = null : this.recoveryParam = t.recoveryParam)
        }

        function s() {
            this.place = 0
        }

        function u(t, e) {
            var n = t[e.place++];
            if (!(128 & n)) return n;
            for (var r = 15 & n, i = 0, a = 0, o = e.place; a < r; a++, o++) i <<= 8, i |= t[o];
            return e.place = o, i
        }

        function c(t) {
            for (var e = 0, n = t.length - 1; !t[e] && !(128 & t[e + 1]) && e < n;) e++;
            return 0 === e ? t : t.slice(e)
        }

        function f(t, e) {
            if (e < 128) t.push(e);
            else {
                var n = 1 + (Math.log(e) / Math.LN2 >>> 3);
                for (t.push(128 | n); --n;) t.push(e >>> (n << 3) & 255);
                t.push(e)
            }
        }
        t.exports = o, o.prototype._importDER = function(t, e) {
            t = i.toArray(t, e);
            var n = new s;
            if (48 !== t[n.place++]) return !1;
            if (u(t, n) + n.place !== t.length) return !1;
            if (2 !== t[n.place++]) return !1;
            var a = u(t, n),
                o = t.slice(n.place, a + n.place);
            if (n.place += a, 2 !== t[n.place++]) return !1;
            var c = u(t, n);
            if (t.length !== c + n.place) return !1;
            var f = t.slice(n.place, c + n.place);
            return 0 === o[0] && 128 & o[1] && (o = o.slice(1)), 0 === f[0] && 128 & f[1] && (f = f.slice(1)), this.r = new r(o), this.s = new r(f), this.recoveryParam = null, !0
        }, o.prototype.toDER = function(t) {
            var e = this.r.toArray(),
                n = this.s.toArray();
            for (128 & e[0] && (e = [0].concat(e)), 128 & n[0] && (n = [0].concat(n)), e = c(e), n = c(n); !(n[0] || 128 & n[1]);) n = n.slice(1);
            var r = [2];
            f(r, e.length), (r = r.concat(e)).push(2), f(r, n.length);
            var a = r.concat(n),
                o = [48];
            return f(o, a.length), o = o.concat(a), i.encode(o, t)
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(127),
            i = n(126),
            a = n(17),
            o = a.assert,
            s = a.parseBytes,
            u = n(479),
            c = n(480);

        function f(t) {
            if (o("ed25519" === t, "only tested with ed25519 so far"), !(this instanceof f)) return new f(t);
            t = i[t].curve;
            this.curve = t, this.g = t.g, this.g.precompute(t.n.bitLength() + 1), this.pointClass = t.point().constructor, this.encodingLength = Math.ceil(t.n.bitLength() / 8), this.hash = r.sha512
        }
        t.exports = f, f.prototype.sign = function(t, e) {
            t = s(t);
            var n = this.keyFromSecret(e),
                r = this.hashInt(n.messagePrefix(), t),
                i = this.g.mul(r),
                a = this.encodePoint(i),
                o = this.hashInt(a, n.pubBytes(), t).mul(n.priv()),
                u = r.add(o).umod(this.curve.n);
            return this.makeSignature({
                R: i,
                S: u,
                Rencoded: a
            })
        }, f.prototype.verify = function(t, e, n) {
            t = s(t), e = this.makeSignature(e);
            var r = this.keyFromPublic(n),
                i = this.hashInt(e.Rencoded(), r.pubBytes(), t),
                a = this.g.mul(e.S());
            return e.R().add(r.pub().mul(i)).eq(a)
        }, f.prototype.hashInt = function() {
            for (var t = this.hash(), e = 0; e < arguments.length; e++) t.update(arguments[e]);
            return a.intFromLE(t.digest()).umod(this.curve.n)
        }, f.prototype.keyFromPublic = function(t) {
            return u.fromPublic(this, t)
        }, f.prototype.keyFromSecret = function(t) {
            return u.fromSecret(this, t)
        }, f.prototype.makeSignature = function(t) {
            return t instanceof c ? t : new c(this, t)
        }, f.prototype.encodePoint = function(t) {
            var e = t.getY().toArray("le", this.encodingLength);
            return e[this.encodingLength - 1] |= t.getX().isOdd() ? 128 : 0, e
        }, f.prototype.decodePoint = function(t) {
            var e = (t = a.parseBytes(t)).length - 1,
                n = t.slice(0, e).concat(-129 & t[e]),
                r = 0 != (128 & t[e]),
                i = a.intFromLE(n);
            return this.curve.pointFromY(i, r)
        }, f.prototype.encodeInt = function(t) {
            return t.toArray("le", this.encodingLength)
        }, f.prototype.decodeInt = function(t) {
            return a.intFromLE(t)
        }, f.prototype.isPoint = function(t) {
            return t instanceof this.pointClass
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(17),
            i = r.assert,
            a = r.parseBytes,
            o = r.cachedProperty;

        function s(t, e) {
            this.eddsa = t, this._secret = a(e.secret), t.isPoint(e.pub) ? this._pub = e.pub : this._pubBytes = a(e.pub)
        }
        s.fromPublic = function(t, e) {
            return e instanceof s ? e : new s(t, {
                pub: e
            })
        }, s.fromSecret = function(t, e) {
            return e instanceof s ? e : new s(t, {
                secret: e
            })
        }, s.prototype.secret = function() {
            return this._secret
        }, o(s, "pubBytes", (function() {
            return this.eddsa.encodePoint(this.pub())
        })), o(s, "pub", (function() {
            return this._pubBytes ? this.eddsa.decodePoint(this._pubBytes) : this.eddsa.g.mul(this.priv())
        })), o(s, "privBytes", (function() {
            var t = this.eddsa,
                e = this.hash(),
                n = t.encodingLength - 1,
                r = e.slice(0, t.encodingLength);
            return r[0] &= 248, r[n] &= 127, r[n] |= 64, r
        })), o(s, "priv", (function() {
            return this.eddsa.decodeInt(this.privBytes())
        })), o(s, "hash", (function() {
            return this.eddsa.hash().update(this.secret()).digest()
        })), o(s, "messagePrefix", (function() {
            return this.hash().slice(this.eddsa.encodingLength)
        })), s.prototype.sign = function(t) {
            return i(this._secret, "KeyPair can only verify"), this.eddsa.sign(t, this)
        }, s.prototype.verify = function(t, e) {
            return this.eddsa.verify(t, e, this)
        }, s.prototype.getSecret = function(t) {
            return i(this._secret, "KeyPair is public only"), r.encode(this.secret(), t)
        }, s.prototype.getPublic = function(t) {
            return r.encode(this.pubBytes(), t)
        }, t.exports = s
    }, function(t, e, n) {
        "use strict";
        var r = n(5),
            i = n(17),
            a = i.assert,
            o = i.cachedProperty,
            s = i.parseBytes;

        function u(t, e) {
            this.eddsa = t, "object" != typeof e && (e = s(e)), Array.isArray(e) && (e = {
                R: e.slice(0, t.encodingLength),
                S: e.slice(t.encodingLength)
            }), a(e.R && e.S, "Signature without R or S"), t.isPoint(e.R) && (this._R = e.R), e.S instanceof r && (this._S = e.S), this._Rencoded = Array.isArray(e.R) ? e.R : e.Rencoded, this._Sencoded = Array.isArray(e.S) ? e.S : e.Sencoded
        }
        o(u, "S", (function() {
            return this.eddsa.decodeInt(this.Sencoded())
        })), o(u, "R", (function() {
            return this.eddsa.decodePoint(this.Rencoded())
        })), o(u, "Rencoded", (function() {
            return this.eddsa.encodePoint(this.R())
        })), o(u, "Sencoded", (function() {
            return this.eddsa.encodeInt(this.S())
        })), u.prototype.toBytes = function() {
            return this.Rencoded().concat(this.Sencoded())
        }, u.prototype.toHex = function() {
            return i.encode(this.toBytes(), "hex").toUpperCase()
        }, t.exports = u
    }, function(t, e, n) {
        "use strict";
        var r = n(57);
        e.certificate = n(491);
        var i = r.define("RSAPrivateKey", (function() {
            this.seq().obj(this.key("version").int(), this.key("modulus").int(), this.key("publicExponent").int(), this.key("privateExponent").int(), this.key("prime1").int(), this.key("prime2").int(), this.key("exponent1").int(), this.key("exponent2").int(), this.key("coefficient").int())
        }));
        e.RSAPrivateKey = i;
        var a = r.define("RSAPublicKey", (function() {
            this.seq().obj(this.key("modulus").int(), this.key("publicExponent").int())
        }));
        e.RSAPublicKey = a;
        var o = r.define("SubjectPublicKeyInfo", (function() {
            this.seq().obj(this.key("algorithm").use(s), this.key("subjectPublicKey").bitstr())
        }));
        e.PublicKey = o;
        var s = r.define("AlgorithmIdentifier", (function() {
                this.seq().obj(this.key("algorithm").objid(), this.key("none").null_().optional(), this.key("curve").objid().optional(), this.key("params").seq().obj(this.key("p").int(), this.key("q").int(), this.key("g").int()).optional())
            })),
            u = r.define("PrivateKeyInfo", (function() {
                this.seq().obj(this.key("version").int(), this.key("algorithm").use(s), this.key("subjectPrivateKey").octstr())
            }));
        e.PrivateKey = u;
        var c = r.define("EncryptedPrivateKeyInfo", (function() {
            this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(), this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(), this.key("kdeparams").seq().obj(this.key("salt").octstr(), this.key("iters").int())), this.key("cipher").seq().obj(this.key("algo").objid(), this.key("iv").octstr()))), this.key("subjectPrivateKey").octstr())
        }));
        e.EncryptedPrivateKey = c;
        var f = r.define("DSAPrivateKey", (function() {
            this.seq().obj(this.key("version").int(), this.key("p").int(), this.key("q").int(), this.key("g").int(), this.key("pub_key").int(), this.key("priv_key").int())
        }));
        e.DSAPrivateKey = f, e.DSAparam = r.define("DSAparam", (function() {
            this.int()
        }));
        var l = r.define("ECPrivateKey", (function() {
            this.seq().obj(this.key("version").int(), this.key("privateKey").octstr(), this.key("parameters").optional().explicit(0).use(h), this.key("publicKey").optional().explicit(1).bitstr())
        }));
        e.ECPrivateKey = l;
        var h = r.define("ECParameters", (function() {
            this.choice({
                namedCurve: this.objid()
            })
        }));
        e.signature = r.define("signature", (function() {
            this.seq().obj(this.key("r").int(), this.key("s").int())
        }))
    }, function(t, e, n) {
        var r = n(57),
            i = n(2);

        function a(t, e) {
            this.name = t, this.body = e, this.decoders = {}, this.encoders = {}
        }
        e.define = function(t, e) {
            return new a(t, e)
        }, a.prototype._createNamed = function(t) {
            var e;
            try {
                e = n(483).runInThisContext("(function " + this.name + "(entity) {\n  this._initNamed(entity);\n})")
            } catch (t) {
                e = function(t) {
                    this._initNamed(t)
                }
            }
            return i(e, t), e.prototype._initNamed = function(e) {
                t.call(this, e)
            }, new e(this)
        }, a.prototype._getDecoder = function(t) {
            return t = t || "der", this.decoders.hasOwnProperty(t) || (this.decoders[t] = this._createNamed(r.decoders[t])), this.decoders[t]
        }, a.prototype.decode = function(t, e, n) {
            return this._getDecoder(e).decode(t, n)
        }, a.prototype._getEncoder = function(t) {
            return t = t || "der", this.encoders.hasOwnProperty(t) || (this.encoders[t] = this._createNamed(r.encoders[t])), this.encoders[t]
        }, a.prototype.encode = function(t, e, n) {
            return this._getEncoder(e).encode(t, n)
        }
    }, function(module, exports) {
        var indexOf = function(t, e) {
                if (t.indexOf) return t.indexOf(e);
                for (var n = 0; n < t.length; n++)
                    if (t[n] === e) return n;
                return -1
            },
            Object_keys = function(t) {
                if (Object.keys) return Object.keys(t);
                var e = [];
                for (var n in t) e.push(n);
                return e
            },
            forEach = function(t, e) {
                if (t.forEach) return t.forEach(e);
                for (var n = 0; n < t.length; n++) e(t[n], n, t)
            },
            defineProp = function() {
                try {
                    return Object.defineProperty({}, "_", {}),
                        function(t, e, n) {
                            Object.defineProperty(t, e, {
                                writable: !0,
                                enumerable: !1,
                                configurable: !0,
                                value: n
                            })
                        }
                } catch (t) {
                    return function(t, e, n) {
                        t[e] = n
                    }
                }
            }(),
            globals = ["Array", "Boolean", "Date", "Error", "EvalError", "Function", "Infinity", "JSON", "Math", "NaN", "Number", "Object", "RangeError", "ReferenceError", "RegExp", "String", "SyntaxError", "TypeError", "URIError", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "undefined", "unescape"];

        function Context() {}
        Context.prototype = {};
        var Script = exports.Script = function(t) {
            if (!(this instanceof Script)) return new Script(t);
            this.code = t
        };
        Script.prototype.runInContext = function(t) {
            if (!(t instanceof Context)) throw new TypeError("needs a 'context' argument.");
            var e = document.createElement("iframe");
            e.style || (e.style = {}), e.style.display = "none", document.body.appendChild(e);
            var n = e.contentWindow,
                r = n.eval,
                i = n.execScript;
            !r && i && (i.call(n, "null"), r = n.eval), forEach(Object_keys(t), (function(e) {
                n[e] = t[e]
            })), forEach(globals, (function(e) {
                t[e] && (n[e] = t[e])
            }));
            var a = Object_keys(n),
                o = r.call(n, this.code);
            return forEach(Object_keys(n), (function(e) {
                (e in t || -1 === indexOf(a, e)) && (t[e] = n[e])
            })), forEach(globals, (function(e) {
                e in t || defineProp(t, e, n[e])
            })), document.body.removeChild(e), o
        }, Script.prototype.runInThisContext = function() {
            return eval(this.code)
        }, Script.prototype.runInNewContext = function(t) {
            var e = Script.createContext(t),
                n = this.runInContext(e);
            return t && forEach(Object_keys(e), (function(n) {
                t[n] = e[n]
            })), n
        }, forEach(Object_keys(Script.prototype), (function(t) {
            exports[t] = Script[t] = function(e) {
                var n = Script(e);
                return n[t].apply(n, [].slice.call(arguments, 1))
            }
        })), exports.isContext = function(t) {
            return t instanceof Context
        }, exports.createScript = function(t) {
            return exports.Script(t)
        }, exports.createContext = Script.createContext = function(t) {
            var e = new Context;
            return "object" == typeof t && forEach(Object_keys(t), (function(n) {
                e[n] = t[n]
            })), e
        }
    }, function(t, e, n) {
        var r = n(2);

        function i(t) {
            this._reporterState = {
                obj: null,
                path: [],
                options: t || {},
                errors: []
            }
        }

        function a(t, e) {
            this.path = t, this.rethrow(e)
        }
        e.Reporter = i, i.prototype.isError = function(t) {
            return t instanceof a
        }, i.prototype.save = function() {
            var t = this._reporterState;
            return {
                obj: t.obj,
                pathLen: t.path.length
            }
        }, i.prototype.restore = function(t) {
            var e = this._reporterState;
            e.obj = t.obj, e.path = e.path.slice(0, t.pathLen)
        }, i.prototype.enterKey = function(t) {
            return this._reporterState.path.push(t)
        }, i.prototype.exitKey = function(t) {
            var e = this._reporterState;
            e.path = e.path.slice(0, t - 1)
        }, i.prototype.leaveKey = function(t, e, n) {
            var r = this._reporterState;
            this.exitKey(t), null !== r.obj && (r.obj[e] = n)
        }, i.prototype.path = function() {
            return this._reporterState.path.join("/")
        }, i.prototype.enterObject = function() {
            var t = this._reporterState,
                e = t.obj;
            return t.obj = {}, e
        }, i.prototype.leaveObject = function(t) {
            var e = this._reporterState,
                n = e.obj;
            return e.obj = t, n
        }, i.prototype.error = function(t) {
            var e, n = this._reporterState,
                r = t instanceof a;
            if (e = r ? t : new a(n.path.map((function(t) {
                    return "[" + JSON.stringify(t) + "]"
                })).join(""), t.message || t, t.stack), !n.options.partial) throw e;
            return r || n.errors.push(e), e
        }, i.prototype.wrapResult = function(t) {
            var e = this._reporterState;
            return e.options.partial ? {
                result: this.isError(t) ? null : t,
                errors: e.errors
            } : t
        }, r(a, Error), a.prototype.rethrow = function(t) {
            if (this.message = t + " at: " + (this.path || "(shallow)"), Error.captureStackTrace && Error.captureStackTrace(this, a), !this.stack) try {
                throw new Error(this.message)
            } catch (t) {
                this.stack = t.stack
            }
            return this
        }
    }, function(t, e, n) {
        var r = n(58).Reporter,
            i = n(58).EncoderBuffer,
            a = n(58).DecoderBuffer,
            o = n(16),
            s = ["seq", "seqof", "set", "setof", "objid", "bool", "gentime", "utctime", "null_", "enum", "int", "objDesc", "bitstr", "bmpstr", "charstr", "genstr", "graphstr", "ia5str", "iso646str", "numstr", "octstr", "printstr", "t61str", "unistr", "utf8str", "videostr"],
            u = ["key", "obj", "use", "optional", "explicit", "implicit", "def", "choice", "any", "contains"].concat(s);

        function c(t, e) {
            var n = {};
            this._baseState = n, n.enc = t, n.parent = e || null, n.children = null, n.tag = null, n.args = null, n.reverseArgs = null, n.choice = null, n.optional = !1, n.any = !1, n.obj = !1, n.use = null, n.useDecoder = null, n.key = null, n.default = null, n.explicit = null, n.implicit = null, n.contains = null, n.parent || (n.children = [], this._wrap())
        }
        t.exports = c;
        var f = ["enc", "parent", "children", "tag", "args", "reverseArgs", "choice", "optional", "any", "obj", "use", "alteredUse", "key", "default", "explicit", "implicit", "contains"];
        c.prototype.clone = function() {
            var t = this._baseState,
                e = {};
            f.forEach((function(n) {
                e[n] = t[n]
            }));
            var n = new this.constructor(e.parent);
            return n._baseState = e, n
        }, c.prototype._wrap = function() {
            var t = this._baseState;
            u.forEach((function(e) {
                this[e] = function() {
                    var n = new this.constructor(this);
                    return t.children.push(n), n[e].apply(n, arguments)
                }
            }), this)
        }, c.prototype._init = function(t) {
            var e = this._baseState;
            o(null === e.parent), t.call(this), e.children = e.children.filter((function(t) {
                return t._baseState.parent === this
            }), this), o.equal(e.children.length, 1, "Root node can have only one child")
        }, c.prototype._useArgs = function(t) {
            var e = this._baseState,
                n = t.filter((function(t) {
                    return t instanceof this.constructor
                }), this);
            t = t.filter((function(t) {
                return !(t instanceof this.constructor)
            }), this), 0 !== n.length && (o(null === e.children), e.children = n, n.forEach((function(t) {
                t._baseState.parent = this
            }), this)), 0 !== t.length && (o(null === e.args), e.args = t, e.reverseArgs = t.map((function(t) {
                if ("object" != typeof t || t.constructor !== Object) return t;
                var e = {};
                return Object.keys(t).forEach((function(n) {
                    n == (0 | n) && (n |= 0);
                    var r = t[n];
                    e[r] = n
                })), e
            })))
        }, ["_peekTag", "_decodeTag", "_use", "_decodeStr", "_decodeObjid", "_decodeTime", "_decodeNull", "_decodeInt", "_decodeBool", "_decodeList", "_encodeComposite", "_encodeStr", "_encodeObjid", "_encodeTime", "_encodeNull", "_encodeInt", "_encodeBool"].forEach((function(t) {
            c.prototype[t] = function() {
                var e = this._baseState;
                throw new Error(t + " not implemented for encoding: " + e.enc)
            }
        })), s.forEach((function(t) {
            c.prototype[t] = function() {
                var e = this._baseState,
                    n = Array.prototype.slice.call(arguments);
                return o(null === e.tag), e.tag = t, this._useArgs(n), this
            }
        })), c.prototype.use = function(t) {
            o(t);
            var e = this._baseState;
            return o(null === e.use), e.use = t, this
        }, c.prototype.optional = function() {
            return this._baseState.optional = !0, this
        }, c.prototype.def = function(t) {
            var e = this._baseState;
            return o(null === e.default), e.default = t, e.optional = !0, this
        }, c.prototype.explicit = function(t) {
            var e = this._baseState;
            return o(null === e.explicit && null === e.implicit), e.explicit = t, this
        }, c.prototype.implicit = function(t) {
            var e = this._baseState;
            return o(null === e.explicit && null === e.implicit), e.implicit = t, this
        }, c.prototype.obj = function() {
            var t = this._baseState,
                e = Array.prototype.slice.call(arguments);
            return t.obj = !0, 0 !== e.length && this._useArgs(e), this
        }, c.prototype.key = function(t) {
            var e = this._baseState;
            return o(null === e.key), e.key = t, this
        }, c.prototype.any = function() {
            return this._baseState.any = !0, this
        }, c.prototype.choice = function(t) {
            var e = this._baseState;
            return o(null === e.choice), e.choice = t, this._useArgs(Object.keys(t).map((function(e) {
                return t[e]
            }))), this
        }, c.prototype.contains = function(t) {
            var e = this._baseState;
            return o(null === e.use), e.contains = t, this
        }, c.prototype._decode = function(t, e) {
            var n = this._baseState;
            if (null === n.parent) return t.wrapResult(n.children[0]._decode(t, e));
            var r, i = n.default,
                o = !0,
                s = null;
            if (null !== n.key && (s = t.enterKey(n.key)), n.optional) {
                var u = null;
                if (null !== n.explicit ? u = n.explicit : null !== n.implicit ? u = n.implicit : null !== n.tag && (u = n.tag), null !== u || n.any) {
                    if (o = this._peekTag(t, u, n.any), t.isError(o)) return o
                } else {
                    var c = t.save();
                    try {
                        null === n.choice ? this._decodeGeneric(n.tag, t, e) : this._decodeChoice(t, e), o = !0
                    } catch (t) {
                        o = !1
                    }
                    t.restore(c)
                }
            }
            if (n.obj && o && (r = t.enterObject()), o) {
                if (null !== n.explicit) {
                    var f = this._decodeTag(t, n.explicit);
                    if (t.isError(f)) return f;
                    t = f
                }
                var l = t.offset;
                if (null === n.use && null === n.choice) {
                    if (n.any) c = t.save();
                    var h = this._decodeTag(t, null !== n.implicit ? n.implicit : n.tag, n.any);
                    if (t.isError(h)) return h;
                    n.any ? i = t.raw(c) : t = h
                }
                if (e && e.track && null !== n.tag && e.track(t.path(), l, t.length, "tagged"), e && e.track && null !== n.tag && e.track(t.path(), t.offset, t.length, "content"), i = n.any ? i : null === n.choice ? this._decodeGeneric(n.tag, t, e) : this._decodeChoice(t, e), t.isError(i)) return i;
                if (n.any || null !== n.choice || null === n.children || n.children.forEach((function(n) {
                        n._decode(t, e)
                    })), n.contains && ("octstr" === n.tag || "bitstr" === n.tag)) {
                    var d = new a(i);
                    i = this._getUse(n.contains, t._reporterState.obj)._decode(d, e)
                }
            }
            return n.obj && o && (i = t.leaveObject(r)), null === n.key || null === i && !0 !== o ? null !== s && t.exitKey(s) : t.leaveKey(s, n.key, i), i
        }, c.prototype._decodeGeneric = function(t, e, n) {
            var r = this._baseState;
            return "seq" === t || "set" === t ? null : "seqof" === t || "setof" === t ? this._decodeList(e, t, r.args[0], n) : /str$/.test(t) ? this._decodeStr(e, t, n) : "objid" === t && r.args ? this._decodeObjid(e, r.args[0], r.args[1], n) : "objid" === t ? this._decodeObjid(e, null, null, n) : "gentime" === t || "utctime" === t ? this._decodeTime(e, t, n) : "null_" === t ? this._decodeNull(e, n) : "bool" === t ? this._decodeBool(e, n) : "objDesc" === t ? this._decodeStr(e, t, n) : "int" === t || "enum" === t ? this._decodeInt(e, r.args && r.args[0], n) : null !== r.use ? this._getUse(r.use, e._reporterState.obj)._decode(e, n) : e.error("unknown tag: " + t)
        }, c.prototype._getUse = function(t, e) {
            var n = this._baseState;
            return n.useDecoder = this._use(t, e), o(null === n.useDecoder._baseState.parent), n.useDecoder = n.useDecoder._baseState.children[0], n.implicit !== n.useDecoder._baseState.implicit && (n.useDecoder = n.useDecoder.clone(), n.useDecoder._baseState.implicit = n.implicit), n.useDecoder
        }, c.prototype._decodeChoice = function(t, e) {
            var n = this._baseState,
                r = null,
                i = !1;
            return Object.keys(n.choice).some((function(a) {
                var o = t.save(),
                    s = n.choice[a];
                try {
                    var u = s._decode(t, e);
                    if (t.isError(u)) return !1;
                    r = {
                        type: a,
                        value: u
                    }, i = !0
                } catch (e) {
                    return t.restore(o), !1
                }
                return !0
            }), this), i ? r : t.error("Choice not matched")
        }, c.prototype._createEncoderBuffer = function(t) {
            return new i(t, this.reporter)
        }, c.prototype._encode = function(t, e, n) {
            var r = this._baseState;
            if (null === r.default || r.default !== t) {
                var i = this._encodeValue(t, e, n);
                if (void 0 !== i && !this._skipDefault(i, e, n)) return i
            }
        }, c.prototype._encodeValue = function(t, e, n) {
            var i = this._baseState;
            if (null === i.parent) return i.children[0]._encode(t, e || new r);
            var a = null;
            if (this.reporter = e, i.optional && void 0 === t) {
                if (null === i.default) return;
                t = i.default
            }
            var o = null,
                s = !1;
            if (i.any) a = this._createEncoderBuffer(t);
            else if (i.choice) a = this._encodeChoice(t, e);
            else if (i.contains) o = this._getUse(i.contains, n)._encode(t, e), s = !0;
            else if (i.children) o = i.children.map((function(n) {
                if ("null_" === n._baseState.tag) return n._encode(null, e, t);
                if (null === n._baseState.key) return e.error("Child should have a key");
                var r = e.enterKey(n._baseState.key);
                if ("object" != typeof t) return e.error("Child expected, but input is not object");
                var i = n._encode(t[n._baseState.key], e, t);
                return e.leaveKey(r), i
            }), this).filter((function(t) {
                return t
            })), o = this._createEncoderBuffer(o);
            else if ("seqof" === i.tag || "setof" === i.tag) {
                if (!i.args || 1 !== i.args.length) return e.error("Too many args for : " + i.tag);
                if (!Array.isArray(t)) return e.error("seqof/setof, but data is not Array");
                var u = this.clone();
                u._baseState.implicit = null, o = this._createEncoderBuffer(t.map((function(n) {
                    var r = this._baseState;
                    return this._getUse(r.args[0], t)._encode(n, e)
                }), u))
            } else null !== i.use ? a = this._getUse(i.use, n)._encode(t, e) : (o = this._encodePrimitive(i.tag, t), s = !0);
            if (!i.any && null === i.choice) {
                var c = null !== i.implicit ? i.implicit : i.tag,
                    f = null === i.implicit ? "universal" : "context";
                null === c ? null === i.use && e.error("Tag could be omitted only for .use()") : null === i.use && (a = this._encodeComposite(c, s, f, o))
            }
            return null !== i.explicit && (a = this._encodeComposite(i.explicit, !1, "context", a)), a
        }, c.prototype._encodeChoice = function(t, e) {
            var n = this._baseState,
                r = n.choice[t.type];
            return r || o(!1, t.type + " not found in " + JSON.stringify(Object.keys(n.choice))), r._encode(t.value, e)
        }, c.prototype._encodePrimitive = function(t, e) {
            var n = this._baseState;
            if (/str$/.test(t)) return this._encodeStr(e, t);
            if ("objid" === t && n.args) return this._encodeObjid(e, n.reverseArgs[0], n.args[1]);
            if ("objid" === t) return this._encodeObjid(e, null, null);
            if ("gentime" === t || "utctime" === t) return this._encodeTime(e, t);
            if ("null_" === t) return this._encodeNull();
            if ("int" === t || "enum" === t) return this._encodeInt(e, n.args && n.reverseArgs[0]);
            if ("bool" === t) return this._encodeBool(e);
            if ("objDesc" === t) return this._encodeStr(e, t);
            throw new Error("Unsupported tag: " + t)
        }, c.prototype._isNumstr = function(t) {
            return /^[0-9 ]*$/.test(t)
        }, c.prototype._isPrintstr = function(t) {
            return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(t)
        }
    }, function(t, e, n) {
        var r = n(221);
        e.tagClass = {
            0: "universal",
            1: "application",
            2: "context",
            3: "private"
        }, e.tagClassByName = r._reverse(e.tagClass), e.tag = {
            0: "end",
            1: "bool",
            2: "int",
            3: "bitstr",
            4: "octstr",
            5: "null_",
            6: "objid",
            7: "objDesc",
            8: "external",
            9: "real",
            10: "enum",
            11: "embed",
            12: "utf8str",
            13: "relativeOid",
            16: "seq",
            17: "set",
            18: "numstr",
            19: "printstr",
            20: "t61str",
            21: "videostr",
            22: "ia5str",
            23: "utctime",
            24: "gentime",
            25: "graphstr",
            26: "iso646str",
            27: "genstr",
            28: "unistr",
            29: "charstr",
            30: "bmpstr"
        }, e.tagByName = r._reverse(e.tag)
    }, function(t, e, n) {
        var r = e;
        r.der = n(222), r.pem = n(488)
    }, function(t, e, n) {
        var r = n(2),
            i = n(8).Buffer,
            a = n(222);

        function o(t) {
            a.call(this, t), this.enc = "pem"
        }
        r(o, a), t.exports = o, o.prototype.decode = function(t, e) {
            for (var n = t.toString().split(/[\r\n]+/g), r = e.label.toUpperCase(), o = /^-----(BEGIN|END) ([^-]+)-----$/, s = -1, u = -1, c = 0; c < n.length; c++) {
                var f = n[c].match(o);
                if (null !== f && f[2] === r) {
                    if (-1 !== s) {
                        if ("END" !== f[1]) break;
                        u = c;
                        break
                    }
                    if ("BEGIN" !== f[1]) break;
                    s = c
                }
            }
            if (-1 === s || -1 === u) throw new Error("PEM section not found for: " + r);
            var l = n.slice(s + 1, u).join("");
            l.replace(/[^a-z0-9\+\/=]+/gi, "");
            var h = new i(l, "base64");
            return a.prototype.decode.call(this, h, e)
        }
    }, function(t, e, n) {
        var r = e;
        r.der = n(223), r.pem = n(490)
    }, function(t, e, n) {
        var r = n(2),
            i = n(223);

        function a(t) {
            i.call(this, t), this.enc = "pem"
        }
        r(a, i), t.exports = a, a.prototype.encode = function(t, e) {
            for (var n = i.prototype.encode.call(this, t).toString("base64"), r = ["-----BEGIN " + e.label + "-----"], a = 0; a < n.length; a += 64) r.push(n.slice(a, a + 64));
            return r.push("-----END " + e.label + "-----"), r.join("\n")
        }
    }, function(t, e, n) {
        "use strict";
        var r = n(57),
            i = r.define("Time", (function() {
                this.choice({
                    utcTime: this.utctime(),
                    generalTime: this.gentime()
                })
            })),
            a = r.define("AttributeTypeValue", (function() {
                this.seq().obj(this.key("type").objid(), this.key("value").any())
            })),
            o = r.define("AlgorithmIdentifier", (function() {
                this.seq().obj(this.key("algorithm").objid(), this.key("parameters").optional(), this.key("curve").objid().optional())
            })),
            s = r.define("SubjectPublicKeyInfo", (function() {
                this.seq().obj(this.key("algorithm").use(o), this.key("subjectPublicKey").bitstr())
            })),
            u = r.define("RelativeDistinguishedName", (function() {
                this.setof(a)
            })),
            c = r.define("RDNSequence", (function() {
                this.seqof(u)
            })),
            f = r.define("Name", (function() {
                this.choice({
                    rdnSequence: this.use(c)
                })
            })),
            l = r.define("Validity", (function() {
                this.seq().obj(this.key("notBefore").use(i), this.key("notAfter").use(i))
            })),
            h = r.define("Extension", (function() {
                this.seq().obj(this.key("extnID").objid(), this.key("critical").bool().def(!1), this.key("extnValue").octstr())
            })),
            d = r.define("TBSCertificate", (function() {
                this.seq().obj(this.key("version").explicit(0).int().optional(), this.key("serialNumber").int(), this.key("signature").use(o), this.key("issuer").use(f), this.key("validity").use(l), this.key("subject").use(f), this.key("subjectPublicKeyInfo").use(s), this.key("issuerUniqueID").implicit(1).bitstr().optional(), this.key("subjectUniqueID").implicit(2).bitstr().optional(), this.key("extensions").explicit(3).seqof(h).optional())
            })),
            p = r.define("X509Certificate", (function() {
                this.seq().obj(this.key("tbsCertificate").use(d), this.key("signatureAlgorithm").use(o), this.key("signatureValue").bitstr())
            }));
        t.exports = p
    }, function(t) {
        t.exports = JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')
    }, function(t, e, n) {
        var r = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m,
            i = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,
            a = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m,
            o = n(80),
            s = n(121),
            u = n(3).Buffer;
        t.exports = function(t, e) {
            var n, c = t.toString(),
                f = c.match(r);
            if (f) {
                var l = "aes" + f[1],
                    h = u.from(f[2], "hex"),
                    d = u.from(f[3].replace(/[\r\n]/g, ""), "base64"),
                    p = o(e, h.slice(0, 8), parseInt(f[1], 10)).key,
                    g = [],
                    y = s.createDecipheriv(l, p, h);
                g.push(y.update(d)), g.push(y.final()), n = u.concat(g)
            } else {
                var b = c.match(a);
                n = new u(b[2].replace(/[\r\n]/g, ""), "base64")
            }
            return {
                tag: c.match(i)[1],
                data: n
            }
        }
    }, function(t, e, n) {
        (function(e) {
            var r = n(5),
                i = n(125).ec,
                a = n(82),
                o = n(224);

            function s(t, e) {
                if (t.cmpn(0) <= 0) throw new Error("invalid sig");
                if (t.cmp(e) >= e) throw new Error("invalid sig")
            }
            t.exports = function(t, n, u, c, f) {
                var l = a(u);
                if ("ec" === l.type) {
                    if ("ecdsa" !== c && "ecdsa/rsa" !== c) throw new Error("wrong public key type");
                    return function(t, e, n) {
                        var r = o[n.data.algorithm.curve.join(".")];
                        if (!r) throw new Error("unknown curve " + n.data.algorithm.curve.join("."));
                        var a = new i(r),
                            s = n.data.subjectPrivateKey.data;
                        return a.verify(e, t, s)
                    }(t, n, l)
                }
                if ("dsa" === l.type) {
                    if ("dsa" !== c) throw new Error("wrong public key type");
                    return function(t, e, n) {
                        var i = n.data.p,
                            o = n.data.q,
                            u = n.data.g,
                            c = n.data.pub_key,
                            f = a.signature.decode(t, "der"),
                            l = f.s,
                            h = f.r;
                        s(l, o), s(h, o);
                        var d = r.mont(i),
                            p = l.invm(o);
                        return 0 === u.toRed(d).redPow(new r(e).mul(p).mod(o)).fromRed().mul(c.toRed(d).redPow(h.mul(p).mod(o)).fromRed()).mod(i).mod(o).cmp(h)
                    }(t, n, l)
                }
                if ("rsa" !== c && "ecdsa/rsa" !== c) throw new Error("wrong public key type");
                n = e.concat([f, n]);
                for (var h = l.modulus.byteLength(), d = [1], p = 0; n.length + d.length + 2 < h;) d.push(255), p++;
                d.push(0);
                for (var g = -1; ++g < n.length;) d.push(n[g]);
                d = new e(d);
                var y = r.mont(l.modulus);
                t = (t = new r(t).toRed(y)).redPow(new r(l.publicExponent)), t = new e(t.fromRed().toArray());
                var b = p < 8 ? 1 : 0;
                for (h = Math.min(t.length, d.length), t.length !== d.length && (b = 1), g = -1; ++g < h;) b |= t[g] ^ d[g];
                return 0 === b
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        (function(e) {
            var r = n(125),
                i = n(5);
            t.exports = function(t) {
                return new o(t)
            };
            var a = {
                secp256k1: {
                    name: "secp256k1",
                    byteLength: 32
                },
                secp224r1: {
                    name: "p224",
                    byteLength: 28
                },
                prime256v1: {
                    name: "p256",
                    byteLength: 32
                },
                prime192v1: {
                    name: "p192",
                    byteLength: 24
                },
                ed25519: {
                    name: "ed25519",
                    byteLength: 32
                },
                secp384r1: {
                    name: "p384",
                    byteLength: 48
                },
                secp521r1: {
                    name: "p521",
                    byteLength: 66
                }
            };

            function o(t) {
                this.curveType = a[t], this.curveType || (this.curveType = {
                    name: t
                }), this.curve = new r.ec(this.curveType.name), this.keys = void 0
            }

            function s(t, n, r) {
                Array.isArray(t) || (t = t.toArray());
                var i = new e(t);
                if (r && i.length < r) {
                    var a = new e(r - i.length);
                    a.fill(0), i = e.concat([a, i])
                }
                return n ? i.toString(n) : i
            }
            a.p224 = a.secp224r1, a.p256 = a.secp256r1 = a.prime256v1, a.p192 = a.secp192r1 = a.prime192v1, a.p384 = a.secp384r1, a.p521 = a.secp521r1, o.prototype.generateKeys = function(t, e) {
                return this.keys = this.curve.genKeyPair(), this.getPublicKey(t, e)
            }, o.prototype.computeSecret = function(t, n, r) {
                return n = n || "utf8", e.isBuffer(t) || (t = new e(t, n)), s(this.curve.keyFromPublic(t).getPublic().mul(this.keys.getPrivate()).getX(), r, this.curveType.byteLength)
            }, o.prototype.getPublicKey = function(t, e) {
                var n = this.keys.getPublic("compressed" === e, !0);
                return "hybrid" === e && (n[n.length - 1] % 2 ? n[0] = 7 : n[0] = 6), s(n, t)
            }, o.prototype.getPrivateKey = function(t) {
                return s(this.keys.getPrivate(), t)
            }, o.prototype.setPublicKey = function(t, n) {
                return n = n || "utf8", e.isBuffer(t) || (t = new e(t, n)), this.keys._importPublic(t), this
            }, o.prototype.setPrivateKey = function(t, n) {
                n = n || "utf8", e.isBuffer(t) || (t = new e(t, n));
                var r = new i(t);
                return r = r.toString(16), this.keys = this.curve.genKeyPair(), this.keys._importPrivate(r), this
            }
        }).call(this, n(8).Buffer)
    }, function(t, e, n) {
        e.publicEncrypt = n(497), e.privateDecrypt = n(498), e.privateEncrypt = function(t, n) {
            return e.publicEncrypt(t, n, !0)
        }, e.publicDecrypt = function(t, n) {
            return e.privateDecrypt(t, n, !0)
        }
    }, function(t, e, n) {
        var r = n(82),
            i = n(44),
            a = n(53),
            o = n(225),
            s = n(226),
            u = n(5),
            c = n(227),
            f = n(124),
            l = n(3).Buffer;
        t.exports = function(t, e, n) {
            var h;
            h = t.padding ? t.padding : n ? 1 : 4;
            var d, p = r(t);
            if (4 === h) d = function(t, e) {
                var n = t.modulus.byteLength(),
                    r = e.length,
                    c = a("sha1").update(l.alloc(0)).digest(),
                    f = c.length,
                    h = 2 * f;
                if (r > n - h - 2) throw new Error("message too long");
                var d = l.alloc(n - r - h - 2),
                    p = n - f - 1,
                    g = i(f),
                    y = s(l.concat([c, d, l.alloc(1, 1), e], p), o(g, p)),
                    b = s(g, o(y, f));
                return new u(l.concat([l.alloc(1), b, y], n))
            }(p, e);
            else if (1 === h) d = function(t, e, n) {
                var r, a = e.length,
                    o = t.modulus.byteLength();
                if (a > o - 11) throw new Error("message too long");
                r = n ? l.alloc(o - a - 3, 255) : function(t) {
                    var e, n = l.allocUnsafe(t),
                        r = 0,
                        a = i(2 * t),
                        o = 0;
                    for (; r < t;) o === a.length && (a = i(2 * t), o = 0), (e = a[o++]) && (n[r++] = e);
                    return n
                }(o - a - 3);
                return new u(l.concat([l.from([0, n ? 1 : 2]), r, l.alloc(1), e], o))
            }(p, e, n);
            else {
                if (3 !== h) throw new Error("unknown padding");
                if ((d = new u(e)).cmp(p.modulus) >= 0) throw new Error("data too long for modulus")
            }
            return n ? f(d, p) : c(d, p)
        }
    }, function(t, e, n) {
        var r = n(82),
            i = n(225),
            a = n(226),
            o = n(5),
            s = n(124),
            u = n(53),
            c = n(227),
            f = n(3).Buffer;
        t.exports = function(t, e, n) {
            var l;
            l = t.padding ? t.padding : n ? 1 : 4;
            var h, d = r(t),
                p = d.modulus.byteLength();
            if (e.length > p || new o(e).cmp(d.modulus) >= 0) throw new Error("decryption error");
            h = n ? c(new o(e), d) : s(e, d);
            var g = f.alloc(p - h.length);
            if (h = f.concat([g, h], p), 4 === l) return function(t, e) {
                var n = t.modulus.byteLength(),
                    r = u("sha1").update(f.alloc(0)).digest(),
                    o = r.length;
                if (0 !== e[0]) throw new Error("decryption error");
                var s = e.slice(1, o + 1),
                    c = e.slice(o + 1),
                    l = a(s, i(c, o)),
                    h = a(c, i(l, n - o - 1));
                if (function(t, e) {
                        t = f.from(t), e = f.from(e);
                        var n = 0,
                            r = t.length;
                        t.length !== e.length && (n++, r = Math.min(t.length, e.length));
                        var i = -1;
                        for (; ++i < r;) n += t[i] ^ e[i];
                        return n
                    }(r, h.slice(0, o))) throw new Error("decryption error");
                var d = o;
                for (; 0 === h[d];) d++;
                if (1 !== h[d++]) throw new Error("decryption error");
                return h.slice(d)
            }(d, h);
            if (1 === l) return function(t, e, n) {
                var r = e.slice(0, 2),
                    i = 2,
                    a = 0;
                for (; 0 !== e[i++];)
                    if (i >= e.length) {
                        a++;
                        break
                    } var o = e.slice(2, i - 1);
                ("0002" !== r.toString("hex") && !n || "0001" !== r.toString("hex") && n) && a++;
                o.length < 8 && a++;
                if (a) throw new Error("decryption error");
                return e.slice(i)
            }(0, h, n);
            if (3 === l) return h;
            throw new Error("unknown padding")
        }
    }, function(t, e, n) {
        "use strict";
        (function(t, r) {
            function i() {
                throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")
            }
            var a = n(3),
                o = n(44),
                s = a.Buffer,
                u = a.kMaxLength,
                c = t.crypto || t.msCrypto,
                f = Math.pow(2, 32) - 1;

            function l(t, e) {
                if ("number" != typeof t || t != t) throw new TypeError("offset must be a number");
                if (t > f || t < 0) throw new TypeError("offset must be a uint32");
                if (t > u || t > e) throw new RangeError("offset out of range")
            }

            function h(t, e, n) {
                if ("number" != typeof t || t != t) throw new TypeError("size must be a number");
                if (t > f || t < 0) throw new TypeError("size must be a uint32");
                if (t + e > n || t > u) throw new RangeError("buffer too small")
            }

            function d(t, e, n, i) {
                if (r.browser) {
                    var a = t.buffer,
                        s = new Uint8Array(a, e, n);
                    return c.getRandomValues(s), i ? void r.nextTick((function() {
                        i(null, t)
                    })) : t
                }
                if (!i) return o(n).copy(t, e), t;
                o(n, (function(n, r) {
                    if (n) return i(n);
                    r.copy(t, e), i(null, t)
                }))
            }
            c && c.getRandomValues || !r.browser ? (e.randomFill = function(e, n, r, i) {
                if (!(s.isBuffer(e) || e instanceof t.Uint8Array)) throw new TypeError('"buf" argument must be a Buffer or Uint8Array');
                if ("function" == typeof n) i = n, n = 0, r = e.length;
                else if ("function" == typeof r) i = r, r = e.length - n;
                else if ("function" != typeof i) throw new TypeError('"cb" argument must be a function');
                return l(n, e.length), h(r, n, e.length), d(e, n, r, i)
            }, e.randomFillSync = function(e, n, r) {
                void 0 === n && (n = 0);
                if (!(s.isBuffer(e) || e instanceof t.Uint8Array)) throw new TypeError('"buf" argument must be a Buffer or Uint8Array');
                l(n, e.length), void 0 === r && (r = e.length - n);
                return h(r, n, e.length), d(e, n, r)
            }) : (e.randomFill = i, e.randomFillSync = i)
        }).call(this, n(12), n(7))
    }, function(t, e, n) {
        var r = {
            "./dark/index.scss": 501,
            "./default/index.scss": 503,
            "./forest/index.scss": 505,
            "./neutral/index.scss": 507
        };

        function i(t) {
            var e = a(t);
            return n(e)
        }

        function a(t) {
            if (!n.o(r, t)) {
                var e = new Error("Cannot find module '" + t + "'");
                throw e.code = "MODULE_NOT_FOUND", e
            }
            return r[t]
        }
        i.keys = function() {
            return Object.keys(r)
        }, i.resolve = a, t.exports = i, i.id = 500
    }, function(t, e, n) {
        var r = n(502);
        t.exports = "string" == typeof r ? r : r.toString()
    }, function(t, e, n) {
        (t.exports = n(83)(!1)).push([t.i, ".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#BDD5EA;stroke:purple;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#d3d3d3}.edgePath .path{stroke:#d3d3d3;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.cluster rect{fill:#6D6D65;stroke:rgba(255,255,255,0.25);stroke-width:1px}.cluster text{fill:#F9FFFE}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#6D6D65;border:1px solid rgba(255,255,255,0.25);border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#81B1DB;fill:#BDD5EA}text.actor{fill:#000;stroke:none}.actor-line{stroke:#d3d3d3}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}#arrowhead{fill:#d3d3d3}.sequenceNumber{fill:#fff}#sequencenumber{fill:#d3d3d3}#crosshead path{fill:#d3d3d3 !important;stroke:#d3d3d3 !important}.messageText{fill:#d3d3d3;stroke:none}.labelBox{stroke:#81B1DB;fill:#BDD5EA}.labelText{fill:#323D47;stroke:none}.loopText{fill:#d3d3d3;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#81B1DB}.note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:rgba(255,255,255,0.3)}.section2{fill:#EAE8B9}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#F9FFFE}.sectionTitle1{fill:#F9FFFE}.sectionTitle2{fill:#F9FFFE}.sectionTitle3{fill:#F9FFFE}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:#DB5757;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#323D47;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#323D47;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#323D47}.task0,.task1,.task2,.task3{fill:#BDD5EA;stroke:rgba(255,255,255,0.5)}.taskTextOutside0,.taskTextOutside2{fill:#d3d3d3}.taskTextOutside1,.taskTextOutside3{fill:#d3d3d3}.active0,.active1,.active2,.active3{fill:#81B1DB;stroke:rgba(255,255,255,0.5)}.activeText0,.activeText1,.activeText2,.activeText3{fill:#323D47 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#323D47 !important}.crit0,.crit1,.crit2,.crit3{stroke:#E83737;fill:#E83737;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#E83737;fill:#81B1DB;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#E83737;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#323D47 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#323D47 !important}.titleText{text-anchor:middle;font-size:18px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:purple;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#BDD5EA;stroke:purple}g.classGroup line{stroke:purple;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}.classLabel .label{fill:purple;font-size:10px}.relation{stroke:purple;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:purple;stroke:purple;stroke-width:1}#compositionEnd{fill:purple;stroke:purple;stroke-width:1}#aggregationStart{fill:#BDD5EA;stroke:purple;stroke-width:1}#aggregationEnd{fill:#BDD5EA;stroke:purple;stroke-width:1}#dependencyStart{fill:purple;stroke:purple;stroke-width:1}#dependencyEnd{fill:purple;stroke:purple;stroke-width:1}#extensionStart{fill:purple;stroke:purple;stroke-width:1}#extensionEnd{fill:purple;stroke:purple;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:purple;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:purple;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#BDD5EA;stroke:purple}g.stateGroup line{stroke:purple;stroke-width:1}.transition{stroke:purple;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n", ""])
    }, function(t, e, n) {
        var r = n(504);
        t.exports = "string" == typeof r ? r : r.toString()
    }, function(t, e, n) {
        (t.exports = n(83)(!1)).push([t.i, ".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#333}.edgePath .path{stroke:#333;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#ccf;fill:#ECECFF}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#ccf;fill:#ECECFF}.labelText{fill:#000;stroke:none}.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#ccf}.note{stroke:#aa3;fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:rgba(102,102,255,0.49)}.section2{fill:#fff400}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#8a90dd;stroke:#534fbc}.taskTextOutside0,.taskTextOutside2{fill:#000}.taskTextOutside1,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#bfc7ff;stroke:#534fbc}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000 !important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#000 !important}.titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#ECECFF;stroke:#9370db}g.classGroup line{stroke:#9370db;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}.classLabel .label{fill:#9370db;font-size:10px}.relation{stroke:#9370db;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#9370db;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#ECECFF;stroke:#9370db}g.stateGroup line{stroke:#9370db;stroke-width:1}.transition{stroke:#9370db;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:#aa3;fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n", ""])
    }, function(t, e, n) {
        var r = n(506);
        t.exports = "string" == typeof r ? r : r.toString()
    }, function(t, e, n) {
        (t.exports = n(83)(!1)).push([t.i, ".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#cde498;stroke:#13540c;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:green}.edgePath .path{stroke:green;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.cluster rect{fill:#cdffb2;stroke:#6eaa49;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#cdffb2;border:1px solid #6eaa49;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#13540c;fill:#cde498}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#326932;fill:#cde498}.labelText{fill:#000;stroke:none}.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#326932}.note{stroke:#6eaa49;fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:#6eaa49}.section2{fill:#6eaa49}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#487e3a;stroke:#13540c}.taskTextOutside0,.taskTextOutside2{fill:#000}.taskTextOutside1,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#cde498;stroke:#13540c}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000 !important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#cde498;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#000 !important}.titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#13540c;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#cde498;stroke:#13540c}g.classGroup line{stroke:#13540c;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#cde498;opacity:0.5}.classLabel .label{fill:#13540c;font-size:10px}.relation{stroke:#13540c;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:#13540c;stroke:#13540c;stroke-width:1}#compositionEnd{fill:#13540c;stroke:#13540c;stroke-width:1}#aggregationStart{fill:#cde498;stroke:#13540c;stroke-width:1}#aggregationEnd{fill:#cde498;stroke:#13540c;stroke-width:1}#dependencyStart{fill:#13540c;stroke:#13540c;stroke-width:1}#dependencyEnd{fill:#13540c;stroke:#13540c;stroke-width:1}#extensionStart{fill:#13540c;stroke:#13540c;stroke-width:1}#extensionEnd{fill:#13540c;stroke:#13540c;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#13540c;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#13540c;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#cde498;stroke:#13540c}g.stateGroup line{stroke:#13540c;stroke-width:1}.transition{stroke:#13540c;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:#6eaa49;fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#cde498;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n", ""])
    }, function(t, e, n) {
        var r = n(508);
        t.exports = "string" == typeof r ? r : r.toString()
    }, function(t, e, n) {
        (t.exports = n(83)(!1)).push([t.i, ".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#eee;stroke:#999;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#333}.edgePath .path{stroke:#666;stroke-width:1.5px}.edgeLabel{background-color:#fff;text-align:center}.cluster rect{fill:#eaf2fb;stroke:#26a;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#999;fill:#eee}text.actor{fill:#333;stroke:none}.actor-line{stroke:#666}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#999;fill:#eee}.labelText{fill:#333;stroke:none}.loopText{fill:#333;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#999}.note{stroke:#770;fill:#ffa}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:#80b3e6}.section2{fill:#80b3e6}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#e6e6e6;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:#d42;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#26a;stroke:#1a4d80}.taskTextOutside0,.taskTextOutside2{fill:#333}.taskTextOutside1,.taskTextOutside3{fill:#333}.active0,.active1,.active2,.active3{fill:#eee;stroke:#1a4d80}.activeText0,.activeText1,.activeText2,.activeText3{fill:#333 !important}.done0,.done1,.done2,.done3{stroke:#666;fill:#bbb;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#333 !important}.crit0,.crit1,.crit2,.crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#333 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#333 !important}.titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#999;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#eee;stroke:#999}g.classGroup line{stroke:#999;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.classLabel .label{fill:#999;font-size:10px}.relation{stroke:#999;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:#999;stroke:#999;stroke-width:1}#compositionEnd{fill:#999;stroke:#999;stroke-width:1}#aggregationStart{fill:#eee;stroke:#999;stroke-width:1}#aggregationEnd{fill:#eee;stroke:#999;stroke-width:1}#dependencyStart{fill:#999;stroke:#999;stroke-width:1}#dependencyEnd{fill:#999;stroke:#999;stroke-width:1}#extensionStart{fill:#999;stroke:#999;stroke-width:1}#extensionEnd{fill:#999;stroke:#999;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#999;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#999;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#eee;stroke:#999}g.stateGroup line{stroke:#999;stroke-width:1}.transition{stroke:#999;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:#770;fill:#ffa}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n", ""])
    }, function(t, e, n) {
        "use strict";
        n.r(e);
        var r = n(228),
            i = n.n(r),
            a = n(0),
            o = n(229),
            s = n.n(o),
            u = n(88);

        function c(t) {
            return (c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                return typeof t
            } : function(t) {
                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
            })(t)
        }
        var f = {},
            l = function(t) {
                ! function(t) {
                    for (var e = Object.keys(t), n = 0; n < e.length; n++)
                        if ("object" === c(t[e[n]]) && null != t[e[n]])
                            for (var r = Object.keys(t[e[n]]), i = 0; i < r.length; i++) void 0 === f[e[n]] && (f[e[n]] = {}), f[e[n]][r[i]] = t[e[n]][r[i]];
                        else f[e[n]] = t[e[n]]
                }(t)
            },
            h = function() {
                return f
            },
            d = n(22),
            p = n.n(d),
            g = 1,
            y = 2,
            b = 3,
            v = 4,
            m = 5,
            _ = {
                debug: function() {},
                info: function() {},
                warn: function() {},
                error: function() {},
                fatal: function() {}
            },
            w = function(t) {
                _.debug = function() {}, _.info = function() {}, _.warn = function() {}, _.error = function() {}, _.fatal = function() {}, t <= m && (_.fatal = console.error ? console.error.bind(console, x("FATAL"), "color: orange") : console.log.bind(console, "", x("FATAL"))), t <= v && (_.error = console.error ? console.error.bind(console, x("ERROR"), "color: orange") : console.log.bind(console, "", x("ERROR"))), t <= b && (_.warn = console.warn ? console.warn.bind(console, x("WARN"), "color: orange") : console.log.bind(console, "", x("WARN"))), t <= y && (_.info = console.info ? console.info.bind(console, x("INFO"), "color: lightblue") : console.log.bind(console, "", x("INFO"))), t <= g && (_.debug = console.debug ? console.debug.bind(console, x("DEBUG"), "color: lightgreen") : console.log.bind(console, "", x("DEBUG")))
            },
            x = function(t) {
                var e = p()().format("ss.SSS");
                return "%c".concat(e, " : ").concat(t, " : ")
            },
            k = n(84),
            E = function(t, e) {
                if (!t) return e;
                var n = "curve".concat(t.charAt(0).toUpperCase() + t.slice(1));
                return a[n] || e
            },
            A = function(t, e) {
                return t && e ? Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2)) : 0
            },
            S = {
                detectType: function(t) {
                    return t = t.replace(/^\s*%%.*\n/g, "\n"), _.debug("Detecting diagram type based on the text " + t), t.match(/^\s*sequenceDiagram/) ? "sequence" : t.match(/^\s*gantt/) ? "gantt" : t.match(/^\s*classDiagram/) ? "class" : t.match(/^\s*stateDiagram/) ? "state" : t.match(/^\s*gitGraph/) ? "git" : t.match(/^\s*info/) ? "info" : t.match(/^\s*pie/) ? "pie" : "flowchart"
                },
                isSubstringInArray: function(t, e) {
                    for (var n = 0; n < e.length; n++)
                        if (e[n].match(t)) return n;
                    return -1
                },
                interpolateToCurve: E,
                calcLabelPosition: function(t) {
                    return function(t) {
                        var e, n = 0;
                        t.forEach((function(t) {
                            n += A(t, e), e = t
                        }));
                        var r, i = n / 2;
                        return e = void 0, t.forEach((function(t) {
                            if (e && !r) {
                                var n = A(t, e);
                                if (n < i) i -= n;
                                else {
                                    var a = i / n;
                                    a <= 0 && (r = e), a >= 1 && (r = {
                                        x: t.x,
                                        y: t.y
                                    }), a > 0 && a < 1 && (r = {
                                        x: (1 - a) * e.x + a * t.x,
                                        y: (1 - a) * e.y + a * t.y
                                    })
                                }
                            }
                            e = t
                        })), r
                    }(t)
                },
                calcCardinalityPosition: function(t, e, n) {
                    var r;
                    e[0] !== n && (e = e.reverse()), e.forEach((function(t) {
                        A(t, r), r = t
                    }));
                    var i, a = 25;
                    r = void 0, e.forEach((function(t) {
                        if (r && !i) {
                            var e = A(t, r);
                            if (e < a) a -= e;
                            else {
                                var n = a / e;
                                n <= 0 && (i = r), n >= 1 && (i = {
                                    x: t.x,
                                    y: t.y
                                }), n > 0 && n < 1 && (i = {
                                    x: (1 - n) * r.x + n * t.x,
                                    y: (1 - n) * r.y + n * t.y
                                })
                            }
                        }
                        r = t
                    }));
                    var o = t ? 10 : 5,
                        s = Math.atan2(e[0].y - i.y, e[0].x - i.x),
                        u = {
                            x: 0,
                            y: 0
                        };
                    return u.x = Math.sin(s) * o + (e[0].x + i.x) / 2, u.y = -Math.cos(s) * o + (e[0].y + i.y) / 2, u
                },
                sanitize: function(t, e) {
                    var n = t,
                        r = !0;
                    return !e.flowchart || !1 !== e.flowchart.htmlLabels && "false" !== e.flowchart.htmlLabels || (r = !1), "loose" !== e.securityLevel && r && (n = (n = (n = (n = n.replace(/<br\s*\/?>/gi, "#br#")).replace(/</g, "&lt;").replace(/>/g, "&gt;")).replace(/=/g, "&equals;")).replace(/#br#/g, "<br/>")), n
                },
                formatUrl: function(t, e) {
                    var n = t.trim();
                    if (n) return "loose" !== e.securityLevel ? Object(k.sanitizeUrl)(n) : (/^(https?:)?\/\//i.test(n) || (n = "http://" + n), n)
                }
            },
            M = n(25),
            T = n.n(M);

        function D(t) {
            return (D = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                return typeof t
            } : function(t) {
                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
            })(t)
        }
        var C, N = h(),
            I = {},
            L = [],
            B = [],
            O = [],
            R = {},
            P = {},
            F = 0,
            q = !0,
            j = [],
            U = function(t, e, n, r) {
                var i = t,
                    a = e;
                i[0].match(/\d/) && (i = "" + i), a[0].match(/\d/) && (a = "" + a), _.info("Got edge...", i, a);
                var o = {
                    start: i,
                    end: a,
                    type: void 0,
                    text: ""
                };
                void 0 !== (r = n.text) && (o.text = S.sanitize(r.trim(), N), '"' === o.text[0] && '"' === o.text[o.text.length - 1] && (o.text = o.text.substring(1, o.text.length - 1))), void 0 !== n && (o.type = n.type, o.stroke = n.stroke), L.push(o)
            },
            z = function(t, e) {
                t.split(",").forEach((function(t) {
                    var n = t;
                    t[0].match(/\d/) && (n = "" + n), void 0 !== I[n] && I[n].classes.push(e), void 0 !== R[n] && R[n].classes.push(e)
                }))
            },
            Y = function(t, e) {
                t.split(",").forEach((function(t) {
                    void 0 !== e && (P[t] = S.sanitize(e, N))
                }))
            },
            V = function(t) {
                var e = a.select(".mermaidTooltip");
                null === (e._groups || e)[0][0] && (e = a.select("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0)), a.select(t).select("svg").selectAll("g.node").on("mouseover", (function() {
                    var t = a.select(this);
                    if (null !== t.attr("title")) {
                        var n = this.getBoundingClientRect();
                        e.transition().duration(200).style("opacity", ".9"), e.html(t.attr("title")).style("left", n.left + (n.right - n.left) / 2 + "px").style("top", n.top - 14 + document.body.scrollTop + "px"), t.classed("hover", !0)
                    }
                })).on("mouseout", (function() {
                    e.transition().duration(500).style("opacity", 0), a.select(this).classed("hover", !1)
                }))
            };
        j.push(V);
        var H = function(t) {
                for (var e = 0; e < O.length; e++)
                    if (O[e].id === t) return e;
                return -1
            },
            G = -1,
            $ = [],
            W = {
                addVertex: function(t, e, n, r, i) {
                    var a, o = t;
                    void 0 !== o && 0 !== o.trim().length && (o[0].match(/\d/) && (o = "" + o), void 0 === I[o] && (I[o] = {
                        id: o,
                        styles: [],
                        classes: []
                    }), void 0 !== e ? ('"' === (a = S.sanitize(e.trim(), N))[0] && '"' === a[a.length - 1] && (a = a.substring(1, a.length - 1)), I[o].text = a) : void 0 === I[o].text && (I[o].text = t), void 0 !== n && (I[o].type = n), null != r && r.forEach((function(t) {
                        I[o].styles.push(t)
                    })), null != i && i.forEach((function(t) {
                        I[o].classes.push(t)
                    })))
                },
                addLink: function(t, e, n, r) {
                    var i, a;
                    for (i = 0; i < t.length; i++)
                        for (a = 0; a < e.length; a++) U(t[i], e[a], n, r)
                },
                updateLinkInterpolate: function(t, e) {
                    t.forEach((function(t) {
                        "default" === t ? L.defaultInterpolate = e : L[t].interpolate = e
                    }))
                },
                updateLink: function(t, e) {
                    t.forEach((function(t) {
                        "default" === t ? L.defaultStyle = e : (-1 === S.isSubstringInArray("fill", e) && e.push("fill:none"), L[t].style = e)
                    }))
                },
                addClass: function(t, e) {
                    void 0 === B[t] && (B[t] = {
                        id: t,
                        styles: []
                    }), null != e && e.forEach((function(e) {
                        B[t].styles.push(e)
                    }))
                },
                setDirection: function(t) {
                    (C = t).match(/.*</) && (C = "RL"), C.match(/.*\^/) && (C = "BT"), C.match(/.*>/) && (C = "LR"), C.match(/.*v/) && (C = "TB")
                },
                setClass: z,
                getTooltip: function(t) {
                    return P[t]
                },
                setClickEvent: function(t, e, n) {
                    t.split(",").forEach((function(t) {
                        ! function(t, e) {
                            var n = t;
                            t[0].match(/\d/) && (n = "" + n), "loose" === N.securityLevel && void 0 !== e && void 0 !== I[n] && j.push((function() {
                                var t = document.querySelector('[id="'.concat(n, '"]'));
                                null !== t && t.addEventListener("click", (function() {
                                    window[e](n)
                                }), !1)
                            }))
                        }(t, e)
                    })), Y(t, n), z(t, "clickable")
                },
                setLink: function(t, e, n) {
                    t.split(",").forEach((function(t) {
                        var n = t;
                        t[0].match(/\d/) && (n = "" + n), void 0 !== I[n] && (I[n].link = S.formatUrl(e, N))
                    })), Y(t, n), z(t, "clickable")
                },
                bindFunctions: function(t) {
                    j.forEach((function(e) {
                        e(t)
                    }))
                },
                getDirection: function() {
                    return C.trim()
                },
                getVertices: function() {
                    return I
                },
                getEdges: function() {
                    return L
                },
                getClasses: function() {
                    return B
                },
                clear: function() {
                    I = {}, B = {}, L = [], (j = []).push(V), O = [], R = {}, F = 0, P = [], q = !0
                },
                defaultStyle: function() {
                    return "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"
                },
                addSubGraph: function(t, e, n) {
                    var r = t,
                        i = n;
                    t === n && n.match(/\s/) && (r = void 0);
                    var a, o, s, u = [];
                    a = u.concat.apply(u, e), o = {
                        boolean: {},
                        number: {},
                        string: {}
                    }, s = [], u = a.filter((function(t) {
                        var e = D(t);
                        return "" !== t.trim() && (e in o ? !o[e].hasOwnProperty(t) && (o[e][t] = !0) : !(s.indexOf(t) >= 0) && s.push(t))
                    }));
                    for (var c = 0; c < u.length; c++) u[c][0].match(/\d/) && (u[c] = "" + u[c]);
                    (r = r || "subGraph" + F)[0].match(/\d/) && (r = "" + r), i = i || "", i = S.sanitize(i, N), F += 1;
                    var f = {
                        id: r,
                        nodes: u,
                        title: i.trim(),
                        classes: []
                    };
                    return O.push(f), R[r] = f, r
                },
                getDepthFirstPos: function(t) {
                    return $[t]
                },
                indexNodes: function() {
                    G = -1, O.length > 0 && function t(e, n) {
                        var r = O[n].nodes;
                        if (!((G += 1) > 2e3)) {
                            if ($[G] = n, O[n].id === e) return {
                                result: !0,
                                count: 0
                            };
                            for (var i = 0, a = 1; i < r.length;) {
                                var o = H(r[i]);
                                if (o >= 0) {
                                    var s = t(e, o);
                                    if (s.result) return {
                                        result: !0,
                                        count: a + s.count
                                    };
                                    a += s.count
                                }
                                i += 1
                            }
                            return {
                                result: !1,
                                count: a
                            }
                        }
                    }("none", O.length - 1)
                },
                getSubGraphs: function() {
                    return O
                },
                destructLink: function(t, e) {
                    var n, r = function(t) {
                        switch (t.trim()) {
                            case "--x":
                                return {
                                    type: "arrow_cross", stroke: "normal"
                                };
                            case "--\x3e":
                                return {
                                    type: "arrow", stroke: "normal"
                                };
                            case "<--\x3e":
                                return {
                                    type: "double_arrow_point", stroke: "normal"
                                };
                            case "x--x":
                                return {
                                    type: "double_arrow_cross", stroke: "normal"
                                };
                            case "o--o":
                                return {
                                    type: "double_arrow_circle", stroke: "normal"
                                };
                            case "o.-o":
                                return {
                                    type: "double_arrow_circle", stroke: "dotted"
                                };
                            case "<==>":
                                return {
                                    type: "double_arrow_point", stroke: "thick"
                                };
                            case "o==o":
                                return {
                                    type: "double_arrow_circle", stroke: "thick"
                                };
                            case "x==x":
                                return {
                                    type: "double_arrow_cross", stroke: "thick"
                                };
                            case "x.-x":
                            case "x-.-x":
                                return {
                                    type: "double_arrow_cross", stroke: "dotted"
                                };
                            case "<.->":
                            case "<-.->":
                                return {
                                    type: "double_arrow_point", stroke: "dotted"
                                };
                            case "o-.-o":
                                return {
                                    type: "double_arrow_circle", stroke: "dotted"
                                };
                            case "--o":
                                return {
                                    type: "arrow_circle", stroke: "normal"
                                };
                            case "---":
                                return {
                                    type: "arrow_open", stroke: "normal"
                                };
                            case "-.-x":
                                return {
                                    type: "arrow_cross", stroke: "dotted"
                                };
                            case "-.->":
                                return {
                                    type: "arrow", stroke: "dotted"
                                };
                            case "-.-o":
                                return {
                                    type: "arrow_circle", stroke: "dotted"
                                };
                            case "-.-":
                                return {
                                    type: "arrow_open", stroke: "dotted"
                                };
                            case ".-x":
                                return {
                                    type: "arrow_cross", stroke: "dotted"
                                };
                            case ".->":
                                return {
                                    type: "arrow", stroke: "dotted"
                                };
                            case ".-o":
                                return {
                                    type: "arrow_circle", stroke: "dotted"
                                };
                            case ".-":
                                return {
                                    type: "arrow_open", stroke: "dotted"
                                };
                            case "==x":
                                return {
                                    type: "arrow_cross", stroke: "thick"
                                };
                            case "==>":
                                return {
                                    type: "arrow", stroke: "thick"
                                };
                            case "==o":
                                return {
                                    type: "arrow_circle", stroke: "thick"
                                };
                            case "===":
                                return {
                                    type: "arrow_open", stroke: "thick"
                                }
                        }
                    }(t);
                    if (e) {
                        if ((n = function(t) {
                                switch (t.trim()) {
                                    case "<--":
                                        return {
                                            type: "arrow", stroke: "normal"
                                        };
                                    case "x--":
                                        return {
                                            type: "arrow_cross", stroke: "normal"
                                        };
                                    case "o--":
                                        return {
                                            type: "arrow_circle", stroke: "normal"
                                        };
                                    case "<-.":
                                        return {
                                            type: "arrow", stroke: "dotted"
                                        };
                                    case "x-.":
                                        return {
                                            type: "arrow_cross", stroke: "dotted"
                                        };
                                    case "o-.":
                                        return {
                                            type: "arrow_circle", stroke: "dotted"
                                        };
                                    case "<==":
                                        return {
                                            type: "arrow", stroke: "thick"
                                        };
                                    case "x==":
                                        return {
                                            type: "arrow_cross", stroke: "thick"
                                        };
                                    case "o==":
                                        return {
                                            type: "arrow_circle", stroke: "thick"
                                        };
                                    case "--":
                                        return {
                                            type: "arrow_open", stroke: "normal"
                                        };
                                    case "==":
                                        return {
                                            type: "arrow_open", stroke: "thick"
                                        };
                                    case "-.":
                                        return {
                                            type: "arrow_open", stroke: "dotted"
                                        }
                                }
                            }(e)).stroke !== r.stroke) return {
                            type: "INVALID",
                            stroke: "INVALID"
                        };
                        if ("arrow_open" === n.type) n.type = r.type;
                        else {
                            if (n.type !== r.type) return {
                                type: "INVALID",
                                stroke: "INVALID"
                            };
                            n.type = "double_" + n.type
                        }
                        return "double_arrow" === n.type && (n.type = "double_arrow_point"), n
                    }
                    return r
                },
                lex: {
                    firstGraph: function() {
                        return !!q && (q = !1, !0)
                    }
                }
            },
            K = n(60),
            X = n.n(K),
            Z = n(11),
            J = n.n(Z),
            Q = n(128),
            tt = n.n(Q);

        function et(t, e, n) {
            var r = .9 * (e.width + e.height),
                i = [{
                    x: r / 2,
                    y: 0
                }, {
                    x: r,
                    y: -r / 2
                }, {
                    x: r / 2,
                    y: -r
                }, {
                    x: 0,
                    y: -r / 2
                }],
                a = lt(t, r, r, i);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, i, t)
            }, a
        }

        function nt(t, e, n) {
            var r = e.height,
                i = r / 4,
                a = e.width + 2 * i,
                o = [{
                    x: i,
                    y: 0
                }, {
                    x: a - i,
                    y: 0
                }, {
                    x: a,
                    y: -r / 2
                }, {
                    x: a - i,
                    y: -r
                }, {
                    x: i,
                    y: -r
                }, {
                    x: 0,
                    y: -r / 2
                }],
                s = lt(t, a, r, o);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, o, t)
            }, s
        }

        function rt(t, e, n) {
            var r = e.width,
                i = e.height,
                a = [{
                    x: -i / 2,
                    y: 0
                }, {
                    x: r,
                    y: 0
                }, {
                    x: r,
                    y: -i
                }, {
                    x: -i / 2,
                    y: -i
                }, {
                    x: 0,
                    y: -i / 2
                }],
                o = lt(t, r, i, a);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, a, t)
            }, o
        }

        function it(t, e, n) {
            var r = e.width,
                i = e.height,
                a = [{
                    x: -2 * i / 6,
                    y: 0
                }, {
                    x: r - i / 6,
                    y: 0
                }, {
                    x: r + 2 * i / 6,
                    y: -i
                }, {
                    x: i / 6,
                    y: -i
                }],
                o = lt(t, r, i, a);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, a, t)
            }, o
        }

        function at(t, e, n) {
            var r = e.width,
                i = e.height,
                a = [{
                    x: 2 * i / 6,
                    y: 0
                }, {
                    x: r + i / 6,
                    y: 0
                }, {
                    x: r - 2 * i / 6,
                    y: -i
                }, {
                    x: -i / 6,
                    y: -i
                }],
                o = lt(t, r, i, a);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, a, t)
            }, o
        }

        function ot(t, e, n) {
            var r = e.width,
                i = e.height,
                a = [{
                    x: -2 * i / 6,
                    y: 0
                }, {
                    x: r + 2 * i / 6,
                    y: 0
                }, {
                    x: r - i / 6,
                    y: -i
                }, {
                    x: i / 6,
                    y: -i
                }],
                o = lt(t, r, i, a);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, a, t)
            }, o
        }

        function st(t, e, n) {
            var r = e.width,
                i = e.height,
                a = [{
                    x: i / 6,
                    y: 0
                }, {
                    x: r - i / 6,
                    y: 0
                }, {
                    x: r + 2 * i / 6,
                    y: -i
                }, {
                    x: -2 * i / 6,
                    y: -i
                }],
                o = lt(t, r, i, a);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, a, t)
            }, o
        }

        function ut(t, e, n) {
            var r = e.width,
                i = e.height,
                a = [{
                    x: 0,
                    y: 0
                }, {
                    x: r + i / 2,
                    y: 0
                }, {
                    x: r,
                    y: -i / 2
                }, {
                    x: r + i / 2,
                    y: -i
                }, {
                    x: 0,
                    y: -i
                }],
                o = lt(t, r, i, a);
            return n.intersect = function(t) {
                return J.a.intersect.polygon(n, a, t)
            }, o
        }

        function ct(t, e, n) {
            var r = e.height,
                i = e.width + r / 4,
                a = t.insert("rect", ":first-child").attr("rx", r / 2).attr("ry", r / 2).attr("x", -i / 2).attr("y", -r / 2).attr("width", i).attr("height", r);
            return n.intersect = function(t) {
                return J.a.intersect.rect(n, t)
            }, a
        }

        function ft(t, e, n) {
            var r = e.width,
                i = r / 2,
                a = i / (2.5 + r / 50),
                o = e.height + a,
                s = "M 0," + a + " a " + i + "," + a + " 0,0,0 " + r + " 0 a " + i + "," + a + " 0,0,0 " + -r + " 0 l 0," + o + " a " + i + "," + a + " 0,0,0 " + r + " 0 l 0," + -o,
                u = t.attr("label-offset-y", a).insert("path", ":first-child").attr("d", s).attr("transform", "translate(" + -r / 2 + "," + -(o / 2 + a) + ")");
            return n.intersect = function(t) {
                var e = J.a.intersect.rect(n, t),
                    r = e.x - n.x;
                if (0 != i && (Math.abs(r) < n.width / 2 || Math.abs(r) == n.width / 2 && Math.abs(e.y - n.y) > n.height / 2 - a)) {
                    var o = a * a * (1 - r * r / (i * i));
                    0 != o && (o = Math.sqrt(o)), o = a - o, t.y - n.y > 0 && (o = -o), e.y += o
                }
                return e
            }, u
        }

        function lt(t, e, n, r) {
            return t.insert("polygon", ":first-child").attr("points", r.map((function(t) {
                return t.x + "," + t.y
            })).join(" ")).attr("transform", "translate(" + -e / 2 + "," + n / 2 + ")")
        }
        var ht = {
                addToRender: function(t) {
                    t.shapes().question = et, t.shapes().hexagon = nt, t.shapes().stadium = ct, t.shapes().cylinder = ft, t.shapes().rect_left_inv_arrow = rt, t.shapes().lean_right = it, t.shapes().lean_left = at, t.shapes().trapezoid = ot, t.shapes().inv_trapezoid = st, t.shapes().rect_right_inv_arrow = ut
                }
            },
            dt = {},
            pt = function(t, e, n) {
                var r = a.select('[id="'.concat(n, '"]')),
                    i = Object.keys(t),
                    o = function(t, e, n) {
                        if (n.label)
                            for (var r = 0; r < e.length; r++) void 0 !== e[r] && e[r].match("^color:|^text-align:") && (t = t + e[r] + ";");
                        else
                            for (var i = 0; i < e.length; i++) void 0 !== e[i] && (t = t + e[i] + ";");
                        return t
                    };
                i.forEach((function(n) {
                    var i = t[n],
                        a = "";
                    i.classes.length > 0 && (a = i.classes.join(" "));
                    var s = "";
                    s = o(s, i.styles, {
                        label: !1
                    });
                    var u = "";
                    u = o(u, i.styles, {
                        label: !0
                    });
                    var c, f = void 0 !== i.text ? i.text : i.id;
                    if (h().flowchart.htmlLabels) {
                        var l = {
                            label: f.replace(/fa[lrsb]?:fa-[\w-]+/g, (function(t) {
                                return "<i class='".concat(t.replace(":", " "), "'></i>")
                            }))
                        };
                        (c = tt()(r, l).node()).parentNode.removeChild(c)
                    } else {
                        for (var d = document.createElementNS("http://www.w3.org/2000/svg", "text"), p = f.split(/<br\s*\/?>/gi), g = 0; g < p.length; g++) {
                            var y = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
                            y.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), y.setAttribute("dy", "1em"), y.setAttribute("x", "1"), y.textContent = p[g], d.appendChild(y)
                        }
                        c = d
                    }
                    var b = 0,
                        v = "";
                    switch (i.type) {
                        case "round":
                            b = 5, v = "rect";
                            break;
                        case "square":
                            v = "rect";
                            break;
                        case "diamond":
                            v = "question";
                            break;
                        case "hexagon":
                            v = "hexagon";
                            break;
                        case "odd":
                            v = "rect_left_inv_arrow";
                            break;
                        case "lean_right":
                            v = "lean_right";
                            break;
                        case "lean_left":
                            v = "lean_left";
                            break;
                        case "trapezoid":
                            v = "trapezoid";
                            break;
                        case "inv_trapezoid":
                            v = "inv_trapezoid";
                            break;
                        case "odd_right":
                            v = "rect_left_inv_arrow";
                            break;
                        case "circle":
                            v = "circle";
                            break;
                        case "ellipse":
                            v = "ellipse";
                            break;
                        case "stadium":
                            v = "stadium";
                            break;
                        case "cylinder":
                            v = "cylinder";
                            break;
                        case "group":
                            v = "rect";
                            break;
                        default:
                            v = "rect"
                    }
                    e.setNode(i.id, {
                        labelType: "svg",
                        labelStyle: u,
                        shape: v,
                        label: c,
                        rx: b,
                        ry: b,
                        class: a,
                        style: s,
                        id: i.id
                    })
                }))
            },
            gt = function(t, e) {
                var n, r = 0;
                void 0 !== t.defaultStyle && (n = t.defaultStyle.toString().replace(/,/g, ";")), t.forEach((function(i) {
                    r++;
                    var o = {};
                    "arrow_open" === i.type ? o.arrowhead = "none" : o.arrowhead = "normal";
                    var s = "";
                    if (void 0 !== i.style) i.style.forEach((function(t) {
                        s = s + t + ";"
                    }));
                    else switch (i.stroke) {
                        case "normal":
                            s = "fill:none", void 0 !== n && (s = n);
                            break;
                        case "dotted":
                            s = "fill:none;stroke-width:2px;stroke-dasharray:3;";
                            break;
                        case "thick":
                            s = " stroke-width: 3.5px;fill:none"
                    }
                    o.style = s, void 0 !== i.interpolate ? o.curve = E(i.interpolate, a.curveLinear) : void 0 !== t.defaultInterpolate ? o.curve = E(t.defaultInterpolate, a.curveLinear) : o.curve = E(dt.curve, a.curveLinear), void 0 === i.text ? void 0 !== i.style && (o.arrowheadStyle = "fill: #333") : (o.arrowheadStyle = "fill: #333", o.labelpos = "c", h().flowchart.htmlLabels ? (o.labelType = "html", o.label = '<span class="edgeLabel">' + i.text + "</span>") : (o.labelType = "text", o.label = i.text.replace(/<br\s*\/?>/gi, "\n"), void 0 === i.style && (o.style = o.style || "stroke: #333; stroke-width: 1.5px;fill:none"))), e.setEdge(i.start, i.end, o, r)
                }))
            },
            yt = function(t) {
                for (var e = Object.keys(t), n = 0; n < e.length; n++) dt[e[n]] = t[e[n]]
            },
            bt = function(t) {
                _.info("Extracting classes"), W.clear();
                var e = X.a.parser;
                return e.yy = W, e.parse(t), W.getClasses()
            },
            vt = function(t, e) {
                _.info("Drawing flowchart"), W.clear();
                var n = X.a.parser;
                n.yy = W;
                try {
                    n.parse(t)
                } catch (t) {
                    _.debug("Parsing failed")
                }
                var r = W.getDirection();
                void 0 === r && (r = "TD");
                for (var i, o = h().flowchart, s = o.nodeSpacing || 50, u = o.rankSpacing || 50, c = new T.a.Graph({
                        multigraph: !0,
                        compound: !0
                    }).setGraph({
                        rankdir: r,
                        nodesep: s,
                        ranksep: u,
                        marginx: 8,
                        marginy: 8
                    }).setDefaultEdgeLabel((function() {
                        return {}
                    })), f = W.getSubGraphs(), l = f.length - 1; l >= 0; l--) i = f[l], W.addVertex(i.id, i.title, "group", void 0, i.classes);
                var d = W.getVertices(),
                    p = W.getEdges(),
                    g = 0;
                for (g = f.length - 1; g >= 0; g--) {
                    i = f[g], a.selectAll("cluster").append("text");
                    for (var y = 0; y < i.nodes.length; y++) c.setParent(i.nodes[y], i.id)
                }
                pt(d, c, e), gt(p, c);
                var b = new(0, J.a.render);
                ht.addToRender(b), b.arrows().none = function(t, e, n, r) {
                    var i = t.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 0 0 L 0 0 z");
                    J.a.util.applyStyle(i, n[r + "Style"])
                }, b.arrows().normal = function(t, e) {
                    t.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowheadPath").style("stroke-width", 1).style("stroke-dasharray", "1,0")
                };
                var v = a.select('[id="'.concat(e, '"]')),
                    m = a.select("#" + e + " g");
                b(m, c), m.selectAll("g.node").attr("title", (function() {
                    return W.getTooltip(this.id)
                }));
                var w = v.node().getBBox(),
                    x = w.width + 16,
                    k = w.height + 16;
                for (_.debug("new ViewBox 0 0 ".concat(x, " ").concat(k), "translate(".concat(8 - c._label.marginx, ", ").concat(8 - c._label.marginy, ")")), o.useMaxWidth ? (v.attr("width", "100%"), v.attr("style", "max-width: ".concat(x, "px;"))) : (v.attr("height", k), v.attr("width", x)), v.attr("viewBox", "0 0 ".concat(x, " ").concat(k)), v.select("g").attr("transform", "translate(".concat(8 - c._label.marginx, ", ").concat(8 - w.y, ")")), W.indexNodes("subGraph" + g), g = 0; g < f.length; g++)
                    if ("undefined" !== (i = f[g]).title) {
                        var E = document.querySelectorAll("#" + e + ' [id="' + i.id + '"] rect'),
                            A = document.querySelectorAll("#" + e + ' [id="' + i.id + '"]'),
                            S = E[0].x.baseVal.value,
                            M = E[0].y.baseVal.value,
                            D = E[0].width.baseVal.value,
                            C = a.select(A[0]).select(".label");
                        C.attr("transform", "translate(".concat(S + D / 2, ", ").concat(M + 14, ")")), C.attr("id", e + "Text")
                    } if (!o.htmlLabels)
                    for (var N = document.querySelectorAll('[id="' + e + '"] .edgeLabel .label'), I = 0; I < N.length; I++) {
                        var L = N[I],
                            B = L.getBBox(),
                            O = document.createElementNS("http://www.w3.org/2000/svg", "rect");
                        O.setAttribute("rx", 0), O.setAttribute("ry", 0), O.setAttribute("width", B.width), O.setAttribute("height", B.height), O.setAttribute("style", "fill:#e8e8e8;"), L.insertBefore(O, L.firstChild)
                    }
                Object.keys(d).forEach((function(t) {
                    var n = d[t];
                    if (n.link) {
                        var r = a.select("#" + e + ' [id="' + t + '"]');
                        if (r) {
                            var i = document.createElementNS("http://www.w3.org/2000/svg", "a");
                            i.setAttributeNS("http://www.w3.org/2000/svg", "class", n.classes.join(" ")), i.setAttributeNS("http://www.w3.org/2000/svg", "href", n.link), i.setAttributeNS("http://www.w3.org/2000/svg", "rel", "noopener");
                            var o = r.insert((function() {
                                    return i
                                }), ":first-child"),
                                s = r.select(".label-container");
                            s && o.append((function() {
                                return s.node()
                            }));
                            var u = r.select(".label");
                            u && o.append((function() {
                                return u.node()
                            }))
                        }
                    }
                }))
            },
            mt = function(t, e) {
                var n = t.append("rect");
                return n.attr("x", e.x), n.attr("y", e.y), n.attr("fill", e.fill), n.attr("stroke", e.stroke), n.attr("width", e.width), n.attr("height", e.height), n.attr("rx", e.rx), n.attr("ry", e.ry), void 0 !== e.class && n.attr("class", e.class), n
            },
            _t = function(t, e) {
                var n = e.text.replace(/<br\s*\/?>/gi, " "),
                    r = t.append("text");
                r.attr("x", e.x), r.attr("y", e.y), r.style("text-anchor", e.anchor), r.attr("fill", e.fill), void 0 !== e.class && r.attr("class", e.class);
                var i = r.append("tspan");
                return i.attr("x", e.x + 2 * e.textMargin), i.attr("fill", e.fill), i.text(n), r
            },
            wt = function(t, e) {
                var n, r, i, a, o, s = t.append("polygon");
                s.attr("points", (n = e.x, r = e.y, n + "," + r + " " + (n + (i = 50)) + "," + r + " " + (n + i) + "," + (r + (a = 20) - (o = 7)) + " " + (n + i - 1.2 * o) + "," + (r + a) + " " + n + "," + (r + a))), s.attr("class", "labelBox"), e.y = e.y + e.labelMargin, e.x = e.x + .5 * e.labelMargin, _t(t, e)
            },
            xt = -1,
            kt = function() {
                return {
                    x: 0,
                    y: 0,
                    fill: void 0,
                    "text-anchor": "start",
                    style: "#666",
                    width: 100,
                    height: 100,
                    textMargin: 0,
                    rx: 0,
                    ry: 0
                }
            },
            Et = function() {
                return {
                    x: 0,
                    y: 0,
                    fill: "#EDF2AE",
                    stroke: "#666",
                    width: 100,
                    anchor: "start",
                    height: 100,
                    rx: 0,
                    ry: 0
                }
            },
            At = function() {
                function t(t, e, n, i, a, o, s) {
                    r(e.append("text").attr("x", n + a / 2).attr("y", i + o / 2 + 5).style("text-anchor", "middle").text(t), s)
                }

                function e(t, e, n, i, a, o, s, u) {
                    for (var c = u.actorFontSize, f = u.actorFontFamily, l = t.split(/<br\s*\/?>/gi), h = 0; h < l.length; h++) {
                        var d = h * c - c * (l.length - 1) / 2,
                            p = e.append("text").attr("x", n + a / 2).attr("y", i).style("text-anchor", "middle").style("font-size", c).style("font-family", f);
                        p.append("tspan").attr("x", n + a / 2).attr("dy", d).text(l[h]), p.attr("y", i + o / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"), r(p, s)
                    }
                }

                function n(t, n, i, a, o, s, u, c) {
                    var f = n.append("switch"),
                        l = f.append("foreignObject").attr("x", i).attr("y", a).attr("width", o).attr("height", s).append("div").style("display", "table").style("height", "100%").style("width", "100%");
                    l.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(t), e(t, f, i, a, o, s, u, c), r(l, u)
                }

                function r(t, e) {
                    for (var n in e) e.hasOwnProperty(n) && t.attr(n, e[n])
                }
                return function(r) {
                    return "fo" === r.textPlacement ? n : "old" === r.textPlacement ? t : e
                }
            }(),
            St = {
                drawRect: mt,
                drawText: _t,
                drawLabel: wt,
                drawActor: function(t, e, n, r, i) {
                    var a = e + i.width / 2,
                        o = t.append("g");
                    0 === n && (xt++, o.append("line").attr("id", "actor" + xt).attr("x1", a).attr("y1", 5).attr("x2", a).attr("y2", 2e3).attr("class", "actor-line").attr("stroke-width", "0.5px").attr("stroke", "#999"));
                    var s = Et();
                    s.x = e, s.y = n, s.fill = "#eaeaea", s.width = i.width, s.height = i.height, s.class = "actor", s.rx = 3, s.ry = 3, mt(o, s), At(i)(r, o, s.x, s.y, s.width, s.height, {
                        class: "actor"
                    }, i)
                },
                anchorElement: function(t) {
                    return t.append("g")
                },
                drawActivation: function(t, e, n, r, i) {
                    var a = Et(),
                        o = e.anchored;
                    a.x = e.startx, a.y = e.starty, a.class = "activation" + i % 3, a.width = e.stopx - e.startx, a.height = n - e.starty, mt(o, a)
                },
                drawLoop: function(t, e, n, r) {
                    var i = t.append("g"),
                        a = function(t, e, n, r) {
                            return i.append("line").attr("x1", t).attr("y1", e).attr("x2", n).attr("y2", r).attr("class", "loopLine")
                        };
                    a(e.startx, e.starty, e.stopx, e.starty), a(e.stopx, e.starty, e.stopx, e.stopy), a(e.startx, e.stopy, e.stopx, e.stopy), a(e.startx, e.starty, e.startx, e.stopy), void 0 !== e.sections && e.sections.forEach((function(t) {
                        a(e.startx, t, e.stopx, t).style("stroke-dasharray", "3, 3")
                    }));
                    var o = kt();
                    o.text = n, o.x = e.startx, o.y = e.starty, o.labelMargin = 15, o.class = "labelText", wt(i, o), (o = kt()).text = "[ " + e.title + " ]", o.x = e.startx + (e.stopx - e.startx) / 2, o.y = e.starty + 1.5 * r.boxMargin, o.anchor = "middle", o.class = "loopText", _t(i, o), void 0 !== e.sectionTitles && e.sectionTitles.forEach((function(t, n) {
                        "" !== t && (o.text = "[ " + t + " ]", o.y = e.sections[n] + 1.5 * r.boxMargin, _t(i, o))
                    }))
                },
                drawBackgroundRect: function(t, e) {
                    mt(t, {
                        x: e.startx,
                        y: e.starty,
                        width: e.stopx - e.startx,
                        height: e.stopy - e.starty,
                        fill: e.fill,
                        class: "rect"
                    }).lower()
                },
                insertArrowHead: function(t) {
                    t.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z")
                },
                insertSequenceNumber: function(t) {
                    t.append("defs").append("marker").attr("id", "sequencenumber").attr("refX", 15).attr("refY", 15).attr("markerWidth", 60).attr("markerHeight", 40).attr("orient", "auto").append("circle").attr("cx", 15).attr("cy", 15).attr("r", 6)
                },
                insertArrowCrossHead: function(t) {
                    var e = t.append("defs").append("marker").attr("id", "crosshead").attr("markerWidth", 15).attr("markerHeight", 8).attr("orient", "auto").attr("refX", 16).attr("refY", 4);
                    e.append("path").attr("fill", "black").attr("stroke", "#000000").style("stroke-dasharray", "0, 0").attr("stroke-width", "1px").attr("d", "M 9,2 V 6 L16,4 Z"), e.append("path").attr("fill", "none").attr("stroke", "#000000").style("stroke-dasharray", "0, 0").attr("stroke-width", "1px").attr("d", "M 0,1 L 6,7 M 6,1 L 0,7")
                },
                getTextObj: kt,
                getNoteRect: Et
            },
            Mt = n(1),
            Tt = n.n(Mt),
            Dt = {},
            Ct = [],
            Nt = [],
            It = "",
            Lt = function(t, e, n) {
                var r = Dt[t];
                r && e === r.name && null == n || (null == n && (n = e), Dt[t] = {
                    name: e,
                    description: n
                })
            },
            Bt = function(t, e, n, r) {
                if (_.debug("Adding message from=" + t + " to=" + e + " message=" + n + " type=" + r), r === Ot.ACTIVE_END) {
                    var i = function(t) {
                        var e = 0,
                            n = 0;
                        for (e = 0; e < Ct.length; e++) Ct[e].type === Ot.ACTIVE_START && Ct[e].from.actor === t && n++, Ct[e].type === Ot.ACTIVE_END && Ct[e].from.actor === t && n--;
                        return n
                    }(t.actor);
                    if (_.debug("Adding message from=", Ct, i), i < 1) {
                        var a = new Error("Trying to inactivate an inactive participant (" + t.actor + ")");
                        throw a.hash = {
                            text: "->>-",
                            token: "->>-",
                            line: "1",
                            loc: {
                                first_line: 1,
                                last_line: 1,
                                first_column: 1,
                                last_column: 1
                            },
                            expected: ["'ACTIVE_PARTICIPANT'"]
                        }, a
                    }
                }
                return Ct.push({
                    from: t,
                    to: e,
                    message: n,
                    type: r
                }), !0
            },
            Ot = {
                SOLID: 0,
                DOTTED: 1,
                NOTE: 2,
                SOLID_CROSS: 3,
                DOTTED_CROSS: 4,
                SOLID_OPEN: 5,
                DOTTED_OPEN: 6,
                LOOP_START: 10,
                LOOP_END: 11,
                ALT_START: 12,
                ALT_ELSE: 13,
                ALT_END: 14,
                OPT_START: 15,
                OPT_END: 16,
                ACTIVE_START: 17,
                ACTIVE_END: 18,
                PAR_START: 19,
                PAR_AND: 20,
                PAR_END: 21,
                RECT_START: 22,
                RECT_END: 23
            },
            Rt = function(t, e, n) {
                var r = {
                        actor: t,
                        placement: e,
                        message: n
                    },
                    i = [].concat(t, t);
                Nt.push(r), Ct.push({
                    from: i[0],
                    to: i[1],
                    message: n,
                    type: Ot.NOTE,
                    placement: e
                })
            },
            Pt = function(t) {
                It = t
            },
            Ft = {
                addActor: Lt,
                addMessage: function(t, e, n, r) {
                    Ct.push({
                        from: t,
                        to: e,
                        message: n,
                        answer: r
                    })
                },
                addSignal: Bt,
                getMessages: function() {
                    return Ct
                },
                getActors: function() {
                    return Dt
                },
                getActor: function(t) {
                    return Dt[t]
                },
                getActorKeys: function() {
                    return Object.keys(Dt)
                },
                getTitle: function() {
                    return It
                },
                clear: function() {
                    Dt = {}, Ct = []
                },
                LINETYPE: Ot,
                ARROWTYPE: {
                    FILLED: 0,
                    OPEN: 1
                },
                PLACEMENT: {
                    LEFTOF: 0,
                    RIGHTOF: 1,
                    OVER: 2
                },
                addNote: Rt,
                setTitle: Pt,
                apply: function t(e) {
                    if (e instanceof Array) e.forEach((function(e) {
                        t(e)
                    }));
                    else switch (e.type) {
                        case "addActor":
                            Lt(e.actor, e.actor, e.description);
                            break;
                        case "activeStart":
                        case "activeEnd":
                            Bt(e.actor, void 0, void 0, e.signalType);
                            break;
                        case "addNote":
                            Rt(e.actor, e.placement, e.text);
                            break;
                        case "addMessage":
                            Bt(e.from, e.to, e.msg, e.signalType);
                            break;
                        case "loopStart":
                            Bt(void 0, void 0, e.loopText, e.signalType);
                            break;
                        case "loopEnd":
                            Bt(void 0, void 0, void 0, e.signalType);
                            break;
                        case "rectStart":
                            Bt(void 0, void 0, e.color, e.signalType);
                            break;
                        case "rectEnd":
                            Bt(void 0, void 0, void 0, e.signalType);
                            break;
                        case "optStart":
                            Bt(void 0, void 0, e.optText, e.signalType);
                            break;
                        case "optEnd":
                            Bt(void 0, void 0, void 0, e.signalType);
                            break;
                        case "altStart":
                        case "else":
                            Bt(void 0, void 0, e.altText, e.signalType);
                            break;
                        case "altEnd":
                            Bt(void 0, void 0, void 0, e.signalType);
                            break;
                        case "setTitle":
                            Pt(e.text);
                            break;
                        case "parStart":
                        case "and":
                            Bt(void 0, void 0, e.parText, e.signalType);
                            break;
                        case "parEnd":
                            Bt(void 0, void 0, void 0, e.signalType)
                    }
                }
            };
        Mt.parser.yy = Ft;
        var qt = {
                diagramMarginX: 50,
                diagramMarginY: 30,
                actorMargin: 50,
                width: 150,
                height: 65,
                actorFontSize: 14,
                actorFontFamily: '"Open-Sans", "sans-serif"',
                boxMargin: 10,
                boxTextMargin: 5,
                noteMargin: 10,
                messageMargin: 35,
                mirrorActors: !1,
                bottomMarginAdj: 1,
                activationWidth: 10,
                textPlacement: "tspan",
                showSequenceNumbers: !1
            },
            jt = {
                data: {
                    startx: void 0,
                    stopx: void 0,
                    starty: void 0,
                    stopy: void 0
                },
                verticalPos: 0,
                sequenceItems: [],
                activations: [],
                init: function() {
                    this.sequenceItems = [], this.activations = [], this.data = {
                        startx: void 0,
                        stopx: void 0,
                        starty: void 0,
                        stopy: void 0
                    }, this.verticalPos = 0
                },
                updateVal: function(t, e, n, r) {
                    void 0 === t[e] ? t[e] = n : t[e] = r(n, t[e])
                },
                updateBounds: function(t, e, n, r) {
                    var i = this,
                        a = 0;

                    function o(o) {
                        return function(s) {
                            a++;
                            var u = i.sequenceItems.length - a + 1;
                            i.updateVal(s, "starty", e - u * qt.boxMargin, Math.min), i.updateVal(s, "stopy", r + u * qt.boxMargin, Math.max), i.updateVal(jt.data, "startx", t - u * qt.boxMargin, Math.min), i.updateVal(jt.data, "stopx", n + u * qt.boxMargin, Math.max), "activation" !== o && (i.updateVal(s, "startx", t - u * qt.boxMargin, Math.min), i.updateVal(s, "stopx", n + u * qt.boxMargin, Math.max), i.updateVal(jt.data, "starty", e - u * qt.boxMargin, Math.min), i.updateVal(jt.data, "stopy", r + u * qt.boxMargin, Math.max))
                        }
                    }
                    this.sequenceItems.forEach(o()), this.activations.forEach(o("activation"))
                },
                insert: function(t, e, n, r) {
                    var i = Math.min(t, n),
                        a = Math.max(t, n),
                        o = Math.min(e, r),
                        s = Math.max(e, r);
                    this.updateVal(jt.data, "startx", i, Math.min), this.updateVal(jt.data, "starty", o, Math.min), this.updateVal(jt.data, "stopx", a, Math.max), this.updateVal(jt.data, "stopy", s, Math.max), this.updateBounds(i, o, a, s)
                },
                newActivation: function(t, e) {
                    var n = Mt.parser.yy.getActors()[t.from.actor],
                        r = Yt(t.from.actor).length,
                        i = n.x + qt.width / 2 + (r - 1) * qt.activationWidth / 2;
                    this.activations.push({
                        startx: i,
                        starty: this.verticalPos + 2,
                        stopx: i + qt.activationWidth,
                        stopy: void 0,
                        actor: t.from.actor,
                        anchored: St.anchorElement(e)
                    })
                },
                endActivation: function(t) {
                    var e = this.activations.map((function(t) {
                        return t.actor
                    })).lastIndexOf(t.from.actor);
                    return this.activations.splice(e, 1)[0]
                },
                newLoop: function(t, e) {
                    this.sequenceItems.push({
                        startx: void 0,
                        starty: this.verticalPos,
                        stopx: void 0,
                        stopy: void 0,
                        title: t,
                        fill: e
                    })
                },
                endLoop: function() {
                    return this.sequenceItems.pop()
                },
                addSectionToLoop: function(t) {
                    var e = this.sequenceItems.pop();
                    e.sections = e.sections || [], e.sectionTitles = e.sectionTitles || [], e.sections.push(jt.getVerticalPos()), e.sectionTitles.push(t), this.sequenceItems.push(e)
                },
                bumpVerticalPos: function(t) {
                    this.verticalPos = this.verticalPos + t, this.data.stopy = this.verticalPos
                },
                getVerticalPos: function() {
                    return this.verticalPos
                },
                getBounds: function() {
                    return this.data
                }
            },
            Ut = function(t, e, n, r, i) {
                var a = St.getNoteRect();
                a.x = e, a.y = n, a.width = i || qt.width, a.class = "note";
                var o = t.append("g"),
                    s = St.drawRect(o, a),
                    u = function(t, e, n, r, i) {
                        var a = 0,
                            o = t.split(/<br\s*\/?>/gi),
                            s = !0,
                            u = !1,
                            c = void 0;
                        try {
                            for (var f, l = o[Symbol.iterator](); !(s = (f = l.next()).done); s = !0) {
                                var h = f.value,
                                    d = St.getTextObj();
                                d.x = e, d.y = n + a, d.textMargin = qt.noteMargin, d.dy = "1em", d.text = h, d.class = "noteText";
                                var p = St.drawText(r, d, i);
                                a += (p._groups || p)[0][0].getBBox().height
                            }
                        } catch (t) {
                            u = !0, c = t
                        } finally {
                            try {
                                s || null == l.return || l.return()
                            } finally {
                                if (u) throw c
                            }
                        }
                        return a
                    }(r.message, e - 4, n + 24, o, a.width - qt.noteMargin);
                jt.insert(e, n, e + a.width, n + 2 * qt.noteMargin + u), s.attr("height", u + 2 * qt.noteMargin), jt.bumpVerticalPos(u + 2 * qt.noteMargin)
            },
            zt = function(t, e, n, r) {
                for (var i = 0; i < n.length; i++) {
                    var a = n[i];
                    e[a].x = i * qt.actorMargin + i * qt.width, e[a].y = r, e[a].width = qt.diagramMarginX, e[a].height = qt.diagramMarginY, St.drawActor(t, e[a].x, r, e[a].description, qt), jt.insert(e[a].x, r, e[a].x + qt.width, qt.height)
                }
                jt.bumpVerticalPos(qt.height)
            },
            Yt = function(t) {
                return jt.activations.filter((function(e) {
                    return e.actor === t
                }))
            },
            Vt = function(t) {
                var e = Mt.parser.yy.getActors(),
                    n = Yt(t);
                return [n.reduce((function(t, e) {
                    return Math.min(t, e.startx)
                }), e[t].x + qt.width / 2), n.reduce((function(t, e) {
                    return Math.max(t, e.stopx)
                }), e[t].x + qt.width / 2)]
            },
            Ht = function(t) {
                Object.keys(t).forEach((function(e) {
                    qt[e] = t[e]
                })), qt.actorFontFamily = t.fontFamily
            },
            Gt = function(t, e) {
                Mt.parser.yy.clear(), Mt.parser.parse(t + "\n"), jt.init();
                var n, r, i, o = a.select('[id="'.concat(e, '"]')),
                    s = Mt.parser.yy.getActors(),
                    u = Mt.parser.yy.getActorKeys(),
                    c = Mt.parser.yy.getMessages(),
                    f = Mt.parser.yy.getTitle();
                zt(o, s, u, 0), St.insertArrowHead(o), St.insertArrowCrossHead(o), St.insertSequenceNumber(o);
                var l = 1;
                c.forEach((function(t) {
                    var e;
                    switch (t.type) {
                        case Mt.parser.yy.LINETYPE.NOTE:
                            jt.bumpVerticalPos(qt.boxMargin), n = s[t.from].x, r = s[t.to].x, t.placement === Mt.parser.yy.PLACEMENT.RIGHTOF ? Ut(o, n + (qt.width + qt.actorMargin) / 2, jt.getVerticalPos(), t) : t.placement === Mt.parser.yy.PLACEMENT.LEFTOF ? Ut(o, n - (qt.width + qt.actorMargin) / 2, jt.getVerticalPos(), t) : t.to === t.from ? Ut(o, n, jt.getVerticalPos(), t) : (i = Math.abs(n - r) + qt.actorMargin, Ut(o, (n + r + qt.width - i) / 2, jt.getVerticalPos(), t, i));
                            break;
                        case Mt.parser.yy.LINETYPE.ACTIVE_START:
                            jt.newActivation(t, o);
                            break;
                        case Mt.parser.yy.LINETYPE.ACTIVE_END:
                            ! function(t, e) {
                                var n = jt.endActivation(t);
                                n.starty + 18 > e && (n.starty = e - 6, e += 12), St.drawActivation(o, n, e, qt, Yt(t.from.actor).length), jt.insert(n.startx, e - 10, n.stopx, e)
                            }(t, jt.getVerticalPos());
                            break;
                        case Mt.parser.yy.LINETYPE.LOOP_START:
                            jt.bumpVerticalPos(qt.boxMargin), jt.newLoop(t.message), jt.bumpVerticalPos(qt.boxMargin + qt.boxTextMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.LOOP_END:
                            e = jt.endLoop(), St.drawLoop(o, e, "loop", qt), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.RECT_START:
                            jt.bumpVerticalPos(qt.boxMargin), jt.newLoop(void 0, t.message), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.RECT_END:
                            var a = jt.endLoop();
                            St.drawBackgroundRect(o, a), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.OPT_START:
                            jt.bumpVerticalPos(qt.boxMargin), jt.newLoop(t.message), jt.bumpVerticalPos(qt.boxMargin + qt.boxTextMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.OPT_END:
                            e = jt.endLoop(), St.drawLoop(o, e, "opt", qt), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.ALT_START:
                            jt.bumpVerticalPos(qt.boxMargin), jt.newLoop(t.message), jt.bumpVerticalPos(qt.boxMargin + qt.boxTextMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.ALT_ELSE:
                            jt.bumpVerticalPos(qt.boxMargin), e = jt.addSectionToLoop(t.message), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.ALT_END:
                            e = jt.endLoop(), St.drawLoop(o, e, "alt", qt), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.PAR_START:
                            jt.bumpVerticalPos(qt.boxMargin), jt.newLoop(t.message), jt.bumpVerticalPos(qt.boxMargin + qt.boxTextMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.PAR_AND:
                            jt.bumpVerticalPos(qt.boxMargin), e = jt.addSectionToLoop(t.message), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        case Mt.parser.yy.LINETYPE.PAR_END:
                            e = jt.endLoop(), St.drawLoop(o, e, "par", qt), jt.bumpVerticalPos(qt.boxMargin);
                            break;
                        default:
                            try {
                                jt.bumpVerticalPos(qt.messageMargin);
                                var u = Vt(t.from),
                                    c = Vt(t.to),
                                    f = u[0] <= c[0] ? 1 : 0,
                                    h = u[0] < c[0] ? 0 : 1;
                                n = u[f], r = c[h];
                                var d = jt.getVerticalPos();
                                ! function(t, e, n, r, i, a) {
                                    var o, s = t.append("g"),
                                        u = e + (n - e) / 2,
                                        c = 0,
                                        f = i.message.split(/<br\s*\/?>/gi),
                                        l = !0,
                                        h = !1,
                                        d = void 0;
                                    try {
                                        for (var p, g = f[Symbol.iterator](); !(l = (p = g.next()).done); l = !0) {
                                            var y = p.value;
                                            o = s.append("text").attr("x", u).attr("y", r - 7 + 17 * c).style("text-anchor", "middle").attr("class", "messageText").text(y.trim()), c++
                                        }
                                    } catch (t) {
                                        h = !0, d = t
                                    } finally {
                                        try {
                                            l || null == g.return || g.return()
                                        } finally {
                                            if (h) throw d
                                        }
                                    }
                                    var b, v = 17 * (c - 1),
                                        m = (o._groups || o)[0][0].getBBox().width;
                                    if (e === n) {
                                        b = qt.rightAngles ? s.append("path").attr("d", "M  ".concat(e, ",").concat(r + v, " H ").concat(e + qt.width / 2, " V ").concat(r + 25 + v, " H ").concat(e)) : s.append("path").attr("d", "M " + e + "," + (r + v) + " C " + (e + 60) + "," + (r - 10 + v) + " " + (e + 60) + "," + (r + 30 + v) + " " + e + "," + (r + 20 + v)), jt.bumpVerticalPos(30 + v);
                                        var _ = Math.max(m / 2, 100);
                                        jt.insert(e - _, jt.getVerticalPos() - 10 + v, n + _, jt.getVerticalPos() + v)
                                    } else(b = s.append("line")).attr("x1", e), b.attr("y1", r), b.attr("x2", n), b.attr("y2", r), jt.insert(e, jt.getVerticalPos() - 10 + v, n, jt.getVerticalPos() + v);
                                    i.type === Mt.parser.yy.LINETYPE.DOTTED || i.type === Mt.parser.yy.LINETYPE.DOTTED_CROSS || i.type === Mt.parser.yy.LINETYPE.DOTTED_OPEN ? (b.style("stroke-dasharray", "3, 3"), b.attr("class", "messageLine1")) : b.attr("class", "messageLine0");
                                    var w = "";
                                    qt.arrowMarkerAbsolute && (w = (w = (w = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search).replace(/\(/g, "\\(")).replace(/\)/g, "\\)")), b.attr("stroke-width", 2), b.attr("stroke", "black"), b.style("fill", "none"), i.type !== Mt.parser.yy.LINETYPE.SOLID && i.type !== Mt.parser.yy.LINETYPE.DOTTED || b.attr("marker-end", "url(" + w + "#arrowhead)"), i.type !== Mt.parser.yy.LINETYPE.SOLID_CROSS && i.type !== Mt.parser.yy.LINETYPE.DOTTED_CROSS || b.attr("marker-end", "url(" + w + "#crosshead)"), qt.showSequenceNumbers && (b.attr("marker-start", "url(" + w + "#sequencenumber)"), s.append("text").attr("x", e).attr("y", r + 4).attr("font-family", "sans-serif").attr("font-size", "12px").attr("text-anchor", "middle").attr("textLength", "16px").attr("class", "sequenceNumber").text(a))
                                }(o, n, r, d, t, l);
                                var p = u.concat(c);
                                jt.insert(Math.min.apply(null, p), d, Math.max.apply(null, p), d)
                            } catch (t) {
                                _.error("error while drawing message", t)
                            }
                    } [Mt.parser.yy.LINETYPE.SOLID_OPEN, Mt.parser.yy.LINETYPE.DOTTED_OPEN, Mt.parser.yy.LINETYPE.SOLID, Mt.parser.yy.LINETYPE.DOTTED, Mt.parser.yy.LINETYPE.SOLID_CROSS, Mt.parser.yy.LINETYPE.DOTTED_CROSS].includes(t.type) && l++
                })), qt.mirrorActors && (jt.bumpVerticalPos(2 * qt.boxMargin), zt(o, s, u, jt.getVerticalPos()));
                var h = jt.getBounds();
                _.debug("For line height fix Querying: #" + e + " .actor-line"), a.selectAll("#" + e + " .actor-line").attr("y2", h.stopy);
                var d = h.stopy - h.starty + 2 * qt.diagramMarginY;
                qt.mirrorActors && (d = d - qt.boxMargin + qt.bottomMarginAdj);
                var p = h.stopx - h.startx + 2 * qt.diagramMarginX;
                f && o.append("text").text(f).attr("x", (h.stopx - h.startx) / 2 - 2 * qt.diagramMarginX).attr("y", -25), qt.useMaxWidth ? (o.attr("height", "100%"), o.attr("width", "100%"), o.attr("style", "max-width:" + p + "px;")) : (o.attr("height", d), o.attr("width", p));
                var g = f ? 40 : 0;
                o.attr("viewBox", h.startx - qt.diagramMarginX + " -" + (qt.diagramMarginY + g) + " " + p + " " + (d + g))
            },
            $t = n(26),
            Wt = n.n($t);

        function Kt(t) {
            return function(t) {
                if (Array.isArray(t)) {
                    for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
                    return n
                }
            }(t) || function(t) {
                if (Symbol.iterator in Object(t) || "[object Arguments]" === Object.prototype.toString.call(t)) return Array.from(t)
            }(t) || function() {
                throw new TypeError("Invalid attempt to spread non-iterable instance")
            }()
        }
        var Xt, Zt, Jt = h(),
            Qt = "",
            te = "",
            ee = [],
            ne = "",
            re = [],
            ie = [],
            ae = "",
            oe = ["active", "done", "crit", "milestone"],
            se = [],
            ue = !1,
            ce = function(t, e, n) {
                return t.isoWeekday() >= 6 && n.indexOf("weekends") >= 0 || (n.indexOf(t.format("dddd").toLowerCase()) >= 0 || n.indexOf(t.format(e.trim())) >= 0)
            },
            fe = function(t, e, n) {
                if (n.length && !t.manualEndTime) {
                    var r = p()(t.startTime, e, !0);
                    r.add(1, "d");
                    var i = p()(t.endTime, e, !0),
                        a = le(r, i, e, n);
                    t.endTime = i.toDate(), t.renderEndTime = a
                }
            },
            le = function(t, e, n, r) {
                for (var i = !1, a = null; t <= e;) i || (a = e.toDate()), (i = ce(t, n, r)) && e.add(1, "d"), t.add(1, "d");
                return a
            },
            he = function(t, e, n) {
                n = n.trim();
                var r = /^after\s+([\d\w- ]+)/.exec(n.trim());
                if (null !== r) {
                    var i = null;
                    if (r[1].split(" ").forEach((function(t) {
                            var e = me(t);
                            void 0 !== e && (i ? e.endTime > i.endTime && (i = e) : i = e)
                        })), i) return i.endTime;
                    var a = new Date;
                    return a.setHours(0, 0, 0, 0), a
                }
                var o = p()(n, e.trim(), !0);
                return o.isValid() ? o.toDate() : (_.debug("Invalid date:" + n), _.debug("With date format:" + e.trim()), new Date)
            },
            de = function(t, e) {
                if (null !== t) switch (t[2]) {
                    case "s":
                        e.add(t[1], "seconds");
                        break;
                    case "m":
                        e.add(t[1], "minutes");
                        break;
                    case "h":
                        e.add(t[1], "hours");
                        break;
                    case "d":
                        e.add(t[1], "days");
                        break;
                    case "w":
                        e.add(t[1], "weeks")
                }
                return e.toDate()
            },
            pe = function(t, e, n, r) {
                r = r || !1, n = n.trim();
                var i = p()(n, e.trim(), !0);
                return i.isValid() ? (r && i.add(1, "d"), i.toDate()) : de(/^([\d]+)([wdhms])/.exec(n.trim()), p()(t))
            },
            ge = 0,
            ye = function(t) {
                return void 0 === t ? "task" + (ge += 1) : t
            },
            be = [],
            ve = {},
            me = function(t) {
                var e = ve[t];
                return be[e]
            },
            _e = function() {
                for (var t = function(t) {
                        var e = be[t],
                            n = "";
                        switch (be[t].raw.startTime.type) {
                            case "prevTaskEnd":
                                var r = me(e.prevTaskId);
                                e.startTime = r.endTime;
                                break;
                            case "getStartDate":
                                (n = he(0, Qt, be[t].raw.startTime.startData)) && (be[t].startTime = n)
                        }
                        return be[t].startTime && (be[t].endTime = pe(be[t].startTime, Qt, be[t].raw.endTime.data, ue), be[t].endTime && (be[t].processed = !0, be[t].manualEndTime = p()(be[t].raw.endTime.data, "YYYY-MM-DD", !0).isValid(), fe(be[t], Qt, ee))), be[t].processed
                    }, e = !0, n = 0; n < be.length; n++) t(n), e = e && be[n].processed;
                return e
            },
            we = function(t, e) {
                t.split(",").forEach((function(t) {
                    var n = me(t);
                    void 0 !== n && n.classes.push(e)
                }))
            },
            xe = function(t, e) {
                se.push((function() {
                    var n = document.querySelector('[id="'.concat(t, '"]'));
                    null !== n && n.addEventListener("click", (function() {
                        e()
                    }))
                })), se.push((function() {
                    var n = document.querySelector('[id="'.concat(t, '-text"]'));
                    null !== n && n.addEventListener("click", (function() {
                        e()
                    }))
                }))
            },
            ke = {
                clear: function() {
                    re = [], ie = [], ae = "", se = [], ne = "", ge = 0, Xt = void 0, Zt = void 0, be = [], Qt = "", te = "", ee = [], ue = !1
                },
                setDateFormat: function(t) {
                    Qt = t
                },
                getDateFormat: function() {
                    return Qt
                },
                enableInclusiveEndDates: function() {
                    ue = !0
                },
                endDatesAreInclusive: function() {
                    return ue
                },
                setAxisFormat: function(t) {
                    te = t
                },
                getAxisFormat: function() {
                    return te
                },
                setTitle: function(t) {
                    ne = t
                },
                getTitle: function() {
                    return ne
                },
                addSection: function(t) {
                    ae = t, re.push(t)
                },
                getSections: function() {
                    return re
                },
                getTasks: function() {
                    for (var t = _e(), e = 0; !t && e < 10;) t = _e(), e++;
                    return ie = be
                },
                addTask: function(t, e) {
                    var n = {
                            section: ae,
                            type: ae,
                            processed: !1,
                            manualEndTime: !1,
                            renderEndTime: null,
                            raw: {
                                data: e
                            },
                            task: t,
                            classes: []
                        },
                        r = function(t, e) {
                            var n = (":" === e.substr(0, 1) ? e.substr(1, e.length) : e).split(","),
                                r = {};
                            Ee(n, r, oe);
                            for (var i = 0; i < n.length; i++) n[i] = n[i].trim();
                            switch (n.length) {
                                case 1:
                                    r.id = ye(), r.startTime = {
                                        type: "prevTaskEnd",
                                        id: t
                                    }, r.endTime = {
                                        data: n[0]
                                    };
                                    break;
                                case 2:
                                    r.id = ye(), r.startTime = {
                                        type: "getStartDate",
                                        startData: n[0]
                                    }, r.endTime = {
                                        data: n[1]
                                    };
                                    break;
                                case 3:
                                    r.id = ye(n[0]), r.startTime = {
                                        type: "getStartDate",
                                        startData: n[1]
                                    }, r.endTime = {
                                        data: n[2]
                                    }
                            }
                            return r
                        }(Zt, e);
                    n.raw.startTime = r.startTime, n.raw.endTime = r.endTime, n.id = r.id, n.prevTaskId = Zt, n.active = r.active, n.done = r.done, n.crit = r.crit, n.milestone = r.milestone;
                    var i = be.push(n);
                    Zt = n.id, ve[n.id] = i - 1
                },
                findTaskById: me,
                addTaskOrg: function(t, e) {
                    var n = {
                            section: ae,
                            type: ae,
                            description: t,
                            task: t,
                            classes: []
                        },
                        r = function(t, e) {
                            var n = (":" === e.substr(0, 1) ? e.substr(1, e.length) : e).split(","),
                                r = {};
                            Ee(n, r, oe);
                            for (var i = 0; i < n.length; i++) n[i] = n[i].trim();
                            var a = "";
                            switch (n.length) {
                                case 1:
                                    r.id = ye(), r.startTime = t.endTime, a = n[0];
                                    break;
                                case 2:
                                    r.id = ye(), r.startTime = he(0, Qt, n[0]), a = n[1];
                                    break;
                                case 3:
                                    r.id = ye(n[0]), r.startTime = he(0, Qt, n[1]), a = n[2]
                            }
                            return a && (r.endTime = pe(r.startTime, Qt, a, ue), r.manualEndTime = p()(a, "YYYY-MM-DD", !0).isValid(), fe(r, Qt, ee)), r
                        }(Xt, e);
                    n.startTime = r.startTime, n.endTime = r.endTime, n.id = r.id, n.active = r.active, n.done = r.done, n.crit = r.crit, n.milestone = r.milestone, Xt = n, ie.push(n)
                },
                setExcludes: function(t) {
                    ee = t.toLowerCase().split(/[\s,]+/)
                },
                getExcludes: function() {
                    return ee
                },
                setClickEvent: function(t, e, n) {
                    t.split(",").forEach((function(t) {
                        ! function(t, e, n) {
                            if ("loose" === Jt.securityLevel && void 0 !== e) {
                                var r = [];
                                if ("string" == typeof n) {
                                    r = n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
                                    for (var i = 0; i < r.length; i++) {
                                        var a = r[i].trim();
                                        '"' === a.charAt(0) && '"' === a.charAt(a.length - 1) && (a = a.substr(1, a.length - 2)), r[i] = a
                                    }
                                }
                                0 === r.length && r.push(t), void 0 !== me(t) && xe(t, (function() {
                                    var t;
                                    (t = window)[e].apply(t, Kt(r))
                                }))
                            }
                        }(t, e, n)
                    })), we(t, "clickable")
                },
                setLink: function(t, e) {
                    var n = e;
                    "loose" !== Jt.securityLevel && (n = Object(k.sanitizeUrl)(e)), t.split(",").forEach((function(t) {
                        void 0 !== me(t) && xe(t, (function() {
                            window.open(n, "_self")
                        }))
                    })), we(t, "clickable")
                },
                bindFunctions: function(t) {
                    se.forEach((function(e) {
                        e(t)
                    }))
                },
                durationToDate: de
            };

        function Ee(t, e, n) {
            for (var r = !0; r;) r = !1, n.forEach((function(n) {
                var i = new RegExp("^\\s*" + n + "\\s*$");
                t[0].match(i) && (e[n] = !0, t.shift(1), r = !0)
            }))
        }
        $t.parser.yy = ke;
        var Ae, Se = {
                titleTopMargin: 25,
                barHeight: 20,
                barGap: 4,
                topPadding: 50,
                rightPadding: 75,
                leftPadding: 75,
                gridLineStartPadding: 35,
                fontSize: 11,
                fontFamily: '"Open-Sans", "sans-serif"'
            },
            Me = function(t) {
                Object.keys(t).forEach((function(e) {
                    Se[e] = t[e]
                }))
            },
            Te = function(t, e) {
                $t.parser.yy.clear(), $t.parser.parse(t);
                var n = document.getElementById(e);
                void 0 === (Ae = n.parentElement.offsetWidth) && (Ae = 1200), void 0 !== Se.useWidth && (Ae = Se.useWidth);
                var r = $t.parser.yy.getTasks(),
                    i = r.length * (Se.barHeight + Se.barGap) + 2 * Se.topPadding;
                n.setAttribute("height", "100%"), n.setAttribute("viewBox", "0 0 " + Ae + " " + i);
                for (var o = a.select('[id="'.concat(e, '"]')), s = a.scaleTime().domain([a.min(r, (function(t) {
                        return t.startTime
                    })), a.max(r, (function(t) {
                        return t.endTime
                    }))]).rangeRound([0, Ae - Se.leftPadding - Se.rightPadding]), u = [], c = 0; c < r.length; c++) u.push(r[c].type);
                var f = u;

                function l(t) {
                    for (var e = t.length, n = {}; e;) n[t[--e]] = (n[t[e]] || 0) + 1;
                    return n
                }
                u = function(t) {
                        for (var e = {}, n = [], r = 0, i = t.length; r < i; ++r) e.hasOwnProperty(t[r]) || (e[t[r]] = !0, n.push(t[r]));
                        return n
                    }(u),
                    function(t, e, n) {
                        var r = Se.barHeight,
                            i = r + Se.barGap,
                            c = Se.topPadding,
                            h = Se.leftPadding;
                        a.scaleLinear().domain([0, u.length]).range(["#00B9FA", "#F95002"]).interpolate(a.interpolateHcl);
                        (function(t, e, n, r) {
                            var i = a.axisBottom(s).tickSize(-r + e + Se.gridLineStartPadding).tickFormat(a.timeFormat($t.parser.yy.getAxisFormat() || Se.axisFormat || "%Y-%m-%d"));
                            o.append("g").attr("class", "grid").attr("transform", "translate(" + t + ", " + (r - 50) + ")").call(i).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10).attr("dy", "1em")
                        })(h, c, 0, n),
                        function(t, e, n, r, i, a, c) {
                            o.append("g").selectAll("rect").data(t).enter().append("rect").attr("x", 0).attr("y", (function(t, r) {
                                return r * e + n - 2
                            })).attr("width", (function() {
                                return c - Se.rightPadding / 2
                            })).attr("height", e).attr("class", (function(t) {
                                for (var e = 0; e < u.length; e++)
                                    if (t.type === u[e]) return "section section" + e % Se.numberSectionStyles;
                                return "section section0"
                            }));
                            var f = o.append("g").selectAll("rect").data(t).enter();
                            f.append("rect").attr("id", (function(t) {
                                return t.id
                            })).attr("rx", 3).attr("ry", 3).attr("x", (function(t) {
                                return t.milestone ? s(t.startTime) + r + .5 * (s(t.endTime) - s(t.startTime)) - .5 * i : s(t.startTime) + r
                            })).attr("y", (function(t, r) {
                                return r * e + n
                            })).attr("width", (function(t) {
                                return t.milestone ? i : s(t.renderEndTime || t.endTime) - s(t.startTime)
                            })).attr("height", i).attr("transform-origin", (function(t, a) {
                                return (s(t.startTime) + r + .5 * (s(t.endTime) - s(t.startTime))).toString() + "px " + (a * e + n + .5 * i).toString() + "px"
                            })).attr("class", (function(t) {
                                var e = "";
                                t.classes.length > 0 && (e = t.classes.join(" "));
                                for (var n = 0, r = 0; r < u.length; r++) t.type === u[r] && (n = r % Se.numberSectionStyles);
                                var i = "";
                                return t.active ? t.crit ? i += " activeCrit" : i = " active" : t.done ? i = t.crit ? " doneCrit" : " done" : t.crit && (i += " crit"), 0 === i.length && (i = " task"), t.milestone && (i = " milestone " + i), i += n, "task" + (i += " " + e)
                            })), f.append("text").attr("id", (function(t) {
                                return t.id + "-text"
                            })).text((function(t) {
                                return t.task
                            })).attr("font-size", Se.fontSize).attr("x", (function(t) {
                                var e = s(t.startTime),
                                    n = s(t.renderEndTime || t.endTime);
                                t.milestone && (e += .5 * (s(t.endTime) - s(t.startTime)) - .5 * i), t.milestone && (n = e + i);
                                var a = this.getBBox().width;
                                return a > n - e ? n + a + 1.5 * Se.leftPadding > c ? e + r - 5 : n + r + 5 : (n - e) / 2 + e + r
                            })).attr("y", (function(t, r) {
                                return r * e + Se.barHeight / 2 + (Se.fontSize / 2 - 2) + n
                            })).attr("text-height", i).attr("class", (function(t) {
                                var e = s(t.startTime),
                                    n = s(t.endTime);
                                t.milestone && (n = e + i);
                                var r = this.getBBox().width,
                                    a = "";
                                t.classes.length > 0 && (a = t.classes.join(" "));
                                for (var o = 0, f = 0; f < u.length; f++) t.type === u[f] && (o = f % Se.numberSectionStyles);
                                var l = "";
                                return t.active && (l = t.crit ? "activeCritText" + o : "activeText" + o), t.done ? l = t.crit ? l + " doneCritText" + o : l + " doneText" + o : t.crit && (l = l + " critText" + o), t.milestone && (l += " milestoneText"), r > n - e ? n + r + 1.5 * Se.leftPadding > c ? a + " taskTextOutsideLeft taskTextOutside" + o + " " + l : a + " taskTextOutsideRight taskTextOutside" + o + " " + l + " width-" + r : a + " taskText taskText" + o + " " + l + " width-" + r
                            }))
                        }(t, i, c, h, r, 0, e),
                        function(t, e) {
                            for (var n = [], r = 0, i = 0; i < u.length; i++) n[i] = [u[i], (a = u[i], s = f, l(s)[a] || 0)];
                            var a, s;
                            o.append("g").selectAll("text").data(n).enter().append((function(t) {
                                var e = t[0].split(/<br\s*\/?>/gi),
                                    n = -(e.length - 1) / 2,
                                    r = document.createElementNS("http://www.w3.org/2000/svg", "text");
                                r.setAttribute("dy", n + "em");
                                for (var i = 0; i < e.length; i++) {
                                    var a = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
                                    a.setAttribute("alignment-baseline", "central"), a.setAttribute("x", "10"), i > 0 && a.setAttribute("dy", "1em"), a.textContent = e[i], r.appendChild(a)
                                }
                                return r
                            })).attr("x", 10).attr("y", (function(i, a) {
                                if (!(a > 0)) return i[1] * t / 2 + e;
                                for (var o = 0; o < a; o++) return r += n[a - 1][1], i[1] * t / 2 + r * t + e
                            })).attr("class", (function(t) {
                                for (var e = 0; e < u.length; e++)
                                    if (t[0] === u[e]) return "sectionTitle sectionTitle" + e % Se.numberSectionStyles;
                                return "sectionTitle"
                            }))
                        }(i, c),
                        function(t, e, n, r) {
                            var i = o.append("g").attr("class", "today"),
                                a = new Date;
                            i.append("line").attr("x1", s(a) + t).attr("x2", s(a) + t).attr("y1", Se.titleTopMargin).attr("y2", r - Se.titleTopMargin).attr("class", "today")
                        }(h, 0, 0, n)
                    }(r, Ae, i), void 0 !== Se.useWidth && n.setAttribute("width", Ae), o.append("text").text($t.parser.yy.getTitle()).attr("x", Ae / 2).attr("y", Se.titleTopMargin).attr("class", "titleText")
            },
            De = n(59),
            Ce = n.n(De),
            Ne = h(),
            Ie = [],
            Le = {},
            Be = 0,
            Oe = [],
            Re = function(t) {
                var e = "",
                    n = t;
                if (t.indexOf("~") > 0) {
                    var r = t.split("~");
                    n = r[0], e = r[1]
                }
                return {
                    className: n,
                    type: e
                }
            },
            Pe = function(t) {
                var e = Re(t);
                void 0 === Le[e.className] && (Le[e.className] = {
                    id: e.className,
                    type: e.type,
                    cssClasses: [],
                    methods: [],
                    members: [],
                    annotations: [],
                    domId: "classid-" + e.className + "-" + Be
                }, Be++)
            },
            Fe = function(t) {
                for (var e = Object.keys(Le), n = 0; n < e.length; n++)
                    if (Le[e[n]].id === t) return Le[e[n]].domId
            },
            qe = function(t, e) {
                var n = Re(t).className,
                    r = Le[n];
                if ("string" == typeof e) {
                    var i = e.trim();
                    i.startsWith("<<") && i.endsWith(">>") ? r.annotations.push(i.substring(2, i.length - 2)) : i.indexOf(")") > 0 ? r.methods.push(i) : i && r.members.push(i)
                }
            },
            je = function(t, e) {
                t.split(",").forEach((function(t) {
                    var n = t;
                    t[0].match(/\d/) && (n = "classid-" + n), void 0 !== Le[n] && Le[n].cssClasses.push(e)
                }))
            },
            Ue = function(t, e, n) {
                var r = t,
                    i = Fe(r);
                "loose" === Ne.securityLevel && void 0 !== e && void 0 !== Le[r] && (n && (Le[r].tooltip = S.sanitize(n, Ne)), Oe.push((function() {
                    var t = document.querySelector('[id="'.concat(i, '"]'));
                    null !== t && t.addEventListener("click", (function() {
                        window[e](i)
                    }), !1)
                })))
            },
            ze = function(t) {
                var e = a.select(".mermaidTooltip");
                null === (e._groups || e)[0][0] && (e = a.select("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0)), a.select(t).select("svg").selectAll("g.node").on("mouseover", (function() {
                    var t = a.select(this);
                    if (null !== t.attr("title")) {
                        var n = this.getBoundingClientRect();
                        e.transition().duration(200).style("opacity", ".9"), e.html(t.attr("title")).style("left", n.left + (n.right - n.left) / 2 + "px").style("top", n.top - 14 + document.body.scrollTop + "px"), t.classed("hover", !0)
                    }
                })).on("mouseout", (function() {
                    e.transition().duration(500).style("opacity", 0), a.select(this).classed("hover", !1)
                }))
            };
        Oe.push(ze);
        var Ye = {
                addClass: Pe,
                bindFunctions: function(t) {
                    Oe.forEach((function(e) {
                        e(t)
                    }))
                },
                clear: function() {
                    Ie = [], Le = {}, (Oe = []).push(ze)
                },
                getClass: function(t) {
                    return Le[t]
                },
                getClasses: function() {
                    return Le
                },
                addAnnotation: function(t, e) {
                    var n = Re(t).className;
                    Le[n].annotations.push(e)
                },
                getRelations: function() {
                    return Ie
                },
                addRelation: function(t) {
                    _.debug("Adding relation: " + JSON.stringify(t)), Pe(t.id1), Pe(t.id2), t.id1 = Re(t.id1).className, t.id2 = Re(t.id2).className, Ie.push(t)
                },
                addMember: qe,
                addMembers: function(t, e) {
                    Array.isArray(e) && (e.reverse(), e.forEach((function(e) {
                        return qe(t, e)
                    })))
                },
                cleanupLabel: function(t) {
                    return ":" === t.substring(0, 1) ? t.substr(1).trim() : t.trim()
                },
                lineType: {
                    LINE: 0,
                    DOTTED_LINE: 1
                },
                relationType: {
                    AGGREGATION: 0,
                    EXTENSION: 1,
                    COMPOSITION: 2,
                    DEPENDENCY: 3
                },
                setClickEvent: function(t, e, n) {
                    t.split(",").forEach((function(t) {
                        Ue(t, e, n)
                    })), je(t, "clickable")
                },
                setCssClass: je,
                setLink: function(t, e, n) {
                    t.split(",").forEach((function(t) {
                        var r = t;
                        t[0].match(/\d/) && (r = "classid-" + r), void 0 !== Le[r] && (Le[r].link = S.formatUrl(e, Ne), n && (Le[r].tooltip = S.sanitize(n, Ne)))
                    })), je(t, "clickable")
                },
                lookUpDomId: Fe
            },
            Ve = n(46),
            He = n.n(Ve);
        Ve.parser.yy = Ye;
        var Ge = {},
            $e = {
                dividerMargin: 10,
                padding: 5,
                textHeight: 10
            },
            We = function(t) {
                for (var e = Object.keys(Ge), n = 0; n < e.length; n++)
                    if (Ge[e[n]].label === t) return e[n]
            },
            Ke = 0,
            Xe = function(t, e) {
                _.info("Rendering class " + e);
                var n = "classGroup ";
                e.cssClasses.length > 0 && (n += e.cssClasses.join(" "));
                var r, i = function(t, e, n) {
                        var r = e.indexOf(")") > 1,
                            i = e,
                            o = "";
                        if (r) {
                            var s = a(e);
                            i = s.displayText, o = s.cssStyle
                        }
                        var u = t.append("tspan").attr("x", $e.padding).text(i);
                        "" !== o && u.attr("style", o), n || u.attr("dy", $e.textHeight)
                    },
                    a = function(t) {
                        var e = "",
                            n = t,
                            r = t,
                            i = "",
                            a = t.match(/(\+|-|~|#)?(\w+)\s?\((\w+(<\w+>|\[\])?\s?(\w+)?)?\)\s?([*|$])?\s?(\w+(<\w+>|\[\])?)?/);
                        if (a) {
                            var o = a[1] ? a[1].trim() : "";
                            r = a[2] ? a[2].trim() : "";
                            var s = a[3] ? a[3].trim() : "";
                            i = a[6] ? a[6].trim() : "", n = o + r + "(" + s + ")" + (a[7] ? " : " + a[7].trim() : "")
                        } else {
                            var u = n.indexOf(")") + 1;
                            "" !== (i = n.substring(u, u + 1)) && " " !== i && (n = n.replace(i, ""))
                        }
                        switch (i) {
                            case "*":
                                e = "font-style:italic;";
                                break;
                            case "$":
                                e = "text-decoration:underline;"
                        }
                        return {
                            methodname: r,
                            displayText: n,
                            cssStyle: e
                        }
                    },
                    o = e.id,
                    s = {
                        id: o,
                        label: e.id,
                        width: 0,
                        height: 0
                    },
                    u = t.append("g").attr("id", Fe(o)).attr("class", n);
                r = e.link ? u.append("svg:a").attr("xlink:href", e.link).attr("target", "_blank").append("text").attr("y", $e.textHeight + $e.padding).attr("x", 0) : u.append("text").attr("y", $e.textHeight + $e.padding).attr("x", 0);
                var c = !0;
                e.annotations.forEach((function(t) {
                    var e = r.append("tspan").text("«" + t + "»");
                    c || e.attr("dy", $e.textHeight), c = !1
                }));
                var f = e.id;
                void 0 !== e.type && "" !== e.type && (f += "<" + e.type + ">");
                var l = r.append("tspan").text(f).attr("class", "title");
                c || l.attr("dy", $e.textHeight);
                var h = r.node().getBBox().height,
                    d = u.append("line").attr("x1", 0).attr("y1", $e.padding + h + $e.dividerMargin / 2).attr("y2", $e.padding + h + $e.dividerMargin / 2),
                    p = u.append("text").attr("x", $e.padding).attr("y", h + $e.dividerMargin + $e.textHeight).attr("fill", "white").attr("class", "classText");
                c = !0, e.members.forEach((function(t) {
                    i(p, t, c), c = !1
                }));
                var g = p.node().getBBox(),
                    y = u.append("line").attr("x1", 0).attr("y1", $e.padding + h + $e.dividerMargin + g.height).attr("y2", $e.padding + h + $e.dividerMargin + g.height),
                    b = u.append("text").attr("x", $e.padding).attr("y", h + 2 * $e.dividerMargin + g.height + $e.textHeight).attr("fill", "white").attr("class", "classText");
                c = !0, e.methods.forEach((function(t) {
                    i(b, t, c), c = !1
                }));
                var v = u.node().getBBox(),
                    m = u.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", v.width + 2 * $e.padding).attr("height", v.height + $e.padding + .5 * $e.dividerMargin).node().getBBox().width;
                return r.node().childNodes.forEach((function(t) {
                    t.setAttribute("x", (m - t.getBBox().width) / 2)
                })), e.tooltip && r.insert("title").text(e.tooltip), d.attr("x2", m), y.attr("x2", m), s.width = m, s.height = v.height + $e.padding + .5 * $e.dividerMargin, Ge[o] = s, s
            },
            Ze = function(t) {
                Object.keys(t).forEach((function(e) {
                    $e[e] = t[e]
                }))
            },
            Je = function(t, e) {
                Ge = {}, Ve.parser.yy.clear(), Ve.parser.parse(t), _.info("Rendering diagram " + t);
                var n, r = a.select("[id='".concat(e, "']"));
                (n = r).append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"), n.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"), n.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), n.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), n.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), n.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), n.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"), n.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
                var i = new T.a.Graph({
                    multigraph: !0
                });
                i.setGraph({
                    isMultiGraph: !0
                }), i.setDefaultEdgeLabel((function() {
                    return {}
                }));
                for (var o = Ye.getClasses(), s = Object.keys(o), u = 0; u < s.length; u++) {
                    var c = o[s[u]],
                        f = Xe(r, c);
                    i.setNode(f.id, f), _.info("Org height: " + f.height)
                }
                Ye.getRelations().forEach((function(t) {
                    _.info("tjoho" + We(t.id1) + We(t.id2) + JSON.stringify(t)), i.setEdge(We(t.id1), We(t.id2), {
                        relation: t
                    }, t.title || "DEFAULT")
                })), Ce.a.layout(i), i.nodes().forEach((function(t) {
                    void 0 !== t && void 0 !== i.node(t) && (_.debug("Node " + t + ": " + JSON.stringify(i.node(t))), a.select("#" + Fe(t)).attr("transform", "translate(" + (i.node(t).x - i.node(t).width / 2) + "," + (i.node(t).y - i.node(t).height / 2) + " )"))
                })), i.edges().forEach((function(t) {
                    void 0 !== t && void 0 !== i.edge(t) && (_.debug("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(i.edge(t))), function(t, e, n) {
                        var r = function(t) {
                            switch (t) {
                                case Ye.relationType.AGGREGATION:
                                    return "aggregation";
                                case Ye.relationType.EXTENSION:
                                    return "extension";
                                case Ye.relationType.COMPOSITION:
                                    return "composition";
                                case Ye.relationType.DEPENDENCY:
                                    return "dependency"
                            }
                        };
                        e.points = e.points.filter((function(t) {
                            return !Number.isNaN(t.y)
                        }));
                        var i, o, s = e.points,
                            u = a.line().x((function(t) {
                                return t.x
                            })).y((function(t) {
                                return t.y
                            })).curve(a.curveBasis),
                            c = t.append("path").attr("d", u(s)).attr("id", "edge" + Ke).attr("class", "relation"),
                            f = "";
                        $e.arrowMarkerAbsolute && (f = (f = (f = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search).replace(/\(/g, "\\(")).replace(/\)/g, "\\)")), 1 == n.relation.lineType && c.attr("class", "relation dashed-line"), "none" !== n.relation.type1 && c.attr("marker-start", "url(" + f + "#" + r(n.relation.type1) + "Start)"), "none" !== n.relation.type2 && c.attr("marker-end", "url(" + f + "#" + r(n.relation.type2) + "End)");
                        var l, h, d, p, g = e.points.length,
                            y = S.calcLabelPosition(e.points);
                        if (i = y.x, o = y.y, g % 2 != 0 && g > 1) {
                            var b = S.calcCardinalityPosition("none" !== n.relation.type1, e.points, e.points[0]),
                                v = S.calcCardinalityPosition("none" !== n.relation.type2, e.points, e.points[g - 1]);
                            _.debug("cardinality_1_point " + JSON.stringify(b)), _.debug("cardinality_2_point " + JSON.stringify(v)), l = b.x, h = b.y, d = v.x, p = v.y
                        }
                        if (void 0 !== n.title) {
                            var m = t.append("g").attr("class", "classLabel"),
                                w = m.append("text").attr("class", "label").attr("x", i).attr("y", o).attr("fill", "red").attr("text-anchor", "middle").text(n.title);
                            window.label = w;
                            var x = w.node().getBBox();
                            m.insert("rect", ":first-child").attr("class", "box").attr("x", x.x - $e.padding / 2).attr("y", x.y - $e.padding / 2).attr("width", x.width + $e.padding).attr("height", x.height + $e.padding)
                        }(_.info("Rendering relation " + JSON.stringify(n)), void 0 !== n.relationTitle1 && "none" !== n.relationTitle1) && t.append("g").attr("class", "cardinality").append("text").attr("class", "type1").attr("x", l).attr("y", h).attr("fill", "black").attr("font-size", "6").text(n.relationTitle1);
                        void 0 !== n.relationTitle2 && "none" !== n.relationTitle2 && t.append("g").attr("class", "cardinality").append("text").attr("class", "type2").attr("x", d).attr("y", p).attr("fill", "black").attr("font-size", "6").text(n.relationTitle2);
                        Ke++
                    }(r, i.edge(t), i.edge(t).relation))
                })), r.attr("height", "100%"), r.attr("width", "".concat(1.5 * i.graph().width + 20)), r.attr("viewBox", "-10 -10 " + (i.graph().width + 20) + " " + (i.graph().height + 20))
            };

        function Qe(t) {
            return (Qe = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                return typeof t
            } : function(t) {
                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
            })(t)
        }
        var tn, en = [],
            nn = {
                root: {
                    relations: [],
                    states: {},
                    documents: {}
                }
            },
            rn = nn.root,
            an = 0,
            on = function(t, e, n, r, i) {
                void 0 === rn.states[t] ? rn.states[t] = {
                    id: t,
                    descriptions: [],
                    type: e,
                    doc: n,
                    note: i
                } : (rn.states[t].doc || (rn.states[t].doc = n), rn.states[t].type || (rn.states[t].type = e)), r && ("string" == typeof r && cn(t, r.trim()), "object" === Qe(r) && r.forEach((function(e) {
                    return cn(t, e.trim())
                }))), i && (rn.states[t].note = i)
            },
            sn = function() {
                rn = (nn = {
                    root: {
                        relations: [],
                        states: {},
                        documents: {}
                    }
                }).root
            },
            un = function(t, e, n) {
                var r = t,
                    i = e,
                    a = "default",
                    o = "default";
                "[*]" === t && (r = "start" + ++an, a = "start"), "[*]" === e && (i = "end" + an, o = "end"), on(r, a), on(i, o), rn.relations.push({
                    id1: r,
                    id2: i,
                    title: n
                })
            },
            cn = function(t, e) {
                var n = rn.states[t],
                    r = e;
                ":" === r[0] && (r = r.substr(1).trim()), n.descriptions.push(r)
            },
            fn = 0,
            ln = {
                addState: on,
                clear: sn,
                getState: function(t) {
                    return rn.states[t]
                },
                getStates: function() {
                    return rn.states
                },
                getRelations: function() {
                    return rn.relations
                },
                addRelation: un,
                getDividerId: function() {
                    return "divider-id-" + ++fn
                },
                cleanupLabel: function(t) {
                    return ":" === t.substring(0, 1) ? t.substr(2).trim() : t.trim()
                },
                lineType: {
                    LINE: 0,
                    DOTTED_LINE: 1
                },
                relationType: {
                    AGGREGATION: 0,
                    EXTENSION: 1,
                    COMPOSITION: 2,
                    DEPENDENCY: 3
                },
                logDocuments: function() {
                    _.info("Documents = ", nn)
                },
                getRootDoc: function() {
                    return en
                },
                setRootDoc: function(t) {
                    _.info("Setting root doc", t), en = t
                },
                extract: function(t) {
                    sn(), t.forEach((function(t) {
                        "state" === t.stmt && on(t.id, t.type, t.doc, t.description, t.note), "relation" === t.stmt && un(t.state1.id, t.state2.id, t.description)
                    }))
                }
            },
            hn = n(47),
            dn = n.n(hn),
            pn = {},
            gn = function(t, e) {
                pn[t] = e
            },
            yn = function(t, e) {
                var n = t.append("text").attr("x", 2 * h().state.padding).attr("y", h().state.textHeight + 1.3 * h().state.padding).attr("font-size", h().state.fontSize).attr("class", "state-title").text(e.descriptions[0]).node().getBBox(),
                    r = n.height,
                    i = t.append("text").attr("x", h().state.padding).attr("y", r + .4 * h().state.padding + h().state.dividerMargin + h().state.textHeight).attr("class", "state-description"),
                    a = !0,
                    o = !0;
                e.descriptions.forEach((function(t) {
                    a || (! function(t, e, n) {
                        var r = t.append("tspan").attr("x", 2 * h().state.padding).text(e);
                        n || r.attr("dy", h().state.textHeight)
                    }(i, t, o), o = !1), a = !1
                }));
                var s = t.append("line").attr("x1", h().state.padding).attr("y1", h().state.padding + r + h().state.dividerMargin / 2).attr("y2", h().state.padding + r + h().state.dividerMargin / 2).attr("class", "descr-divider"),
                    u = i.node().getBBox(),
                    c = Math.max(u.width, n.width);
                return s.attr("x2", c + 3 * h().state.padding), t.insert("rect", ":first-child").attr("x", h().state.padding).attr("y", h().state.padding).attr("width", c + 2 * h().state.padding).attr("height", u.height + r + 2 * h().state.padding).attr("rx", h().state.radius), t
            },
            bn = function(t, e, n) {
                var r, i = h().state.padding,
                    a = 2 * h().state.padding,
                    o = t.node().getBBox(),
                    s = o.width,
                    u = o.x,
                    c = t.append("text").attr("x", 0).attr("y", h().state.titleShift).attr("font-size", h().state.fontSize).attr("class", "state-title").text(e.id),
                    f = c.node().getBBox().width + a,
                    l = Math.max(f, s);
                l === s && (l += a);
                var d = t.node().getBBox();
                e.doc, r = u - i, f > s && (r = (s - l) / 2 + i), Math.abs(u - d.x) < i && f > s && (r = u - (f - s) / 2);
                var p = 1 - h().state.textHeight;
                return t.insert("rect", ":first-child").attr("x", r).attr("y", p).attr("class", n ? "alt-composit" : "composit").attr("width", l).attr("height", d.height + h().state.textHeight + h().state.titleShift + 1).attr("rx", "0"), c.attr("x", r + i), f <= s && c.attr("x", u + (l - a) / 2 - f / 2 + i), t.insert("rect", ":first-child").attr("x", r).attr("y", h().state.titleShift - h().state.textHeight - h().state.padding).attr("width", l).attr("height", 3 * h().state.textHeight).attr("rx", h().state.radius), t.insert("rect", ":first-child").attr("x", r).attr("y", h().state.titleShift - h().state.textHeight - h().state.padding).attr("width", l).attr("height", d.height + 3 + 2 * h().state.textHeight).attr("rx", h().state.radius), t
            },
            vn = function(t, e) {
                e.attr("class", "state-note");
                var n = e.append("rect").attr("x", 0).attr("y", h().state.padding),
                    r = function(t, e, n, r) {
                        var i = 0,
                            a = r.append("text");
                        a.style("text-anchor", "start"), a.attr("class", "noteText");
                        var o = t.replace(/\r\n/g, "<br/>"),
                            s = (o = o.replace(/\n/g, "<br/>")).split(/<br\s*\/?>/gi),
                            u = 1.25 * h().state.noteMargin,
                            c = !0,
                            f = !1,
                            l = void 0;
                        try {
                            for (var d, p = s[Symbol.iterator](); !(c = (d = p.next()).done); c = !0) {
                                var g = d.value.trim();
                                if (g.length > 0) {
                                    var y = a.append("tspan");
                                    if (y.text(g), 0 === u) u += y.node().getBBox().height;
                                    i += u, y.attr("x", e + h().state.noteMargin), y.attr("y", n + i + 1.25 * h().state.noteMargin)
                                }
                            }
                        } catch (t) {
                            f = !0, l = t
                        } finally {
                            try {
                                c || null == p.return || p.return()
                            } finally {
                                if (f) throw l
                            }
                        }
                        return {
                            textWidth: a.node().getBBox().width,
                            textHeight: i
                        }
                    }(t, 0, 0, e.append("g")),
                    i = r.textWidth,
                    a = r.textHeight;
                return n.attr("height", a + 2 * h().state.noteMargin), n.attr("width", i + 2 * h().state.noteMargin), n
            },
            mn = function(t, e) {
                var n = e.id,
                    r = {
                        id: n,
                        label: e.id,
                        width: 0,
                        height: 0
                    },
                    i = t.append("g").attr("id", n).attr("class", "stateGroup");
                "start" === e.type && function(t) {
                    t.append("circle").style("stroke", "black").style("fill", "black").attr("r", h().state.sizeUnit).attr("cx", h().state.padding + h().state.sizeUnit).attr("cy", h().state.padding + h().state.sizeUnit)
                }(i), "end" === e.type && function(t) {
                    t.append("circle").style("stroke", "black").style("fill", "white").attr("r", h().state.sizeUnit + h().state.miniPadding).attr("cx", h().state.padding + h().state.sizeUnit + h().state.miniPadding).attr("cy", h().state.padding + h().state.sizeUnit + h().state.miniPadding), t.append("circle").style("stroke", "black").style("fill", "black").attr("r", h().state.sizeUnit).attr("cx", h().state.padding + h().state.sizeUnit + 2).attr("cy", h().state.padding + h().state.sizeUnit + 2)
                }(i), "fork" !== e.type && "join" !== e.type || function(t, e) {
                    var n = h().state.forkWidth,
                        r = h().state.forkHeight;
                    if (e.parentId) {
                        var i = n;
                        n = r, r = i
                    }
                    t.append("rect").style("stroke", "black").style("fill", "black").attr("width", n).attr("height", r).attr("x", h().state.padding).attr("y", h().state.padding)
                }(i, e), "note" === e.type && vn(e.note.text, i), "divider" === e.type && function(t) {
                    t.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", h().state.textHeight).attr("class", "divider").attr("x2", 2 * h().state.textHeight).attr("y1", 0).attr("y2", 0)
                }(i), "default" === e.type && 0 === e.descriptions.length && function(t, e) {
                    var n = t.append("text").attr("x", 2 * h().state.padding).attr("y", h().state.textHeight + 2 * h().state.padding).attr("font-size", h().state.fontSize).attr("class", "state-title").text(e.id),
                        r = n.node().getBBox();
                    t.insert("rect", ":first-child").attr("x", h().state.padding).attr("y", h().state.padding).attr("width", r.width + 2 * h().state.padding).attr("height", r.height + 2 * h().state.padding).attr("rx", h().state.radius)
                }(i, e), "default" === e.type && e.descriptions.length > 0 && yn(i, e);
                var a = i.node().getBBox();
                return r.width = a.width + 2 * h().state.padding, r.height = a.height + 2 * h().state.padding, gn(n, r), r
            },
            _n = 0;
        hn.parser.yy = ln;
        var wn = {},
            xn = function(t) {
                if (!t) return 1;
                var e = t.replace(/<br\s*\/?>/gi, "#br#");
                return (e = e.replace(/\\n/g, "#br#")).split("#br#")
            },
            kn = function t(e, n, r, i) {
                var o, s = new T.a.Graph({
                        compound: !0
                    }),
                    u = !0;
                for (o = 0; o < e.length; o++)
                    if ("relation" === e[o].stmt) {
                        u = !1;
                        break
                    } r ? s.setGraph({
                    rankdir: "LR",
                    compound: !0,
                    ranker: "tight-tree",
                    ranksep: u ? 1 : tn.edgeLengthFactor,
                    nodeSep: u ? 1 : 50
                }) : s.setGraph({
                    rankdir: "TB",
                    compound: !0,
                    ranksep: u ? 1 : tn.edgeLengthFactor,
                    nodeSep: u ? 1 : 50,
                    ranker: "tight-tree"
                }), s.setDefaultEdgeLabel((function() {
                    return {}
                })), ln.extract(e);
                for (var c = ln.getStates(), f = ln.getRelations(), l = Object.keys(c), d = 0; d < l.length; d++) {
                    var p = c[l[d]];
                    r && (p.parentId = r);
                    var g = void 0;
                    if (p.doc) {
                        var y = n.append("g").attr("id", p.id).attr("class", "stateGroup");
                        g = t(p.doc, y, p.id, !i);
                        var b = (y = bn(y, p, i)).node().getBBox();
                        g.width = b.width, g.height = b.height + tn.padding / 2, wn[p.id] = {
                            y: tn.compositTitleSize
                        }
                    } else g = mn(n, p);
                    if (p.note) {
                        var v = {
                                descriptions: [],
                                id: p.id + "-note",
                                note: p.note,
                                type: "note"
                            },
                            m = mn(n, v);
                        "left of" === p.note.position ? (s.setNode(g.id + "-note", m), s.setNode(g.id, g)) : (s.setNode(g.id, g), s.setNode(g.id + "-note", m)), s.setParent(g.id, g.id + "-group"), s.setParent(g.id + "-note", g.id + "-group")
                    } else s.setNode(g.id, g)
                }
                _.info("Count=", s.nodeCount()), f.forEach((function(t) {
                    var e;
                    s.setEdge(t.id1, t.id2, {
                        relation: t,
                        width: (e = t.title, e ? e.length * tn.fontSizeFactor : 1),
                        height: tn.labelHeight * xn(t.title).length,
                        labelpos: "c"
                    })
                })), Ce.a.layout(s), _.debug("Graph after layout", s.nodes());
                var w = n.node();
                s.nodes().forEach((function(t) {
                    void 0 !== t && void 0 !== s.node(t) ? (_.warn("Node " + t + ": " + JSON.stringify(s.node(t))), a.select("#" + w.id + " #" + t).attr("transform", "translate(" + (s.node(t).x - s.node(t).width / 2) + "," + (s.node(t).y + (wn[t] ? wn[t].y : 0) - s.node(t).height / 2) + " )"), a.select("#" + w.id + " #" + t).attr("data-x-shift", s.node(t).x - s.node(t).width / 2), document.querySelectorAll("#" + w.id + " #" + t + " .divider").forEach((function(t) {
                        var e = t.parentElement,
                            n = 0,
                            r = 0;
                        e && (e.parentElement && (n = e.parentElement.getBBox().width), r = parseInt(e.getAttribute("data-x-shift"), 10), Number.isNaN(r) && (r = 0)), t.setAttribute("x1", 0 - r + 8), t.setAttribute("x2", n - r - 8)
                    }))) : _.debug("No Node " + t + ": " + JSON.stringify(s.node(t)))
                }));
                var x = w.getBBox();
                s.edges().forEach((function(t) {
                    void 0 !== t && void 0 !== s.edge(t) && (_.debug("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(s.edge(t))), function(t, e, n) {
                        e.points = e.points.filter((function(t) {
                            return !Number.isNaN(t.y)
                        }));
                        var r, i = e.points,
                            o = a.line().x((function(t) {
                                return t.x
                            })).y((function(t) {
                                return t.y
                            })).curve(a.curveBasis),
                            s = t.append("path").attr("d", o(i)).attr("id", "edge" + _n).attr("class", "transition"),
                            u = "";
                        if (h().state.arrowMarkerAbsolute && (u = (u = (u = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search).replace(/\(/g, "\\(")).replace(/\)/g, "\\)")), s.attr("marker-end", "url(" + u + "#" + function(t) {
                                switch (t) {
                                    case ln.relationType.AGGREGATION:
                                        return "aggregation";
                                    case ln.relationType.EXTENSION:
                                        return "extension";
                                    case ln.relationType.COMPOSITION:
                                        return "composition";
                                    case ln.relationType.DEPENDENCY:
                                        return "dependency"
                                }
                            }(ln.relationType.DEPENDENCY) + "End)"), void 0 !== n.title) {
                            for (var c = t.append("g").attr("class", "stateLabel"), f = S.calcLabelPosition(e.points), l = f.x, d = f.y, p = (r = n.title, r.replace(/<br\s*\/?>/gi, "#br#").replace(/\\n/g, "#br#").split("#br#")), g = 0, y = [], b = 0; b <= p.length; b++) {
                                var v = c.append("text").attr("text-anchor", "middle").text(p[b]).attr("x", l).attr("y", d + g);
                                if (0 === g) {
                                    var m = v.node().getBBox();
                                    g = m.height
                                }
                                y.push(v)
                            }
                            if (p.length > 1) {
                                var _ = p.length * g * .25;
                                y.forEach((function(t, e) {
                                    return t.attr("y", d + e * g - _)
                                }))
                            }
                            var w = c.node().getBBox();
                            c.insert("rect", ":first-child").attr("class", "box").attr("x", w.x - h().state.padding / 2).attr("y", w.y - h().state.padding / 2).attr("width", w.width + h().state.padding).attr("height", w.height + h().state.padding)
                        }
                        _n++
                    }(n, s.edge(t), s.edge(t).relation))
                })), x = w.getBBox();
                var k = {
                    id: r || "root",
                    label: r || "root",
                    width: 0,
                    height: 0
                };
                return k.width = x.width + 2 * tn.padding, k.height = x.height + 2 * tn.padding, _.info("Doc rendered", k, s), k
            },
            En = function() {},
            An = function(t, e) {
                tn = h().state, hn.parser.yy.clear(), hn.parser.parse(t), _.debug("Rendering diagram " + t);
                var n = a.select("[id='".concat(e, "']"));
                n.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"), new T.a.Graph({
                    multigraph: !1,
                    compound: !0,
                    rankdir: "RL"
                }).setDefaultEdgeLabel((function() {
                    return {}
                }));
                var r = ln.getRootDoc();
                kn(r, n, void 0, !1);
                var i = tn.padding,
                    o = n.node().getBBox(),
                    s = o.width + 2 * i,
                    u = o.height + 2 * i;
                n.attr("width", 1.75 * s), n.attr("viewBox", "".concat(o.x - tn.padding, "  ").concat(o.y - tn.padding, " ") + s + " " + u)
            },
            Sn = n(48),
            Mn = n.n(Sn),
            Tn = n(230),
            Dn = n.n(Tn),
            Cn = {},
            Nn = null,
            In = {
                master: Nn
            },
            Ln = "master",
            Bn = "LR",
            On = 0;

        function Rn() {
            return Dn()({
                length: 7,
                characters: "0123456789abcdef"
            })
        }

        function Pn(t, e) {
            for (_.debug("Entering isfastforwardable:", t.id, e.id); t.seq <= e.seq && t !== e && null != e.parent;) {
                if (Array.isArray(e.parent)) return _.debug("In merge commit:", e.parent), Pn(t, Cn[e.parent[0]]) || Pn(t, Cn[e.parent[1]]);
                e = Cn[e.parent]
            }
            return _.debug(t.id, e.id), t.id === e.id
        }
        var Fn = {};

        function qn(t, e, n) {
            var r = t.indexOf(e); - 1 === r ? t.push(n) : t.splice(r, 1, n)
        }
        var jn, Un = function() {
                var t = Object.keys(Cn).map((function(t) {
                    return Cn[t]
                }));
                return t.forEach((function(t) {
                    _.debug(t.id)
                })), Mn.a.orderBy(t, ["seq"], ["desc"])
            },
            zn = {
                setDirection: function(t) {
                    Bn = t
                },
                setOptions: function(t) {
                    _.debug("options str", t), t = (t = t && t.trim()) || "{}";
                    try {
                        Fn = JSON.parse(t)
                    } catch (t) {
                        _.error("error while parsing gitGraph options", t.message)
                    }
                },
                getOptions: function() {
                    return Fn
                },
                commit: function(t) {
                    var e = {
                        id: Rn(),
                        message: t,
                        seq: On++,
                        parent: null == Nn ? null : Nn.id
                    };
                    Nn = e, Cn[e.id] = e, In[Ln] = e.id, _.debug("in pushCommit " + e.id)
                },
                branch: function(t) {
                    In[t] = null != Nn ? Nn.id : null, _.debug("in createBranch")
                },
                merge: function(t) {
                    var e = Cn[In[Ln]],
                        n = Cn[In[t]];
                    if (function(t, e) {
                            return t.seq > e.seq && Pn(e, t)
                        }(e, n)) _.debug("Already merged");
                    else {
                        if (Pn(e, n)) In[Ln] = In[t], Nn = Cn[In[Ln]];
                        else {
                            var r = {
                                id: Rn(),
                                message: "merged branch " + t + " into " + Ln,
                                seq: On++,
                                parent: [null == Nn ? null : Nn.id, In[t]]
                            };
                            Nn = r, Cn[r.id] = r, In[Ln] = r.id
                        }
                        _.debug(In), _.debug("in mergeBranch")
                    }
                },
                checkout: function(t) {
                    _.debug("in checkout");
                    var e = In[Ln = t];
                    Nn = Cn[e]
                },
                reset: function(t) {
                    _.debug("in reset", t);
                    var e = t.split(":")[0],
                        n = parseInt(t.split(":")[1]),
                        r = "HEAD" === e ? Nn : Cn[In[e]];
                    for (_.debug(r, n); n > 0;)
                        if (n--, !(r = Cn[r.parent])) {
                            var i = "Critical error - unique parent commit not found during reset";
                            throw _.error(i), i
                        } Nn = r, In[Ln] = r.id
                },
                prettyPrint: function() {
                    _.debug(Cn),
                        function t(e) {
                            var n = Mn.a.maxBy(e, "seq"),
                                r = "";
                            e.forEach((function(t) {
                                r += t === n ? "\t*" : "\t|"
                            }));
                            var i = [r, n.id, n.seq];
                            for (var a in In) In[a] === n.id && i.push(a);
                            if (_.debug(i.join(" ")), Array.isArray(n.parent)) {
                                var o = Cn[n.parent[0]];
                                qn(e, n, o), e.push(Cn[n.parent[1]])
                            } else {
                                if (null == n.parent) return;
                                var s = Cn[n.parent];
                                qn(e, n, s)
                            }
                            t(e = Mn.a.uniqBy(e, "id"))
                        }([Un()[0]])
                },
                clear: function() {
                    Cn = {}, In = {
                        master: Nn = null
                    }, Ln = "master", On = 0
                },
                getBranchesAsObjArray: function() {
                    var t = [];
                    for (var e in In) t.push({
                        name: e,
                        commit: Cn[In[e]]
                    });
                    return t
                },
                getBranches: function() {
                    return In
                },
                getCommits: function() {
                    return Cn
                },
                getCommitsArray: Un,
                getCurrentBranch: function() {
                    return Ln
                },
                getDirection: function() {
                    return Bn
                },
                getHead: function() {
                    return Nn
                }
            },
            Yn = n(85),
            Vn = n.n(Yn),
            Hn = {},
            Gn = {
                nodeSpacing: 150,
                nodeFillColor: "yellow",
                nodeStrokeWidth: 2,
                nodeStrokeColor: "grey",
                lineStrokeWidth: 4,
                branchOffset: 50,
                lineColor: "grey",
                leftMargin: 50,
                branchColors: ["#442f74", "#983351", "#609732", "#AA9A39"],
                nodeRadius: 10,
                nodeLabel: {
                    width: 75,
                    height: 100,
                    x: -25,
                    y: 0
                }
            },
            $n = {};

        function Wn(t, e, n, r) {
            var i = E(r, a.curveBasis),
                o = Gn.branchColors[n % Gn.branchColors.length],
                s = a.line().x((function(t) {
                    return Math.round(t.x)
                })).y((function(t) {
                    return Math.round(t.y)
                })).curve(i);
            t.append("svg:path").attr("d", s(e)).style("stroke", o).style("stroke-width", Gn.lineStrokeWidth).style("fill", "none")
        }

        function Kn(t, e) {
            e = e || t.node().getBBox();
            var n = t.node().getCTM();
            return {
                left: n.e + e.x * n.a,
                top: n.f + e.y * n.d,
                width: e.width,
                height: e.height
            }
        }

        function Xn(t, e, n, r, i) {
            _.debug("svgDrawLineForCommits: ", e, n);
            var a = Kn(t.select("#node-" + e + " circle")),
                o = Kn(t.select("#node-" + n + " circle"));
            switch (r) {
                case "LR":
                    if (a.left - o.left > Gn.nodeSpacing) {
                        var s = {
                            x: a.left - Gn.nodeSpacing,
                            y: o.top + o.height / 2
                        };
                        Wn(t, [s, {
                            x: o.left + o.width,
                            y: o.top + o.height / 2
                        }], i, "linear"), Wn(t, [{
                            x: a.left,
                            y: a.top + a.height / 2
                        }, {
                            x: a.left - Gn.nodeSpacing / 2,
                            y: a.top + a.height / 2
                        }, {
                            x: a.left - Gn.nodeSpacing / 2,
                            y: s.y
                        }, s], i)
                    } else Wn(t, [{
                        x: a.left,
                        y: a.top + a.height / 2
                    }, {
                        x: a.left - Gn.nodeSpacing / 2,
                        y: a.top + a.height / 2
                    }, {
                        x: a.left - Gn.nodeSpacing / 2,
                        y: o.top + o.height / 2
                    }, {
                        x: o.left + o.width,
                        y: o.top + o.height / 2
                    }], i);
                    break;
                case "BT":
                    if (o.top - a.top > Gn.nodeSpacing) {
                        var u = {
                            x: o.left + o.width / 2,
                            y: a.top + a.height + Gn.nodeSpacing
                        };
                        Wn(t, [u, {
                            x: o.left + o.width / 2,
                            y: o.top
                        }], i, "linear"), Wn(t, [{
                            x: a.left + a.width / 2,
                            y: a.top + a.height
                        }, {
                            x: a.left + a.width / 2,
                            y: a.top + a.height + Gn.nodeSpacing / 2
                        }, {
                            x: o.left + o.width / 2,
                            y: u.y - Gn.nodeSpacing / 2
                        }, u], i)
                    } else Wn(t, [{
                        x: a.left + a.width / 2,
                        y: a.top + a.height
                    }, {
                        x: a.left + a.width / 2,
                        y: a.top + Gn.nodeSpacing / 2
                    }, {
                        x: o.left + o.width / 2,
                        y: o.top - Gn.nodeSpacing / 2
                    }, {
                        x: o.left + o.width / 2,
                        y: o.top
                    }], i)
            }
        }

        function Zn(t, e) {
            return t.select(e).node().cloneNode(!0)
        }

        function Jn(t, e, n, r) {
            var i, a = Object.keys(Hn).length;
            if ("string" == typeof e)
                do {
                    if (i = Hn[e], _.debug("in renderCommitHistory", i.id, i.seq), t.select("#node-" + e).size() > 0) return;
                    t.append((function() {
                        return Zn(t, "#def-commit")
                    })).attr("class", "commit").attr("id", (function() {
                        return "node-" + i.id
                    })).attr("transform", (function() {
                        switch (r) {
                            case "LR":
                                return "translate(" + (i.seq * Gn.nodeSpacing + Gn.leftMargin) + ", " + jn * Gn.branchOffset + ")";
                            case "BT":
                                return "translate(" + (jn * Gn.branchOffset + Gn.leftMargin) + ", " + (a - i.seq) * Gn.nodeSpacing + ")"
                        }
                    })).attr("fill", Gn.nodeFillColor).attr("stroke", Gn.nodeStrokeColor).attr("stroke-width", Gn.nodeStrokeWidth);
                    var o = void 0;
                    for (var s in n)
                        if (n[s].commit === i) {
                            o = n[s];
                            break
                        } o && (_.debug("found branch ", o.name), t.select("#node-" + i.id + " p").append("xhtml:span").attr("class", "branch-label").text(o.name + ", ")), t.select("#node-" + i.id + " p").append("xhtml:span").attr("class", "commit-id").text(i.id), "" !== i.message && "BT" === r && t.select("#node-" + i.id + " p").append("xhtml:span").attr("class", "commit-msg").text(", " + i.message), e = i.parent
                } while (e && Hn[e]);
            Array.isArray(e) && (_.debug("found merge commmit", e), Jn(t, e[0], n, r), jn++, Jn(t, e[1], n, r), jn--)
        }

        function Qn(t, e, n, r) {
            for (r = r || 0; e.seq > 0 && !e.lineDrawn;) "string" == typeof e.parent ? (Xn(t, e.id, e.parent, n, r), e.lineDrawn = !0, e = Hn[e.parent]) : Array.isArray(e.parent) && (Xn(t, e.id, e.parent[0], n, r), Xn(t, e.id, e.parent[1], n, r + 1), Qn(t, Hn[e.parent[1]], n, r + 1), e.lineDrawn = !0, e = Hn[e.parent[0]])
        }
        var tr, er = function(t) {
                $n = t
            },
            nr = function(t, e, n) {
                try {
                    var r = Vn.a.parser;
                    r.yy = zn, r.yy.clear(), _.debug("in gitgraph renderer", t + "\n", "id:", e, n), r.parse(t + "\n"), Gn = Mn.a.assign(Gn, $n, zn.getOptions()), _.debug("effective options", Gn);
                    var i = zn.getDirection();
                    Hn = zn.getCommits();
                    var o = zn.getBranchesAsObjArray();
                    "BT" === i && (Gn.nodeLabel.x = o.length * Gn.branchOffset, Gn.nodeLabel.width = "100%", Gn.nodeLabel.y = -2 * Gn.nodeRadius);
                    var s = a.select('[id="'.concat(e, '"]'));
                    for (var u in function(t) {
                            t.append("defs").append("g").attr("id", "def-commit").append("circle").attr("r", Gn.nodeRadius).attr("cx", 0).attr("cy", 0), t.select("#def-commit").append("foreignObject").attr("width", Gn.nodeLabel.width).attr("height", Gn.nodeLabel.height).attr("x", Gn.nodeLabel.x).attr("y", Gn.nodeLabel.y).attr("class", "node-label").attr("requiredFeatures", "http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")
                        }(s), jn = 1, o) {
                        var c = o[u];
                        Jn(s, c.commit.id, o, i), Qn(s, c.commit, i), jn++
                    }
                    s.attr("height", (function() {
                        return "BT" === i ? Object.keys(Hn).length * Gn.nodeSpacing : (o.length + 1) * Gn.branchOffset
                    }))
                } catch (t) {
                    _.error("Error while rendering gitgraph"), _.error(t.message)
                }
            },
            rr = "",
            ir = !1,
            ar = {
                setMessage: function(t) {
                    _.debug("Setting message to: " + t), rr = t
                },
                getMessage: function() {
                    return rr
                },
                setInfo: function(t) {
                    ir = t
                },
                getInfo: function() {
                    return ir
                }
            },
            or = n(86),
            sr = n.n(or),
            ur = {},
            cr = function(t) {
                Object.keys(t).forEach((function(e) {
                    ur[e] = t[e]
                }))
            },
            fr = function(t, e, n) {
                try {
                    var r = sr.a.parser;
                    r.yy = ar, _.debug("Renering info diagram\n" + t), r.parse(t), _.debug("Parsed info diagram");
                    var i = a.select("#" + e);
                    i.append("g").append("text").attr("x", 100).attr("y", 40).attr("class", "version").attr("font-size", "32px").style("text-anchor", "middle").text("v " + n), i.attr("height", 100), i.attr("width", 400)
                } catch (t) {
                    _.error("Error while rendering info diagram"), _.error(t.message)
                }
            },
            lr = {},
            hr = "",
            dr = {
                addSection: function(t, e) {
                    void 0 === lr[t] && (lr[t] = e, _.debug("Added new section :", t))
                },
                getSections: function() {
                    return lr
                },
                cleanupValue: function(t) {
                    return ":" === t.substring(0, 1) ? (t = t.substring(1).trim(), Number(t.trim())) : Number(t.trim())
                },
                clear: function() {
                    lr = {}, hr = ""
                },
                setTitle: function(t) {
                    hr = t
                },
                getTitle: function() {
                    return hr
                }
            },
            pr = n(87),
            gr = n.n(pr),
            yr = {},
            br = function(t) {
                Object.keys(t).forEach((function(e) {
                    yr[e] = t[e]
                }))
            },
            vr = function(t, e) {
                try {
                    var n = gr.a.parser;
                    n.yy = dr, _.debug("Rendering info diagram\n" + t), n.yy.clear(), n.parse(t), _.debug("Parsed info diagram");
                    var r = document.getElementById(e);
                    void 0 === (tr = r.parentElement.offsetWidth) && (tr = 1200), void 0 !== yr.useWidth && (tr = yr.useWidth);
                    r.setAttribute("height", "100%"), r.setAttribute("viewBox", "0 0 " + tr + " 450");
                    var i = tr,
                        o = Math.min(i, 450) / 2 - 40,
                        s = a.select("#" + e).append("svg").attr("width", i).attr("height", 450).append("g").attr("transform", "translate(" + i / 2 + ",225)"),
                        u = dr.getSections(),
                        c = 0;
                    Object.keys(u).forEach((function(t) {
                        c += u[t]
                    })), _.info(u);
                    var f = a.scaleOrdinal().domain(u).range(a.schemeSet2),
                        l = a.pie().value((function(t) {
                            return t.value
                        }))(a.entries(u)),
                        h = a.arc().innerRadius(0).outerRadius(o);
                    s.selectAll("mySlices").data(l).enter().append("path").attr("d", h).attr("fill", (function(t) {
                        return f(t.data.key)
                    })).attr("stroke", "black").style("stroke-width", "2px").style("opacity", .7), s.selectAll("mySlices").data(l).enter().append("text").text((function(t) {
                        return (t.data.value / c * 100).toFixed(0) + "%"
                    })).attr("transform", (function(t) {
                        return "translate(" + h.centroid(t) + ")"
                    })).style("text-anchor", "middle").attr("class", "slice").style("font-size", 17), s.append("text").text(n.yy.getTitle()).attr("x", 0).attr("y", -200).attr("class", "pieTitleText");
                    var d = s.selectAll(".legend").data(f.domain()).enter().append("g").attr("class", "legend").attr("transform", (function(t, e) {
                        return "translate(216," + (22 * e - 22 * f.domain().length / 2) + ")"
                    }));
                    d.append("rect").attr("width", 18).attr("height", 18).style("fill", f).style("stroke", f), d.append("text").attr("x", 22).attr("y", 14).text((function(t) {
                        return t
                    }))
                } catch (t) {
                    _.error("Error while rendering info diagram"), _.error(t.message)
                }
            };

        function mr(t) {
            return (mr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                return typeof t
            } : function(t) {
                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
            })(t)
        }
        for (var _r = {}, wr = 0, xr = ["default", "forest", "dark", "neutral"]; wr < xr.length; wr++) {
            var kr = xr[wr];
            _r[kr] = n(500)("./".concat(kr, "/index.scss"))
        }
        var Er = {
            theme: "default",
            themeCSS: void 0,
            fontFamily: '"trebuchet ms", verdana, arial;',
            logLevel: 5,
            securityLevel: "strict",
            startOnLoad: !0,
            arrowMarkerAbsolute: !1,
            flowchart: {
                htmlLabels: !0,
                nodeSpacing: 50,
                rankSpacing: 50,
                curve: "linear"
            },
            sequence: {
                diagramMarginX: 50,
                diagramMarginY: 10,
                actorMargin: 50,
                width: 150,
                height: 65,
                boxMargin: 10,
                boxTextMargin: 5,
                noteMargin: 10,
                messageMargin: 35,
                mirrorActors: !0,
                bottomMarginAdj: 1,
                useMaxWidth: !0,
                rightAngles: !1,
                showSequenceNumbers: !1
            },
            gantt: {
                titleTopMargin: 25,
                barHeight: 20,
                barGap: 4,
                topPadding: 50,
                leftPadding: 75,
                gridLineStartPadding: 35,
                fontSize: 11,
                fontFamily: '"Open-Sans", "sans-serif"',
                numberSectionStyles: 4,
                axisFormat: "%Y-%m-%d"
            },
            class: {},
            git: {},
            state: {
                dividerMargin: 10,
                sizeUnit: 5,
                padding: 8,
                textHeight: 10,
                titleShift: -15,
                noteMargin: 10,
                forkWidth: 70,
                forkHeight: 7,
                miniPadding: 2,
                fontSizeFactor: 5.02,
                fontSize: 24,
                labelHeight: 16,
                edgeLengthFactor: "20",
                compositTitleSize: 35,
                radius: 5
            }
        };
        w(Er.logLevel), l(Er);
        var Ar = function(t) {
            for (var e = Object.keys(t), n = 0; n < e.length; n++)
                if ("object" === mr(t[e[n]]) && null != t[e[n]])
                    for (var r = Object.keys(t[e[n]]), i = 0; i < r.length; i++) _.debug("Setting conf ", e[n], "-", r[i]), void 0 === Er[e[n]] && (Er[e[n]] = {}), _.debug("Setting config: " + e[n] + " " + r[i] + " to " + t[e[n]][r[i]]), Er[e[n]][r[i]] = t[e[n]][r[i]];
                else Er[e[n]] = t[e[n]]
        };
        var Sr = {
                render: function(t, e, n, r) {
                    if (void 0 !== r) r.innerHTML = "", a.select(r).append("div").attr("id", "d" + t).attr("style", "font-family: " + Er.fontFamily).append("svg").attr("id", t).attr("width", "100%").attr("xmlns", "http://www.w3.org/2000/svg").append("g");
                    else {
                        var i = document.getElementById(t);
                        i && i.remove();
                        var o = document.querySelector("#d" + t);
                        o && (o.innerHTML = ""), a.select("body").append("div").attr("id", "d" + t).append("svg").attr("id", t).attr("width", "100%").attr("xmlns", "http://www.w3.org/2000/svg").append("g")
                    }
                    window.txt = e, e = function(t) {
                        var e = t;
                        return e = (e = (e = e.replace(/style.*:\S*#.*;/g, (function(t) {
                            return t.substring(0, t.length - 1)
                        }))).replace(/classDef.*:\S*#.*;/g, (function(t) {
                            return t.substring(0, t.length - 1)
                        }))).replace(/#\w+;/g, (function(t) {
                            var e = t.substring(1, t.length - 1);
                            return /^\+?\d+$/.test(e) ? "fl°°" + e + "¶ß" : "fl°" + e + "¶ß"
                        }))
                    }(e);
                    var c = a.select("#d" + t).node(),
                        f = S.detectType(e),
                        l = c.firstChild,
                        h = l.firstChild,
                        d = _r[Er.theme];
                    if (void 0 === d && (d = ""), void 0 !== Er.themeCSS && (d += "\n".concat(Er.themeCSS)), void 0 !== Er.fontFamily && (d += "\n:root { --mermaid-font-family: ".concat(Er.fontFamily, "}")), void 0 !== Er.altFontFamily && (d += "\n:root { --mermaid-alt-font-family: ".concat(Er.altFontFamily, "}")), "flowchart" === f) {
                        var p = bt(e);
                        for (var g in p) d += "\n.".concat(g, " > * { ").concat(p[g].styles.join(" !important; "), " !important; }")
                    }
                    var y = document.createElement("style");
                    y.innerHTML = s()(d, "#".concat(t)), l.insertBefore(y, h);
                    var b = document.createElement("style"),
                        v = window.getComputedStyle(l);
                    switch (b.innerHTML = "#".concat(t, " {\n    color: ").concat(v.color, ";\n    font: ").concat(v.font, ";\n  }"), l.insertBefore(b, h), f) {
                        case "git":
                            Er.flowchart.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, er(Er.git), nr(e, t, !1);
                            break;
                        case "flowchart":
                            Er.flowchart.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, yt(Er.flowchart), vt(e, t, !1);
                            break;
                        case "sequence":
                            Er.sequence.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, Er.sequenceDiagram ? (Ht(Object.assign(Er.sequence, Er.sequenceDiagram)), console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")) : Ht(Er.sequence), Gt(e, t);
                            break;
                        case "gantt":
                            Er.gantt.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, Me(Er.gantt), Te(e, t);
                            break;
                        case "class":
                            Er.class.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, Ze(Er.class), Je(e, t);
                            break;
                        case "state":
                            En(Er.state), An(e, t);
                            break;
                        case "info":
                            Er.class.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, cr(Er.class), fr(e, t, u.version);
                            break;
                        case "pie":
                            Er.class.arrowMarkerAbsolute = Er.arrowMarkerAbsolute, br(Er.class), vr(e, t, u.version)
                    }
                    a.select('[id="'.concat(t, '"]')).selectAll("foreignobject > *").attr("xmlns", "http://www.w3.org/1999/xhtml");
                    var m = a.select("#d" + t).node().innerHTML;
                    if (Er.arrowMarkerAbsolute && "false" !== Er.arrowMarkerAbsolute || (m = m.replace(/marker-end="url\(.*?#/g, 'marker-end="url(#', "g")), m = function(t) {
                            var e = t;
                            return e = (e = (e = e.replace(/fl°°/g, (function() {
                                return "&#"
                            }))).replace(/fl°/g, (function() {
                                return "&"
                            }))).replace(/¶ß/g, (function() {
                                return ";"
                            }))
                        }(m), void 0 !== n) switch (f) {
                        case "flowchart":
                            n(m, W.bindFunctions);
                            break;
                        case "gantt":
                            n(m, ke.bindFunctions);
                            break;
                        case "class":
                            n(m, Ye.bindFunctions);
                            break;
                        default:
                            n(m)
                    } else _.debug("CB = undefined!");
                    var w = a.select("#d" + t).node();
                    return null !== w && "function" == typeof w.remove && a.select("#d" + t).node().remove(), m
                },
                parse: function(t) {
                    var e, n = S.detectType(t);
                    switch (_.debug("Type " + n), n) {
                        case "git":
                            (e = Vn.a).parser.yy = zn;
                            break;
                        case "flowchart":
                            W.clear(), (e = X.a).parser.yy = W;
                            break;
                        case "sequence":
                            (e = Tt.a).parser.yy = Ft;
                            break;
                        case "gantt":
                            (e = Wt.a).parser.yy = ke;
                            break;
                        case "class":
                            (e = He.a).parser.yy = Ye;
                            break;
                        case "state":
                            (e = dn.a).parser.yy = ln;
                            break;
                        case "info":
                            _.debug("info info info"), (e = sr.a).parser.yy = ar;
                            break;
                        case "pie":
                            _.debug("pie"), (e = gr.a).parser.yy = dr
                    }
                    e.parser.yy.parseError = function(t, e) {
                        throw {
                            str: t,
                            hash: e
                        }
                    }, e.parse(t)
                },
                initialize: function(t) {
                    _.debug("Initializing mermaidAPI ", u.version), "object" === mr(t) && Ar(t), l(Er), w(Er.logLevel)
                },
                getConfig: h
            },
            Mr = function() {
                Tr.startOnLoad ? Sr.getConfig().startOnLoad && Tr.init() : void 0 === Tr.startOnLoad && (_.debug("In start, no config"), Sr.getConfig().startOnLoad && Tr.init())
            };
        "undefined" != typeof document &&
            /*!
             * Wait for document loaded before starting the execution
             */
            window.addEventListener("load", (function() {
                Mr()
            }), !1);
        var Tr = {
            startOnLoad: !0,
            htmlLabels: !0,
            mermaidAPI: Sr,
            parse: Sr.parse,
            render: Sr.render,
            init: function() {
                var t, e, n, r = Sr.getConfig();
                _.debug("Starting rendering diagrams"), arguments.length >= 2 ? (
                    /*! sequence config was passed as #1 */
                    void 0 !== arguments[0] && (Tr.sequenceConfig = arguments[0]), t = arguments[1]) : t = arguments[0], "function" == typeof arguments[arguments.length - 1] ? (e = arguments[arguments.length - 1], _.debug("Callback function found")) : void 0 !== r.mermaid && ("function" == typeof r.mermaid.callback ? (e = r.mermaid.callback, _.debug("Callback function found")) : _.debug("No Callback function found")), t = void 0 === t ? document.querySelectorAll(".mermaid") : "string" == typeof t ? document.querySelectorAll(t) : t instanceof window.Node ? [t] : t, _.debug("Start On Load before: " + Tr.startOnLoad), void 0 !== Tr.startOnLoad && (_.debug("Start On Load inner: " + Tr.startOnLoad), Sr.initialize({
                    startOnLoad: Tr.startOnLoad
                })), void 0 !== Tr.ganttConfig && Sr.initialize({
                    gantt: Tr.ganttConfig
                });
                for (var a = function(r) {
                        var a = t[r];
                        /*! Check if previously processed */
                        if (a.getAttribute("data-processed")) return "continue";
                        a.setAttribute("data-processed", !0);
                        var o = "mermaid-".concat(Date.now());
                        n = a.innerHTML, n = i.a.decode(n).trim().replace(/<br\s*\/?>/gi, "<br/>"), Sr.render(o, n, (function(t, n) {
                            a.innerHTML = t, void 0 !== e && e(o), n && n(a)
                        }), a)
                    }, o = 0; o < t.length; o++) a(o)
            },
            initialize: function(t) {
                void 0 !== t.mermaid && (void 0 !== t.mermaid.startOnLoad && (Tr.startOnLoad = t.mermaid.startOnLoad), void 0 !== t.mermaid.htmlLabels && (Tr.htmlLabels = t.mermaid.htmlLabels)), Sr.initialize(t), _.debug("Initializing mermaid ")
            },
            contentLoaded: Mr
        };
        e.default = Tr
    }]).default
}));
//# sourceMappingURL=mermaid.min.js.map