! function t(e, n) {
  "object" == typeof exports && "object" == typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define([], n) : "object" == typeof exports ? exports.KerasJS = n() : e.KerasJS = n()
}("undefined" != typeof self ? self : this, function() {
  return function(t) {
    function e(r) {
      if (n[r]) return n[r].exports;
      var o = n[r] = {
        i: r,
        l: !1,
        exports: {}
      };
      return t[r].call(o.exports, o, o.exports, e), o.l = !0, o.exports
    }
    var n = {};
    return e.m = t, e.c = n, e.d = function(t, n, r) {
      e.o(t, n) || Object.defineProperty(t, n, {
        configurable: !1,
        enumerable: !0,
        get: r
      })
    }, e.n = function(t) {
      var n = t && t.__esModule ? function e() {
        return t.default
      } : function e() {
        return t
      };
      return e.d(n, "a", n), n
    }, e.o = function(t, e) {
      return Object.prototype.hasOwnProperty.call(t, e)
    }, e.p = "", e(e.s = 169)
  }([function(t, e, n) {
    var r = n(3),
      o = n(34),
      i = n(13),
      a = n(22),
      s = n(19),
      u = "prototype",
      c = function(t, e, n) {
        var l = t & c.F,
          p = t & c.G,
          h = t & c.S,
          f = t & c.P,
          d = t & c.B,
          m = p ? r : h ? r[e] || (r[e] = {}) : (r[e] || {})[u],
          y = p ? o : o[e] || (o[e] = {}),
          v = y[u] || (y[u] = {}),
          g, _, b, x;
        p && (n = e);
        for (g in n) _ = !l && m && void 0 !== m[g], b = (_ ? m : n)[g], x = d && _ ? s(b, r) : f && "function" == typeof b ? s(Function.call, b) : b, m && a(m, g, b, t & c.U), y[g] != b && i(y, g, x), f && v[g] != b && (v[g] = b)
      };
    r.core = o, c.F = 1, c.G = 2, c.S = 4, c.P = 8, c.B = 16, c.W = 32, c.U = 64, c.R = 128, t.exports = c
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      if (!t) return s;
      for (var e = 0; e < t.args.length; ++e) {
        var n = t.args[e];
        t.args[e] = 0 === e ? {
          name: n,
          lvalue: !0,
          rvalue: !!t.rvalue,
          count: t.count || 1
        } : {
          name: n,
          lvalue: !1,
          rvalue: !0,
          count: 1
        }
      }
      return t.thisVars || (t.thisVars = []), t.localVars || (t.localVars = []), t
    }

    function o(t) {
      return a({
        args: t.args,
        pre: r(t.pre),
        body: r(t.body),
        post: r(t.proc),
        funcName: t.funcName
      })
    }

    function i(t) {
      for (var e = [], n = 0; n < t.args.length; ++n) e.push("a" + n);
      return new Function("P", ["return function ", t.funcName, "_ndarrayops(", e.join(","), ") {P(", e.join(","), ");return a0}"].join(""))(o(t))
    }
    var a = n(159),
      s = {
        body: "",
        args: [],
        thisVars: [],
        localVars: []
      },
      u = {
        add: "+",
        sub: "-",
        mul: "*",
        div: "/",
        mod: "%",
        band: "&",
        bor: "|",
        bxor: "^",
        lshift: "<<",
        rshift: ">>",
        rrshift: ">>>"
      };
    ! function() {
      for (var t in u) {
        var n = u[t];
        e[t] = i({
          args: ["array", "array", "array"],
          body: {
            args: ["a", "b", "c"],
            body: "a=b" + n + "c"
          },
          funcName: t
        }), e[t + "eq"] = i({
          args: ["array", "array"],
          body: {
            args: ["a", "b"],
            body: "a" + n + "=b"
          },
          rvalue: !0,
          funcName: t + "eq"
        }), e[t + "s"] = i({
          args: ["array", "array", "scalar"],
          body: {
            args: ["a", "b", "s"],
            body: "a=b" + n + "s"
          },
          funcName: t + "s"
        }), e[t + "seq"] = i({
          args: ["array", "scalar"],
          body: {
            args: ["a", "s"],
            body: "a" + n + "=s"
          },
          rvalue: !0,
          funcName: t + "seq"
        })
      }
    }();
    var c = {
      not: "!",
      bnot: "~",
      neg: "-",
      recip: "1.0/"
    };
    ! function() {
      for (var t in c) {
        var n = c[t];
        e[t] = i({
          args: ["array", "array"],
          body: {
            args: ["a", "b"],
            body: "a=" + n + "b"
          },
          funcName: t
        }), e[t + "eq"] = i({
          args: ["array"],
          body: {
            args: ["a"],
            body: "a=" + n + "a"
          },
          rvalue: !0,
          count: 2,
          funcName: t + "eq"
        })
      }
    }();
    var l = {
      and: "&&",
      or: "||",
      eq: "===",
      neq: "!==",
      lt: "<",
      gt: ">",
      leq: "<=",
      geq: ">="
    };
    ! function() {
      for (var t in l) {
        var n = l[t];
        e[t] = i({
          args: ["array", "array", "array"],
          body: {
            args: ["a", "b", "c"],
            body: "a=b" + n + "c"
          },
          funcName: t
        }), e[t + "s"] = i({
          args: ["array", "array", "scalar"],
          body: {
            args: ["a", "b", "s"],
            body: "a=b" + n + "s"
          },
          funcName: t + "s"
        }), e[t + "eq"] = i({
          args: ["array", "array"],
          body: {
            args: ["a", "b"],
            body: "a=a" + n + "b"
          },
          rvalue: !0,
          count: 2,
          funcName: t + "eq"
        }), e[t + "seq"] = i({
          args: ["array", "scalar"],
          body: {
            args: ["a", "s"],
            body: "a=a" + n + "s"
          },
          rvalue: !0,
          count: 2,
          funcName: t + "seq"
        })
      }
    }();
    var p = ["abs", "acos", "asin", "atan", "ceil", "cos", "exp", "floor", "log", "round", "sin", "sqrt", "tan"];
    ! function() {
      for (var t = 0; t < p.length; ++t) {
        var n = p[t];
        e[n] = i({
          args: ["array", "array"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b"],
            body: "a=this_f(b)",
            thisVars: ["this_f"]
          },
          funcName: n
        }), e[n + "eq"] = i({
          args: ["array"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a"],
            body: "a=this_f(a)",
            thisVars: ["this_f"]
          },
          rvalue: !0,
          count: 2,
          funcName: n + "eq"
        })
      }
    }();
    var h = ["max", "min", "atan2", "pow"];
    ! function() {
      for (var t = 0; t < h.length; ++t) {
        var n = h[t];
        e[n] = i({
          args: ["array", "array", "array"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b", "c"],
            body: "a=this_f(b,c)",
            thisVars: ["this_f"]
          },
          funcName: n
        }), e[n + "s"] = i({
          args: ["array", "array", "scalar"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b", "c"],
            body: "a=this_f(b,c)",
            thisVars: ["this_f"]
          },
          funcName: n + "s"
        }), e[n + "eq"] = i({
          args: ["array", "array"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b"],
            body: "a=this_f(a,b)",
            thisVars: ["this_f"]
          },
          rvalue: !0,
          count: 2,
          funcName: n + "eq"
        }), e[n + "seq"] = i({
          args: ["array", "scalar"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b"],
            body: "a=this_f(a,b)",
            thisVars: ["this_f"]
          },
          rvalue: !0,
          count: 2,
          funcName: n + "seq"
        })
      }
    }();
    var f = ["atan2", "pow"];
    ! function() {
      for (var t = 0; t < f.length; ++t) {
        var n = f[t];
        e[n + "op"] = i({
          args: ["array", "array", "array"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b", "c"],
            body: "a=this_f(c,b)",
            thisVars: ["this_f"]
          },
          funcName: n + "op"
        }), e[n + "ops"] = i({
          args: ["array", "array", "scalar"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b", "c"],
            body: "a=this_f(c,b)",
            thisVars: ["this_f"]
          },
          funcName: n + "ops"
        }), e[n + "opeq"] = i({
          args: ["array", "array"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b"],
            body: "a=this_f(b,a)",
            thisVars: ["this_f"]
          },
          rvalue: !0,
          count: 2,
          funcName: n + "opeq"
        }), e[n + "opseq"] = i({
          args: ["array", "scalar"],
          pre: {
            args: [],
            body: "this_f=Math." + n,
            thisVars: ["this_f"]
          },
          body: {
            args: ["a", "b"],
            body: "a=this_f(b,a)",
            thisVars: ["this_f"]
          },
          rvalue: !0,
          count: 2,
          funcName: n + "opseq"
        })
      }
    }(), e.any = a({
      args: ["array"],
      pre: s,
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        body: "if(a){return true}",
        localVars: [],
        thisVars: []
      },
      post: {
        args: [],
        localVars: [],
        thisVars: [],
        body: "return false"
      },
      funcName: "any"
    }), e.all = a({
      args: ["array"],
      pre: s,
      body: {
        args: [{
          name: "x",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        body: "if(!x){return false}",
        localVars: [],
        thisVars: []
      },
      post: {
        args: [],
        localVars: [],
        thisVars: [],
        body: "return true"
      },
      funcName: "all"
    }), e.sum = a({
      args: ["array"],
      pre: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "this_s=0"
      },
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        body: "this_s+=a",
        localVars: [],
        thisVars: ["this_s"]
      },
      post: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "return this_s"
      },
      funcName: "sum"
    }), e.prod = a({
      args: ["array"],
      pre: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "this_s=1"
      },
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        body: "this_s*=a",
        localVars: [],
        thisVars: ["this_s"]
      },
      post: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "return this_s"
      },
      funcName: "prod"
    }), e.norm2squared = a({
      args: ["array"],
      pre: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "this_s=0"
      },
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }],
        body: "this_s+=a*a",
        localVars: [],
        thisVars: ["this_s"]
      },
      post: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "return this_s"
      },
      funcName: "norm2squared"
    }), e.norm2 = a({
      args: ["array"],
      pre: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "this_s=0"
      },
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }],
        body: "this_s+=a*a",
        localVars: [],
        thisVars: ["this_s"]
      },
      post: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "return Math.sqrt(this_s)"
      },
      funcName: "norm2"
    }), e.norminf = a({
      args: ["array"],
      pre: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "this_s=0"
      },
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 4
        }],
        body: "if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",
        localVars: [],
        thisVars: ["this_s"]
      },
      post: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "return this_s"
      },
      funcName: "norminf"
    }), e.norm1 = a({
      args: ["array"],
      pre: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "this_s=0"
      },
      body: {
        args: [{
          name: "a",
          lvalue: !1,
          rvalue: !0,
          count: 3
        }],
        body: "this_s+=a<0?-a:a",
        localVars: [],
        thisVars: ["this_s"]
      },
      post: {
        args: [],
        localVars: [],
        thisVars: ["this_s"],
        body: "return this_s"
      },
      funcName: "norm1"
    }), e.sup = a({
      args: ["array"],
      pre: {
        body: "this_h=-Infinity",
        args: [],
        thisVars: ["this_h"],
        localVars: []
      },
      body: {
        body: "if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",
        args: [{
          name: "_inline_1_arg0_",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }],
        thisVars: ["this_h"],
        localVars: []
      },
      post: {
        body: "return this_h",
        args: [],
        thisVars: ["this_h"],
        localVars: []
      }
    }), e.inf = a({
      args: ["array"],
      pre: {
        body: "this_h=Infinity",
        args: [],
        thisVars: ["this_h"],
        localVars: []
      },
      body: {
        body: "if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",
        args: [{
          name: "_inline_1_arg0_",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }],
        thisVars: ["this_h"],
        localVars: []
      },
      post: {
        body: "return this_h",
        args: [],
        thisVars: ["this_h"],
        localVars: []
      }
    }), e.argmin = a({
      args: ["index", "array", "shape"],
      pre: {
        body: "{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",
        args: [{
          name: "_inline_0_arg0_",
          lvalue: !1,
          rvalue: !1,
          count: 0
        }, {
          name: "_inline_0_arg1_",
          lvalue: !1,
          rvalue: !1,
          count: 0
        }, {
          name: "_inline_0_arg2_",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        thisVars: ["this_i", "this_v"],
        localVars: []
      },
      body: {
        body: "{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",
        args: [{
          name: "_inline_1_arg0_",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }, {
          name: "_inline_1_arg1_",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }],
        thisVars: ["this_i", "this_v"],
        localVars: ["_inline_1_k"]
      },
      post: {
        body: "{return this_i}",
        args: [],
        thisVars: ["this_i"],
        localVars: []
      }
    }), e.argmax = a({
      args: ["index", "array", "shape"],
      pre: {
        body: "{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",
        args: [{
          name: "_inline_0_arg0_",
          lvalue: !1,
          rvalue: !1,
          count: 0
        }, {
          name: "_inline_0_arg1_",
          lvalue: !1,
          rvalue: !1,
          count: 0
        }, {
          name: "_inline_0_arg2_",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        thisVars: ["this_i", "this_v"],
        localVars: []
      },
      body: {
        body: "{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",
        args: [{
          name: "_inline_1_arg0_",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }, {
          name: "_inline_1_arg1_",
          lvalue: !1,
          rvalue: !0,
          count: 2
        }],
        thisVars: ["this_i", "this_v"],
        localVars: ["_inline_1_k"]
      },
      post: {
        body: "{return this_i}",
        args: [],
        thisVars: ["this_i"],
        localVars: []
      }
    }), e.random = i({
      args: ["array"],
      pre: {
        args: [],
        body: "this_f=Math.random",
        thisVars: ["this_f"]
      },
      body: {
        args: ["a"],
        body: "a=this_f()",
        thisVars: ["this_f"]
      },
      funcName: "random"
    }), e.assign = i({
      args: ["array", "array"],
      body: {
        args: ["a", "b"],
        body: "a=b"
      },
      funcName: "assign"
    }), e.assigns = i({
      args: ["array", "scalar"],
      body: {
        args: ["a", "b"],
        body: "a=b"
      },
      funcName: "assigns"
    }), e.equals = a({
      args: ["array", "array"],
      pre: s,
      body: {
        args: [{
          name: "x",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }, {
          name: "y",
          lvalue: !1,
          rvalue: !0,
          count: 1
        }],
        body: "if(x!==y){return false}",
        localVars: [],
        thisVars: []
      },
      post: {
        args: [],
        localVars: [],
        thisVars: [],
        body: "return true"
      },
      funcName: "equals"
    })
  }, function(t, e) {
    t.exports = function(t) {
      return "object" == typeof t ? null !== t : "function" == typeof t
    }
  }, function(t, e) {
    var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
    "number" == typeof __g && (__g = n)
  }, function(t, e, n) {
    var r = n(2);
    t.exports = function(t) {
      if (!r(t)) throw TypeError(t + " is not an object!");
      return t
    }
  }, function(t, e) {
    t.exports = function(t) {
      try {
        return !!t()
      } catch (t) {
        return !0
      }
    }
  }, function(t, e, n) {
    var r = n(84)("wks"),
      o = n(27),
      i = n(3).Symbol,
      a = "function" == typeof i;
    (t.exports = function(t) {
      return r[t] || (r[t] = a && i[t] || (a ? i : o)("Symbol." + t))
    }).store = r
  }, function(t, e, n) {
    var r = n(4),
      o = n(110),
      i = n(47),
      a = Object.defineProperty;
    e.f = n(10) ? Object.defineProperty : function t(e, n, s) {
      if (r(e), n = i(n, !0), r(s), o) try {
        return a(e, n, s)
      } catch (t) {}
      if ("get" in s || "set" in s) throw TypeError("Accessors not supported!");
      return "value" in s && (e[n] = s.value), e
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      for (var e in t) a.indexOf(e) < 0 && s.indexOf(e) < 0 && console.warn("cwise: Unknown argument '" + e + "' passed to expression compiler");
      for (var n = 0; n < a.length; ++n)
        if (!t[a[n]]) throw new Error("cwise: Missing argument: " + a[n]);
      return i({
        args: t.args,
        pre: o(t.pre || function() {}),
        body: o(t.body),
        post: o(t.post || function() {}),
        debug: !!t.printCode,
        funcName: t.funcName || t.body.name || "cwise",
        blockSize: t.blockSize || 64
      })
    }
    var o = n(418),
      i = n(159),
      a = ["args", "body"],
      s = ["pre", "post", "printCode", "funcName", "blockSize"];
    t.exports = r
  }, function(t, e, n) {
    var r = n(28),
      o = Math.min;
    t.exports = function(t) {
      return t > 0 ? o(r(t), 9007199254740991) : 0
    }
  }, function(t, e, n) {
    t.exports = !n(5)(function() {
      return 7 != Object.defineProperty({}, "a", {
        get: function() {
          return 7
        }
      }).a
    })
  }, function(t, e) {
    var n = {}.hasOwnProperty;
    t.exports = function(t, e) {
      return n.call(t, e)
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      return "[object Array]" === T.call(t)
    }

    function o(t) {
      return "[object ArrayBuffer]" === T.call(t)
    }

    function i(t) {
      return "undefined" != typeof FormData && t instanceof FormData
    }

    function a(t) {
      var e;
      return e = "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(t) : t && t.buffer && t.buffer instanceof ArrayBuffer
    }

    function s(t) {
      return "string" == typeof t
    }

    function u(t) {
      return "number" == typeof t
    }

    function c(t) {
      return void 0 === t
    }

    function l(t) {
      return null !== t && "object" == typeof t
    }

    function p(t) {
      return "[object Date]" === T.call(t)
    }

    function h(t) {
      return "[object File]" === T.call(t)
    }

    function f(t) {
      return "[object Blob]" === T.call(t)
    }

    function d(t) {
      return "[object Function]" === T.call(t)
    }

    function m(t) {
      return l(t) && d(t.pipe)
    }

    function y(t) {
      return "undefined" != typeof URLSearchParams && t instanceof URLSearchParams
    }

    function v(t) {
      return t.replace(/^\s*/, "").replace(/\s*$/, "")
    }

    function g() {
      return ("undefined" == typeof navigator || "ReactNative" !== navigator.product) && ("undefined" != typeof window && "undefined" != typeof document)
    }

    function _(t, e) {
      if (null !== t && void 0 !== t)
        if ("object" != typeof t && (t = [t]), r(t))
          for (var n = 0, o = t.length; n < o; n++) e.call(null, t[n], n, t);
        else
          for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && e.call(null, t[i], i, t)
    }

    function b() {
      function t(t, n) {
        "object" == typeof e[n] && "object" == typeof t ? e[n] = b(e[n], t) : e[n] = t
      }
      for (var e = {}, n = 0, r = arguments.length; n < r; n++) _(arguments[n], t);
      return e
    }

    function x(t, e, n) {
      return _(e, function e(r, o) {
        t[o] = n && "function" == typeof r ? w(r, n) : r
      }), t
    }
    var w = n(153),
      S = n(154),
      T = Object.prototype.toString;
    t.exports = {
      isArray: r,
      isArrayBuffer: o,
      isBuffer: S,
      isFormData: i,
      isArrayBufferView: a,
      isString: s,
      isNumber: u,
      isObject: l,
      isUndefined: c,
      isDate: p,
      isFile: h,
      isBlob: f,
      isFunction: d,
      isStream: m,
      isURLSearchParams: y,
      isStandardBrowserEnv: g,
      forEach: _,
      merge: b,
      extend: x,
      trim: v
    }
  }, function(t, e, n) {
    var r = n(7),
      o = n(26);
    t.exports = n(10) ? function(t, e, n) {
      return r.f(t, e, o(1, n))
    } : function(t, e, n) {
      return t[e] = n, t
    }
  }, function(t, e) {
    var n = Array.isArray;
    t.exports = n
  }, function(t, e, n) {
    var r = n(24);
    t.exports = function(t) {
      return Object(r(t))
    }
  }, function(t, e, n) {
    var r = n(81),
      o = n(24);
    t.exports = function(t) {
      return r(o(t))
    }
  }, function(t, e, n) {
    var r = n(0),
      o = n(34),
      i = n(5);
    t.exports = function(t, e) {
      var n = (o.Object || {})[t] || Object[t],
        a = {};
      a[t] = e(n), r(r.S + r.F * i(function() {
        n(1)
      }), "Object", a)
    }
  }, function(t, e, n) {
    var r = n(135),
      o = "object" == typeof self && self && self.Object === Object && self,
      i = r || o || Function("return this")();
    t.exports = i
  }, function(t, e, n) {
    var r = n(23);
    t.exports = function(t, e, n) {
      if (r(t), void 0 === e) return t;
      switch (n) {
        case 1:
          return function(n) {
            return t.call(e, n)
          };
        case 2:
          return function(n, r) {
            return t.call(e, n, r)
          };
        case 3:
          return function(n, r, o) {
            return t.call(e, n, r, o)
          }
      }
      return function() {
        return t.apply(e, arguments)
      }
    }
  }, function(t, e, n) {
    "use strict";
    if (n(10)) {
      var r = n(35),
        o = n(3),
        i = n(5),
        a = n(0),
        s = n(80),
        u = n(111),
        c = n(19),
        l = n(37),
        p = n(26),
        h = n(13),
        f = n(36),
        d = n(28),
        m = n(9),
        y = n(112),
        v = n(39),
        g = n(47),
        _ = n(11),
        b = n(88),
        x = n(2),
        w = n(15),
        S = n(89),
        T = n(49),
        P = n(42),
        C = n(48).f,
        k = n(90),
        O = n(27),
        E = n(6),
        j = n(50),
        A = n(82),
        F = n(87),
        M = n(91),
        R = n(41),
        D = n(61),
        I = n(60),
        L = n(86),
        z = n(118),
        U = n(7),
        G = n(21),
        N = U.f,
        B = G.f,
        q = o.RangeError,
        V = o.TypeError,
        H = o.Uint8Array,
        W = "ArrayBuffer",
        X = "SharedArrayBuffer",
        Y = "BYTES_PER_ELEMENT",
        $ = "prototype",
        K = Array[$],
        J = u.ArrayBuffer,
        Q = u.DataView,
        Z = j(0),
        tt = j(2),
        et = j(3),
        nt = j(4),
        rt = j(5),
        ot = j(6),
        it = A(!0),
        at = A(!1),
        st = M.values,
        ut = M.keys,
        ct = M.entries,
        lt = K.lastIndexOf,
        pt = K.reduce,
        ht = K.reduceRight,
        ft = K.join,
        dt = K.sort,
        mt = K.slice,
        yt = K.toString,
        vt = K.toLocaleString,
        gt = E("iterator"),
        _t = E("toStringTag"),
        bt = O("typed_constructor"),
        xt = O("def_constructor"),
        wt = s.CONSTR,
        St = s.TYPED,
        Tt = s.VIEW,
        Pt = "Wrong length!",
        Ct = j(1, function(t, e) {
          return At(F(t, t[xt]), e)
        }),
        kt = i(function() {
          return 1 === new H(new Uint16Array([1]).buffer)[0]
        }),
        Ot = !!H && !!H[$].set && i(function() {
          new H(1).set({})
        }),
        Et = function(t, e) {
          var n = d(t);
          if (n < 0 || n % e) throw q("Wrong offset!");
          return n
        },
        jt = function(t) {
          if (x(t) && St in t) return t;
          throw V(t + " is not a typed array!")
        },
        At = function(t, e) {
          if (!(x(t) && bt in t)) throw V("It is not a typed array constructor!");
          return new t(e)
        },
        Ft = function(t, e) {
          return Mt(F(t, t[xt]), e)
        },
        Mt = function(t, e) {
          for (var n = 0, r = e.length, o = At(t, r); r > n;) o[n] = e[n++];
          return o
        },
        Rt = function(t, e, n) {
          N(t, e, {
            get: function() {
              return this._d[n]
            }
          })
        },
        Dt = function t(e) {
          var n = w(e),
            r = arguments.length,
            o = r > 1 ? arguments[1] : void 0,
            i = void 0 !== o,
            a = k(n),
            s, u, l, p, h, f;
          if (void 0 != a && !S(a)) {
            for (f = a.call(n), l = [], s = 0; !(h = f.next()).done; s++) l.push(h.value);
            n = l
          }
          for (i && r > 2 && (o = c(o, arguments[2], 2)), s = 0, u = m(n.length), p = At(this, u); u > s; s++) p[s] = i ? o(n[s], s) : n[s];
          return p
        },
        It = function t() {
          for (var e = 0, n = arguments.length, r = At(this, n); n > e;) r[e] = arguments[e++];
          return r
        },
        Lt = !!H && i(function() {
          vt.call(new H(1))
        }),
        zt = function t() {
          return vt.apply(Lt ? mt.call(jt(this)) : jt(this), arguments)
        },
        Ut = {
          copyWithin: function t(e, n) {
            return z.call(jt(this), e, n, arguments.length > 2 ? arguments[2] : void 0)
          },
          every: function t(e) {
            return nt(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          fill: function t(e) {
            return L.apply(jt(this), arguments)
          },
          filter: function t(e) {
            return Ft(this, tt(jt(this), e, arguments.length > 1 ? arguments[1] : void 0))
          },
          find: function t(e) {
            return rt(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          findIndex: function t(e) {
            return ot(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          forEach: function t(e) {
            Z(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          indexOf: function t(e) {
            return at(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          includes: function t(e) {
            return it(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          join: function t(e) {
            return ft.apply(jt(this), arguments)
          },
          lastIndexOf: function t(e) {
            return lt.apply(jt(this), arguments)
          },
          map: function t(e) {
            return Ct(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          reduce: function t(e) {
            return pt.apply(jt(this), arguments)
          },
          reduceRight: function t(e) {
            return ht.apply(jt(this), arguments)
          },
          reverse: function t() {
            for (var e = this, n = jt(e).length, r = Math.floor(n / 2), o = 0, i; o < r;) i = e[o], e[o++] = e[--n], e[n] = i;
            return e
          },
          some: function t(e) {
            return et(jt(this), e, arguments.length > 1 ? arguments[1] : void 0)
          },
          sort: function t(e) {
            return dt.call(jt(this), e)
          },
          subarray: function t(e, n) {
            var r = jt(this),
              o = r.length,
              i = v(e, o);
            return new(F(r, r[xt]))(r.buffer, r.byteOffset + i * r.BYTES_PER_ELEMENT, m((void 0 === n ? o : v(n, o)) - i))
          }
        },
        Gt = function t(e, n) {
          return Ft(this, mt.call(jt(this), e, n))
        },
        Nt = function t(e) {
          jt(this);
          var n = Et(arguments[1], 1),
            r = this.length,
            o = w(e),
            i = m(o.length),
            a = 0;
          if (i + n > r) throw q(Pt);
          for (; a < i;) this[n + a] = o[a++]
        },
        Bt = {
          entries: function t() {
            return ct.call(jt(this))
          },
          keys: function t() {
            return ut.call(jt(this))
          },
          values: function t() {
            return st.call(jt(this))
          }
        },
        qt = function(t, e) {
          return x(t) && t[St] && "symbol" != typeof e && e in t && String(+e) == String(e)
        },
        Vt = function t(e, n) {
          return qt(e, n = g(n, !0)) ? p(2, e[n]) : B(e, n)
        },
        Ht = function t(e, n, r) {
          return !(qt(e, n = g(n, !0)) && x(r) && _(r, "value")) || _(r, "get") || _(r, "set") || r.configurable || _(r, "writable") && !r.writable || _(r, "enumerable") && !r.enumerable ? N(e, n, r) : (e[n] = r.value, e)
        };
      wt || (G.f = Vt, U.f = Ht), a(a.S + a.F * !wt, "Object", {
        getOwnPropertyDescriptor: Vt,
        defineProperty: Ht
      }), i(function() {
        yt.call({})
      }) && (yt = vt = function t() {
        return ft.call(this)
      });
      var Wt = f({}, Ut);
      f(Wt, Bt), h(Wt, gt, Bt.values), f(Wt, {
        slice: Gt,
        set: Nt,
        constructor: function() {},
        toString: yt,
        toLocaleString: zt
      }), Rt(Wt, "buffer", "b"), Rt(Wt, "byteOffset", "o"), Rt(Wt, "byteLength", "l"), Rt(Wt, "length", "e"), N(Wt, _t, {
        get: function() {
          return this[St]
        }
      }), t.exports = function(t, e, n, u) {
        u = !!u;
        var c = t + (u ? "Clamped" : "") + "Array",
          p = "get" + t,
          f = "set" + t,
          d = o[c],
          v = d || {},
          g = d && P(d),
          _ = !d || !s.ABV,
          w = {},
          S = d && d[$],
          k = function(t, n) {
            var r = t._d;
            return r.v[p](n * e + r.o, kt)
          },
          O = function(t, n, r) {
            var o = t._d;
            u && (r = (r = Math.round(r)) < 0 ? 0 : r > 255 ? 255 : 255 & r), o.v[f](n * e + o.o, r, kt)
          },
          E = function(t, e) {
            N(t, e, {
              get: function() {
                return k(this, e)
              },
              set: function(t) {
                return O(this, e, t)
              },
              enumerable: !0
            })
          };
        _ ? (d = n(function(t, n, r, o) {
          l(t, d, c, "_d");
          var i = 0,
            a = 0,
            s, u, p, f;
          if (x(n)) {
            if (!(n instanceof J || (f = b(n)) == W || f == X)) return St in n ? Mt(d, n) : Dt.call(d, n);
            s = n, a = Et(r, e);
            var v = n.byteLength;
            if (void 0 === o) {
              if (v % e) throw q(Pt);
              if ((u = v - a) < 0) throw q(Pt)
            } else if ((u = m(o) * e) + a > v) throw q(Pt);
            p = u / e
          } else p = y(n), u = p * e, s = new J(u);
          for (h(t, "_d", {
            b: s,
            o: a,
            l: u,
            e: p,
            v: new Q(s)
          }); i < p;) E(t, i++)
        }), S = d[$] = T(Wt), h(S, "constructor", d)) : i(function() {
          d(1)
        }) && i(function() {
          new d(-1)
        }) && D(function(t) {
          new d, new d(null), new d(1.5), new d(t)
        }, !0) || (d = n(function(t, n, r, o) {
          l(t, d, c);
          var i;
          return x(n) ? n instanceof J || (i = b(n)) == W || i == X ? void 0 !== o ? new v(n, Et(r, e), o) : void 0 !== r ? new v(n, Et(r, e)) : new v(n) : St in n ? Mt(d, n) : Dt.call(d, n) : new v(y(n))
        }), Z(g !== Function.prototype ? C(v).concat(C(g)) : C(v), function(t) {
          t in d || h(d, t, v[t])
        }), d[$] = S, r || (S.constructor = d));
        var j = S[gt],
          A = !!j && ("values" == j.name || void 0 == j.name),
          F = Bt.values;
        h(d, bt, !0), h(S, St, c), h(S, Tt, !0), h(S, xt, d), (u ? new d(1)[_t] == c : _t in S) || N(S, _t, {
          get: function() {
            return c
          }
        }), w[c] = d, a(a.G + a.W + a.F * (d != v), w), a(a.S, c, {
          BYTES_PER_ELEMENT: e
        }), a(a.S + a.F * i(function() {
          v.of.call(d, 1)
        }), c, {
          from: Dt,
          of: It
        }), Y in S || h(S, Y, e), a(a.P, c, Ut), I(c), a(a.P + a.F * Ot, c, {
          set: Nt
        }), a(a.P + a.F * !A, c, Bt), r || S.toString == yt || (S.toString = yt), a(a.P + a.F * i(function() {
          new d(1).slice()
        }), c, {
          slice: Gt
        }), a(a.P + a.F * (i(function() {
          return [1, 2].toLocaleString() != new d([1, 2]).toLocaleString()
        }) || !i(function() {
          S.toLocaleString.call([1, 2])
        })), c, {
          toLocaleString: zt
        }), R[c] = A ? j : F, r || A || h(S, gt, F)
      }
    } else t.exports = function() {}
  }, function(t, e, n) {
    var r = n(51),
      o = n(26),
      i = n(16),
      a = n(47),
      s = n(11),
      u = n(110),
      c = Object.getOwnPropertyDescriptor;
    e.f = n(10) ? c : function t(e, n) {
      if (e = i(e), n = a(n, !0), u) try {
        return c(e, n)
      } catch (t) {}
      if (s(e, n)) return o(!r.f.call(e, n), e[n])
    }
  }, function(t, e, n) {
    var r = n(3),
      o = n(13),
      i = n(11),
      a = n(27)("src"),
      s = "toString",
      u = Function[s],
      c = ("" + u).split(s);
    n(34).inspectSource = function(t) {
      return u.call(t)
    }, (t.exports = function(t, e, n, s) {
      var u = "function" == typeof n;
      u && (i(n, "name") || o(n, "name", e)), t[e] !== n && (u && (i(n, a) || o(n, a, t[e] ? "" + t[e] : c.join(String(e)))), t === r ? t[e] = n : s ? t[e] ? t[e] = n : o(t, e, n) : (delete t[e], o(t, e, n)))
    })(Function.prototype, s, function t() {
      return "function" == typeof this && this[a] || u.call(this)
    })
  }, function(t, e) {
    t.exports = function(t) {
      if ("function" != typeof t) throw TypeError(t + " is not a function!");
      return t
    }
  }, function(t, e) {
    t.exports = function(t) {
      if (void 0 == t) throw TypeError("Can't call method on  " + t);
      return t
    }
  }, function(t, e, n) {
    var r = n(27)("meta"),
      o = n(2),
      i = n(11),
      a = n(7).f,
      s = 0,
      u = Object.isExtensible || function() {
        return !0
      },
      c = !n(5)(function() {
        return u(Object.preventExtensions({}))
      }),
      l = function(t) {
        a(t, r, {
          value: {
            i: "O" + ++s,
            w: {}
          }
        })
      },
      p = function(t, e) {
        if (!o(t)) return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t;
        if (!i(t, r)) {
          if (!u(t)) return "F";
          if (!e) return "E";
          l(t)
        }
        return t[r].i
      },
      h = function(t, e) {
        if (!i(t, r)) {
          if (!u(t)) return !0;
          if (!e) return !1;
          l(t)
        }
        return t[r].w
      },
      f = function(t) {
        return c && d.NEED && u(t) && !i(t, r) && l(t), t
      },
      d = t.exports = {
        KEY: r,
        NEED: !1,
        fastKey: p,
        getWeak: h,
        onFreeze: f
      }
  }, function(t, e) {
    t.exports = function(t, e) {
      return {
        enumerable: !(1 & t),
        configurable: !(2 & t),
        writable: !(4 & t),
        value: e
      }
    }
  }, function(t, e) {
    var n = 0,
      r = Math.random();
    t.exports = function(t) {
      return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++n + r).toString(36))
    }
  }, function(t, e) {
    var n = Math.ceil,
      r = Math.floor;
    t.exports = function(t) {
      return isNaN(t = +t) ? 0 : (t > 0 ? r : n)(t)
    }
  }, function(t, e, n) {
    var r = n(113),
      o = n(85);
    t.exports = Object.keys || function t(e) {
      return r(e, o)
    }
  }, function(t, e) {
    var n;
    n = function() {
      return this
    }();
    try {
      n = n || Function("return this")() || (0, eval)("this")
    } catch (t) {
      "object" == typeof window && (n = window)
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e) {
      var n = i(t, e);
      return o(n) ? n : void 0
    }
    var o = n(310),
      i = n(313);
    t.exports = r
  }, function(t, e, n) {
    var r = n(413),
      o = r();
    t.exports = o
  }, function(t, e, n) {
    "use strict";
    (function(t) {
      function r(t, e, n) {
        for (var r = Object.keys(e), o = 0; o < r.length; ++o) void 0 !== t[r[o]] && n || (t[r[o]] = e[r[o]]);
        return t
      }

      function o(t) {
        function e(t, n) {
          if (!(this instanceof e)) return new e(t, n);
          Object.defineProperty(this, "message", {
            get: function() {
              return t
            }
          }), Error.captureStackTrace ? Error.captureStackTrace(this, e) : Object.defineProperty(this, "stack", {
            value: (new Error).stack || ""
          }), n && r(this, n)
        }
        return (e.prototype = Object.create(Error.prototype)).constructor = e, Object.defineProperty(e.prototype, "name", {
          get: function() {
            return t
          }
        }), e.prototype.toString = function t() {
          return this.name + ": " + this.message
        }, e
      }
      var i = e;
      i.asPromise = n(460), i.base64 = n(461), i.EventEmitter = n(462), i.float = n(463), i.inquire = n(464), i.utf8 = n(465), i.pool = n(466), i.LongBits = n(467), i.emptyArray = Object.freeze ? Object.freeze([]) : [], i.emptyObject = Object.freeze ? Object.freeze({}) : {}, i.isNode = Boolean(t.process && t.process.versions && t.process.versions.node), i.isInteger = Number.isInteger || function t(e) {
        return "number" == typeof e && isFinite(e) && Math.floor(e) === e
      }, i.isString = function t(e) {
        return "string" == typeof e || e instanceof String
      }, i.isObject = function t(e) {
        return e && "object" == typeof e
      }, i.isset = i.isSet = function t(e, n) {
        var r = e[n];
        return !(null == r || !e.hasOwnProperty(n)) && ("object" != typeof r || (Array.isArray(r) ? r.length : Object.keys(r).length) > 0)
      }, i.Buffer = function() {
        try {
          var t = i.inquire("buffer").Buffer;
          return t.prototype.utf8Write ? t : null
        } catch (t) {
          return null
        }
      }(), i._Buffer_from = null, i._Buffer_allocUnsafe = null, i.newBuffer = function t(e) {
        return "number" == typeof e ? i.Buffer ? i._Buffer_allocUnsafe(e) : new i.Array(e) : i.Buffer ? i._Buffer_from(e) : "undefined" == typeof Uint8Array ? e : new Uint8Array(e)
      }, i.Array = "undefined" != typeof Uint8Array ? Uint8Array : Array, i.Long = t.dcodeIO && t.dcodeIO.Long || i.inquire("long"), i.key2Re = /^true|false|0|1$/, i.key32Re = /^-?(?:0|[1-9][0-9]*)$/, i.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/, i.longToHash = function t(e) {
        return e ? i.LongBits.from(e).toHash() : i.LongBits.zeroHash
      }, i.longFromHash = function t(e, n) {
        var r = i.LongBits.fromHash(e);
        return i.Long ? i.Long.fromBits(r.lo, r.hi, n) : r.toNumber(Boolean(n))
      }, i.merge = r, i.lcFirst = function t(e) {
        return e.charAt(0).toLowerCase() + e.substring(1)
      }, i.newError = o, i.ProtocolError = o("ProtocolError"), i.oneOfGetter = function t(e) {
        for (var n = {}, r = 0; r < e.length; ++r) n[e[r]] = 1;
        return function() {
          for (var t = Object.keys(this), e = t.length - 1; e > -1; --e)
            if (1 === n[t[e]] && void 0 !== this[t[e]] && null !== this[t[e]]) return t[e]
        }
      }, i.oneOfSetter = function t(e) {
        return function(t) {
          for (var n = 0; n < e.length; ++n) e[n] !== t && delete this[e[n]]
        }
      }, i.toJSONOptions = {
        longs: String,
        enums: String,
        bytes: String,
        json: !0
      }, i._configure = function() {
        var t = i.Buffer;
        if (!t) return void(i._Buffer_from = i._Buffer_allocUnsafe = null);
        i._Buffer_from = t.from !== Uint8Array.from && t.from || function e(n, r) {
          return new t(n, r)
        }, i._Buffer_allocUnsafe = t.allocUnsafe || function e(n) {
          return new t(n)
        }
      }
    }).call(e, n(30))
  }, function(t, e) {
    var n = t.exports = {
      version: "2.5.3"
    };
    "number" == typeof __e && (__e = n)
  }, function(t, e) {
    t.exports = !1
  }, function(t, e, n) {
    var r = n(22);
    t.exports = function(t, e, n) {
      for (var o in e) r(t, o, e[o], n);
      return t
    }
  }, function(t, e) {
    t.exports = function(t, e, n, r) {
      if (!(t instanceof e) || void 0 !== r && r in t) throw TypeError(n + ": incorrect invocation!");
      return t
    }
  }, function(t, e) {
    var n = {}.toString;
    t.exports = function(t) {
      return n.call(t).slice(8, -1)
    }
  }, function(t, e, n) {
    var r = n(28),
      o = Math.max,
      i = Math.min;
    t.exports = function(t, e) {
      return t = r(t), t < 0 ? o(t + e, 0) : i(t, e)
    }
  }, function(t, e, n) {
    var r = n(7).f,
      o = n(11),
      i = n(6)("toStringTag");
    t.exports = function(t, e, n) {
      t && !o(t = n ? t : t.prototype, i) && r(t, i, {
        configurable: !0,
        value: e
      })
    }
  }, function(t, e) {
    t.exports = {}
  }, function(t, e, n) {
    var r = n(11),
      o = n(15),
      i = n(83)("IE_PROTO"),
      a = Object.prototype;
    t.exports = Object.getPrototypeOf || function(t) {
      return t = o(t), r(t, i) ? t[i] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? a : null
    }
  }, function(t, e, n) {
    var r = n(6)("unscopables"),
      o = Array.prototype;
    void 0 == o[r] && n(13)(o, r, {}), t.exports = function(t) {
      o[r][t] = !0
    }
  }, function(t, e, n) {
    var r = n(2);
    t.exports = function(t, e) {
      if (!r(t) || t._t !== e) throw TypeError("Incompatible receiver, " + e + " required!");
      return t
    }
  }, function(t, e) {
    function n(t) {
      var e = typeof t;
      return null != t && ("object" == e || "function" == e)
    }
    t.exports = n
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      return Array.isArray(t) ? [t.length, t[0].length] : t.shape
    }

    function o(t, e, n) {
      var o = r(t),
        i = r(e),
        a = r(n);
      if (o[0] !== i[0] || o[1] !== a[1] || i[1] !== a[0]) throw new Error("Mismatched array shapes for matrix product")
    }

    function i(t) {
      if (Array.isArray(t)) {
        if (Array.isArray(t)) return ["r", "native"]
      } else if (t.shape && 2 === t.shape.length) return t.order[0] ? ["r", t.dtype] : ["c", t.dtype];
      throw new Error("Unrecognized data type")
    }

    function a(t, e, n, r, a) {
      void 0 === r && (r = 1), void 0 === a && (a = 0);
      var c = 1 !== r,
        l = 0 !== a,
        p = i(t),
        h = i(e),
        f = i(n);
      o(t, e, n);
      var d = [p, h, f, c, l].join(":"),
        m = u[d];
      return m || (m = u[d] = s(p, h, f, c, l)), m(t, e, n, r, a)
    }
    t.exports = a;
    var s = n(423),
      u = {}
  }, function(t, e, n) {
    var r = n(2);
    t.exports = function(t, e) {
      if (!r(t)) return t;
      var n, o;
      if (e && "function" == typeof(n = t.toString) && !r(o = n.call(t))) return o;
      if ("function" == typeof(n = t.valueOf) && !r(o = n.call(t))) return o;
      if (!e && "function" == typeof(n = t.toString) && !r(o = n.call(t))) return o;
      throw TypeError("Can't convert object to primitive value")
    }
  }, function(t, e, n) {
    var r = n(113),
      o = n(85).concat("length", "prototype");
    e.f = Object.getOwnPropertyNames || function t(e) {
      return r(e, o)
    }
  }, function(t, e, n) {
    var r = n(4),
      o = n(174),
      i = n(85),
      a = n(83)("IE_PROTO"),
      s = function() {},
      u = "prototype",
      c = function() {
        var t = n(79)("iframe"),
          e = i.length,
          r = "<",
          o = ">",
          a;
        for (t.style.display = "none", n(114).appendChild(t), t.src = "javascript:", a = t.contentWindow.document, a.open(), a.write("<script>document.F=Object<\/script>"), a.close(), c = a.F; e--;) delete c[u][i[e]];
        return c()
      };
    t.exports = Object.create || function t(e, n) {
      var i;
      return null !== e ? (s[u] = r(e), i = new s, s[u] = null, i[a] = e) : i = c(), void 0 === n ? i : o(i, n)
    }
  }, function(t, e, n) {
    var r = n(19),
      o = n(81),
      i = n(15),
      a = n(9),
      s = n(175);
    t.exports = function(t, e) {
      var n = 1 == t,
        u = 2 == t,
        c = 3 == t,
        l = 4 == t,
        p = 6 == t,
        h = 5 == t || p,
        f = e || s;
      return function(e, s, d) {
        for (var m = i(e), y = o(m), v = r(s, d, 3), g = a(y.length), _ = 0, b = n ? f(e, g) : u ? f(e, 0) : void 0, x, w; g > _; _++)
          if ((h || _ in y) && (x = y[_], w = v(x, _, m), t))
            if (n) b[_] = w;
            else if (w) switch (t) {
              case 3:
                return !0;
              case 5:
                return x;
              case 6:
                return _;
              case 2:
                b.push(x)
            } else if (l) return !1;
        return p ? -1 : c || l ? l : b
      }
    }
  }, function(t, e) {
    e.f = {}.propertyIsEnumerable
  }, function(t, e, n) {
    function r(t) {
      return a(t) ? o(t) : i(t)
    }
    var o = n(286),
      i = n(295),
      a = n(56);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return null == t ? void 0 === t ? u : s : c && c in Object(t) ? i(t) : a(t)
    }
    var o = n(54),
      i = n(289),
      a = n(290),
      s = "[object Null]",
      u = "[object Undefined]",
      c = o ? o.toStringTag : void 0;
    t.exports = r
  }, function(t, e, n) {
    var r = n(18),
      o = r.Symbol;
    t.exports = o
  }, function(t, e) {
    function n(t) {
      return null != t && "object" == typeof t
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      return null != t && i(t.length) && !o(t)
    }
    var o = n(138),
      i = n(102);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      if ("string" == typeof t || o(t)) return t;
      var e = t + "";
      return "0" == e && 1 / t == -i ? "-0" : e
    }
    var o = n(76),
      i = 1 / 0;
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      return t[0] - e[0]
    }

    function o() {
      var t = this.stride,
        e = new Array(t.length),
        n;
      for (n = 0; n < e.length; ++n) e[n] = [Math.abs(t[n]), n];
      e.sort(r);
      var o = new Array(e.length);
      for (n = 0; n < o.length; ++n) o[n] = e[n][1];
      return o
    }

    function i(t, e) {
      var n = ["View", e, "d", t].join("");
      e < 0 && (n = "View_Nil" + t);
      var r = "generic" === t;
      if (-1 === e) {
        var i = "function " + n + "(a){this.data=a;};var proto=" + n + ".prototype;proto.dtype='" + t + "';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new " + n + "(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_" + n + "(a){return new " + n + "(a);}",
          a = new Function(i);
        return a()
      }
      if (0 === e) {
        var i = "function " + n + "(a,d) {this.data = a;this.offset = d};var proto=" + n + ".prototype;proto.dtype='" + t + "';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function " + n + "_copy() {return new " + n + "(this.data,this.offset)};proto.pick=function " + n + "_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function " + n + "_get(){return " + (r ? "this.data.get(this.offset)" : "this.data[this.offset]") + "};proto.set=function " + n + "_set(v){return " + (r ? "this.data.set(this.offset,v)" : "this.data[this.offset]=v") + "};return function construct_" + n + "(a,b,c,d){return new " + n + "(a,d)}",
          a = new Function("TrivialArray", i);
        return a(p[t][0])
      }
      var i = ["'use strict'"],
        s = u(e),
        c = s.map(function(t) {
          return "i" + t
        }),
        l = "this.offset+" + s.map(function(t) {
          return "this.stride[" + t + "]*i" + t
        }).join("+"),
        h = s.map(function(t) {
          return "b" + t
        }).join(","),
        f = s.map(function(t) {
          return "c" + t
        }).join(",");
      i.push("function " + n + "(a," + h + "," + f + ",d){this.data=a", "this.shape=[" + h + "]", "this.stride=[" + f + "]", "this.offset=d|0}", "var proto=" + n + ".prototype", "proto.dtype='" + t + "'", "proto.dimension=" + e), i.push("Object.defineProperty(proto,'size',{get:function " + n + "_size(){return " + s.map(function(t) {
        return "this.shape[" + t + "]"
      }).join("*"), "}})"), 1 === e ? i.push("proto.order=[0]") : (i.push("Object.defineProperty(proto,'order',{get:"), e < 4 ? (i.push("function " + n + "_order(){"), 2 === e ? i.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})") : 3 === e && i.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")) : i.push("ORDER})")), i.push("proto.set=function " + n + "_set(" + c.join(",") + ",v){"), r ? i.push("return this.data.set(" + l + ",v)}") : i.push("return this.data[" + l + "]=v}"), i.push("proto.get=function " + n + "_get(" + c.join(",") + "){"), r ? i.push("return this.data.get(" + l + ")}") : i.push("return this.data[" + l + "]}"), i.push("proto.index=function " + n + "_index(", c.join(), "){return " + l + "}"), i.push("proto.hi=function " + n + "_hi(" + c.join(",") + "){return new " + n + "(this.data," + s.map(function(t) {
        return ["(typeof i", t, "!=='number'||i", t, "<0)?this.shape[", t, "]:i", t, "|0"].join("")
      }).join(",") + "," + s.map(function(t) {
        return "this.stride[" + t + "]"
      }).join(",") + ",this.offset)}");
      var d = s.map(function(t) {
          return "a" + t + "=this.shape[" + t + "]"
        }),
        m = s.map(function(t) {
          return "c" + t + "=this.stride[" + t + "]"
        });
      i.push("proto.lo=function " + n + "_lo(" + c.join(",") + "){var b=this.offset,d=0," + d.join(",") + "," + m.join(","));
      for (var y = 0; y < e; ++y) i.push("if(typeof i" + y + "==='number'&&i" + y + ">=0){d=i" + y + "|0;b+=c" + y + "*d;a" + y + "-=d}");
      i.push("return new " + n + "(this.data," + s.map(function(t) {
        return "a" + t
      }).join(",") + "," + s.map(function(t) {
        return "c" + t
      }).join(",") + ",b)}"), i.push("proto.step=function " + n + "_step(" + c.join(",") + "){var " + s.map(function(t) {
        return "a" + t + "=this.shape[" + t + "]"
      }).join(",") + "," + s.map(function(t) {
        return "b" + t + "=this.stride[" + t + "]"
      }).join(",") + ",c=this.offset,d=0,ceil=Math.ceil");
      for (var y = 0; y < e; ++y) i.push("if(typeof i" + y + "==='number'){d=i" + y + "|0;if(d<0){c+=b" + y + "*(a" + y + "-1);a" + y + "=ceil(-a" + y + "/d)}else{a" + y + "=ceil(a" + y + "/d)}b" + y + "*=d}");
      i.push("return new " + n + "(this.data," + s.map(function(t) {
        return "a" + t
      }).join(",") + "," + s.map(function(t) {
        return "b" + t
      }).join(",") + ",c)}");
      for (var v = new Array(e), g = new Array(e), y = 0; y < e; ++y) v[y] = "a[i" + y + "]", g[y] = "b[i" + y + "]";
      i.push("proto.transpose=function " + n + "_transpose(" + c + "){" + c.map(function(t, e) {
        return t + "=(" + t + "===undefined?" + e + ":" + t + "|0)"
      }).join(";"), "var a=this.shape,b=this.stride;return new " + n + "(this.data," + v.join(",") + "," + g.join(",") + ",this.offset)}"), i.push("proto.pick=function " + n + "_pick(" + c + "){var a=[],b=[],c=this.offset");
      for (var y = 0; y < e; ++y) i.push("if(typeof i" + y + "==='number'&&i" + y + ">=0){c=(c+this.stride[" + y + "]*i" + y + ")|0}else{a.push(this.shape[" + y + "]);b.push(this.stride[" + y + "])}");
      i.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"), i.push("return function construct_" + n + "(data,shape,stride,offset){return new " + n + "(data," + s.map(function(t) {
        return "shape[" + t + "]"
      }).join(",") + "," + s.map(function(t) {
        return "stride[" + t + "]"
      }).join(",") + ",offset)}");
      var a = new Function("CTOR_LIST", "ORDER", i.join("\n"));
      return a(p[t], o)
    }

    function a(t) {
      if (c(t)) return "buffer";
      if (l) switch (Object.prototype.toString.call(t)) {
        case "[object Float64Array]":
          return "float64";
        case "[object Float32Array]":
          return "float32";
        case "[object Int8Array]":
          return "int8";
        case "[object Int16Array]":
          return "int16";
        case "[object Int32Array]":
          return "int32";
        case "[object Uint8Array]":
          return "uint8";
        case "[object Uint16Array]":
          return "uint16";
        case "[object Uint32Array]":
          return "uint32";
        case "[object Uint8ClampedArray]":
          return "uint8_clamped"
      }
      return Array.isArray(t) ? "array" : "generic"
    }

    function s(t, e, n, r) {
      if (void 0 === t) {
        var o = p.array[0];
        return o([])
      }
      "number" == typeof t && (t = [t]), void 0 === e && (e = [t.length]);
      var s = e.length;
      if (void 0 === n) {
        n = new Array(s);
        for (var u = s - 1, c = 1; u >= 0; --u) n[u] = c, c *= e[u]
      }
      if (void 0 === r) {
        r = 0;
        for (var u = 0; u < s; ++u) n[u] < 0 && (r -= (e[u] - 1) * n[u])
      }
      for (var l = a(t), h = p[l]; h.length <= s + 1;) h.push(i(l, h.length - 1));
      var o = h[s + 1];
      return o(t, e, n, r)
    }
    var u = n(415),
      c = n(154),
      l = "undefined" != typeof Float64Array,
      p = {
        float32: [],
        float64: [],
        int8: [],
        int16: [],
        int32: [],
        uint8: [],
        uint16: [],
        uint32: [],
        array: [],
        uint8_clamped: [],
        buffer: [],
        generic: []
      };
    t.exports = s
  }, function(t, e, n) {
    "use strict";
    t.exports.gemv = n(424), t.exports.gbmv = n(435), t.exports.symv = n(436), t.exports.sbmv = n(437), t.exports.spmv = n(438), t.exports.trmv = n(439), t.exports.tbmv = n(440), t.exports.trsv = n(441), t.exports.tbsv = n(442), t.exports.tpsv = n(443), t.exports.ger = n(444), t.exports.syr = n(445), t.exports.spr = n(446), t.exports.syr2 = n(447), t.exports.spr2 = n(448), t.exports.trmv_lower = function(e, n) {
      return console.warn("trmv_lower is deprecated. Please use the 'isLower' flag with trmv."), t.exports.trmv(e, n, !0)
    }, t.exports.trsv_lower = function(e, n) {
      return console.warn("trsv_lower is deprecated. Please use the 'isLower' flag with trsv."), t.exports.trsv(e, n, !0)
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(3),
      o = n(7),
      i = n(10),
      a = n(6)("species");
    t.exports = function(t) {
      var e = r[t];
      i && e && !e[a] && o.f(e, a, {
        configurable: !0,
        get: function() {
          return this
        }
      })
    }
  }, function(t, e, n) {
    var r = n(6)("iterator"),
      o = !1;
    try {
      var i = [7][r]();
      i.return = function() {
        o = !0
      }, Array.from(i, function() {
        throw 2
      })
    } catch (t) {}
    t.exports = function(t, e) {
      if (!e && !o) return !1;
      var n = !1;
      try {
        var i = [7],
          a = i[r]();
        a.next = function() {
          return {
            done: n = !0
          }
        }, i[r] = function() {
          return a
        }, t(i)
      } catch (t) {}
      return n
    }
  }, function(t, e, n) {
    var r = n(19),
      o = n(120),
      i = n(89),
      a = n(4),
      s = n(9),
      u = n(90),
      c = {},
      l = {},
      e = t.exports = function(t, e, n, p, h) {
        var f = h ? function() {
            return t
          } : u(t),
          d = r(n, p, e ? 2 : 1),
          m = 0,
          y, v, g, _;
        if ("function" != typeof f) throw TypeError(t + " is not iterable!");
        if (i(f)) {
          for (y = s(t.length); y > m; m++)
            if ((_ = e ? d(a(v = t[m])[0], v[1]) : d(t[m])) === c || _ === l) return _
        } else
          for (g = f.call(t); !(v = g.next()).done;)
            if ((_ = o(g, d, v.value, e)) === c || _ === l) return _
      };
    e.BREAK = c, e.RETURN = l
  }, function(t, e, n) {
    "use strict";
    var r = n(3),
      o = n(0),
      i = n(22),
      a = n(36),
      s = n(25),
      u = n(62),
      c = n(37),
      l = n(2),
      p = n(5),
      h = n(61),
      f = n(40),
      d = n(187);
    t.exports = function(t, e, n, m, y, v) {
      var g = r[t],
        _ = g,
        b = y ? "set" : "add",
        x = _ && _.prototype,
        w = {},
        S = function(t) {
          var e = x[t];
          i(x, t, "delete" == t ? function(t) {
            return !(v && !l(t)) && e.call(this, 0 === t ? 0 : t)
          } : "has" == t ? function t(n) {
            return !(v && !l(n)) && e.call(this, 0 === n ? 0 : n)
          } : "get" == t ? function t(n) {
            return v && !l(n) ? void 0 : e.call(this, 0 === n ? 0 : n)
          } : "add" == t ? function t(n) {
            return e.call(this, 0 === n ? 0 : n), this
          } : function t(n, r) {
            return e.call(this, 0 === n ? 0 : n, r), this
          })
        };
      if ("function" == typeof _ && (v || x.forEach && !p(function() {
        (new _).entries().next()
      }))) {
        var T = new _,
          P = T[b](v ? {} : -0, 1) != T,
          C = p(function() {
            T.has(1)
          }),
          k = h(function(t) {
            new _(t)
          }),
          O = !v && p(function() {
            for (var t = new _, e = 5; e--;) t[b](e, e);
            return !t.has(-0)
          });
        k || (_ = e(function(e, n) {
          c(e, _, t);
          var r = d(new g, e, _);
          return void 0 != n && u(n, y, r[b], r), r
        }), _.prototype = x, x.constructor = _), (C || O) && (S("delete"), S("has"), y && S("get")), (O || P) && S(b), v && x.clear && delete x.clear
      } else _ = m.getConstructor(e, t, y, b), a(_.prototype, n), s.NEED = !0;
      return f(_, t), w[t] = _, o(o.G + o.W + o.F * (_ != g), w), v || m.setStrong(_, t, y), _
    }
  }, function(t, e) {
    e.f = Object.getOwnPropertySymbols
  }, function(t, e, n) {
    "use strict";
    var r = n(13),
      o = n(22),
      i = n(5),
      a = n(24),
      s = n(6);
    t.exports = function(t, e, n) {
      var u = s(t),
        c = n(a, u, "" [t]),
        l = c[0],
        p = c[1];
      i(function() {
        var e = {};
        return e[u] = function() {
          return 7
        }, 7 != "" [t](e)
      }) && (o(String.prototype, t, l), r(RegExp.prototype, u, 2 == e ? function(t, e) {
        return p.call(t, this, e)
      } : function(t) {
        return p.call(t, this)
      }))
    }
  }, 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) {
    function n(t, e) {
      var n = typeof t;
      return !!(e = null == e ? r : e) && ("number" == n || "symbol" != n && o.test(t)) && t > -1 && t % 1 == 0 && t < e
    }
    var r = 9007199254740991,
      o = /^(?:0|[1-9]\d*)$/;
    t.exports = n
  }, function(t, e, n) {
    function r(t, e) {
      return o(t, e)
    }
    var o = n(103);
    t.exports = r
  }, function(t, e, n) {
    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])
      }
    }
    var o = n(300),
      i = n(301),
      a = n(302),
      s = n(303),
      u = n(304);
    r.prototype.clear = o, r.prototype.delete = i, r.prototype.get = a, r.prototype.has = s, r.prototype.set = u, t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      for (var n = t.length; n--;)
        if (o(t[n][0], e)) return n;
      return -1
    }
    var o = n(71);
    t.exports = r
  }, function(t, e) {
    function n(t, e) {
      return t === e || t !== t && e !== e
    }
    t.exports = n
  }, function(t, e, n) {
    var r = n(31),
      o = r(Object, "create");
    t.exports = o
  }, function(t, e, n) {
    function r(t, e) {
      var n = t.__data__;
      return o(e) ? n["string" == typeof e ? "string" : "hash"] : n.map
    }
    var o = n(322);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return "function" == typeof t ? t : null == t ? a : "object" == typeof t ? s(t) ? i(t[0], t[1]) : o(t) : u(t)
    }
    var o = n(347),
      i = n(350),
      a = n(108),
      s = n(14),
      u = n(359);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      return o(t) ? t : i(t, e) ? [t] : a(s(t))
    }
    var o = n(14),
      i = n(107),
      a = n(352),
      s = n(355);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return "symbol" == typeof t || i(t) && o(t) == a
    }
    var o = n(53),
      i = n(55),
      a = "[object Symbol]";
    t.exports = r
  }, function(t, e) {
    function n() {
      throw new Error("setTimeout has not been defined")
    }

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

    function o(t) {
      if (p === setTimeout) return setTimeout(t, 0);
      if ((p === n || !p) && setTimeout) return p = setTimeout, setTimeout(t, 0);
      try {
        return p(t, 0)
      } catch (e) {
        try {
          return p.call(null, t, 0)
        } catch (e) {
          return p.call(this, t, 0)
        }
      }
    }

    function i(t) {
      if (h === clearTimeout) return clearTimeout(t);
      if ((h === r || !h) && clearTimeout) return h = clearTimeout, clearTimeout(t);
      try {
        return h(t)
      } catch (e) {
        try {
          return h.call(null, t)
        } catch (e) {
          return h.call(this, t)
        }
      }
    }

    function a() {
      d && m && (d = !1, m.length ? f = m.concat(f) : y = -1, f.length && s())
    }

    function s() {
      if (!d) {
        var t = o(a);
        d = !0;
        for (var e = f.length; e;) {
          for (m = f, f = []; ++y < e;) m && m[y].run();
          y = -1, e = f.length
        }
        m = null, d = !1, i(t)
      }
    }

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

    function c() {}
    var l = t.exports = {},
      p, h;
    ! function() {
      try {
        p = "function" == typeof setTimeout ? setTimeout : n
      } catch (t) {
        p = n
      }
      try {
        h = "function" == typeof clearTimeout ? clearTimeout : r
      } catch (t) {
        h = r
      }
    }();
    var f = [],
      d = !1,
      m, y = -1;
    l.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];
      f.push(new u(t, e)), 1 !== f.length || d || o(s)
    }, u.prototype.run = function() {
      this.fun.apply(null, this.array)
    }, l.title = "browser", l.browser = !0, l.env = {}, l.argv = [], l.version = "", l.versions = {}, l.on = c, l.addListener = c, l.once = c, l.off = c, l.removeListener = c, l.removeAllListeners = c, l.emit = c, l.prependListener = c, l.prependOnceListener = c, l.listeners = function(t) {
      return []
    }, l.binding = function(t) {
      throw new Error("process.binding is not supported")
    }, l.cwd = function() {
      return "/"
    }, l.chdir = function(t) {
      throw new Error("process.chdir is not supported")
    }, l.umask = function() {
      return 0
    }
  }, function(t, e, n) {
    "use strict";
    t.exports.swap = n(425), t.exports.scal = n(426), t.exports.copy = n(427), t.exports.axpy = n(428), t.exports.dot = n(429), t.exports.cpsc = n(430), t.exports.nrm2 = n(431), t.exports.asum = n(432), t.exports.iamax = n(433), t.exports.rotg = n(434)
  }, function(t, e, n) {
    var r = n(2),
      o = n(3).document,
      i = r(o) && r(o.createElement);
    t.exports = function(t) {
      return i ? o.createElement(t) : {}
    }
  }, function(t, e, n) {
    for (var r = n(3), o = n(13), i = n(27), a = i("typed_array"), s = i("view"), u = !(!r.ArrayBuffer || !r.DataView), c = u, l = 0, p = 9, h, f = "Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(","); l < 9;)(h = r[f[l++]]) ? (o(h.prototype, a, !0), o(h.prototype, s, !0)) : c = !1;
    t.exports = {
      ABV: u,
      CONSTR: c,
      TYPED: a,
      VIEW: s
    }
  }, function(t, e, n) {
    var r = n(38);
    t.exports = Object("z").propertyIsEnumerable(0) ? Object : function(t) {
      return "String" == r(t) ? t.split("") : Object(t)
    }
  }, function(t, e, n) {
    var r = n(16),
      o = n(9),
      i = n(39);
    t.exports = function(t) {
      return function(e, n, a) {
        var s = r(e),
          u = o(s.length),
          c = i(a, u),
          l;
        if (t && n != n) {
          for (; u > c;)
            if ((l = s[c++]) != l) return !0
        } else
          for (; u > c; c++)
            if ((t || c in s) && s[c] === n) return t || c || 0; return !t && -1
      }
    }
  }, function(t, e, n) {
    var r = n(84)("keys"),
      o = n(27);
    t.exports = function(t) {
      return r[t] || (r[t] = o(t))
    }
  }, function(t, e, n) {
    var r = n(3),
      o = "__core-js_shared__",
      i = r[o] || (r[o] = {});
    t.exports = function(t) {
      return i[t] || (i[t] = {})
    }
  }, function(t, e) {
    t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
  }, function(t, e, n) {
    "use strict";
    var r = n(15),
      o = n(39),
      i = n(9);
    t.exports = function t(e) {
      for (var n = r(this), a = i(n.length), s = arguments.length, u = o(s > 1 ? arguments[1] : void 0, a), c = s > 2 ? arguments[2] : void 0, l = void 0 === c ? a : o(c, a); l > u;) n[u++] = e;
      return n
    }
  }, function(t, e, n) {
    var r = n(4),
      o = n(23),
      i = n(6)("species");
    t.exports = function(t, e) {
      var n = r(t).constructor,
        a;
      return void 0 === n || void 0 == (a = r(n)[i]) ? e : o(a)
    }
  }, function(t, e, n) {
    var r = n(38),
      o = n(6)("toStringTag"),
      i = "Arguments" == r(function() {
        return arguments
      }()),
      a = function(t, e) {
        try {
          return t[e]
        } catch (t) {}
      };
    t.exports = function(t) {
      var e, n, s;
      return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof(n = a(e = Object(t), o)) ? n : i ? r(e) : "Object" == (s = r(e)) && "function" == typeof e.callee ? "Arguments" : s
    }
  }, function(t, e, n) {
    var r = n(41),
      o = n(6)("iterator"),
      i = Array.prototype;
    t.exports = function(t) {
      return void 0 !== t && (r.Array === t || i[o] === t)
    }
  }, function(t, e, n) {
    var r = n(88),
      o = n(6)("iterator"),
      i = n(41);
    t.exports = n(34).getIteratorMethod = function(t) {
      if (void 0 != t) return t[o] || t["@@iterator"] || i[r(t)]
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(43),
      o = n(116),
      i = n(41),
      a = n(16);
    t.exports = n(117)(Array, "Array", function(t, e) {
      this._t = a(t), this._i = 0, this._k = e
    }, function() {
      var t = this._t,
        e = this._k,
        n = this._i++;
      return !t || n >= t.length ? (this._t = void 0, o(1)) : "keys" == e ? o(0, n) : "values" == e ? o(0, t[n]) : o(0, [n, t[n]])
    }, "values"), i.Arguments = i.Array, r("keys"), r("values"), r("entries")
  }, function(t, e, n) {
    var r = n(2),
      o = n(4),
      i = function(t, e) {
        if (o(t), !r(e) && null !== e) throw TypeError(e + ": can't set as prototype!")
      };
    t.exports = {
      set: Object.setPrototypeOf || ("__proto__" in {} ? function(t, e, r) {
        try {
          r = n(19)(Function.call, n(21).f(Object.prototype, "__proto__").set, 2), r(t, []), e = !(t instanceof Array)
        } catch (t) {
          e = !0
        }
        return function t(n, o) {
          return i(n, o), e ? n.__proto__ = o : r(n, o), n
        }
      }({}, !1) : void 0),
      check: i
    }
  }, function(t, e, n) {
    var r = n(19),
      o = n(123),
      i = n(114),
      a = n(79),
      s = n(3),
      u = s.process,
      c = s.setImmediate,
      l = s.clearImmediate,
      p = s.MessageChannel,
      h = s.Dispatch,
      f = 0,
      d = {},
      m = "onreadystatechange",
      y, v, g, _ = function() {
        var t = +this;
        if (d.hasOwnProperty(t)) {
          var e = d[t];
          delete d[t], e()
        }
      },
      b = function(t) {
        _.call(t.data)
      };
    c && l || (c = function t(e) {
      for (var n = [], r = 1; arguments.length > r;) n.push(arguments[r++]);
      return d[++f] = function() {
        o("function" == typeof e ? e : Function(e), n)
      }, y(f), f
    }, l = function t(e) {
      delete d[e]
    }, "process" == n(38)(u) ? y = function(t) {
      u.nextTick(r(_, t, 1))
    } : h && h.now ? y = function(t) {
      h.now(r(_, t, 1))
    } : p ? (v = new p, g = v.port2, v.port1.onmessage = b, y = r(g.postMessage, g, 1)) : s.addEventListener && "function" == typeof postMessage && !s.importScripts ? (y = function(t) {
      s.postMessage(t + "", "*")
    }, s.addEventListener("message", b, !1)) : y = m in a("script") ? function(t) {
      i.appendChild(a("script"))[m] = function() {
        i.removeChild(this), _.call(t)
      }
    } : function(t) {
      setTimeout(r(_, t, 1), 0)
    }), t.exports = {
      set: c,
      clear: l
    }
  }, function(t, e, n) {
    var r = n(129),
      o = n(24);
    t.exports = function(t, e, n) {
      if (r(e)) throw TypeError("String#" + n + " doesn't accept regex!");
      return String(o(t))
    }
  }, function(t, e, n) {
    var r = n(6)("match");
    t.exports = function(t) {
      var e = /./;
      try {
        "/./" [t](e)
      } catch (n) {
        try {
          return e[r] = !1, !"/./" [t](e)
        } catch (t) {}
      }
      return !0
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(7),
      o = n(26);
    t.exports = function(t, e, n) {
      e in t ? r.f(t, e, o(0, n)) : t[e] = n
    }
  }, function(t, e) {
    t.exports = "\t\n\v\f\r   ᠎             　\u2028\u2029\ufeff"
  }, function(t, e) {
    t.exports = Math.sign || function t(e) {
      return 0 == (e = +e) || e != e ? e : e < 0 ? -1 : 1
    }
  }, function(t, e) {
    var n = Math.expm1;
    t.exports = !n || n(10) > 22025.465794806718 || n(10) < 22025.465794806718 || -2e-17 != n(-2e-17) ? function t(e) {
      return 0 == (e = +e) ? e : e > -1e-6 && e < 1e-6 ? e + e * e / 2 : Math.exp(e) - 1
    } : n
  }, function(t, e, n) {
    var r = n(3),
      o = r.navigator;
    t.exports = o && o.userAgent || ""
  }, function(t, e, n) {
    var r = n(288),
      o = n(55),
      i = Object.prototype,
      a = i.hasOwnProperty,
      s = i.propertyIsEnumerable,
      u = r(function() {
        return arguments
      }()) ? r : function(t) {
        return o(t) && a.call(t, "callee") && !s.call(t, "callee")
      };
    t.exports = u
  }, function(t, e) {
    function n(t) {
      return "number" == typeof t && t > -1 && t % 1 == 0 && t <= r
    }
    var r = 9007199254740991;
    t.exports = n
  }, function(t, e, n) {
    function r(t, e, n, a, s) {
      return t === e || (null == t || null == e || !i(t) && !i(e) ? t !== t && e !== e : o(t, e, n, a, r, s))
    }
    var o = n(299),
      i = n(55);
    t.exports = r
  }, function(t, e, n) {
    var r = n(31),
      o = n(18),
      i = r(o, "Map");
    t.exports = i
  }, function(t, e, n) {
    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])
      }
    }
    var o = n(314),
      i = n(321),
      a = n(323),
      s = n(324),
      u = n(325);
    r.prototype.clear = o, r.prototype.delete = i, r.prototype.get = a, r.prototype.has = s, r.prototype.set = u, t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      e = o(e, t);
      for (var n = 0, r = e.length; null != t && n < r;) t = t[i(e[n++])];
      return n && n == r ? t : void 0
    }
    var o = n(75),
      i = n(57);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      if (o(t)) return !1;
      var n = typeof t;
      return !("number" != n && "symbol" != n && "boolean" != n && null != t && !i(t)) || (s.test(t) || !a.test(t) || null != e && t in Object(e))
    }
    var o = n(14),
      i = n(76),
      a = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
      s = /^\w*$/;
    t.exports = r
  }, function(t, e) {
    function n(t) {
      return t
    }
    t.exports = n
  }, function(t, e, n) {
    "use strict";
    (function(e) {
      function r(t, e) {
        !i.isUndefined(t) && i.isUndefined(t["Content-Type"]) && (t["Content-Type"] = e)
      }

      function o() {
        var t;
        return "undefined" != typeof XMLHttpRequest ? t = n(155) : void 0 !== e && (t = n(155)), t
      }
      var i = n(12),
        a = n(396),
        s = {
          "Content-Type": "application/x-www-form-urlencoded"
        },
        u = {
          adapter: o(),
          transformRequest: [function t(e, n) {
            return a(n, "Content-Type"), i.isFormData(e) || i.isArrayBuffer(e) || i.isBuffer(e) || i.isStream(e) || i.isFile(e) || i.isBlob(e) ? e : i.isArrayBufferView(e) ? e.buffer : i.isURLSearchParams(e) ? (r(n, "application/x-www-form-urlencoded;charset=utf-8"), e.toString()) : i.isObject(e) ? (r(n, "application/json;charset=utf-8"), JSON.stringify(e)) : e
          }],
          transformResponse: [function t(e) {
            if ("string" == typeof e) try {
              e = JSON.parse(e)
            } catch (t) {}
            return e
          }],
          timeout: 0,
          xsrfCookieName: "XSRF-TOKEN",
          xsrfHeaderName: "X-XSRF-TOKEN",
          maxContentLength: -1,
          validateStatus: function t(e) {
            return e >= 200 && e < 300
          }
        };
      u.headers = {
        common: {
          Accept: "application/json, text/plain, */*"
        }
      }, i.forEach(["delete", "get", "head"], function t(e) {
        u.headers[e] = {}
      }), i.forEach(["post", "put", "patch"], function t(e) {
        u.headers[e] = i.merge(s)
      }), t.exports = u
    }).call(e, n(77))
  }, function(t, e, n) {
    t.exports = !n(10) && !n(5)(function() {
      return 7 != Object.defineProperty(n(79)("div"), "a", {
        get: function() {
          return 7
        }
      }).a
    })
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      var r = new Array(n),
        o = 8 * n - e - 1,
        i = (1 << o) - 1,
        a = i >> 1,
        s = 23 === e ? G(2, -24) - G(2, -77) : 0,
        u = 0,
        c = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0,
        l, p, h;
      for (t = U(t), t != t || t === L ? (p = t != t ? 1 : 0, l = i) : (l = N(B(t) / q), t * (h = G(2, -l)) < 1 && (l--, h *= 2), t += l + a >= 1 ? s / h : s * G(2, 1 - a), t * h >= 2 && (l++, h /= 2), l + a >= i ? (p = 0, l = i) : l + a >= 1 ? (p = (t * h - 1) * G(2, e), l += a) : (p = t * G(2, a - 1) * G(2, e), l = 0)); e >= 8; r[u++] = 255 & p, p /= 256, e -= 8);
      for (l = l << e | p, o += e; o > 0; r[u++] = 255 & l, l /= 256, o -= 8);
      return r[--u] |= 128 * c, r
    }

    function o(t, e, n) {
      var r = 8 * n - e - 1,
        o = (1 << r) - 1,
        i = o >> 1,
        a = r - 7,
        s = n - 1,
        u = t[s--],
        c = 127 & u,
        l;
      for (u >>= 7; a > 0; c = 256 * c + t[s], s--, a -= 8);
      for (l = c & (1 << -a) - 1, c >>= -a, a += e; a > 0; l = 256 * l + t[s], s--, a -= 8);
      if (0 === c) c = 1 - i;
      else {
        if (c === o) return l ? NaN : u ? -L : L;
        l += G(2, e), c -= i
      }
      return (u ? -1 : 1) * l * G(2, c - e)
    }

    function i(t) {
      return t[3] << 24 | t[2] << 16 | t[1] << 8 | t[0]
    }

    function a(t) {
      return [255 & t]
    }

    function s(t) {
      return [255 & t, t >> 8 & 255]
    }

    function u(t) {
      return [255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255]
    }

    function c(t) {
      return r(t, 52, 8)
    }

    function l(t) {
      return r(t, 23, 4)
    }

    function p(t, e, n) {
      C(t[A], e, {
        get: function() {
          return this[n]
        }
      })
    }

    function h(t, e, n, r) {
      var o = +n,
        i = T(o);
      if (i + e > t[Y]) throw I(F);
      var a = t[X]._b,
        s = i + t[$],
        u = a.slice(s, s + e);
      return r ? u : u.reverse()
    }

    function f(t, e, n, r, o, i) {
      var a = +n,
        s = T(a);
      if (s + e > t[Y]) throw I(F);
      for (var u = t[X]._b, c = s + t[$], l = r(+o), p = 0; p < e; p++) u[c + p] = l[i ? p : e - p - 1]
    }
    var d = n(3),
      m = n(10),
      y = n(35),
      v = n(80),
      g = n(13),
      _ = n(36),
      b = n(5),
      x = n(37),
      w = n(28),
      S = n(9),
      T = n(112),
      P = n(48).f,
      C = n(7).f,
      k = n(86),
      O = n(40),
      E = "ArrayBuffer",
      j = "DataView",
      A = "prototype",
      F = "Wrong index!",
      M = d[E],
      R = d[j],
      D = d.Math,
      I = d.RangeError,
      L = d.Infinity,
      z = M,
      U = D.abs,
      G = D.pow,
      N = D.floor,
      B = D.log,
      q = D.LN2,
      V = "buffer",
      H = "byteLength",
      W = "byteOffset",
      X = m ? "_b" : V,
      Y = m ? "_l" : H,
      $ = m ? "_o" : W;
    if (v.ABV) {
      if (!b(function() {
        M(1)
      }) || !b(function() {
        new M(-1)
      }) || b(function() {
        return new M, new M(1.5), new M(NaN), M.name != E
      })) {
        M = function t(e) {
          return x(this, M), new z(T(e))
        };
        for (var K = M[A] = z[A], J = P(z), Q = 0, Z; J.length > Q;)(Z = J[Q++]) in M || g(M, Z, z[Z]);
        y || (K.constructor = M)
      }
      var tt = new R(new M(2)),
        et = R[A].setInt8;
      tt.setInt8(0, 2147483648), tt.setInt8(1, 2147483649), !tt.getInt8(0) && tt.getInt8(1) || _(R[A], {
        setInt8: function t(e, n) {
          et.call(this, e, n << 24 >> 24)
        },
        setUint8: function t(e, n) {
          et.call(this, e, n << 24 >> 24)
        }
      }, !0)
    } else M = function t(e) {
      x(this, M, E);
      var n = T(e);
      this._b = k.call(new Array(n), 0), this[Y] = n
    }, R = function t(e, n, r) {
      x(this, R, j), x(e, M, j);
      var o = e[Y],
        i = w(n);
      if (i < 0 || i > o) throw I("Wrong offset!");
      if (r = void 0 === r ? o - i : S(r), i + r > o) throw I("Wrong length!");
      this[X] = e, this[$] = i, this[Y] = r
    }, m && (p(M, H, "_l"), p(R, V, "_b"), p(R, H, "_l"), p(R, W, "_o")), _(R[A], {
      getInt8: function t(e) {
        return h(this, 1, e)[0] << 24 >> 24
      },
      getUint8: function t(e) {
        return h(this, 1, e)[0]
      },
      getInt16: function t(e) {
        var n = h(this, 2, e, arguments[1]);
        return (n[1] << 8 | n[0]) << 16 >> 16
      },
      getUint16: function t(e) {
        var n = h(this, 2, e, arguments[1]);
        return n[1] << 8 | n[0]
      },
      getInt32: function t(e) {
        return i(h(this, 4, e, arguments[1]))
      },
      getUint32: function t(e) {
        return i(h(this, 4, e, arguments[1])) >>> 0
      },
      getFloat32: function t(e) {
        return o(h(this, 4, e, arguments[1]), 23, 4)
      },
      getFloat64: function t(e) {
        return o(h(this, 8, e, arguments[1]), 52, 8)
      },
      setInt8: function t(e, n) {
        f(this, 1, e, a, n)
      },
      setUint8: function t(e, n) {
        f(this, 1, e, a, n)
      },
      setInt16: function t(e, n) {
        f(this, 2, e, s, n, arguments[2])
      },
      setUint16: function t(e, n) {
        f(this, 2, e, s, n, arguments[2])
      },
      setInt32: function t(e, n) {
        f(this, 4, e, u, n, arguments[2])
      },
      setUint32: function t(e, n) {
        f(this, 4, e, u, n, arguments[2])
      },
      setFloat32: function t(e, n) {
        f(this, 4, e, l, n, arguments[2])
      },
      setFloat64: function t(e, n) {
        f(this, 8, e, c, n, arguments[2])
      }
    });
    O(M, E), O(R, j), g(R[A], v.VIEW, !0), e[E] = M, e[j] = R
  }, function(t, e, n) {
    var r = n(28),
      o = n(9);
    t.exports = function(t) {
      if (void 0 === t) return 0;
      var e = r(t),
        n = o(e);
      if (e !== n) throw RangeError("Wrong length!");
      return n
    }
  }, function(t, e, n) {
    var r = n(11),
      o = n(16),
      i = n(82)(!1),
      a = n(83)("IE_PROTO");
    t.exports = function(t, e) {
      var n = o(t),
        s = 0,
        u = [],
        c;
      for (c in n) c != a && r(n, c) && u.push(c);
      for (; e.length > s;) r(n, c = e[s++]) && (~i(u, c) || u.push(c));
      return u
    }
  }, function(t, e, n) {
    var r = n(3).document;
    t.exports = r && r.documentElement
  }, function(t, e, n) {
    var r = n(38);
    t.exports = Array.isArray || function t(e) {
      return "Array" == r(e)
    }
  }, function(t, e) {
    t.exports = function(t, e) {
      return {
        value: e,
        done: !!t
      }
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(35),
      o = n(0),
      i = n(22),
      a = n(13),
      s = n(11),
      u = n(41),
      c = n(177),
      l = n(40),
      p = n(42),
      h = n(6)("iterator"),
      f = !([].keys && "next" in [].keys()),
      d = "keys",
      m = "values",
      y = function() {
        return this
      };
    t.exports = function(t, e, n, v, g, _, b) {
      c(n, e, v);
      var x = function(t) {
          if (!f && t in P) return P[t];
          switch (t) {
            case d:
              return function e() {
                return new n(this, t)
              };
            case m:
              return function e() {
                return new n(this, t)
              }
          }
          return function e() {
            return new n(this, t)
          }
        },
        w = e + " Iterator",
        S = g == m,
        T = !1,
        P = t.prototype,
        C = P[h] || P["@@iterator"] || g && P[g],
        k = !f && C || x(g),
        O = g ? S ? x("entries") : k : void 0,
        E = "Array" == e ? P.entries || C : C,
        j, A, F;
      if (E && (F = p(E.call(new t))) !== Object.prototype && F.next && (l(F, w, !0), r || s(F, h) || a(F, h, y)), S && C && C.name !== m && (T = !0, k = function t() {
        return C.call(this)
      }), r && !b || !f && !T && P[h] || a(P, h, k), u[e] = k, u[w] = y, g)
        if (j = {
          values: S ? k : x(m),
          keys: _ ? k : x(d),
          entries: O
        }, b)
          for (A in j) A in P || i(P, A, j[A]);
        else o(o.P + o.F * (f || T), e, j);
      return j
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(15),
      o = n(39),
      i = n(9);
    t.exports = [].copyWithin || function t(e, n) {
      var a = r(this),
        s = i(a.length),
        u = o(e, s),
        c = o(n, s),
        l = arguments.length > 2 ? arguments[2] : void 0,
        p = Math.min((void 0 === l ? s : o(l, s)) - c, s - u),
        h = 1;
      for (c < u && u < c + p && (h = -1, c += p - 1, u += p - 1); p-- > 0;) c in a ? a[u] = a[c] : delete a[u], u += h, c += h;
      return a
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(7).f,
      o = n(49),
      i = n(36),
      a = n(19),
      s = n(37),
      u = n(62),
      c = n(117),
      l = n(116),
      p = n(60),
      h = n(10),
      f = n(25).fastKey,
      d = n(44),
      m = h ? "_s" : "size",
      y = function(t, e) {
        var n = f(e),
          r;
        if ("F" !== n) return t._i[n];
        for (r = t._f; r; r = r.n)
          if (r.k == e) return r
      };
    t.exports = {
      getConstructor: function(t, e, n, c) {
        var l = t(function(t, r) {
          s(t, l, e, "_i"), t._t = e, t._i = o(null), t._f = void 0, t._l = void 0, t[m] = 0, void 0 != r && u(r, n, t[c], t)
        });
        return i(l.prototype, {
          clear: function t() {
            for (var n = d(this, e), r = n._i, o = n._f; o; o = o.n) o.r = !0, o.p && (o.p = o.p.n = void 0), delete r[o.i];
            n._f = n._l = void 0, n[m] = 0
          },
          delete: function(t) {
            var n = d(this, e),
              r = y(n, t);
            if (r) {
              var o = r.n,
                i = r.p;
              delete n._i[r.i], r.r = !0, i && (i.n = o), o && (o.p = i), n._f == r && (n._f = o), n._l == r && (n._l = i), n[m]--
            }
            return !!r
          },
          forEach: function t(n) {
            d(this, e);
            for (var r = a(n, arguments.length > 1 ? arguments[1] : void 0, 3), o; o = o ? o.n : this._f;)
              for (r(o.v, o.k, this); o && o.r;) o = o.p
          },
          has: function t(n) {
            return !!y(d(this, e), n)
          }
        }), h && r(l.prototype, "size", {
          get: function() {
            return d(this, e)[m]
          }
        }), l
      },
      def: function(t, e, n) {
        var r = y(t, e),
          o, i;
        return r ? r.v = n : (t._l = r = {
          i: i = f(e, !0),
          k: e,
          v: n,
          p: o = t._l,
          n: void 0,
          r: !1
        }, t._f || (t._f = r), o && (o.n = r), t[m]++, "F" !== i && (t._i[i] = r)), t
      },
      getEntry: y,
      setStrong: function(t, e, n) {
        c(t, e, function(t, n) {
          this._t = d(t, e), this._k = n, this._l = void 0
        }, function() {
          for (var t = this, e = t._k, n = t._l; n && n.r;) n = n.p;
          return t._t && (t._l = n = n ? n.n : t._t._f) ? "keys" == e ? l(0, n.k) : "values" == e ? l(0, n.v) : l(0, [n.k, n.v]) : (t._t = void 0, l(1))
        }, n ? "entries" : "values", !n, !0), p(e)
      }
    }
  }, function(t, e, n) {
    var r = n(4);
    t.exports = function(t, e, n, o) {
      try {
        return o ? e(r(n)[0], n[1]) : e(n)
      } catch (e) {
        var i = t.return;
        throw void 0 !== i && r(i.call(t)), e
      }
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(29),
      o = n(64),
      i = n(51),
      a = n(15),
      s = n(81),
      u = Object.assign;
    t.exports = !u || n(5)(function() {
      var t = {},
        e = {},
        n = Symbol(),
        r = "abcdefghijklmnopqrst";
      return t[n] = 7, r.split("").forEach(function(t) {
        e[t] = t
      }), 7 != u({}, t)[n] || Object.keys(u({}, e)).join("") != r
    }) ? function t(e, n) {
      for (var u = a(e), c = arguments.length, l = 1, p = o.f, h = i.f; c > l;)
        for (var f = s(arguments[l++]), d = p ? r(f).concat(p(f)) : r(f), m = d.length, y = 0, v; m > y;) h.call(f, v = d[y++]) && (u[v] = f[v]);
      return u
    } : u
  }, function(t, e, n) {
    "use strict";
    var r = n(36),
      o = n(25).getWeak,
      i = n(4),
      a = n(2),
      s = n(37),
      u = n(62),
      c = n(50),
      l = n(11),
      p = n(44),
      h = c(5),
      f = c(6),
      d = 0,
      m = function(t) {
        return t._l || (t._l = new y)
      },
      y = function() {
        this.a = []
      },
      v = function(t, e) {
        return h(t.a, function(t) {
          return t[0] === e
        })
      };
    y.prototype = {
      get: function(t) {
        var e = v(this, t);
        if (e) return e[1]
      },
      has: function(t) {
        return !!v(this, t)
      },
      set: function(t, e) {
        var n = v(this, t);
        n ? n[1] = e : this.a.push([t, e])
      },
      delete: function(t) {
        var e = f(this.a, function(e) {
          return e[0] === t
        });
        return ~e && this.a.splice(e, 1), !!~e
      }
    }, t.exports = {
      getConstructor: function(t, e, n, i) {
        var c = t(function(t, r) {
          s(t, c, e, "_i"), t._t = e, t._i = d++, t._l = void 0, void 0 != r && u(r, n, t[i], t)
        });
        return r(c.prototype, {
          delete: function(t) {
            if (!a(t)) return !1;
            var n = o(t);
            return !0 === n ? m(p(this, e)).delete(t) : n && l(n, this._i) && delete n[this._i]
          },
          has: function t(n) {
            if (!a(n)) return !1;
            var r = o(n);
            return !0 === r ? m(p(this, e)).has(n) : r && l(r, this._i)
          }
        }), c
      },
      def: function(t, e, n) {
        var r = o(i(e), !0);
        return !0 === r ? m(t).set(e, n) : r[t._i] = n, t
      },
      ufstore: m
    }
  }, function(t, e) {
    t.exports = function(t, e, n) {
      var r = void 0 === n;
      switch (e.length) {
        case 0:
          return r ? t() : t.call(n);
        case 1:
          return r ? t(e[0]) : t.call(n, e[0]);
        case 2:
          return r ? t(e[0], e[1]) : t.call(n, e[0], e[1]);
        case 3:
          return r ? t(e[0], e[1], e[2]) : t.call(n, e[0], e[1], e[2]);
        case 4:
          return r ? t(e[0], e[1], e[2], e[3]) : t.call(n, e[0], e[1], e[2], e[3])
      }
      return t.apply(n, e)
    }
  }, function(t, e, n) {
    var r = n(48),
      o = n(64),
      i = n(4),
      a = n(3).Reflect;
    t.exports = a && a.ownKeys || function t(e) {
      var n = r.f(i(e)),
        a = o.f;
      return a ? n.concat(a(e)) : n
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      var e, n;
      this.promise = new t(function(t, r) {
        if (void 0 !== e || void 0 !== n) throw TypeError("Bad Promise constructor");
        e = t, n = r
      }), this.resolve = o(e), this.reject = o(n)
    }
    var o = n(23);
    t.exports.f = function(t) {
      return new r(t)
    }
  }, function(t, e, n) {
    e.f = n(6)
  }, function(t, e, n) {
    var r = n(16),
      o = n(48).f,
      i = {}.toString,
      a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],
      s = function(t) {
        try {
          return o(t)
        } catch (t) {
          return a.slice()
        }
      };
    t.exports.f = function t(e) {
      return a && "[object Window]" == i.call(e) ? s(e) : o(r(e))
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(28),
      o = n(24);
    t.exports = function t(e) {
      var n = String(o(this)),
        i = "",
        a = r(e);
      if (a < 0 || a == 1 / 0) throw RangeError("Count can't be negative");
      for (; a > 0;
             (a >>>= 1) && (n += n)) 1 & a && (i += n);
      return i
    }
  }, function(t, e, n) {
    var r = n(2),
      o = n(38),
      i = n(6)("match");
    t.exports = function(t) {
      var e;
      return r(t) && (void 0 !== (e = t[i]) ? !!e : "RegExp" == o(t))
    }
  }, function(t, e, n) {
    var r = n(2),
      o = Math.floor;
    t.exports = function t(e) {
      return !r(e) && isFinite(e) && o(e) === e
    }
  }, function(t, e, n) {
    var r = n(0),
      o = n(24),
      i = n(5),
      a = n(97),
      s = "[" + a + "]",
      u = "​",
      c = RegExp("^" + s + s + "*"),
      l = RegExp(s + s + "*$"),
      p = function(t, e, n) {
        var o = {},
          s = i(function() {
            return !!a[t]() || u[t]() != u
          }),
          c = o[t] = s ? e(h) : a[t];
        n && (o[n] = c), r(r.P + r.F * s, "String", o)
      },
      h = p.trim = function(t, e) {
        return t = String(o(t)), 1 & e && (t = t.replace(c, "")), 2 & e && (t = t.replace(l, "")), t
      };
    t.exports = p
  }, function(t, e) {
    t.exports = Math.log1p || function t(e) {
      return (e = +e) > -1e-8 && e < 1e-8 ? e - e * e / 2 : Math.log(1 + e)
    }
  }, function(t, e, n) {
    var r = n(29),
      o = n(16),
      i = n(51).f;
    t.exports = function(t) {
      return function(e) {
        for (var n = o(e), a = r(n), s = a.length, u = 0, c = [], l; s > u;) i.call(n, l = a[u++]) && c.push(t ? [l, n[l]] : n[l]);
        return c
      }
    }
  }, function(t, e, n) {
    var r = n(9),
      o = n(128),
      i = n(24);
    t.exports = function(t, e, n, a) {
      var s = String(i(t)),
        u = s.length,
        c = void 0 === n ? " " : String(n),
        l = r(e);
      if (l <= u || "" == c) return s;
      var p = l - u,
        h = o.call(c, Math.ceil(p / c.length));
      return h.length > p && (h = h.slice(0, p)), a ? h + s : s + h
    }
  }, function(t, e, n) {
    (function(e) {
      var n = "object" == typeof e && e && e.Object === Object && e;
      t.exports = n
    }).call(e, n(30))
  }, function(t, e, n) {
    (function(t) {
      var r = n(18),
        o = n(291),
        i = "object" == typeof e && e && !e.nodeType && e,
        a = i && "object" == typeof t && t && !t.nodeType && t,
        s = a && a.exports === i,
        u = s ? r.Buffer : void 0,
        c = u ? u.isBuffer : void 0,
        l = c || o;
      t.exports = l
    }).call(e, n(66)(t))
  }, function(t, e, n) {
    var r = n(292),
      o = n(293),
      i = n(294),
      a = i && i.isTypedArray,
      s = a ? o(a) : r;
    t.exports = s
  }, function(t, e, n) {
    function r(t) {
      if (!i(t)) return !1;
      var e = o(t);
      return e == s || e == u || e == a || e == c
    }
    var o = n(53),
      i = n(45),
      a = "[object AsyncFunction]",
      s = "[object Function]",
      u = "[object GeneratorFunction]",
      c = "[object Proxy]";
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = this.__data__ = new o(t);
      this.size = e.size
    }
    var o = n(69),
      i = n(305),
      a = n(306),
      s = n(307),
      u = n(308),
      c = n(309);
    r.prototype.clear = i, r.prototype.delete = a, r.prototype.get = s, r.prototype.has = u, r.prototype.set = c, t.exports = r
  }, function(t, e) {
    function n(t) {
      if (null != t) {
        try {
          return o.call(t)
        } catch (t) {}
        try {
          return t + ""
        } catch (t) {}
      }
      return ""
    }
    var r = Function.prototype,
      o = r.toString;
    t.exports = n
  }, function(t, e, n) {
    function r(t, e, n, r, c, l) {
      var p = n & s,
        h = t.length,
        f = e.length;
      if (h != f && !(p && f > h)) return !1;
      var d = l.get(t);
      if (d && l.get(e)) return d == e;
      var m = -1,
        y = !0,
        v = n & u ? new o : void 0;
      for (l.set(t, e), l.set(e, t); ++m < h;) {
        var g = t[m],
          _ = e[m];
        if (r) var b = p ? r(_, g, m, e, t, l) : r(g, _, m, t, e, l);
        if (void 0 !== b) {
          if (b) continue;
          y = !1;
          break
        }
        if (v) {
          if (!i(e, function(t, e) {
            if (!a(v, e) && (g === t || c(g, t, n, r, l))) return v.push(e)
          })) {
            y = !1;
            break
          }
        } else if (g !== _ && !c(g, _, n, r, l)) {
          y = !1;
          break
        }
      }
      return l.delete(t), l.delete(e), y
    }
    var o = n(326),
      i = n(329),
      a = n(330),
      s = 1,
      u = 2;
    t.exports = r
  }, function(t, e) {
    function n(t, e) {
      for (var n = -1, r = e.length, o = t.length; ++n < r;) t[o + n] = e[n];
      return t
    }
    t.exports = n
  }, function(t, e) {
    function n(t, e) {
      for (var n = -1, r = null == t ? 0 : t.length, o = Array(r); ++n < r;) o[n] = e(t[n], n, t);
      return o
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      return t === t && !o(t)
    }
    var o = n(45);
    t.exports = r
  }, function(t, e) {
    function n(t, e) {
      return function(n) {
        return null != n && (n[t] === e && (void 0 !== e || t in Object(n)))
      }
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e) {
      return null != t && i(t, e, o)
    }
    var o = n(357),
      i = n(358);
    t.exports = r
  }, function(t, e, n) {
    var r = n(363),
      o = n(366),
      i = o(r);
    t.exports = i
  }, function(t, e, n) {
    function r(t, e, n) {
      if (!s(n)) return !1;
      var r = typeof e;
      return !!("number" == r ? i(n) && a(e, n.length) : "string" == r && e in n) && o(n[e], t)
    }
    var o = n(71),
      i = n(56),
      a = n(67),
      s = n(45);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = o(t),
        n = e % 1;
      return e === e ? n ? e - n : e : 0
    }
    var o = n(150);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      if (!t) return 0 === t ? t : 0;
      if ((t = o(t)) === i || t === -i) {
        return (t < 0 ? -1 : 1) * a
      }
      return t === t ? t : 0
    }
    var o = n(374),
      i = 1 / 0,
      a = 1.7976931348623157e308;
    t.exports = r
  }, function(t, e, n) {
    var r = n(31),
      o = function() {
        try {
          var t = r(Object, "defineProperty");
          return t({}, "", {}), t
        } catch (t) {}
      }();
    t.exports = o
  }, function(t, e, n) {
    function r(t, e, n, a, s) {
      var u = -1,
        c = t.length;
      for (n || (n = i), s || (s = []); ++u < c;) {
        var l = t[u];
        e > 0 && n(l) ? e > 1 ? r(l, e - 1, n, a, s) : o(s, l) : a || (s[s.length] = l)
      }
      return s
    }
    var o = n(142),
      i = n(383);
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n) {
      return function t() {
        for (var r = new Array(arguments.length), o = 0; o < r.length; o++) r[o] = arguments[o];
        return e.apply(n, r)
      }
    }
  }, function(t, e) {
    function n(t) {
      return !!t.constructor && "function" == typeof t.constructor.isBuffer && t.constructor.isBuffer(t)
    }

    function r(t) {
      return "function" == typeof t.readFloatLE && "function" == typeof t.slice && n(t.slice(0, 0))
    }
    t.exports = function(t) {
      return null != t && (n(t) || r(t) || !!t._isBuffer)
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(12),
      o = n(397),
      i = n(399),
      a = n(400),
      s = n(401),
      u = n(156),
      c = "undefined" != typeof window && window.btoa && window.btoa.bind(window) || n(402);
    t.exports = function t(e) {
      return new Promise(function t(l, p) {
        var h = e.data,
          f = e.headers;
        r.isFormData(h) && delete f["Content-Type"];
        var d = new XMLHttpRequest,
          m = "onreadystatechange",
          y = !1;
        if ("undefined" == typeof window || !window.XDomainRequest || "withCredentials" in d || s(e.url) || (d = new window.XDomainRequest, m = "onload", y = !0, d.onprogress = function t() {}, d.ontimeout = function t() {}), e.auth) {
          var v = e.auth.username || "",
            g = e.auth.password || "";
          f.Authorization = "Basic " + c(v + ":" + g)
        }
        if (d.open(e.method.toUpperCase(), i(e.url, e.params, e.paramsSerializer), !0), d.timeout = e.timeout, d[m] = function t() {
          if (d && (4 === d.readyState || y) && (0 !== d.status || d.responseURL && 0 === d.responseURL.indexOf("file:"))) {
            var n = "getAllResponseHeaders" in d ? a(d.getAllResponseHeaders()) : null,
              r = e.responseType && "text" !== e.responseType ? d.response : d.responseText,
              i = {
                data: r,
                status: 1223 === d.status ? 204 : d.status,
                statusText: 1223 === d.status ? "No Content" : d.statusText,
                headers: n,
                config: e,
                request: d
              };
            o(l, p, i), d = null
          }
        }, d.onerror = function t() {
          p(u("Network Error", e, null, d)), d = null
        }, d.ontimeout = function t() {
          p(u("timeout of " + e.timeout + "ms exceeded", e, "ECONNABORTED", d)), d = null
        }, r.isStandardBrowserEnv()) {
          var _ = n(403),
            b = (e.withCredentials || s(e.url)) && e.xsrfCookieName ? _.read(e.xsrfCookieName) : void 0;
          b && (f[e.xsrfHeaderName] = b)
        }
        if ("setRequestHeader" in d && r.forEach(f, function t(e, n) {
          void 0 === h && "content-type" === n.toLowerCase() ? delete f[n] : d.setRequestHeader(n, e)
        }), e.withCredentials && (d.withCredentials = !0), e.responseType) try {
          d.responseType = e.responseType
        } catch (t) {
          if ("json" !== e.responseType) throw t
        }
        "function" == typeof e.onDownloadProgress && d.addEventListener("progress", e.onDownloadProgress), "function" == typeof e.onUploadProgress && d.upload && d.upload.addEventListener("progress", e.onUploadProgress), e.cancelToken && e.cancelToken.promise.then(function t(e) {
          d && (d.abort(), p(e), d = null)
        }), void 0 === h && (h = null), d.send(h)
      })
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(398);
    t.exports = function t(e, n, o, i, a) {
      var s = new Error(e);
      return r(s, n, o, i, a)
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e) {
      return !(!e || !e.__CANCEL__)
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      this.message = t
    }
    r.prototype.toString = function t() {
      return "Cancel" + (this.message ? ": " + this.message : "")
    }, r.prototype.__CANCEL__ = !0, t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      this.argTypes = [], this.shimArgs = [], this.arrayArgs = [], this.arrayBlockIndices = [], this.scalarArgs = [], this.offsetArgs = [], this.offsetArgIndex = [], this.indexArgs = [], this.shapeArgs = [], this.funcName = "", this.pre = null, this.body = null, this.post = null, this.debug = !1
    }

    function o(t) {
      var e = new r;
      e.pre = t.pre, e.body = t.body, e.post = t.post;
      var n = t.args.slice(0);
      e.argTypes = n;
      for (var o = 0; o < n.length; ++o) {
        var a = n[o];
        if ("array" === a || "object" == typeof a && a.blockIndices) {
          if (e.argTypes[o] = "array", e.arrayArgs.push(o), e.arrayBlockIndices.push(a.blockIndices ? a.blockIndices : 0), e.shimArgs.push("array" + o), o < e.pre.args.length && e.pre.args[o].count > 0) throw new Error("cwise: pre() block may not reference array args");
          if (o < e.post.args.length && e.post.args[o].count > 0) throw new Error("cwise: post() block may not reference array args")
        } else if ("scalar" === a) e.scalarArgs.push(o), e.shimArgs.push("scalar" + o);
        else if ("index" === a) {
          if (e.indexArgs.push(o), o < e.pre.args.length && e.pre.args[o].count > 0) throw new Error("cwise: pre() block may not reference array index");
          if (o < e.body.args.length && e.body.args[o].lvalue) throw new Error("cwise: body() block may not write to array index");
          if (o < e.post.args.length && e.post.args[o].count > 0) throw new Error("cwise: post() block may not reference array index")
        } else if ("shape" === a) {
          if (e.shapeArgs.push(o), o < e.pre.args.length && e.pre.args[o].lvalue) throw new Error("cwise: pre() block may not write to array shape");
          if (o < e.body.args.length && e.body.args[o].lvalue) throw new Error("cwise: body() block may not write to array shape");
          if (o < e.post.args.length && e.post.args[o].lvalue) throw new Error("cwise: post() block may not write to array shape")
        } else {
          if ("object" != typeof a || !a.offset) throw new Error("cwise: Unknown argument type " + n[o]);
          e.argTypes[o] = "offset", e.offsetArgs.push({
            array: a.array,
            offset: a.offset
          }), e.offsetArgIndex.push(o)
        }
      }
      if (e.arrayArgs.length <= 0) throw new Error("cwise: No array arguments specified");
      if (e.pre.args.length > n.length) throw new Error("cwise: Too many arguments in pre() block");
      if (e.body.args.length > n.length) throw new Error("cwise: Too many arguments in body() block");
      if (e.post.args.length > n.length) throw new Error("cwise: Too many arguments in post() block");
      return e.debug = !!t.printCode || !!t.debug, e.funcName = t.funcName || "cwise", e.blockSize = t.blockSize || 64, i(e)
    }
    var i = n(416);
    t.exports = o
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      for (var n = 1, r = t.length, o = t[0], i = t[0], a = 1; a < r; ++a)
        if (i = o, o = t[a], e(o, i)) {
          if (a === n) {
            n++;
            continue
          }
          t[n++] = o
        }
      return t.length = n, t
    }

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

    function i(t, e, n) {
      return 0 === t.length ? t : e ? (n || t.sort(e), r(t, e)) : (n || t.sort(), o(t))
    }
    t.exports = i
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      var n, r = [],
        i = [];
      if (void 0 !== e && !Array.isArray(e)) throw new Error("axes must be an Array list of dimensions to squeeze");
      for (n = 0; n < t.shape.length; n++)(1 !== t.shape[n] || void 0 !== e && -1 === e.indexOf(n)) && (r.push(t.shape[n]), i.push(t.stride[n]));
      return o(t.data, r, i, t.offset)
    }
    var o = n(58);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return t && t.length ? o(t, i) : 0
    }
    var o = n(422),
      i = n(108);
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      var n, r;
      if (void 0 !== e && (!Number.isFinite(e) || e % 1 !== e)) throw new Error("axis of dimension to unsqueeze must be an integer");
      return e = void 0 === e ? t.shape.length : e, n = t.shape.slice(0), r = t.stride.slice(0), n.splice(e || 0, 0, 1), r.splice(e || 0, 0, (r[e] || 1) * (n[e + 1] || 1)), o(t.data, n, r, t.offset)
    }
    var o = n(58);
    t.exports = r
  }, function(t, e) {
    function n(t) {
      var e = null == t ? 0 : t.length;
      return e ? t[e - 1] : void 0
    }
    t.exports = n
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      var e = t.dtype;
      "generic" !== e && "array" !== e || (e = "double");
      var n = p.malloc(t.size, e),
        r = c(n, t.shape);
      return l.assign(r, t), r
    }

    function o(t, e) {
      e || (e = "double");
      for (var n = 1, r = new Array(t.length), o = t.length - 1; o >= 0; --o) r[o] = n, n *= t[o];
      return c(p.malloc(n, e), t, r, 0)
    }

    function i(t) {
      "generic" !== t.dtype && "array" !== t.dtype && p.free(t.data)
    }

    function a(t, e) {
      e || (e = "double");
      for (var n = 1, r = new Array(t.length), o = t.length - 1; o >= 0; --o) r[o] = n, n *= t[o];
      for (var i = p.malloc(n, e), o = 0; o < n; ++o) i[o] = 0;
      return c(i, t, r, 0)
    }

    function s(t, e) {
      e || (e = "double");
      for (var n = 1, r = new Array(t.length), o = t.length - 1; o >= 0; --o) r[o] = n, n *= t[o];
      for (var i = p.malloc(n, e), o = 0; o < n; ++o) i[o] = 1;
      return c(i, t, r, 0)
    }

    function u(t, e) {
      var n, r;
      e || (e = "double");
      var o = 1,
        i = new Array(t.length);
      for (n = t.length - 1; n >= 0; --n) i[n] = o, o *= t[n];
      var a = p.malloc(o, e);
      for (n = 0; n < o; ++n) a[n] = 0;
      var s = 1 / 0,
        u = 0;
      for (n = t.length - 1; n >= 0; n--) u += i[n], s = Math.min(s, t[n]);
      for (n = 0, r = 0; n < s; n++, r += u) a[r] = 1;
      return c(a, t, i, 0)
    }
    var c = n(58),
      l = n(1),
      p = n(450);
    e.clone = r, e.malloc = o, e.free = i, e.zeros = a, e.ones = s, e.eye = u
  }, function(t, e, n) {
    "use strict";

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

    function o(t, e) {
      var n, r;
      for (n = new Array(t), r = 0; r < t; ++r) n[r] = e;
      return n
    }

    function i(t, e) {
      switch (void 0 === e && (e = 0), typeof t) {
        case "number":
          if (t > 0) return o(0 | t, e);
          break;
        case "object":
          if ("number" == typeof t.length) return r(t, e, 0)
      }
      return []
    }
    t.exports = i
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      this.fn = t, this.len = e, this.next = void 0, this.val = n
    }

    function o() {}

    function i(t) {
      this.head = t.head, this.tail = t.tail, this.len = t.len, this.next = t.states
    }

    function a() {
      this.len = 0, this.head = new r(o, 0, 0), this.tail = this.head, this.states = null
    }

    function s(t, e, n) {
      e[n] = 255 & t
    }

    function u(t, e, n) {
      for (; t > 127;) e[n++] = 127 & t | 128, t >>>= 7;
      e[n] = t
    }

    function c(t, e) {
      this.len = t, this.next = void 0, this.val = e
    }

    function l(t, e, n) {
      for (; t.hi;) e[n++] = 127 & t.lo | 128, t.lo = (t.lo >>> 7 | t.hi << 25) >>> 0, t.hi >>>= 7;
      for (; t.lo > 127;) e[n++] = 127 & t.lo | 128, t.lo = t.lo >>> 7;
      e[n++] = t.lo
    }

    function p(t, e, n) {
      e[n] = 255 & t, e[n + 1] = t >>> 8 & 255, e[n + 2] = t >>> 16 & 255, e[n + 3] = t >>> 24
    }
    t.exports = a;
    var h = n(33),
      f, d = h.LongBits,
      m = h.base64,
      y = h.utf8;
    a.create = h.Buffer ? function t() {
      return (a.create = function t() {
        return new f
      })()
    } : function t() {
      return new a
    }, a.alloc = function t(e) {
      return new h.Array(e)
    }, h.Array !== Array && (a.alloc = h.pool(a.alloc, h.Array.prototype.subarray)), a.prototype._push = function t(e, n, o) {
      return this.tail = this.tail.next = new r(e, n, o), this.len += n, this
    }, c.prototype = Object.create(r.prototype), c.prototype.fn = u, a.prototype.uint32 = function t(e) {
      return this.len += (this.tail = this.tail.next = new c((e >>>= 0) < 128 ? 1 : e < 16384 ? 2 : e < 2097152 ? 3 : e < 268435456 ? 4 : 5, e)).len, this
    }, a.prototype.int32 = function t(e) {
      return e < 0 ? this._push(l, 10, d.fromNumber(e)) : this.uint32(e)
    }, a.prototype.sint32 = function t(e) {
      return this.uint32((e << 1 ^ e >> 31) >>> 0)
    }, a.prototype.uint64 = function t(e) {
      var n = d.from(e);
      return this._push(l, n.length(), n)
    }, a.prototype.int64 = a.prototype.uint64, a.prototype.sint64 = function t(e) {
      var n = d.from(e).zzEncode();
      return this._push(l, n.length(), n)
    }, a.prototype.bool = function t(e) {
      return this._push(s, 1, e ? 1 : 0)
    }, a.prototype.fixed32 = function t(e) {
      return this._push(p, 4, e >>> 0)
    }, a.prototype.sfixed32 = a.prototype.fixed32, a.prototype.fixed64 = function t(e) {
      var n = d.from(e);
      return this._push(p, 4, n.lo)._push(p, 4, n.hi)
    }, a.prototype.sfixed64 = a.prototype.fixed64, a.prototype.float = function t(e) {
      return this._push(h.float.writeFloatLE, 4, e)
    }, a.prototype.double = function t(e) {
      return this._push(h.float.writeDoubleLE, 8, e)
    };
    var v = h.Array.prototype.set ? function t(e, n, r) {
      n.set(e, r)
    } : function t(e, n, r) {
      for (var o = 0; o < e.length; ++o) n[r + o] = e[o]
    };
    a.prototype.bytes = function t(e) {
      var n = e.length >>> 0;
      if (!n) return this._push(s, 1, 0);
      if (h.isString(e)) {
        var r = a.alloc(n = m.length(e));
        m.decode(e, r, 0), e = r
      }
      return this.uint32(n)._push(v, n, e)
    }, a.prototype.string = function t(e) {
      var n = y.length(e);
      return n ? this.uint32(n)._push(y.write, n, e) : this._push(s, 1, 0)
    }, a.prototype.fork = function t() {
      return this.states = new i(this), this.head = this.tail = new r(o, 0, 0), this.len = 0, this
    }, a.prototype.reset = function t() {
      return this.states ? (this.head = this.states.head, this.tail = this.states.tail, this.len = this.states.len, this.states = this.states.next) : (this.head = this.tail = new r(o, 0, 0), this.len = 0), this
    }, a.prototype.ldelim = function t() {
      var e = this.head,
        n = this.tail,
        r = this.len;
      return this.reset().uint32(r), r && (this.tail.next = e.next, this.tail = n, this.len += r), this
    }, a.prototype.finish = function t() {
      for (var e = this.head.next, n = this.constructor.alloc(this.len), r = 0; e;) e.fn(e.val, n, r), r += e.len, e = e.next;
      return n
    }, a._configure = function(t) {
      f = t
    }
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      return RangeError("index out of range: " + t.pos + " + " + (e || 1) + " > " + t.len)
    }

    function o(t) {
      this.buf = t, this.pos = 0, this.len = t.length
    }

    function i() {
      var t = new l(0, 0),
        e = 0;
      if (!(this.len - this.pos > 4)) {
        for (; e < 3; ++e) {
          if (this.pos >= this.len) throw r(this);
          if (t.lo = (t.lo | (127 & this.buf[this.pos]) << 7 * e) >>> 0, this.buf[this.pos++] < 128) return t
        }
        return t.lo = (t.lo | (127 & this.buf[this.pos++]) << 7 * e) >>> 0, t
      }
      for (; e < 4; ++e)
        if (t.lo = (t.lo | (127 & this.buf[this.pos]) << 7 * e) >>> 0, this.buf[this.pos++] < 128) return t;
      if (t.lo = (t.lo | (127 & this.buf[this.pos]) << 28) >>> 0, t.hi = (t.hi | (127 & this.buf[this.pos]) >> 4) >>> 0, this.buf[this.pos++] < 128) return t;
      if (e = 0, this.len - this.pos > 4) {
        for (; e < 5; ++e)
          if (t.hi = (t.hi | (127 & this.buf[this.pos]) << 7 * e + 3) >>> 0, this.buf[this.pos++] < 128) return t
      } else
        for (; e < 5; ++e) {
          if (this.pos >= this.len) throw r(this);
          if (t.hi = (t.hi | (127 & this.buf[this.pos]) << 7 * e + 3) >>> 0, this.buf[this.pos++] < 128) return t
        }
      throw Error("invalid varint encoding")
    }

    function a(t, e) {
      return (t[e - 4] | t[e - 3] << 8 | t[e - 2] << 16 | t[e - 1] << 24) >>> 0
    }

    function s() {
      if (this.pos + 8 > this.len) throw r(this, 8);
      return new l(a(this.buf, this.pos += 4), a(this.buf, this.pos += 4))
    }
    t.exports = o;
    var u = n(33),
      c, l = u.LongBits,
      p = u.utf8,
      h = "undefined" != typeof Uint8Array ? function t(e) {
        if (e instanceof Uint8Array || Array.isArray(e)) return new o(e);
        throw Error("illegal buffer")
      } : function t(e) {
        if (Array.isArray(e)) return new o(e);
        throw Error("illegal buffer")
      };
    o.create = u.Buffer ? function t(e) {
      return (o.create = function t(e) {
        return u.Buffer.isBuffer(e) ? new c(e) : h(e)
      })(e)
    } : h, o.prototype._slice = u.Array.prototype.subarray || u.Array.prototype.slice, o.prototype.uint32 = function t() {
      var e = 4294967295;
      return function t() {
        if (e = (127 & this.buf[this.pos]) >>> 0, this.buf[this.pos++] < 128) return e;
        if (e = (e | (127 & this.buf[this.pos]) << 7) >>> 0, this.buf[this.pos++] < 128) return e;
        if (e = (e | (127 & this.buf[this.pos]) << 14) >>> 0, this.buf[this.pos++] < 128) return e;
        if (e = (e | (127 & this.buf[this.pos]) << 21) >>> 0, this.buf[this.pos++] < 128) return e;
        if (e = (e | (15 & this.buf[this.pos]) << 28) >>> 0, this.buf[this.pos++] < 128) return e;
        if ((this.pos += 5) > this.len) throw this.pos = this.len, r(this, 10);
        return e
      }
    }(), o.prototype.int32 = function t() {
      return 0 | this.uint32()
    }, o.prototype.sint32 = function t() {
      var e = this.uint32();
      return e >>> 1 ^ -(1 & e) | 0
    }, o.prototype.bool = function t() {
      return 0 !== this.uint32()
    }, o.prototype.fixed32 = function t() {
      if (this.pos + 4 > this.len) throw r(this, 4);
      return a(this.buf, this.pos += 4)
    }, o.prototype.sfixed32 = function t() {
      if (this.pos + 4 > this.len) throw r(this, 4);
      return 0 | a(this.buf, this.pos += 4)
    }, o.prototype.float = function t() {
      if (this.pos + 4 > this.len) throw r(this, 4);
      var e = u.float.readFloatLE(this.buf, this.pos);
      return this.pos += 4, e
    }, o.prototype.double = function t() {
      if (this.pos + 8 > this.len) throw r(this, 4);
      var e = u.float.readDoubleLE(this.buf, this.pos);
      return this.pos += 8, e
    }, o.prototype.bytes = function t() {
      var e = this.uint32(),
        n = this.pos,
        o = this.pos + e;
      if (o > this.len) throw r(this, e);
      return this.pos += e, Array.isArray(this.buf) ? this.buf.slice(n, o) : n === o ? new this.buf.constructor(0) : this._slice.call(this.buf, n, o)
    }, o.prototype.string = function t() {
      var e = this.bytes();
      return p.read(e, 0, e.length)
    }, o.prototype.skip = function t(e) {
      if ("number" == typeof e) {
        if (this.pos + e > this.len) throw r(this, e);
        this.pos += e
      } else
        do {
          if (this.pos >= this.len) throw r(this)
        } while (128 & this.buf[this.pos++]);
      return this
    }, o.prototype.skipType = function(t) {
      switch (t) {
        case 0:
          this.skip();
          break;
        case 1:
          this.skip(8);
          break;
        case 2:
          this.skip(this.uint32());
          break;
        case 3:
          for (;;) {
            if (4 == (t = 7 & this.uint32())) break;
            this.skipType(t)
          }
          break;
        case 5:
          this.skip(4);
          break;
        default:
          throw Error("invalid wire type " + t + " at offset " + this.pos)
      }
      return this
    }, o._configure = function(t) {
      c = t;
      var e = u.Long ? "toLong" : "toNumber";
      u.merge(o.prototype, {
        int64: function t() {
          return i.call(this)[e](!1)
        },
        uint64: function t() {
          return i.call(this)[e](!0)
        },
        sint64: function t() {
          return i.call(this).zzDecode()[e](!1)
        },
        fixed64: function t() {
          return s.call(this)[e](!0)
        },
        sfixed64: function t() {
          return s.call(this)[e](!1)
        }
      })
    }
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function o(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function i(t, e, n) {
      return e && o(t.prototype, e), n && o(t, n), t
    }

    function a(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function s(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function u(t, e, n) {
      return e && s(t.prototype, e), n && s(t, n), t
    }

    function c(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function l(t, e) {
      if (t.length && e.length && t.length !== e.reduce(function(t, e) {
        return t * e
      }, 1)) throw new Error("[Tensor] specified shape incompatible with data.")
    }

    function p(t, e, n) {
      for (var r = new t(e.data.length), o = Wp()(new t(n[0] * n[1]), [n[0], n[1]]), i = 0, a = 0; a < n[2]; a++) Yp.a.assign(o, e.pick(null, null, a)), r.set(o.data, i), i += n[0] * n[1];
      return r
    }

    function h(t) {
      var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
        n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : -1,
        r = t.reduce(function(t, e) {
          return t * e
        }, 1),
        o = Wp()(new Int32Array(r), t);
      if (e) {
        for (var i = Math.ceil(Math.sqrt(r)), a = Wp()(new Int32Array(Math.pow(i, 2)), [i, i]), s = Wp()(new Int32Array(Math.pow(i, 2)), [i, i]), u = Wp()(new Int32Array(Math.pow(i, 2)), [i, i]), l = 0; l < i; l++) Yp.a.assigns(a.pick(l, null), l);
        for (var p = 0; p < i; p++) Yp.a.assigns(s.pick(null, p), p);
        Yp.a.muls(u, a, i), Yp.a.addeq(u, s), o.data.set(u.data.subarray(0, o.size))
      } else {
        n < 0 && (n = t.length + n);
        for (var h = t[n], f = Wp()(new Int32Array(r), t), d = Wp()(new Int32Array(r), t), m = c(t.slice(0, n)).concat(c(t.slice(n + 1))), y = m.reduce(function(t, e) {
          return t * e
        }, 1), v = Wp()(new Int32Array(Vp()(y)), m), g = Array(t.length).fill(null), _ = 0; _ < h; _++) g[n] = _, Yp.a.assign(f.pick.apply(f, c(g)), v), Yp.a.assigns(d.pick.apply(d, c(g)), _);
        Yp.a.muls(o, f, h), Yp.a.addeq(o, d)
      }
      return o
    }

    function f(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function d(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function m(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function y(t, e, n) {
      return e && m(t.prototype, e), n && m(t, n), t
    }

    function v(t) {
      return (v = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function g(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function _(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function b(t, e, n) {
      return e && _(t.prototype, e), n && _(t, n), t
    }

    function x(t, e) {
      if (e && ("object" === v(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function w(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function S(t) {
      if (1 === t.tensor.shape.length) {
        var e = Yp.a.sup(t.tensor);
        Yp.a.subseq(t.tensor, e), Yp.a.expeq(t.tensor);
        var n = Yp.a.sum(t.tensor);
        Yp.a.divseq(t.tensor, n)
      } else {
        if (2 !== t.tensor.shape.length) throw new Error("[activations.softmax] tensor shape ".concat(t.tensor.shape, " not supported."));
        for (var r = 0; r < t.tensor.shape[0]; r++) {
          var o = Yp.a.sup(t.tensor.pick(r, null));
          Yp.a.subseq(t.tensor.pick(r, null), o), Yp.a.expeq(t.tensor.pick(r, null));
          var i = Yp.a.sum(t.tensor.pick(r, null));
          Yp.a.divseq(t.tensor.pick(r, null), i)
        }
      }
    }

    function T(t) {
      var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
        n = e.alpha,
        r = void 0 === n ? 1 : n;
      eh(t.tensor, r)
    }

    function P(t) {
      nh(t.tensor)
    }

    function C(t) {
      rh(t.tensor)
    }

    function k(t) {
      oh(t.tensor)
    }

    function O(t) {
      var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
        n = e.alpha,
        r = void 0 === n ? 0 : n,
        o = e.maxValue,
        i = void 0 === o ? null : o,
        a;
      0 !== r && (a = new Jp([], t.tensor.shape), Yp.a.mins(a.tensor, t.tensor, 0), Yp.a.mulseq(a.tensor, r)), Yp.a.maxseq(t.tensor, 0), i && Yp.a.minseq(t.tensor, i), a && Yp.a.addeq(t.tensor, a.tensor)
    }

    function E(t) {
      ih(t.tensor)
    }

    function j(t) {
      ah(t.tensor)
    }

    function A(t) {
      sh(t.tensor)
    }

    function F(t) {
      return t
    }

    function M(t) {
      return (M = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function R(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function D(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function I(t, e, n) {
      return e && D(t.prototype, e), n && D(t, n), t
    }

    function L(t, e) {
      if (e && ("object" === M(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function z(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function U(t) {
      return (U = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function G(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function N(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function B(t, e, n) {
      return e && N(t.prototype, e), n && N(t, n), t
    }

    function q(t, e) {
      if (e && ("object" === U(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function V(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function H(t) {
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function W(t) {
      return (W = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function X(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Y(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function $(t, e, n) {
      return e && Y(t.prototype, e), n && Y(t, n), t
    }

    function K(t, e) {
      if (e && ("object" === W(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function J(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Q(t) {
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Z(t) {
      return (Z = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function tt(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function et(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function nt(t, e, n) {
      return e && et(t.prototype, e), n && et(t, n), t
    }

    function rt(t, e) {
      if (e && ("object" === Z(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function ot(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function it(t) {
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function at(t, e) {
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[".concat(t, "];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(").concat(e[0], ") * outTex.y);\n  int out_x = int(float(").concat(e[1], ") * outTex.x);\n  \n  outColor = vec4(").concat(Vp()(t).map(function(t) {
        return "texelFetch(inputs[".concat(t, "], ivec2(out_x, out_y), 0).r")
      }).join(" + "), ");\n}\n")
    }

    function st(t, e) {
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[".concat(t, "];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(").concat(e[0], ") * outTex.y);\n  int out_x = int(float(").concat(e[1], ") * outTex.x);\n  \n  outColor = vec4((").concat(Vp()(t).map(function(t) {
        return "texelFetch(inputs[".concat(t, "], ivec2(out_x, out_y), 0).r")
      }).join(" + "), ") / float(").concat(t, "));\n}\n")
    }

    function ut(t, e, n, r) {
      var o = e.map(function(t) {
          return t[r]
        }),
        i = Vp()(t + 1).map(function(t) {
          return xh()(_h()(o, t))
        }),
        a = 0 === r ? "out_y" : "out_x",
        s = "\n  int n = 0;\n  int offset = 0;\n  if (".concat(a, " >= ").concat(i[1], " && ").concat(a, " < ").concat(i[2], ") {\n    n = 1;\n    offset = ").concat(i[1], ";\n  }");
      t > 2 && (s += "".concat(Vp()(2, t).map(function(t) {
        return " else if (".concat(a, " >= ").concat(i[t], " && ").concat(a, " < ").concat(i[t + 1], ") {\n    n = ").concat(t, ";\n    offset = ").concat(i[t], ";\n  }")
      }).join(""), "\n"));
      var u = "outColor = vec4(0.0);";
      if (0 === r || 1 === r) {
        var c = function t(e) {
            return "out_x".concat(1 === r ? " - ".concat(i[e]) : "")
          },
          l = function t(e) {
            return "out_y".concat(0 === r ? " - ".concat(i[e]) : "")
          };
        u = "\n  if (n == 0) {\n    outColor = vec4(texelFetch(inputs[0], ivec2(out_x, out_y), 0).r);\n  }".concat(Vp()(1, t).map(function(t) {
          return " else if (n == ".concat(t, ") {\n    outColor = vec4(texelFetch(inputs[").concat(t, "], ivec2(").concat(c(t), ", ").concat(l(t), "), 0).r);\n  }")
        }).join(""), "\n")
      }
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[".concat(t, "];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(").concat(n[0], ") * outTex.y);\n  int out_x = int(float(").concat(n[1], ") * outTex.x);\n").concat(s, "\n").concat(u, "\n}\n")
    }

    function ct(t, e) {
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[".concat(t, "];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(").concat(e[0], ") * outTex.y);\n  int out_x = int(float(").concat(e[1], ") * outTex.x);\n\n  float val = texelFetch(inputs[0], ivec2(out_x, out_y), 0).r;\n  for (int i = 1; i < ").concat(t, "; i++) {\n    val = max(val, texelFetch(inputs[i], ivec2(out_x, out_y), 0).r);\n  }\n\n  outColor = vec4(val);\n}\n")
    }

    function lt(t, e) {
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[".concat(t, "];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(").concat(e[0], ") * outTex.y);\n  int out_x = int(float(").concat(e[1], ") * outTex.x);\n\n  float val = texelFetch(inputs[0], ivec2(out_x, out_y), 0).r;\n  for (int i = 1; i < ").concat(t, "; i++) {\n    val = min(val, texelFetch(inputs[i], ivec2(out_x, out_y), 0).r);\n  }\n\n  outColor = vec4(val);\n}\n")
    }

    function pt(t, e) {
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[".concat(t, "];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(").concat(e[0], ") * outTex.y);\n  int out_x = int(float(").concat(e[1], ") * outTex.x);\n\n  outColor = vec4(").concat(Vp()(t).map(function(t) {
        return "texelFetch(inputs[".concat(t, "], ivec2(out_x, out_y), 0).r")
      }).join(" * "), ");\n}\n")
    }

    function ht(t, e) {
      return "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D inputs[2];\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(".concat(e[0], ") * outTex.y);\n  int out_x = int(float(").concat(e[1], ") * outTex.x);\n  \n  outColor = vec4(texelFetch(inputs[0], ivec2(out_x, out_y), 0).r - texelFetch(inputs[1], ivec2(out_x, out_y), 0).r);\n}\n")
    }

    function ft(t, e, n, r, o) {
      var i = r ? "sum += texelFetch(bias, ivec2(out_x, 0), 0).r;" : "",
        a = o ? "int fragmentIndex = int(floor(float(rowIndex) / float(".concat(e[0], ")));\n      rowIndex = int(mod(float(rowIndex), float(").concat(e[0], ")));\n      colIndex += fragmentIndex * ").concat(e[1], ";") : "";
      return "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform sampler2D kernel;\nuniform sampler2D bias;\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(".concat(t[0], ") * outTex.y);\n  int out_x = int(float(").concat(t[1], ") * outTex.x);\n\n  float sum = 0.;\n  for (int i = 0; i < ").concat(n[1], "; ++i) {\n    int index = texelFetch(indexMap, ivec2(i, out_y), 0).r;    \n    if (index != -1) {\n      int rowIndex = int(floor(float(index) / float(").concat(e[1], ")));\n      int colIndex = int(mod(float(index), float(").concat(e[1], ")));\n      ").concat(a, "\n      sum += texelFetch(x, ivec2(colIndex, rowIndex), 0).r * texelFetch(kernel, ivec2(out_x, i), 0).r;\n    }\n  }\n\n  ").concat(i, "\n  outColor = vec4(sum);\n}   \n")
    }

    function dt(t, e, n, r, o) {
      var i = r ? "sum += texelFetch(bias, ivec2(out_x, 0), 0).r;" : "",
        a = o ? "int fragmentIndex = int(floor(float(rowIndex) / float(".concat(e[0], ")));\n      rowIndex = int(mod(float(rowIndex), float(").concat(e[0], ")));\n      colIndex += fragmentIndex * ").concat(e[1], ";") : "";
      return "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D matMulResult;\nuniform isampler2D indexMap;\nuniform sampler2D bias;\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(".concat(t[0], ") * outTex.y);\n  int out_x = int(float(").concat(t[1], ") * outTex.x);\n\n  float sum = 0.;\n  for (int n = 0; n < ").concat(n[1], "; ++n) {\n    int index = texelFetch(indexMap, ivec2(n, out_y), 0).r;\n    if (index != -1) {\n      int rowIndex = int(floor(float(index) / float(").concat(e[1], ")));\n      int colIndex = int(mod(float(index), float(").concat(e[1], ")));\n      ").concat(a, "\n      sum += texelFetch(matMulResult, ivec2(colIndex + out_x, rowIndex), 0).r;\n    }\n  }\n\n  ").concat(i, "\n  outColor = vec4(sum);\n}  \n")
    }

    function mt(t, e, n) {
      var r;
      return r = n ? "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D featureMaps;\nuniform sampler2D weights;\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(".concat(t[0], ") * outTex.y);\n  int out_x = int(float(").concat(t[1], ") * outTex.x);\n\n  int featureMapsRow = out_x + ").concat(t[0], " * out_y;\n\n  float sum = 0.;\n  for (int k = 0; k < ").concat(e, "; ++k) {\n    float f = texelFetch(featureMaps, ivec2(k, featureMapsRow), 0).r;\n    float w = texelFetch(weights, ivec2(k, 0), 0).r;\n    sum += f * w;\n  }\n\n  outColor = vec4(max(sum, 0.0));\n}  \n") : "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D featureMaps;\nuniform sampler2D weights;\nout vec4 outColor;\n\nvoid main() {\n  int out_y = int(float(".concat(t[0], ") * outTex.y);\n  int out_x = int(float(").concat(t[1], ") * outTex.x);\n\n  float sum = 0.;\n  for (int k = 0; k < ").concat(e, "; ++k) {\n    float f = texelFetch(featureMaps, ivec2(k, out_y), 0).r;\n    float w = texelFetch(weights, ivec2(out_x, k), 0).r;\n    sum += f * w;\n  }\n\n  outColor = vec4(max(sum, 0.0));\n}  \n")
    }

    function yt(t) {
      for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r];
      switch (t) {
        case "add":
          return at.apply(void 0, n);
        case "average":
          return st.apply(void 0, n);
        case "concatenate":
          return ut.apply(void 0, n);
        case "maximum":
          return ct.apply(void 0, n);
        case "minimum":
          return lt.apply(void 0, n);
        case "multiply":
          return pt.apply(void 0, n);
        case "subtract":
          return ht.apply(void 0, n);
        case "conv2d":
          return ft.apply(void 0, n);
        case "conv2dTranspose":
          return dt.apply(void 0, n);
        case "cam":
          return mt.apply(void 0, n);
        default:
          throw new Error("GLSL program not found")
      }
    }

    function vt(t) {
      return (vt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function gt(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function _t(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return gt(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function bt(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function xt(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function wt(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function St(t, e, n) {
      return e && wt(t.prototype, e), n && wt(t, n), t
    }

    function Tt(t, e) {
      if (e && ("object" === vt(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Pt(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : Pt(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Ct(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function kt(t) {
      return (kt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ot(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Et(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function jt(t, e, n) {
      return e && Et(t.prototype, e), n && Et(t, n), t
    }

    function At(t, e) {
      if (e && ("object" === kt(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Ft(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Mt(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function Rt(t) {
      return (Rt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Dt(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function It(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return Dt(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function Lt(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function zt(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Ut(t, e, n) {
      return e && zt(t.prototype, e), n && zt(t, n), t
    }

    function Gt(t, e) {
      if (e && ("object" === Rt(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Nt(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : Nt(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Bt(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function qt(t) {
      return (qt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Vt(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function Ht(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return Vt(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function Wt(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function Xt(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Yt(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function $t(t, e, n) {
      return e && Yt(t.prototype, e), n && Yt(t, n), t
    }

    function Kt(t, e) {
      if (e && ("object" === qt(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Jt(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : Jt(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Qt(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Zt(t) {
      return (Zt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function te(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function ee(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return te(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function ne(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function re(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function oe(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ie(t, e, n) {
      return e && oe(t.prototype, e), n && oe(t, n), t
    }

    function ae(t, e) {
      if (e && ("object" === Zt(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function se(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : se(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function ue(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ce(t) {
      return (ce = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function le(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function pe(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function he(t, e, n) {
      return e && pe(t.prototype, e), n && pe(t, n), t
    }

    function fe(t, e) {
      if (e && ("object" === ce(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function de(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function me(t) {
      return (me = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ye(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ve(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ge(t, e, n) {
      return e && ve(t.prototype, e), n && ve(t, n), t
    }

    function _e(t, e) {
      if (e && ("object" === me(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function be(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function xe(t) {
      return (xe = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function we(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Se(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Te(t, e, n) {
      return e && Se(t.prototype, e), n && Se(t, n), t
    }

    function Pe(t, e) {
      if (e && ("object" === xe(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Ce(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ke(t) {
      return (ke = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Oe(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ee(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function je(t, e, n) {
      return e && Ee(t.prototype, e), n && Ee(t, n), t
    }

    function Ae(t, e) {
      if (e && ("object" === ke(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Fe(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Me(t) {
      return (Me = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Re(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function De(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Ie(t, e, n) {
      return e && De(t.prototype, e), n && De(t, n), t
    }

    function Le(t, e) {
      if (e && ("object" === Me(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function ze(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ue(t) {
      return (Ue = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ge(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ne(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Be(t, e, n) {
      return e && Ne(t.prototype, e), n && Ne(t, n), t
    }

    function qe(t, e) {
      if (e && ("object" === Ue(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Ve(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function He(t) {
      return (He = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function We(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Xe(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Ye(t, e, n) {
      return e && Xe(t.prototype, e), n && Xe(t, n), t
    }

    function $e(t, e) {
      if (e && ("object" === He(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Ke(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Je(t) {
      return (Je = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Qe(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ze(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function tn(t, e, n) {
      return e && Ze(t.prototype, e), n && Ze(t, n), t
    }

    function en(t, e) {
      if (e && ("object" === Je(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function nn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function rn(t) {
      return (rn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function on(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function an(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function sn(t, e, n) {
      return e && an(t.prototype, e), n && an(t, n), t
    }

    function un(t, e) {
      if (e && ("object" === rn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function cn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ln(t) {
      return (ln = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function pn(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function hn(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function fn(t, e, n) {
      return e && hn(t.prototype, e), n && hn(t, n), t
    }

    function dn(t, e) {
      if (e && ("object" === ln(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function mn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function yn(t) {
      return (yn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function vn(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function gn(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function _n(t, e, n) {
      return e && gn(t.prototype, e), n && gn(t, n), t
    }

    function bn(t, e) {
      if (e && ("object" === yn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function xn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function wn(t) {
      return (wn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Sn(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Tn(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Pn(t, e, n) {
      return e && Tn(t.prototype, e), n && Tn(t, n), t
    }

    function Cn(t, e) {
      if (e && ("object" === wn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function kn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function On(t) {
      return (On = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function En(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function jn(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function An(t, e, n) {
      return e && jn(t.prototype, e), n && jn(t, n), t
    }

    function Fn(t, e) {
      if (e && ("object" === On(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Mn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Rn(t) {
      return (Rn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Dn(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function In(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Ln(t, e, n) {
      return e && In(t.prototype, e), n && In(t, n), t
    }

    function zn(t, e) {
      if (e && ("object" === Rn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Un(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Gn(t) {
      return (Gn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Nn(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Bn(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function qn(t, e, n) {
      return e && Bn(t.prototype, e), n && Bn(t, n), t
    }

    function Vn(t, e) {
      if (e && ("object" === Gn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Hn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Wn(t) {
      return (Wn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Xn(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Yn(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function $n(t, e, n) {
      return e && Yn(t.prototype, e), n && Yn(t, n), t
    }

    function Kn(t, e) {
      if (e && ("object" === Wn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Jn(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Qn(t) {
      return (Qn = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Zn(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function tr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function er(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function nr(t, e, n) {
      return e && er(t.prototype, e), n && er(t, n), t
    }

    function rr(t, e) {
      if (e && ("object" === Qn(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function or(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ir(t) {
      return (ir = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ar(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function sr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ur(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function cr(t, e, n) {
      return e && ur(t.prototype, e), n && ur(t, n), t
    }

    function lr(t, e) {
      if (e && ("object" === ir(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function pr(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function hr(t) {
      return (hr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function fr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function dr(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function mr(t, e, n) {
      return e && dr(t.prototype, e), n && dr(t, n), t
    }

    function yr(t, e) {
      if (e && ("object" === hr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function vr(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function gr(t) {
      return (gr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function _r(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function br(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function xr(t, e, n) {
      return e && br(t.prototype, e), n && br(t, n), t
    }

    function wr(t, e) {
      if (e && ("object" === gr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Sr(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Tr(t) {
      return (Tr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Pr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Cr(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function kr(t, e, n) {
      return e && Cr(t.prototype, e), n && Cr(t, n), t
    }

    function Or(t, e) {
      if (e && ("object" === Tr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Er(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function jr(t) {
      return (jr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ar(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Fr(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Mr(t, e, n) {
      return e && Fr(t.prototype, e), n && Fr(t, n), t
    }

    function Rr(t, e) {
      if (e && ("object" === jr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Dr(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : Dr(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Ir(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Lr(t) {
      return (Lr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function zr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ur(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Gr(t, e, n) {
      return e && Ur(t.prototype, e), n && Ur(t, n), t
    }

    function Nr(t, e) {
      if (e && ("object" === Lr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Br(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : Br(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function qr(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Vr(t) {
      return (Vr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Hr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Wr(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Xr(t, e, n) {
      return e && Wr(t.prototype, e), n && Wr(t, n), t
    }

    function Yr(t, e) {
      if (e && ("object" === Vr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function $r(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : $r(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Kr(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Jr(t) {
      return (Jr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Qr(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Zr(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function to(t, e, n) {
      return e && Zr(t.prototype, e), n && Zr(t, n), t
    }

    function eo(t, e) {
      if (e && ("object" === Jr(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function no(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : no(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function ro(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function oo(t) {
      return (oo = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function io(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ao(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function so(t, e, n) {
      return e && ao(t.prototype, e), n && ao(t, n), t
    }

    function uo(t, e) {
      if (e && ("object" === oo(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function co(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : co(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function lo(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function po(t) {
      return (po = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ho(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function fo(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function mo(t, e, n) {
      return e && fo(t.prototype, e), n && fo(t, n), t
    }

    function yo(t, e) {
      if (e && ("object" === po(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function vo(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : vo(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function go(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function _o(t) {
      return (_o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function bo(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function xo(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function wo(t, e, n) {
      return e && xo(t.prototype, e), n && xo(t, n), t
    }

    function So(t, e) {
      if (e && ("object" === _o(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function To(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Po(t) {
      return (Po = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Co(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ko(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Oo(t, e, n) {
      return e && ko(t.prototype, e), n && ko(t, n), t
    }

    function Eo(t, e) {
      if (e && ("object" === Po(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function jo(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ao(t) {
      return (Ao = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Fo(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Mo(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Ro(t, e, n) {
      return e && Mo(t.prototype, e), n && Mo(t, n), t
    }

    function Do(t, e) {
      if (e && ("object" === Ao(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Io(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Lo(t) {
      return (Lo = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function zo(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Uo(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Go(t, e, n) {
      return e && Uo(t.prototype, e), n && Uo(t, n), t
    }

    function No(t, e) {
      if (e && ("object" === Lo(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Bo(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function qo(t) {
      return (qo = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Vo(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function Ho(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Wo(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Xo(t, e, n) {
      return e && Wo(t.prototype, e), n && Wo(t, n), t
    }

    function Yo(t, e) {
      if (e && ("object" === qo(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function $o(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ko(t) {
      return (Ko = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Jo(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Qo(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Zo(t, e, n) {
      return e && Qo(t.prototype, e), n && Qo(t, n), t
    }

    function ti(t, e) {
      if (e && ("object" === Ko(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function ei(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ni(t) {
      return (ni = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ri(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function oi(t, e) {
      if (e && ("object" === ni(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function ii(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ai(t) {
      return (ai = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function si(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function ui(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return si(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function ci(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function li(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function pi(t, e, n) {
      return e && li(t.prototype, e), n && li(t, n), t
    }

    function hi(t, e) {
      if (e && ("object" === ai(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function fi(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function di(t) {
      return (di = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function mi(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function yi(t, e) {
      if (e && ("object" === di(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function vi(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function gi(t) {
      return (gi = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function _i(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function bi(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return _i(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function xi(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function wi(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Si(t, e, n) {
      return e && wi(t.prototype, e), n && wi(t, n), t
    }

    function Ti(t, e) {
      if (e && ("object" === gi(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Pi(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ci(t) {
      return (Ci = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ki(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Oi(t, e) {
      if (e && ("object" === Ci(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Ei(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ji(t) {
      return (ji = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ai(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Fi(t, e) {
      if (e && ("object" === ji(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Mi(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ri(t) {
      return (Ri = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Di(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ii(t, e) {
      if (e && ("object" === Ri(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Li(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function zi(t) {
      return (zi = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ui(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Gi(t, e) {
      if (e && ("object" === zi(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Ni(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Bi(t) {
      return (Bi = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function qi(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function Vi(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return qi(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function Hi(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Wi(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Xi(t, e, n) {
      return e && Wi(t.prototype, e), n && Wi(t, n), t
    }

    function Yi(t, e) {
      if (e && ("object" === Bi(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function $i(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ki(t) {
      return (Ki = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ji(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Qi(t, e) {
      if (e && ("object" === Ki(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Zi(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ta(t) {
      return (ta = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ea(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function na(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return ea(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function ra(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function oa(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ia(t, e, n) {
      return e && oa(t.prototype, e), n && oa(t, n), t
    }

    function aa(t, e) {
      if (e && ("object" === ta(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function sa(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ua(t) {
      return (ua = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ca(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function la(t, e) {
      if (e && ("object" === ua(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function pa(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ha(t) {
      return (ha = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function fa(t, e) {
      var n = [],
        r = !0,
        o = !1,
        i = void 0;
      try {
        for (var a = t[Symbol.iterator](), s; !(r = (s = a.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
      } catch (t) {
        o = !0, i = t
      } finally {
        try {
          r || null == a.return || a.return()
        } finally {
          if (o) throw i
        }
      }
      return n
    }

    function da(t, e) {
      if (Array.isArray(t)) return t;
      if (Symbol.iterator in Object(t)) return fa(t, e);
      throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }

    function ma(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ya(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function va(t, e, n) {
      return e && ya(t.prototype, e), n && ya(t, n), t
    }

    function ga(t, e) {
      if (e && ("object" === ha(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function _a(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function ba(t) {
      return (ba = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function xa(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function wa(t, e) {
      if (e && ("object" === ba(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Sa(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ta(t) {
      return (Ta = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Pa(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ca(t, e) {
      if (e && ("object" === Ta(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function ka(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Oa(t) {
      return (Oa = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ea(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ja(t, e) {
      if (e && ("object" === Oa(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Aa(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Fa(t) {
      return (Fa = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ma(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Ra(t, e) {
      if (e && ("object" === Fa(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Da(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ia(t) {
      return (Ia = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function La(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function za(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Ua(t, e, n) {
      return e && za(t.prototype, e), n && za(t, n), t
    }

    function Ga(t, e) {
      if (e && ("object" === Ia(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Na(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : Na(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Ba(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function qa(t) {
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Va(t) {
      return (Va = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ha(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Wa(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function Xa(t, e, n) {
      return e && Wa(t.prototype, e), n && Wa(t, n), t
    }

    function Ya(t, e) {
      if (e && ("object" === Va(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function $a(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : $a(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function Ka(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function Ja(t) {
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function Qa(t) {
      return (Qa = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Za(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ts(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function es(t, e, n) {
      return e && ts(t.prototype, e), n && ts(t, n), t
    }

    function ns(t, e) {
      if (e && ("object" === Qa(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function rs(t, e, n) {
      null === t && (t = Function.prototype);
      var r = Object.getOwnPropertyDescriptor(t, e);
      if (void 0 === r) {
        var o = Object.getPrototypeOf(t);
        return null === o ? void 0 : rs(o, e, n)
      }
      if ("value" in r) return r.value;
      var i = r.get;
      if (void 0 !== i) return i.call(n)
    }

    function os(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function is(t) {
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function as(t) {
      return (as = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ss(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function us(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function cs(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ls(t, e, n) {
      return e && cs(t.prototype, e), n && cs(t, n), t
    }

    function ps(t, e) {
      if (e && ("object" === as(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function hs(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function fs(t) {
      return (fs = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function ds(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function ms(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ys(t, e, n) {
      return e && ms(t.prototype, e), n && ms(t, n), t
    }

    function vs(t, e) {
      if (e && ("object" === fs(e) || "function" == typeof e)) return e;
      if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return t
    }

    function gs(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }

    function _s(t) {
      if (Array.isArray(t)) {
        for (var e = 0, n = new Array(t.length); e < t.length; e++) n[e] = t[e];
        return n
      }
      return Array.from(t)
    }

    function bs(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function xs(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ws(t, e, n) {
      return e && xs(t.prototype, e), n && xs(t, n), t
    }

    function Ss(t) {
      return (Ss = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function t(e) {
        return typeof e
      } : function t(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      })(t)
    }

    function Ts(t) {
      return function() {
        var e = this,
          n = arguments;
        return new Promise(function(r, o) {
          function i(t, e) {
            try {
              var n = u[t](e),
                i = n.value
            } catch (t) {
              return void o(t)
            }
            n.done ? r(i) : Promise.resolve(i).then(a, s)
          }

          function a(t) {
            i("next", t)
          }

          function s(t) {
            i("throw", t)
          }
          var u = t.apply(e, n);
          a()
        })
      }
    }

    function Ps(t, e) {
      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function Cs(t, e) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n];
        r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
      }
    }

    function ks(t, e, n) {
      return e && Cs(t.prototype, e), n && Cs(t, n), t
    }

    function Os(t, e) {
      var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1e-4,
        r = Sm()(Pm()(t)),
        o = e;
      if (r.length !== o.length) return !1;
      for (var i = 0; i < r.length; i++) {
        if (!xm()(r[i])) return !1;
        if (r[i] < o[i] - n || r[i] > o[i] + n) return !1
      }
      return !0
    }
    Object.defineProperty(e, "__esModule", {
      value: !0
    });
    var Es = {};
    n.d(Es, "softmax", function() {
      return S
    }), n.d(Es, "elu", function() {
      return T
    }), n.d(Es, "selu", function() {
      return P
    }), n.d(Es, "softplus", function() {
      return C
    }), n.d(Es, "softsign", function() {
      return k
    }), n.d(Es, "relu", function() {
      return O
    }), n.d(Es, "tanh", function() {
      return E
    }), n.d(Es, "sigmoid", function() {
      return j
    }), n.d(Es, "hard_sigmoid", function() {
      return A
    }), n.d(Es, "linear", function() {
      return F
    });
    var js = {};
    n.d(js, "softmax", function() {
      return Th
    }), n.d(js, "elu", function() {
      return Ph
    }), n.d(js, "selu", function() {
      return Ch
    }), n.d(js, "softplus", function() {
      return kh
    }), n.d(js, "softsign", function() {
      return Oh
    }), n.d(js, "relu", function() {
      return Eh
    }), n.d(js, "tanh", function() {
      return jh
    }), n.d(js, "sigmoid", function() {
      return Ah
    }), n.d(js, "hard_sigmoid", function() {
      return Fh
    }), n.d(js, "linear", function() {
      return Mh
    });
    var As = {};
    n.d(As, "SimpleRNN", function() {
      return Rd
    }), n.d(As, "LSTM", function() {
      return Bd
    }), n.d(As, "GRU", function() {
      return Kd
    });
    var Fs = {};
    n.d(Fs, "InputLayer", function() {
      return Qp
    }), n.d(Fs, "LeakyReLU", function() {
      return ch
    }), n.d(Fs, "PReLU", function() {
      return ph
    }), n.d(Fs, "ELU", function() {
      return fh
    }), n.d(Fs, "ThresholdedReLU", function() {
      return yh
    }), n.d(Fs, "Conv1D", function() {
      return Gh
    }), n.d(Fs, "Conv2D", function() {
      return Lh
    }), n.d(Fs, "SeparableConv2D", function() {
      return Bh
    }), n.d(Fs, "Conv2DTranspose", function() {
      return Wh
    }), n.d(Fs, "Conv3D", function() {
      return Kh
    }), n.d(Fs, "Cropping1D", function() {
      return Qh
    }), n.d(Fs, "Cropping2D", function() {
      return tf
    }), n.d(Fs, "Cropping3D", function() {
      return nf
    }), n.d(Fs, "UpSampling1D", function() {
      return of
    }), n.d(Fs, "UpSampling2D", function() {
      return sf
    }), n.d(Fs, "UpSampling3D", function() {
      return cf
    }), n.d(Fs, "ZeroPadding1D", function() {
      return pf
    }), n.d(Fs, "ZeroPadding2D", function() {
      return ff
    }), n.d(Fs, "ZeroPadding3D", function() {
      return mf
    }), n.d(Fs, "Dense", function() {
      return _f
    }), n.d(Fs, "Activation", function() {
      return bf
    }), n.d(Fs, "Dropout", function() {
      return xf
    }), n.d(Fs, "SpatialDropout1D", function() {
      return wf
    }), n.d(Fs, "SpatialDropout2D", function() {
      return Sf
    }), n.d(Fs, "SpatialDropout3D", function() {
      return Tf
    }), n.d(Fs, "Flatten", function() {
      return kf
    }), n.d(Fs, "Reshape", function() {
      return Af
    }), n.d(Fs, "Permute", function() {
      return Mf
    }), n.d(Fs, "RepeatVector", function() {
      return Lf
    }), n.d(Fs, "Embedding", function() {
      return Uf
    }), n.d(Fs, "Add", function() {
      return Nf
    }), n.d(Fs, "Subtract", function() {
      return Bf
    }), n.d(Fs, "Multiply", function() {
      return qf
    }), n.d(Fs, "Average", function() {
      return Vf
    }), n.d(Fs, "Maximum", function() {
      return Hf
    }), n.d(Fs, "Minimum", function() {
      return Wf
    }), n.d(Fs, "Concatenate", function() {
      return $f
    }), n.d(Fs, "Dot", function() {
      return Jf
    }), n.d(Fs, "GaussianDropout", function() {
      return Qf
    }), n.d(Fs, "GaussianNoise", function() {
      return Zf
    }), n.d(Fs, "BatchNormalization", function() {
      return ed
    }), n.d(Fs, "MaxPooling1D", function() {
      return id
    }), n.d(Fs, "MaxPooling2D", function() {
      return cd
    }), n.d(Fs, "MaxPooling3D", function() {
      return fd
    }), n.d(Fs, "AveragePooling1D", function() {
      return dd
    }), n.d(Fs, "AveragePooling2D", function() {
      return md
    }), n.d(Fs, "AveragePooling3D", function() {
      return yd
    }), n.d(Fs, "GlobalMaxPooling1D", function() {
      return _d
    }), n.d(Fs, "GlobalMaxPooling2D", function() {
      return wd
    }), n.d(Fs, "GlobalMaxPooling3D", function() {
      return Pd
    }), n.d(Fs, "GlobalAveragePooling1D", function() {
      return Cd
    }), n.d(Fs, "GlobalAveragePooling2D", function() {
      return kd
    }), n.d(Fs, "GlobalAveragePooling3D", function() {
      return Od
    }), n.d(Fs, "SimpleRNN", function() {
      return Rd
    }), n.d(Fs, "LSTM", function() {
      return Bd
    }), n.d(Fs, "GRU", function() {
      return Kd
    }), n.d(Fs, "TimeDistributed", function() {
      return nm
    }), n.d(Fs, "Bidirectional", function() {
      return um
    });
    var Ms = {};
    n.d(Ms, "CAM", function() {
      return cm
    });
    var Rs = {};
    n.d(Rs, "approxEquals", function() {
      return Os
    });
    var Ds = n(170),
      Is = n.n(Ds),
      Ls = n(172),
      zs = n.n(Ls),
      Us = n(173),
      Gs = n.n(Us),
      Ns = n(178),
      Bs = n.n(Ns),
      qs = n(179),
      Vs = n.n(qs),
      Hs = n(180),
      Ws = n.n(Hs),
      Xs = n(181),
      Ys = n.n(Xs),
      $s = n(182),
      Ks = n.n($s),
      Js = n(183),
      Qs = n.n(Js),
      Zs = n(184),
      tu = n.n(Zs),
      eu = n(185),
      nu = n.n(eu),
      ru = n(186),
      ou = n.n(ru),
      iu = n(188),
      au = n.n(iu),
      su = n(189),
      uu = n.n(su),
      cu = n(190),
      lu = n.n(cu),
      pu = n(191),
      hu = n.n(pu),
      fu = n(192),
      du = n.n(fu),
      mu = n(194),
      yu = n.n(mu),
      vu = n(195),
      gu = n.n(vu),
      _u = n(196),
      bu = n.n(_u),
      xu = n(197),
      wu = n.n(xu),
      Su = n(198),
      Tu = n.n(Su),
      Pu = n(199),
      Cu = n.n(Pu),
      ku = n(200),
      Ou = n.n(ku),
      Eu = n(201),
      ju = n.n(Eu),
      Au = n(202),
      Fu = n.n(Au),
      Mu = n(203),
      Ru = n.n(Mu),
      Du = n(204),
      Iu = n.n(Du),
      Lu = n(205),
      zu = n.n(Lu),
      Uu = n(209),
      Gu = n.n(Uu),
      Nu = n(212),
      Bu = n.n(Nu),
      qu = n(213),
      Vu = n.n(qu),
      Hu = n(214),
      Wu = n.n(Hu),
      Xu = n(215),
      Yu = n.n(Xu),
      $u = n(216),
      Ku = n.n($u),
      Ju = n(217),
      Qu = n.n(Ju),
      Zu = n(218),
      tc = n.n(Zu),
      ec = n(219),
      nc = n.n(ec),
      rc = n(220),
      oc = n.n(rc),
      ic = n(221),
      ac = n.n(ic),
      sc = n(222),
      uc = n.n(sc),
      cc = n(223),
      lc = n.n(cc),
      pc = n(225),
      hc = n.n(pc),
      fc = n(226),
      dc = n.n(fc),
      mc = n(227),
      yc = n.n(mc),
      vc = n(228),
      gc = n.n(vc),
      _c = n(229),
      bc = n.n(_c),
      xc = n(231),
      wc = n.n(xc),
      Sc = n(232),
      Tc = n.n(Sc),
      Pc = n(233),
      Cc = n.n(Pc),
      kc = n(234),
      Oc = n.n(kc),
      Ec = n(235),
      jc = n.n(Ec),
      Ac = n(237),
      Fc = n.n(Ac),
      Mc = n(238),
      Rc = n.n(Mc),
      Dc = n(239),
      Ic = n.n(Dc),
      Lc = n(240),
      zc = n.n(Lc),
      Uc = n(241),
      Gc = n.n(Uc),
      Nc = n(242),
      Bc = n.n(Nc),
      qc = n(243),
      Vc = n.n(qc),
      Hc = n(244),
      Wc = n.n(Hc),
      Xc = n(245),
      Yc = n.n(Xc),
      $c = n(246),
      Kc = n.n($c),
      Jc = n(91),
      Qc = n.n(Jc),
      Zc = n(247),
      tl = n.n(Zc),
      el = n(248),
      nl = n.n(el),
      rl = n(249),
      ol = n.n(rl),
      il = n(250),
      al = n.n(il),
      sl = n(251),
      ul = n.n(sl),
      cl = n(252),
      ll = n.n(cl),
      pl = n(253),
      hl = n.n(pl),
      fl = n(254),
      dl = n.n(fl),
      ml = n(256),
      yl = n.n(ml),
      vl = n(258),
      gl = n.n(vl),
      _l = n(259),
      bl = n.n(_l),
      xl = n(260),
      wl = n.n(xl),
      Sl = n(261),
      Tl = n.n(Sl),
      Pl = n(262),
      Cl = n.n(Pl),
      kl = n(263),
      Ol = n.n(kl),
      El = n(264),
      jl = n.n(El),
      Al = n(265),
      Fl = n.n(Al),
      Ml = n(267),
      Rl = n.n(Ml),
      Dl = n(268),
      Il = n.n(Dl),
      Ll = n(269),
      zl = n.n(Ll),
      Ul = n(270),
      Gl = n.n(Ul),
      Nl = n(271),
      Bl = n.n(Nl),
      ql = n(272),
      Vl = n.n(ql),
      Hl = n(273),
      Wl = n.n(Hl),
      Xl = n(274),
      Yl = n.n(Xl),
      $l = n(275),
      Kl = n.n($l),
      Jl = n(276),
      Ql = n.n(Jl),
      Zl = n(277),
      tp = n.n(Zl),
      ep = n(278),
      np = n.n(ep),
      rp = n(279),
      op = n.n(rp),
      ip = n(280),
      ap = n.n(ip),
      sp = n(281),
      up = n.n(sp),
      cp = n(282),
      lp = n.n(cp),
      pp = n(283),
      hp = n.n(pp),
      fp = n(284),
      dp = n.n(fp),
      mp = n(285),
      yp = n.n(mp),
      vp = n(52),
      gp = n.n(vp),
      _p = n(68),
      bp = n.n(_p),
      xp = n(346),
      wp = n.n(xp),
      Sp = n(367),
      Tp = n.n(Sp),
      Pp = n(370),
      Cp = n.n(Pp),
      kp = n(375),
      Op = n.n(kp),
      Ep = n(390),
      jp = n.n(Ep),
      Ap = n(393),
      Fp = n.n(Ap),
      Mp = n(411),
      Rp = n.n(Mp),
      Dp = n(412),
      Ip = n.n(Dp),
      Lp = "#version 300 es\nprecision highp float;\n\nin vec3 position;\nin vec2 texcoord;\nout vec2 outTex;\n\nvoid main () {\n  gl_Position = vec4(position, 1.0);\n\toutTex = texcoord;\n}\n",
      zp = function() {
        function t() {
          if (r(this, t), this.isSupported = !1, this.vertexShader = null, "undefined" != typeof window) {
            this.canvas = document.createElement("canvas"), this.context = this.canvas.getContext("webgl2");
            var e = this.context;
            e ? (this.isSupported = !0, e.getExtension("EXT_color_buffer_float"), this.MAX_TEXTURE_SIZE = e.getParameter(e.MAX_TEXTURE_SIZE), this.MAX_TEXTURE_IMAGE_UNITS = e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS), this.init()) : console.log("Unable to initialize WebGL2 -- your browser may not support it.")
          }
          this._refs = {
            textures: [],
            buffers: []
          }
        }
        return i(t, [{
          key: "init",
          value: function t() {
            this.createCommonVertexShader()
          }
        }, {
          key: "createCommonVertexShader",
          value: function t() {
            var e = this.context,
              n = e.createShader(e.VERTEX_SHADER);
            e.shaderSource(n, Lp), e.compileShader(n), e.getShaderParameter(n, e.COMPILE_STATUS) || (console.error(e.getShaderInfoLog(n)), e.deleteShader(n), this.isSupported = !1), this.vertexShader = n
          }
        }, {
          key: "compileProgram",
          value: function t(e) {
            var n = this.context,
              r = n.createShader(n.FRAGMENT_SHADER);
            n.shaderSource(r, e), n.compileShader(r);
            var o = n.getShaderParameter(r, n.COMPILE_STATUS);
            o || (console.error(n.getShaderInfoLog(r)), n.deleteShader(r), this.isSupported = !1);
            var i = n.createProgram();
            return n.attachShader(i, this.vertexShader), n.attachShader(i, r), n.linkProgram(i), o = n.getProgramParameter(i, n.LINK_STATUS), o || (console.error(n.getProgramInfoLog(i)), this.isSupported = !1), this.setupVertices(i), i
          }
        }, {
          key: "setupVertices",
          value: function t(e) {
            var n = this.context,
              r = n.getAttribLocation(e, "position"),
              o = n.createBuffer();
            n.bindBuffer(n.ARRAY_BUFFER, o), this.storeRef("buffer", o), n.bufferData(n.ARRAY_BUFFER, new Float32Array([-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0]), n.STATIC_DRAW), n.vertexAttribPointer(r, 3, n.FLOAT, !1, 0, 0), n.enableVertexAttribArray(r);
            var i = n.getAttribLocation(e, "texcoord"),
              a = n.createBuffer();
            n.bindBuffer(n.ARRAY_BUFFER, a), n.bufferData(n.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), n.STATIC_DRAW), n.vertexAttribPointer(i, 2, n.FLOAT, !1, 0, 0), n.enableVertexAttribArray(i), this.storeRef("buffer", a);
            var s = n.createBuffer();
            n.bindBuffer(n.ELEMENT_ARRAY_BUFFER, s), n.bufferData(n.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 0, 2, 3]), n.STATIC_DRAW), this.storeRef("buffer", s)
          }
        }, {
          key: "selectProgram",
          value: function t(e) {
            this.context.useProgram(e)
          }
        }, {
          key: "bindUniforms",
          value: function t(e, n) {
            var r = this.context;
            n.forEach(function(t) {
              var n = t.value,
                o = t.type,
                i = t.name,
                a = r.getUniformLocation(e, i);
              "float" === o ? r.uniform1f(a, n) : "int" !== o && "bool" !== o || r.uniform1i(a, n)
            })
          }
        }, {
          key: "bindInputTextures",
          value: function t(e, n, r) {
            var o = this,
              i = this.context;
            n.forEach(function(t, n) {
              var a = t.input,
                s = t.name;
              if (i.activeTexture(i.TEXTURE0 + n), a.glTextureFragments)
                if (a.glTextureFragmentsAsColStack) {
                  var u = o.getWebGLTextureOptions(a.glTextureType, a.glTextureFormat),
                    c = u.textureTarget;
                  i.bindTexture(c, a.glTextureFragmentsAsColStack)
                } else {
                  var l = o.getWebGLTextureOptions(a.glTextureType, a.glTextureFormat),
                    p = l.textureTarget;
                  i.bindTexture(p, a.glTextureFragments[r])
                } else {
                var h = o.getWebGLTextureOptions(a.glTextureType, a.glTextureFormat),
                  f = h.textureTarget;
                i.bindTexture(f, a.glTexture)
              }
              i.uniform1i(i.getUniformLocation(e, s), n)
            })
          }
        }, {
          key: "bindOutputTexture",
          value: function t(e, n) {
            var r = this.context;
            r.viewport(0, 0, n[1], n[0]), this.framebuffer = this.framebuffer || r.createFramebuffer(), r.bindFramebuffer(r.FRAMEBUFFER, this.framebuffer), r.framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, e, 0)
          }
        }, {
          key: "runProgram",
          value: function t(e) {
            var n = e.program,
              r = e.output,
              o = e.inputs,
              i = e.uniforms,
              a = e.supportsTextureFragments,
              s = void 0 !== a && a;
            if (!n) throw new Error("[WebGL2] missing program");
            if (!r) throw new Error("[WebGL2] missing output");
            if (!o) throw new Error("[WebGL2] missing inputs");
            var u = this.context;
            if (this.selectProgram(n), i && Array.isArray(i) && this.bindUniforms(n, i), r.glTextureFragments) {
              if (!s) throw new Error("[WebGL2] program does not support texture fragments");
              var c = o.filter(function(t) {
                  return t.input.glTextureFragments && !t.input.glTextureFragmentsAsColStack
                }),
                l = r.glTextureFragments.length;
              if (c.some(function(t) {
                return t.input.glTextureFragments.length !== l
              })) throw new Error("[WebGL2] number of texture fragments in inputs and output do not match");
              for (var p = 0; p < l; p++) this.bindOutputTexture(r.glTextureFragments[p], r.glTextureFragmentShape), this.bindInputTextures(n, o, p), u.drawElements(u.TRIANGLES, 6, u.UNSIGNED_SHORT, 0)
            } else this.bindOutputTexture(r.glTexture, r.glTextureShape), this.bindInputTextures(n, o), u.drawElements(u.TRIANGLES, 6, u.UNSIGNED_SHORT, 0)
          }
        }, {
          key: "readData",
          value: function t(e) {
            var n = this.context,
              r = new ArrayBuffer(e[0] * e[1] * 4 * 4),
              o = new Float32Array(r);
            n.readPixels(0, 0, e[1], e[0], n.RGBA, n.FLOAT, o);
            for (var i = [], a = 0; a < o.length; a += 4) i.push(o[a]);
            return new Float32Array(i)
          }
        }, {
          key: "getWebGLTextureOptions",
          value: function t(e, n) {
            var r = this.context;
            return {
              textureTarget: {
                "2d": r.TEXTURE_2D,
                "2d_array": r.TEXTURE_2D_ARRAY,
                "3d": r.TEXTURE_3D
              }[e],
              textureInternalFormat: {
                float: r.R32F,
                int: r.R32I
              }[n],
              textureFormat: {
                float: r.RED,
                int: r.RED_INTEGER
              }[n],
              textureType: {
                float: r.FLOAT,
                int: r.INT
              }[n]
            }
          }
        }, {
          key: "storeRef",
          value: function t(e, n) {
            "texture" === e ? this._refs.textures.push(n) : "buffer" === e && this._refs.buffers.push(n)
          }
        }, {
          key: "clearRefs",
          value: function t() {
            var e = this.context;
            this._refs.textures.forEach(function(t) {
              return e.deleteTexture(t)
            }), this._refs.buffers.forEach(function(t) {
              return e.deleteBuffer(t)
            }), this._refs = {
              textures: [],
              buffers: []
            }
          }
        }]), t
      }(),
      Up = new zp,
      Gp = Up.MAX_TEXTURE_SIZE,
      Np = Up.MAX_TEXTURE_IMAGE_UNITS,
      Bp = function() {
        function t() {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          a(this, t), this.layerClass = "Layer", this.name = e.name, this.description = "", this.gpu = Up.isSupported && e.gpu, this.params = [], this.weights = {}, this.inbound = [], this.outbound = []
        }
        return u(t, [{
          key: "throwError",
          value: function t(e) {
            throw new Error("[".concat(this.layerClass, " layer: ").concat(this.name || "", "] ").concat(e))
          }
        }, {
          key: "toggleGPU",
          value: function t(e) {
            var n = void 0 === e ? !this.gpu : e;
            Up.isSupported && n ? this.gpu = !0 : this.gpu = !1
          }
        }, {
          key: "setWeights",
          value: function t(e) {
            var n = this,
              r = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
            this.params.forEach(function(t, o) {
              n.weights[t] = e[o], n.gpu && r && n.weights[t].createGLTexture({
                type: "2d",
                format: "float"
              })
            })
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), t
      }(),
      qp = n(32),
      Vp = n.n(qp),
      Hp = n(58),
      Wp = n.n(Hp),
      Xp = n(1),
      Yp = n.n(Xp),
      $p = n(161),
      Kp = n.n($p),
      Jp = function() {
        function t(e, n) {
          var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
          d(this, t), this.arrayType = r.type || Float32Array, e && e.length && (e instanceof this.arrayType || e instanceof Array) ? (l(e, n), e instanceof this.arrayType ? this.tensor = Wp()(e, n) : e instanceof Array && (this.tensor = Wp()(new this.arrayType(e), n))) : !e.length && n.length ? this.tensor = Wp()(new this.arrayType(n.reduce(function(t, e) {
            return t * e
          }, 1)), n) : this.tensor = Wp()(new this.arrayType([]), [])
        }
        return y(t, [{
          key: "createGLTexture",
          value: function t(e) {
            var n = e.type,
              r = void 0 === n ? "2d" : n,
              o = e.format,
              i = void 0 === o ? "float" : o,
              a = e.supportsTextureFragments,
              s = void 0 !== a && a,
              u = [];
            if (1 === this.tensor.shape.length) u = [1, this.tensor.shape[0]], this.is1D = !0;
            else if (2 === this.tensor.shape.length) u = this.tensor.shape;
            else {
              if (3 !== this.tensor.shape.length || "2d_array" !== r && "3d" !== r) throw new Error("[Tensor] cannot create WebGL2 texture.");
              u = this.tensor.shape
            }
            if (this.glTextureShape = u, this.glTextureType = r, this.glTextureFormat = i, "2d" === r) this.glTextureShape[0] > Gp && s ? this._create2DRowFragmentedGLTexture() : this._create2DGLTexture();
            else {
              if ("2d_array" !== r && "3d" !== r) throw new Error("[Tensor] invalid type ".concat(r, "."));
              this._create3DGLTexture()
            }
          }
        }, {
          key: "_create2DGLTexture",
          value: function t() {
            var e = Up.context,
              n = Up.getWebGLTextureOptions(this.glTextureType, this.glTextureFormat),
              r = n.textureTarget,
              o = n.textureInternalFormat,
              i = n.textureFormat,
              a = n.textureType;
            this.glTexture = e.createTexture(), Up.storeRef("texture", this.glTexture), e.bindTexture(r, this.glTexture);
            var s = this.glTextureShape,
              u = this.tensor.data;
            e.texImage2D(r, 0, o, s[1], s[0], 0, i, a, u), e.texParameteri(r, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(r, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(r, e.TEXTURE_MAG_FILTER, e.NEAREST), e.texParameteri(r, e.TEXTURE_MIN_FILTER, e.NEAREST)
          }
        }, {
          key: "_create2DRowFragmentedGLTexture",
          value: function t() {
            var e = Up.context,
              n = Up.getWebGLTextureOptions(this.glTextureType, this.glTextureFormat),
              r = n.textureTarget,
              o = n.textureInternalFormat,
              i = n.textureFormat,
              a = n.textureType;
            this.glTextureFragments = [], this.glTextureFragmentShape = [Gp, this.glTextureShape[1]];
            for (var s = this.glTextureFragmentShape, u = Math.ceil(this.glTextureShape[0] / Gp), c = 0, l = 0; l < u; l++) {
              var p = e.createTexture();
              Up.storeRef("texture", p), e.bindTexture(r, p);
              var h = void 0;
              l === u - 1 ? (h = new this.arrayType(s[0] * s[1]), h.set(this.tensor.data.slice(c, c + s[0] * s[1]), 0)) : h = this.tensor.data.slice(c, c + s[0] * s[1]), e.texImage2D(r, 0, o, s[1], s[0], 0, i, a, h), e.texParameteri(r, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(r, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(r, e.TEXTURE_MAG_FILTER, e.NEAREST), e.texParameteri(r, e.TEXTURE_MIN_FILTER, e.NEAREST), this.glTextureFragments.push(p), c += s[0] * s[1]
            }
          }
        }, {
          key: "_create3DGLTexture",
          value: function t() {
            var e = Up.context,
              n = Up.getWebGLTextureOptions(this.glTextureType, this.glTextureFormat),
              r = n.textureTarget,
              o = n.textureInternalFormat,
              i = n.textureFormat,
              a = n.textureType;
            this.glTexture = e.createTexture(), Up.storeRef("texture", this.glTexture), e.bindTexture(r, this.glTexture);
            var s = this.glTextureShape,
              u = p(this.arrayType, this.tensor, this.glTextureShape);
            e.texImage3D(r, 0, o, s[1], s[0], s[2], 0, i, a, u), e.texParameteri(r, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(r, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(r, e.TEXTURE_MAG_FILTER, e.NEAREST), e.texParameteri(r, e.TEXTURE_MIN_FILTER, e.NEAREST)
          }
        }, {
          key: "convert2DRowFragmentedGLTextureToColStack",
          value: function t() {
            var e = this;
            if (!this.glTextureFragments || !this.glTextureFragmentShape) throw new Error("[Tensor] no glTextureFragments available.");
            var n = Up.context,
              r = Up.getWebGLTextureOptions(this.glTextureType, this.glTextureFormat),
              o = r.textureTarget,
              i = r.textureInternalFormat,
              a = r.textureFormat,
              s = r.textureType;
            if (this.glTextureFragmentsAsColStack) n.bindTexture(o, this.glTextureFragmentsAsColStack);
            else {
              this.glTextureFragmentsAsColStack = n.createTexture(), Up.storeRef("texture", this.glTextureFragmentsAsColStack), n.bindTexture(o, this.glTextureFragmentsAsColStack);
              var u = this.glTextureFragments.length;
              this.glTextureFragmentsAsColStackShape = [this.glTextureFragmentShape[0], this.glTextureFragmentShape[1] * u];
              var c = this.glTextureFragmentsAsColStackShape,
                l = new this.arrayType(c.reduce(function(t, e) {
                  return t * e
                }, 1));
              n.texImage2D(o, 0, i, c[1], c[0], 0, a, s, l), n.texParameteri(o, n.TEXTURE_WRAP_S, n.CLAMP_TO_EDGE), n.texParameteri(o, n.TEXTURE_WRAP_T, n.CLAMP_TO_EDGE), n.texParameteri(o, n.TEXTURE_MAG_FILTER, n.NEAREST), n.texParameteri(o, n.TEXTURE_MIN_FILTER, n.NEAREST)
            }
            var p = n.createFramebuffer();
            n.bindFramebuffer(n.READ_FRAMEBUFFER, p), this.glTextureFragments.forEach(function(t, r) {
              n.framebufferTexture2D(n.READ_FRAMEBUFFER, n.COLOR_ATTACHMENT0, n.TEXTURE_2D, t, 0), n.copyTexSubImage2D(o, 0, r * e.glTextureFragmentShape[1], 0, 0, 0, e.glTextureFragmentShape[1], e.glTextureFragmentShape[0])
            }), n.deleteFramebuffer(p)
          }
        }, {
          key: "removeGLTextureFragmentsAsColStack",
          value: function t() {
            if (this.glTextureFragmentsAsColStack) {
              Up.context.deleteTexture(this.glTextureFragmentsAsColStack), delete this.glTextureFragmentsAsColStack, delete this.glTextureFragmentsAsColStackShape
            }
          }
        }, {
          key: "deleteGLTexture",
          value: function t() {
            var e = Up.context;
            this.glTexture && (e.deleteTexture(this.glTexture), delete this.glTexture), this.glTextureFragments && (this.glTextureFragments.forEach(function(t) {
              e.deleteTexture(t)
            }), delete this.glTextureFragments)
          }
        }, {
          key: "replaceTensorData",
          value: function t(e) {
            if (e && e.length && e instanceof this.arrayType) this.tensor.data.set(e);
            else {
              if (!(e && e.length && e instanceof Array)) throw new Error("[Tensor] invalid input for replaceTensorData method.");
              this.tensor.data.set(new this.arrayType(e))
            }
            if (this.glTexture) {
              var n = Up.context,
                r = Up.getWebGLTextureOptions(this.glTextureType, this.glTextureFormat),
                o = r.textureTarget,
                i = r.textureFormat,
                a = r.textureType;
              n.bindTexture(o, this.glTexture);
              var s = this.glTextureShape;
              if ("2d" === this.glTextureType) {
                var u = this.tensor.data;
                n.texSubImage2D(o, 0, 0, 0, s[1], s[0], i, a, u, 0)
              } else if ("2d_array" === this.glTextureType || "3d" === this.glTextureType) {
                var c = p(this.arrayType, this.tensor, s);
                n.texSubImage3D(o, 0, 0, 0, 0, s[1], s[0], s[2], i, a, c, 0)
              }
            }
          }
        }, {
          key: "transferFromGLTexture",
          value: function t() {
            if (this.glTextureFragments) {
              this.tensor = Wp()(new this.arrayType(this.glTextureShape[0] * this.glTextureShape[1]), this.glTextureShape);
              for (var e = 0, n = 0; n < this.glTextureFragments.length; n++) {
                Up.bindOutputTexture(this.glTextureFragments[n], this.glTextureFragmentShape);
                var r = Up.readData(this.glTextureFragmentShape);
                if (n === this.glTextureFragments.length - 1) {
                  var o = this.tensor.data.length - e;
                  this.tensor.data.set(r.subarray(0, o), e)
                } else this.tensor.data.set(r, e);
                e += r.length
              }
            } else Up.bindOutputTexture(this.glTexture, this.glTextureShape), this.tensor = Wp()(new this.arrayType([]), this.glTextureShape), this.tensor.data = Up.readData(this.glTextureShape);
            this.is1D && 1 === this.glTextureShape[0] && (this.tensor = Kp()(this.tensor, [0]))
          }
        }, {
          key: "reshapeTo2D",
          value: function t() {
            for (var e = this.tensor.shape.length - 1, n = this.tensor.shape[e], r = this.tensor.shape.slice(0, e), o = r.reduce(function(t, e) {
              return t * e
            }, 1), i = Wp()(new this.arrayType(o * n), [o, n]), a = Wp()(new this.arrayType(o), r), s = Wp()(new this.arrayType(o), [o]), u = Array(this.tensor.shape.length).fill(null), c = 0; c < n; c++) {
              var l;
              u[e] = c, Yp.a.assign(a, (l = this.tensor).pick.apply(l, f(u))), s.data = a.data, Yp.a.assign(i.pick(null, c), s)
            }
            this.originalShape = this.tensor.shape, this.indicesForReshaped = h(this.tensor.shape, !1, e), this.tensor = i, this.is2DReshaped = !0
          }
        }, {
          key: "reshapeFrom2D",
          value: function t() {
            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : -1;
            if (!this.is2DReshaped) throw new Error("[Tensor] not in reshaped 2D representation.");
            if (!this.originalShape) throw new Error("[Tensor] does not contain originalShape.");
            e < 0 && (e = this.originalShape.length + e);
            for (var n = this.tensor.shape[0], r = this.tensor.shape[1], o = Wp()(new this.arrayType(this.originalShape.reduce(function(t, e) {
              return t * e
            }, 1)), this.originalShape), i = Wp()(new this.arrayType(n), [n]), a = f(this.originalShape.slice(0, e)).concat(f(this.originalShape.slice(e + 1))), s = Wp()(new this.arrayType(a.reduce(function(t, e) {
              return t * e
            }, 1)), a), u = Array(this.originalShape.length).fill(null), c = 0; c < r; c++) Yp.a.assign(i, this.tensor.pick(null, c)), s.data = i.data, u[e] = c, Yp.a.assign(o.pick.apply(o, f(u)), s);
            this.tensor = o
          }
        }, {
          key: "reshapeTo2DSquare",
          value: function t() {
            var e = Math.ceil(Math.sqrt(this.tensor.size)),
              n = Wp()(new this.arrayType(Math.pow(e, 2)), [e, e]);
            n.data.set(this.tensor.data), this.originalShape = this.tensor.shape, this.indicesForReshaped = h(this.tensor.shape, !0), this.tensor = n, this.is2DSquareReshaped = !0
          }
        }, {
          key: "reshapeFrom2DSquare",
          value: function t() {
            if (!this.is2DSquareReshaped) throw new Error("[Tensor] not in reshaped 2D square representation.");
            if (!this.originalShape) throw new Error("[Tensor] does not contain originalShape.");
            var e = this.originalShape.reduce(function(t, e) {
                return t * e
              }, 1),
              n = Wp()(new this.arrayType(e), this.originalShape);
            n.data.set(this.tensor.data.subarray(0, e)), this.tensor = n
          }
        }]), t
      }(),
      Qp = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          g(this, e), t = x(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "InputLayer";
          var r = n.shape,
            o = void 0 === r ? [] : r;
          return t.shape = n.batch_input_shape && n.batch_input_shape.length ? n.batch_input_shape.slice(1) : o, t.description = "shape: ".concat(JSON.stringify(t.shape)), t
        }
        return w(e, t), b(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, bp()(this.inputShape, this.shape) || this.throwError("input tensor shape ".concat(e.tensor.shape, " does not match specified shape ").concat(this.shape, ".")), this.output = new Jp(e.tensor.data, e.tensor.shape)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            (e.glTexture || e.glTextureFragments) && (e.is2DReshaped || e.is2DSquareReshaped) ? this.inputShape = e.originalShape: this.inputShape = e.tensor.shape, bp()(this.inputShape, this.shape) || this.throwError("input tensor shape ".concat(e.tensor.shape, " does not match specified shape ").concat(this.shape, ".")), e.glTexture || (e.tensor.shape.length <= 2 ? e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }) : e.tensor.shape.length > 2 && (e.reshapeTo2D(), e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }))), this.output = e
          }
        }]), e
      }(Bp),
      Zp = n(8),
      th = n.n(Zp),
      eh = th()({
        args: ["array", "scalar"],
        body: function t(e, n) {
          e = Math.max(e, 0) + n * (Math.exp(Math.min(e, 0)) - 1)
        }
      }),
      nh = th()({
        args: ["array", "scalar"],
        body: function t(e) {
          e = 1.0507009873554805 * (Math.max(e, 0) + 1.6732632423543772 * (Math.exp(Math.min(e, 0)) - 1))
        }
      }),
      rh = th()({
        args: ["array"],
        body: function t(e) {
          e = Math.log(Math.exp(e) + 1)
        }
      }),
      oh = th()({
        args: ["array"],
        body: function t(e) {
          e /= 1 + Math.abs(e)
        }
      }),
      ih = th()({
        args: ["array"],
        body: function t(e) {
          e = Math.tanh(e)
        }
      }),
      ah = th()({
        args: ["array"],
        body: function t(e) {
          e = 1 / (1 + Math.exp(-e))
        }
      }),
      sh = th()({
        args: ["array"],
        body: function t(e) {
          e = .2 * e + .5, e <= 0 ? e = 0 : e >= 1 && (e = 1)
        }
      }),
      uh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform float alpha;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = max(v, 0.0) + alpha * min(v, 0.0);\n}\n",
      ch = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          R(this, e), t = L(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "LeakyReLU";
          var r = n.alpha,
            o = void 0 === r ? .3 : r;
          return t.description = "alpha: ".concat(o), t.alpha = o, t.gpu && (t.program = Up.compileProgram(uh)), t
        }
        return z(e, t), I(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = e, O(this.output, {
              alpha: this.alpha
            })
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output || (this.output = new Jp([], e.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e.is1D ? this.output.is1D = e.is1D : (e.is2DReshaped || e.is2DSquareReshaped) && (e.is2DReshaped ? this.output.is2DReshaped = e.is2DReshaped : e.is2DSquareReshaped && (this.output.is2DSquareReshaped = e.is2DSquareReshaped), this.output.originalShape = e.originalShape, this.output.indicesForReshaped = e.indicesForReshaped)), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.alpha,
                type: "float",
                name: "alpha"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      lh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform sampler2D alpha;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  vec4 a = texture(alpha, vec2(outTex.x, outTex.y));\n  outColor = max(v, 0.0) + a * min(v, 0.0);\n}\n",
      ph = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return G(this, e), t = q(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), Object.defineProperty(H(t), "_compute", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: th()({
              args: ["array", "array"],
              body: function t(e, n) {
                e = Math.max(e, 0) + n * Math.min(e, 0)
              }
            })
          }), t.layerClass = "PReLU", t.params = ["alpha"], t.gpu && (t.program = Up.compileProgram(lh)), t
        }
        return V(e, t), B(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = e, this._compute(this.output.tensor, this.weights.alpha.tensor)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output || (this.output = new Jp([], e.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e.is1D ? this.output.is1D = e.is1D : (e.is2DReshaped || e.is2DSquareReshaped) && (e.is2DReshaped ? this.output.is2DReshaped = e.is2DReshaped : e.is2DSquareReshaped && (this.output.is2DSquareReshaped = e.is2DSquareReshaped), this.output.originalShape = e.originalShape, this.output.indicesForReshaped = e.indicesForReshaped)), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.weights.alpha,
                name: "alpha"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      hh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform float alpha;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = max(v, 0.0) + alpha * (exp(min(v, 0.0)) - 1.0);\n}\n",
      fh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          X(this, e), t = K(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), dh.call(Q(t)), t.layerClass = "ELU";
          var r = n.alpha,
            o = void 0 === r ? 1 : r;
          return t.description = "alpha: ".concat(o), t.alpha = o, t.gpu && (t.program = Up.compileProgram(hh)), t
        }
        return J(e, t), $(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = e, this._compute(this.output.tensor, this.alpha)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output || (this.output = new Jp([], e.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e.is1D ? this.output.is1D = e.is1D : (e.is2DReshaped || e.is2DSquareReshaped) && (e.is2DReshaped ? this.output.is2DReshaped = e.is2DReshaped : e.is2DSquareReshaped && (this.output.is2DSquareReshaped = e.is2DSquareReshaped), this.output.originalShape = e.originalShape, this.output.indicesForReshaped = e.indicesForReshaped)), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.alpha,
                type: "float",
                name: "alpha"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      dh = function t() {
        Object.defineProperty(this, "_compute", {
          configurable: !0,
          enumerable: !0,
          writable: !0,
          value: th()({
            args: ["array", "scalar"],
            body: function t(e, n) {
              e = Math.max(e, 0) + n * (Math.exp(Math.min(e, 0)) - 1)
            }
          })
        })
      },
      mh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform float theta;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = v * float(greaterThan(v, vec4(theta)));\n}\n",
      yh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          tt(this, e), t = rt(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), vh.call(it(t)), t.layerClass = "ThresholdedReLU";
          var r = n.theta,
            o = void 0 === r ? 1 : r;
          return t.description = "theta: ".concat(o), t.theta = o, t.gpu && (t.program = Up.compileProgram(mh)), t
        }
        return ot(e, t), nt(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = e, this._compute(this.output.tensor, this.theta)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output || (this.output = new Jp([], e.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e.is1D ? this.output.is1D = e.is1D : (e.is2DReshaped || e.is2DSquareReshaped) && (e.is2DReshaped ? this.output.is2DReshaped = e.is2DReshaped : e.is2DSquareReshaped && (this.output.is2DSquareReshaped = e.is2DSquareReshaped), this.output.originalShape = e.originalShape, this.output.indicesForReshaped = e.indicesForReshaped)), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.theta,
                type: "float",
                name: "theta"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      vh = function t() {
        Object.defineProperty(this, "_compute", {
          configurable: !0,
          enumerable: !0,
          writable: !0,
          value: th()({
            args: ["array", "scalar"],
            body: function t(e, n) {
              e *= Number(e > n)
            }
          })
        })
      },
      gh = n(420),
      _h = n.n(gh),
      bh = n(162),
      xh = n.n(bh),
      wh = n(46),
      Sh = n.n(wh),
      Th = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float maxval = 0.0;\n  for (int i = 0; i < int(size[0]); ++i) {\n    float val = texelFetch(x, ivec2(i, out_y), 0).r;\n    if (i == 0 || val > maxval) {\n      maxval = val;\n    }\n  }\n\n  float sum = 0.0;\n  for (int i = 0; i < int(size[0]); ++i) {\n    float val = texelFetch(x, ivec2(i, out_y), 0).r;\n    sum += exp(val - maxval);\n  }\n\n  outColor = exp(texture(x, vec2(outTex.x, outTex.y)) - maxval) / sum;\n}\n",
      Ph = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  float alpha = 1.0;\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = max(v, 0.0) + alpha * (exp(min(v, 0.0)) - 1.0);\n}\n",
      Ch = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  float alpha = 1.6732632423543772848170429916717;\n  float scale = 1.0507009873554804934193349852946;\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = scale * (max(v, 0.0) + alpha * (exp(min(v, 0.0)) - 1.0));\n}\n",
      kh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  outColor = log(1.0 + exp(texture(x, vec2(outTex.x, outTex.y))));\n}\n",
      Oh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  v /= 1.0 + abs(v);\n  outColor = v;\n}\n",
      Eh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = max(v, 0.0);\n}\n",
      jh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  outColor = tanh(v);\n}\n",
      Ah = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  outColor = 1.0 / (1.0 + exp(-1.0 * texture(x, vec2(outTex.x, outTex.y))));\n}\n",
      Fh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  vec4 v = texture(x, vec2(outTex.x, outTex.y));\n  v = v * 0.2 + 0.5;\n  v = max(v, 0.0);\n  v = min(v, 1.0);\n  outColor = v;\n}\n",
      Mh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  outColor = texture(x, vec2(outTex.x, outTex.y));\n}\n",
      Rh = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Dh = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 inputSize = textureSize(x, 0);\n  ivec2 outputSize = textureSize(indexMap, 0);\n  int out_x = int(float(outputSize[0]) * outTex.x);\n  int out_y = int(float(outputSize[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    int fragmentIndex = int(floor(float(rowIndex) / float(inputSize[1])));\n    rowIndex = int(mod(float(rowIndex), float(inputSize[1])));\n    colIndex = fragmentIndex * inputCols + colIndex;\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Ih = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      Lh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          xt(this, e), t = Tt(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Conv2D";
          var r = n.filters,
            o = void 0 === r ? 1 : r,
            i = n.kernel_size,
            a = void 0 === i ? [3, 3] : i,
            s = n.strides,
            u = void 0 === s ? [1, 1] : s,
            c = n.padding,
            l = void 0 === c ? "valid" : c,
            p = n.data_format,
            h = void 0 === p ? "channels_last" : p,
            f = n.dilation_rate,
            d = void 0 === f ? [1, 1] : f,
            m = n.activation,
            y = void 0 === m ? "linear" : m,
            v = n.use_bias,
            g = void 0 === v || v;
          return Array.isArray(a) ? t.kernelShape = [o].concat(bt(a)) : t.kernelShape = [o, a, a], Array.isArray(u) ? t.strides = u : t.strides = [u, u], "valid" === l || "same" === l ? t.padding = l : t.throwError("Invalid padding."), "channels_last" === h || "channels_first" === h ? t.dataFormat = h : t.throwError("Only channels_last and channels_first data formats are allowed."), Array.isArray(d) ? t.dilationRate = d : t.dilationRate = [d, d], 1 === t.dilationRate[0] && 1 === t.dilationRate[1] || 1 === t.strides[0] && 1 === t.strides[1] || t.throwError("Incompatible combination of dilation_rate with strides."), t.activation = y, t.activationFunc = Es[y], t.useBias = g, t.params = t.useBias ? ["kernel", "bias"] : ["kernel"], t.description = "".concat(t.kernelShape[0], " ").concat(t.kernelShape.slice(1).join("x"), " filters"), t.description += t.strides.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.strides.join("x"), " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.description += t.dilationRate.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.dilationRate.join("x"), " dilation") : "", t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.gpu && (t.mapInputProgram = Up.compileProgram(Rh), t.mapInputFragmentsProgram = Up.compileProgram(Dh), t.matMulProgram = Up.compileProgram(Ih), t.activationProgram = Up.compileProgram(js[t.activation])), t
        }
        return Ct(e, t), St(e, [{
          key: "setWeights",
          value: function t(n) {
            "channels_first" === this.dataFormat && (n[0].tensor = n[0].tensor.transpose(2, 3, 1, 0)), Pt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "setWeights", this).call(this, n, !1), this._w2row(), this.gpu && (this.weights.kernel = this.wRowsMat, this.weights.kernel.createGLTexture({
              type: "2d",
              format: "float"
            }), this.useBias && this.weights.bias.createGLTexture({
              type: "2d",
              format: "float"
            }))
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_calcOutputShape",
          value: function t(e) {
            if (!this.outputShape || !this.inputPadding) {
              var n = e[0],
                r = e[1],
                o = _t(this.kernelShape, 3),
                i = o[0],
                a = o[1],
                s = o[2],
                u = a + (a - 1) * (this.dilationRate[0] - 1),
                c = s + (s - 1) * (this.dilationRate[1] - 1),
                l = "same" === this.padding ? Math.floor((n + this.strides[0] - 1) / this.strides[0]) : Math.floor((n - u + this.strides[0]) / this.strides[0]),
                p = "same" === this.padding ? Math.floor((r + this.strides[1] - 1) / this.strides[1]) : Math.floor((r - c + this.strides[1]) / this.strides[1]),
                h = i,
                f = "same" === this.padding ? Math.max(0, Math.floor((l - 1) * this.strides[0] + u - n)) : 0,
                d = "same" === this.padding ? Math.max(0, Math.floor((p - 1) * this.strides[1] + c - r)) : 0,
                m = Math.floor(f / 2),
                y = f - m,
                v = Math.floor(d / 2),
                g = d - v;
              this.outputShape = [l, p, h], this.inputPadding = [m, y, v, g]
            }
          }
        }, {
          key: "_padInput",
          value: function t(e) {
            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
            if ("same" === this.padding) {
              var r = _t(e.tensor.shape, 3),
                o = r[0],
                i = r[1],
                a = r[2],
                s = _t(this.inputPadding, 4),
                u = s[0],
                c = s[1],
                l = s[2],
                p = s[3],
                h = o + u + c,
                f = i + l + p,
                d = new Jp([], [h, f, a]);
              return 0 !== n && Yp.a.assigns(d.tensor, n), Yp.a.assign(d.tensor.hi(o + u, i + l, a).lo(u, l, 0), e.tensor), d
            }
            return e
          }
        }, {
          key: "_im2col",
          value: function t(e) {
            var n = _t(e.tensor.shape, 3),
              r = n[0],
              o = n[1],
              i = n[2],
              a = this.kernelShape[1],
              s = this.kernelShape[2],
              u = this.outputShape[0],
              c = this.outputShape[1],
              l = u * c,
              p = a * s * i,
              h = a + (a - 1) * (this.dilationRate[0] - 1),
              f = s + (s - 1) * (this.dilationRate[1] - 1);
            if (this.imColsMat || (this.imColsMat = new Jp([], [l, p])), 1 === h && 1 === f && 1 === this.strides[0] && 1 === this.strides[1]) return this.imColsMat.replaceTensorData(e.tensor.data), this.imColsMat;
            for (var d = new Jp([], [a, s, i]), m = 0, y = 0, v = r - h; y <= v; y += this.strides[0])
              for (var g = 0, _ = o - f; g <= _; g += this.strides[1]) Yp.a.assign(d.tensor, e.tensor.hi(y + h, g + f, i).lo(y, g, 0).step(this.dilationRate[0], this.dilationRate[1], 1)), this.imColsMat.tensor.data.set(d.tensor.data, m), m += p;
            return this.imColsMat
          }
        }, {
          key: "_w2row",
          value: function t() {
            var e = this.weights.kernel.tensor.shape[2],
              n = _t(this.kernelShape, 3),
              r = n[0],
              o = n[1],
              i = n[2],
              a = o * i * e;
            this.wRowsMat = new Jp([], [a, r]);
            for (var s = new Jp([], [o, i, e]), u = new Jp([], [a]), c = 0; c < r; c++) Yp.a.assign(s.tensor, this.weights.kernel.tensor.pick(null, null, null, c)), u.replaceTensorData(s.tensor.data), Yp.a.assign(this.wRowsMat.tensor.pick(null, c), u.tensor);
            return this.wRowsMat
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), e = this._padInput(e), this._im2col(e);
            var n = this.kernelShape[0],
              r = this.outputShape[0],
              o = this.outputShape[1],
              i = r * o,
              a = new Jp([], [i, n]);
            if (this.useBias)
              for (var s = 0; s < n; s++) Yp.a.assigns(a.tensor.pick(null, s), this.weights.bias.tensor.get(s));
            Sh()(a.tensor, this.imColsMat.tensor, this.wRowsMat.tensor, 1, 1), this.output = new Jp([], this.outputShape);
            for (var u = new Jp([], [r * o]), c = new Jp([], [r, o]), l = 0; l < n; l++) Yp.a.assign(u.tensor, a.tensor.pick(null, l)), c.replaceTensorData(u.tensor.data), Yp.a.assign(this.output.tensor.pick(null, null, l), c.tensor);
            this.activationFunc(this.output), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e) {
            if (!this.indexMap) {
              var n = _t(this.inputShape, 3),
                r = n[0],
                o = n[1],
                i = n[2],
                a = new Jp(e.data, e.shape, {
                  type: Int32Array
                });
              if ("same" === this.padding) {
                var s = _t(this.inputPadding, 4),
                  u = s[0],
                  c = s[1],
                  l = s[2],
                  p = s[3];
                r = r + u + c, o = o + l + p;
                var h = -1;
                a = this._padInput(a, -1)
              }
              var f = this.kernelShape[1],
                d = this.kernelShape[2],
                m = this.outputShape[0],
                y = this.outputShape[1],
                v = m * y,
                g = f * d * i,
                _ = f + (f - 1) * (this.dilationRate[0] - 1),
                b = d + (d - 1) * (this.dilationRate[1] - 1);
              this.indexMap = new Jp([], [v, g], {
                type: Int32Array
              });
              for (var x = new Jp([], [f, d, i]), w = 0, S = 0, T = r - _; S <= T; S += this.strides[0])
                for (var P = 0, C = o - b; P <= C; P += this.strides[1]) Yp.a.assign(x.tensor, a.tensor.hi(S + _, P + b, i).lo(S, P, 0).step(this.dilationRate[0], this.dilationRate[1], 1)), this.indexMap.tensor.data.set(x.tensor.data, w), w += g;
              this.indexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            var n;
            if (e.is2DReshaped || e.is2DSquareReshaped ? (this.inputShape = e.originalShape, this._calcOutputShape(this.inputShape), this._createIndexMap(e.indicesForReshaped), n = [this.indexMap.glTextureShape[0], this.weights.kernel.glTextureShape[1]]) : (this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), e = this._padInput(e), this._im2col(e), this.imColsMat.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), n = [this.imColsMat.glTextureShape[0], this.weights.kernel.glTextureShape[1]]), "linear" === this.activation || this.outputPreactiv || (this.outputPreactiv = new Jp([], n), this.outputPreactiv.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.outputPreactiv.is2DReshaped = !0, this.outputPreactiv.originalShape = this.outputShape, this.outputPreactiv.indicesForReshaped = h(this.outputShape, !1, -1)), this.output || (this.output = new Jp([], n), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output.is2DReshaped = !0, this.output.originalShape = this.outputShape, this.output.indicesForReshaped = h(this.outputShape, !1, -1)), e.is2DReshaped || e.is2DSquareReshaped) {
              var r = Boolean(e.glTextureFragments);
              if (r && e.convert2DRowFragmentedGLTextureToColStack(), !this.convProgram) {
                var o = yt("conv2d", this.output.glTextureFragmentShape ? this.output.glTextureFragmentShape : this.output.glTextureShape, e.glTextureFragmentShape ? e.glTextureFragmentShape : e.glTextureShape, this.indexMap.glTextureFragmentShape ? this.indexMap.glTextureFragmentShape : this.indexMap.glTextureShape, this.useBias, r);
                this.convProgram = Up.compileProgram(o)
              }
              Up.runProgram({
                program: this.convProgram,
                output: "linear" === this.activation ? this.output : this.outputPreactiv,
                inputs: [{
                  input: e,
                  name: "x"
                }, {
                  input: this.indexMap,
                  name: "indexMap"
                }, {
                  input: this.weights.kernel,
                  name: "kernel"
                }].concat(bt(this.useBias ? [{
                  input: this.weights.bias,
                  name: "bias"
                }] : [])),
                supportsTextureFragments: !0
              }), r && e.removeGLTextureFragmentsAsColStack()
            } else {
              var i = [{
                input: this.imColsMat,
                name: "A"
              }, {
                input: this.weights.kernel,
                name: "B"
              }];
              this.useBias && i.push({
                input: this.weights.bias,
                name: "C"
              }), Up.runProgram({
                program: this.matMulProgram,
                output: "linear" === this.activation ? this.output : this.outputPreactiv,
                inputs: i,
                uniforms: [{
                  value: this.useBias ? 1 : 0,
                  type: "bool",
                  name: "addC"
                }],
                supportsTextureFragments: !0
              })
            }
            "linear" !== this.activation && Up.runProgram({
              program: this.activationProgram,
              output: this.output,
              inputs: [{
                input: this.outputPreactiv,
                name: "x"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.reshapeFrom2D(), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1)))
          }
        }]), e
      }(Bp),
      zh = n(163),
      Uh = n.n(zh),
      Gh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Ot(this, e), t = At(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Conv1D";
          var r = n.filters,
            o = void 0 === r ? 1 : r,
            i = n.kernel_size,
            a = void 0 === i ? 1 : i,
            s = n.strides,
            u = void 0 === s ? 1 : s,
            c = n.padding,
            l = void 0 === c ? "valid" : c,
            p = n.dilation_rate,
            h = void 0 === p ? 1 : p,
            f = n.activation,
            d = void 0 === f ? "linear" : f,
            m = n.use_bias,
            y = void 0 === m || m;
          t.description = "".concat(o, " filters of size ").concat(a, ", striding ").concat(u), t.description += "valid" === l ? ", no border padding" : ", pad to same borders", t.description += h > 1 ? ", dilation rate ".concat(h) : "", t.description += "linear" !== d ? ", ".concat(d, " activation") : "", "valid" !== l && "same" !== l && t.throwError("Invalid padding."), 1 !== h && 1 !== u && t.throwError("Incompatible combination of dilation_rate with strides."), t.use_bias = y, t.params = t.use_bias ? ["kernel", "bias"] : ["kernel"];
          var v = {
            filters: o,
            kernel_size: [a, 1],
            strides: [u, 1],
            padding: l,
            data_format: "channels_first",
            dilation_rate: h,
            activation: d,
            use_bias: y
          };
          return t._conv2dAttrs = v, t._conv2d = new Lh(Object.assign(v, {
            gpu: n.gpu
          })), t
        }
        return Ft(e, t), jt(e, [{
          key: "setWeights",
          value: function t(e) {
            e[0].tensor = Uh()(e[0].tensor).transpose(2, 1, 0, 3), this._conv2d.setWeights(e)
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n = this,
              r = new Jp(e.tensor.data, e.tensor.shape);
            r.tensor = Uh()(r.tensor).transpose(0, 2, 1);
            var o = this._conv2d.call(r);
            this.outputShape = [0, 2].map(function(t) {
              return n._conv2d.outputShape[t]
            }), this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor, Kp()(o.tensor).transpose(1, 0, 2))
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            });
            var n = e.tensor.shape,
              r = new Jp([], n);
            Object.assign(r, e), r.glTextureShape = n, r.is2DReshaped = !0, r.originalShape = [n[0], 1, n[1]], r.indicesForReshaped = h(r.originalShape, !1, -1), this.output = this._conv2d.call(r), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Nh = function(t) {
        function e() {
          var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Lt(this, e), Gt(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, t))
        }
        return Bt(e, t), Ut(e, [{
          key: "_calcOutputShape",
          value: function t(n) {
            Nt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_calcOutputShape", this).call(this, n);
            var r = this.kernelShape[0],
              o = n[2];
            this.outputShape[2] = r * o
          }
        }, {
          key: "_im2col",
          value: function t(e) {
            var n = It(e.tensor.shape, 3),
              r = n[0],
              o = n[1],
              i = n[2],
              a = this.kernelShape[1],
              s = this.kernelShape[2],
              u = this.outputShape[0],
              c = this.outputShape[1],
              l = u * c,
              p = a * s;
            this.imColsMat || (this.imColsMat = new Jp([], [l * i, p]));
            for (var h = new Jp([], [a, s, 1]), f = 0, d = 0; d < i; d++)
              for (var m = 0, y = r - a; m <= y; m += this.strides[0])
                for (var v = 0, g = o - s; v <= g; v += this.strides[1]) Yp.a.assign(h.tensor, e.tensor.hi(m + a, v + s, d + 1).lo(m, v, d)), this.imColsMat.tensor.data.set(h.tensor.data, f), f += p;
            return this.imColsMat
          }
        }, {
          key: "_w2row",
          value: function t() {
            var e = this.weights.kernel.tensor.shape[2],
              n = It(this.kernelShape, 3),
              r = n[0],
              o = n[1],
              i = n[2],
              a = o * i;
            this.wRowsMat = new Jp([], [a, r * e]);
            for (var s = new Jp([], [o, i]), u = new Jp([], [a]), c = 0, l = 0; l < e; l++)
              for (var p = 0; p < r; p++) Yp.a.assign(s.tensor, this.weights.kernel.tensor.pick(null, null, l, p)), u.replaceTensorData(s.tensor.data), Yp.a.assign(this.wRowsMat.tensor.pick(null, c), u.tensor), c += 1;
            return this.wRowsMat
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), e = this._padInput(e), this._im2col(e);
            var n = this.kernelShape[0],
              r = this.outputShape[0],
              o = this.outputShape[1],
              i = r * o,
              a = this.inputShape[2],
              s = new Jp([], [i * a, n * a]);
            Sh()(s.tensor, this.imColsMat.tensor, this.wRowsMat.tensor, 1, 1), this.output = new Jp([], this.outputShape);
            for (var u = r * o * n * a, c = new Float32Array(u), l = 0; l < a; l++)
              for (var p = l * u + l * n; p < (l + 1) * u; p += n * a)
                for (var h = 0; h < n; h++) c[p + h - l * u] = s.tensor.data[p + h];
            this.output.replaceTensorData(c)
          }
        }, {
          key: "_createIndexMap",
          value: function t(e) {
            if (!this.indexMap) {
              var n = It(this.inputShape, 3),
                r = n[0],
                o = n[1],
                i = n[2],
                a = new Jp(e.data, e.shape, {
                  type: Int32Array
                });
              if ("same" === this.padding) {
                var s = It(this.inputPadding, 4),
                  u = s[0],
                  c = s[1],
                  l = s[2],
                  p = s[3];
                r = r + u + c, o = o + l + p;
                var h = -1;
                a = this._padInput(a, -1)
              }
              var f = this.kernelShape[1],
                d = this.kernelShape[2],
                m = this.outputShape[0],
                y = this.outputShape[1],
                v = m * y,
                g = f * d;
              this.indexMap = new Jp([], [v * i, g], {
                type: Int32Array
              });
              for (var _ = new Jp([], [f, d, 1]), b = 0, x = 0; x < i; x++)
                for (var w = 0, S = r - f; w <= S; w += this.strides[0])
                  for (var T = 0, P = o - d; T <= P; T += this.strides[1]) Yp.a.assign(_.tensor, a.tensor.hi(w + f, T + d, x + 1).lo(w, T, x)), this.indexMap.tensor.data.set(_.tensor.data, b), b += g;
              this.indexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_createOutputReshapeIndexMap",
          value: function t() {
            if (!this.reshapeIndexMap) {
              var e = this.kernelShape[0],
                n = [this.outputShape[0] * this.outputShape[1], this.outputShape[2]],
                r = new Jp([], n, {
                  type: Int32Array
                }),
                o = new Jp([], n, {
                  type: Int32Array
                });
              this.reshapeIndexMap = new Jp([], n, {
                type: Int32Array
              });
              for (var i = 0; i < n[1]; i++)
                for (var a = 0; a < n[0]; a++) Yp.a.assigns(r.tensor.pick(a, i), a + Math.floor(i / e) * n[0]);
              for (var s = 0; s < n[1]; s++) Yp.a.assigns(o.tensor.pick(null, s), s);
              Yp.a.muls(this.reshapeIndexMap.tensor, r.tensor, n[1]), Yp.a.addeq(this.reshapeIndexMap.tensor, o.tensor), this.reshapeIndexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (Nt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n), this._createOutputReshapeIndexMap(), !this.outputReshaped) {
              var r = [this.outputShape[0] * this.outputShape[1], this.outputShape[2]];
              this.outputReshaped = new Jp([], r), this.outputReshaped.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              }), this.outputReshaped.is2DReshaped = !0, this.outputReshaped.originalShape = this.outputShape, this.outputReshaped.indicesForReshaped = h(this.outputShape, !1, -1)
            }
            this.output.glTextureFragments && this.output.convert2DRowFragmentedGLTextureToColStack(), Up.runProgram({
              program: this.output.glTextureFragments ? this.mapInputFragmentsProgram : this.mapInputProgram,
              output: this.outputReshaped,
              inputs: [{
                input: this.output,
                name: "x"
              }, {
                input: this.reshapeIndexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: this.output.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }],
              supportsTextureFragments: !0
            }), this.output.glTextureFragments && this.output.removeGLTextureFragmentsAsColStack()
          }
        }]), e
      }(Lh),
      Bh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Lt(this, e), t = Gt(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "SeparableConv2D";
          var r = n.filters,
            o = void 0 === r ? 1 : r,
            i = n.kernel_size,
            a = void 0 === i ? [1, 1] : i,
            s = n.strides,
            u = void 0 === s ? [1, 1] : s,
            c = n.padding,
            l = void 0 === c ? "valid" : c,
            p = n.data_format,
            h = void 0 === p ? "channels_last" : p,
            f = n.depth_multiplier,
            d = void 0 === f ? 1 : f,
            m = n.activation,
            y = void 0 === m ? "linear" : m,
            v = n.use_bias,
            g = void 0 === v || v;
          return Array.isArray(a) ? t.kernelShape = [o].concat(Mt(a)) : t.kernelShape = [o, a, a], Array.isArray(u) ? t.strides = u : t.strides = [u, u], "valid" === l || "same" === l ? t.padding = l : t.throwError("Invalid padding."), "channels_last" === h || "channels_first" === h ? t.dataFormat = h : t.throwError("Only channels_last and channels_first data formats are allowed."), t.activation = y, t.activationFunc = Es[y], "valid" === l || "same" === l ? t.padding = l : t.throwError("Invalid padding."), t.useBias = g, t.params = t.useBias ? ["depthwise_kernel", "pointwise_kernel", "bias"] : ["depthwise_kernel", "pointwise_kernel"], t.depthwiseConvAttrs = {
            filters: d,
            kernel_size: [t.kernelShape[1], t.kernelShape[2]],
            strides: t.strides,
            padding: l,
            data_format: h,
            activation: "linear",
            use_bias: !1,
            gpu: n.gpu
          }, t.pointwiseConvAttrs = {
            filters: o,
            kernel_size: [1, 1],
            strides: [1, 1],
            padding: l,
            data_format: h,
            activation: "linear",
            use_bias: g,
            gpu: n.gpu
          }, t.description = "".concat(t.kernelShape[0], " ").concat(t.kernelShape.slice(1).join("x"), " filters"), t.description += t.strides.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.strides.join("x"), " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.description += d > 1 ? ", depth multiplier: ".concat(d) : "", t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.gpu && (t.activationProgram = Up.compileProgram(js[t.activation])), t
        }
        return Bt(e, t), Ut(e, [{
          key: "setWeights",
          value: function t(e) {
            this._depthwiseConv = new Nh(this.depthwiseConvAttrs), this._depthwiseConv.setWeights(e.slice(0, 1)), this._pointwiseConv = new Lh(this.pointwiseConvAttrs), this._pointwiseConv.setWeights(e.slice(1, 3))
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this._depthwiseConv._callCPU(e), this._pointwiseConv._callCPU(this._depthwiseConv.output), this.output = this._pointwiseConv.output, this.activationFunc(this.output)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            this._depthwiseConv.outbound = [null], this._pointwiseConv.outbound = [null], this._depthwiseConv._callGPU(e), this._pointwiseConv._callGPU(this._depthwiseConv.outputReshaped), "linear" === this.activation ? this.output = this._pointwiseConv.output : (this.output || (this.output = new Jp([], this._pointwiseConv.output.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output.is2DReshaped = !0, this.output.originalShape = this._pointwiseConv.output.originalShape, this.output.indicesForReshaped = h(this._pointwiseConv.output.originalShape, !1, -1)), this.outputPreactiv = this._pointwiseConv.output, Up.runProgram({
              program: this.activationProgram,
              output: this.output,
              inputs: [{
                input: this.outputPreactiv,
                name: "x"
              }],
              supportsTextureFragments: !0
            })), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.reshapeFrom2D(), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1)))
          }
        }]), e
      }(Bp),
      qh = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      Vh = th()({
        args: [{
          blockIndices: -1
        }, "scalar", "scalar"],
        body: function t(e, n, r) {
          for (var o = 0; o < r; o++)
            if (-1 === e[o]) {
              e[o] = n;
              break
            }
        }
      }),
      Hh = th()({
        args: [{
          blockIndices: -1
        }, "array", "scalar"],
        body: function t(e, n, r) {
          for (var o = 0; o < r; o++)
            if (-1 === e[o]) {
              e[o] = n;
              break
            }
        }
      }),
      Wh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Xt(this, e), t = Kt(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Conv2DTranspose";
          var r = n.filters,
            o = void 0 === r ? 1 : r,
            i = n.kernel_size,
            a = void 0 === i ? [3, 3] : i,
            s = n.strides,
            u = void 0 === s ? [1, 1] : s,
            c = n.padding,
            l = void 0 === c ? "valid" : c,
            p = n.data_format,
            h = void 0 === p ? "channels_last" : p,
            f = n.activation,
            d = void 0 === f ? "linear" : f,
            m = n.use_bias,
            y = void 0 === m || m;
          return Array.isArray(a) ? t.kernelShape = [o].concat(Wt(a)) : t.kernelShape = [o, a, a], Array.isArray(u) ? t.strides = u : t.strides = [u, u], "valid" === l || "same" === l ? t.padding = l : t.throwError("Invalid padding."), "channels_last" === h || "channels_first" === h ? t.dataFormat = h : t.throwError("Only channels_last and channels_first data formats are allowed."), t.activation = d, t.activationFunc = Es[d], t.useBias = y, t.params = t.useBias ? ["kernel", "bias"] : ["kernel"], t.description = "".concat(t.kernelShape[0], " ").concat(t.kernelShape.slice(1).join("x"), " filters"), t.description += t.strides.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.strides.join("x"), " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.gpu && (t.matMulProgram = Up.compileProgram(qh), t.activationProgram = Up.compileProgram(js[t.activation])), t
        }
        return Qt(e, t), $t(e, [{
          key: "setWeights",
          value: function t(n) {
            "channels_first" === this.dataFormat && (n[0].tensor = n[0].tensor.transpose(2, 3, 1, 0)), Jt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "setWeights", this).call(this, n, !1), this._w2row(), this.gpu && (this.weights.kernel = this.wRowsMat, this.weights.kernel.createGLTexture({
              type: "2d",
              format: "float"
            }), this.useBias && this.weights.bias.createGLTexture({
              type: "2d",
              format: "float"
            }))
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_calcOutputShape",
          value: function t(e) {
            if (!this.outputShape || !this.outputPadding) {
              var n = e[0],
                r = e[1],
                o = Ht(this.kernelShape, 3),
                i = o[0],
                a = o[1],
                s = o[2],
                u = "same" === this.padding ? n * this.strides[0] : n * this.strides[0] + Math.max(a - this.strides[0], 0),
                c = "same" === this.padding ? r * this.strides[1] : r * this.strides[1] + Math.max(s - this.strides[1], 0),
                l = i,
                p = "same" === this.padding ? Math.max(0, Math.floor((n - 1) * this.strides[0] + a - u)) : 0,
                h = "same" === this.padding ? Math.max(0, Math.floor((r - 1) * this.strides[1] + s - c)) : 0,
                f = Math.floor(p / 2),
                d = p - f,
                m = Math.floor(h / 2),
                y = h - m;
              this.outputShape = [u, c, l], this.outputPadding = [f, d, m, y]
            }
          }
        }, {
          key: "_im2col",
          value: function t(e) {
            var n = Ht(e.tensor.shape, 3),
              r = n[0],
              o = n[1],
              i = n[2];
            this.imColsMat || (this.imColsMat = new Jp([], [r * o, i]));
            for (var a = new Jp([], [r * o]), s = new Jp([], [r, o]), u = 0; u < i; u++) Yp.a.assign(s.tensor, e.tensor.pick(null, null, u)), a.replaceTensorData(s.tensor.data), Yp.a.assign(this.imColsMat.tensor.pick(null, u), a.tensor);
            return this.imColsMat
          }
        }, {
          key: "_w2row",
          value: function t() {
            var e = Ht(this.weights.kernel.tensor.shape, 4),
              n = e[0],
              r = e[1],
              o = e[2],
              i = e[3];
            this.wRowsMat = new Jp([], [i, n * r * o]);
            for (var a = new Jp([], [n * r * o]), s = new Jp([], [n, r, o]), u = 0; u < i; u++) Yp.a.assign(s.tensor, this.weights.kernel.tensor.pick(null, null, null, u)), a.replaceTensorData(s.tensor.data), Yp.a.assign(this.wRowsMat.tensor.pick(u, null), a.tensor);
            return this.wRowsMat
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), this._im2col(e);
            var n = e.tensor.shape[0],
              r = e.tensor.shape[1],
              o = Ht(this.kernelShape, 3),
              i = o[0],
              a = o[1],
              s = o[2],
              u = new Jp([], [n * r, a * s * i]);
            Sh()(u.tensor, this.imColsMat.tensor, this.wRowsMat.tensor, 1, 1);
            var c = Ht(this.outputPadding, 4),
              l = c[0],
              p = c[1],
              h = c[2],
              f = c[3];
            this.output = new Jp([], this.outputShape);
            for (var d = new Jp([], [this.outputShape[0] + l + p, this.outputShape[1] + h + f, this.outputShape[2]]), m = [a, s, i], y = new Jp([], m), v = new Jp([], [a * s * i]), g = 0, _ = 0; _ < n; _++)
              for (var b = 0; b < r; b++) {
                Yp.a.assign(v.tensor, u.tensor.pick(g, null)), y.replaceTensorData(v.tensor.data);
                var x = _ * this.strides[0],
                  w = b * this.strides[1];
                Yp.a.addeq(d.tensor.hi(x + a, w + s, this.outputShape[2]).lo(x, w, 0), y.tensor), g += 1
              }
            if (Yp.a.assign(this.output.tensor, d.tensor.hi(this.outputShape[0] + l, this.outputShape[1] + h, this.outputShape[2]).lo(l, h, 0)), this.useBias)
              for (var S = 0; S < i; S++) Yp.a.addseq(this.output.tensor.pick(null, null, S), this.weights.bias.tensor.get(S));
            this.activationFunc(this.output), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1))
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            if (!this.indexMap) {
              var e = this.inputShape[0],
                n = this.inputShape[1],
                r = Ht(this.kernelShape, 3),
                o = r[0],
                i = r[1],
                a = r[2],
                s = Ht(this.outputPadding, 4),
                u = s[0],
                c = s[1],
                l = s[2],
                p = s[3],
                h = (i - this.strides[0] + 1) * (a - this.strides[1] + 1),
                f = [this.outputShape[0], this.outputShape[1], h],
                d = [this.outputShape[0] + u + c, this.outputShape[1] + l + p, h],
                m = new Jp([], f, {
                  type: Int32Array
                }),
                y = new Jp([], f, {
                  type: Int32Array
                }),
                v = new Jp([], d, {
                  type: Int32Array
                }),
                g = new Jp([], d, {
                  type: Int32Array
                });
              Yp.a.assigns(m.tensor, -1), Yp.a.assigns(y.tensor, -1), Yp.a.assigns(v.tensor, -1), Yp.a.assigns(g.tensor, -1);
              for (var _ = new Jp([], [i, a, o], {
                type: Int32Array
              }), b = 0; b < i * a * o; b++) _.tensor.data[b] = b;
              for (var x = 0; x < e; x++)
                for (var w = 0; w < n; w++) {
                  var S = x * n + w,
                    T = x * this.strides[0],
                    P = w * this.strides[1];
                  Vh(v.tensor.hi(T + i, P + a, h).lo(T, P, 0), S, h), Hh(g.tensor.hi(T + i, P + a, h).lo(T, P, 0), _.tensor.pick(null, null, 0), h)
                }
              Yp.a.assign(m.tensor, v.tensor.hi(this.outputShape[0] + u, this.outputShape[1] + l, h).lo(u, l, 0)), Yp.a.assign(y.tensor, g.tensor.hi(this.outputShape[0] + u, this.outputShape[1] + l, h).lo(u, l, 0));
              var C = [this.outputShape[0] * this.outputShape[1], h];
              this.indexMap = new Jp([], C, {
                type: Int32Array
              });
              for (var k = new Jp([], [h], {
                type: Int32Array
              }), O = 0; O < this.outputShape[0]; O++)
                for (var E = 0; E < this.outputShape[1]; E++) {
                  for (var j = 0; j < h; j++) {
                    var A = m.tensor.get(O, E, j),
                      F = y.tensor.get(O, E, j); - 1 !== A && -1 !== F ? k.tensor.set(j, A * this.weights.kernel.glTextureShape[1] + F) : k.tensor.set(j, -1)
                  }
                  Yp.a.assign(this.indexMap.tensor.pick(O * this.outputShape[1] + E, null), k.tensor)
                }
              this.indexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.is2DReshaped || e.is2DSquareReshaped ? (this.inputShape = e.originalShape, this._calcOutputShape(this.inputShape)) : (this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), this._im2col(e), this.imColsMat.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }));
            var n = e.is2DReshaped || e.is2DSquareReshaped ? e : this.imColsMat;
            if (!this.matMulResult) {
              var r = [n.glTextureShape[0], this.weights.kernel.glTextureShape[1]];
              this.matMulResult = new Jp([], r), this.matMulResult.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              })
            }
            if ("linear" !== this.activation && !this.outputPreactiv) {
              var o = [this.outputShape[0] * this.outputShape[1], this.outputShape[2]];
              this.outputPreactiv = new Jp([], o), this.outputPreactiv.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              }), this.outputPreactiv.is2DReshaped = !0, this.outputPreactiv.originalShape = this.outputShape, this.outputPreactiv.indicesForReshaped = h(this.outputShape, !1, -1)
            }
            if (!this.output) {
              var i = [this.outputShape[0] * this.outputShape[1], this.outputShape[2]];
              this.output = new Jp([], i), this.output.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              }), this.output.is2DReshaped = !0, this.output.originalShape = this.outputShape, this.output.indicesForReshaped = h(this.outputShape, !1, -1)
            }
            Up.runProgram({
              program: this.matMulProgram,
              output: this.matMulResult,
              inputs: [{
                input: n,
                name: "A"
              }, {
                input: this.weights.kernel,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }],
              supportsTextureFragments: !0
            }), this._createIndexMap();
            var a = Boolean(this.matMulResult.glTextureFragments);
            if (a && this.matMulResult.convert2DRowFragmentedGLTextureToColStack(), !this.convTransposeProgram) {
              var s = yt("conv2dTranspose", this.output.glTextureFragmentShape ? this.output.glTextureFragmentShape : this.output.glTextureShape, this.matMulResult.glTextureFragmentShape ? this.matMulResult.glTextureFragmentShape : this.matMulResult.glTextureShape, this.indexMap.glTextureFragmentShape ? this.indexMap.glTextureFragmentShape : this.indexMap.glTextureShape, this.useBias, a);
              this.convTransposeProgram = Up.compileProgram(s)
            }
            Up.runProgram({
              program: this.convTransposeProgram,
              output: "linear" === this.activation ? this.output : this.outputPreactiv,
              inputs: [{
                input: this.matMulResult,
                name: "matMulResult"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }].concat(Wt(this.useBias ? [{
                input: this.weights.bias,
                name: "bias"
              }] : [])),
              supportsTextureFragments: !0
            }), a && this.matMulResult.removeGLTextureFragmentsAsColStack(), "linear" !== this.activation && Up.runProgram({
              program: this.activationProgram,
              output: this.output,
              inputs: [{
                input: this.outputPreactiv,
                name: "x"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.reshapeFrom2D(), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1)))
          }
        }]), e
      }(Bp),
      Xh = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Yh = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 inputSize = textureSize(x, 0);\n  ivec2 outputSize = textureSize(indexMap, 0);\n  int out_x = int(float(outputSize[0]) * outTex.x);\n  int out_y = int(float(outputSize[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    int fragmentIndex = int(floor(float(rowIndex) / float(inputSize[1])));\n    rowIndex = int(mod(float(rowIndex), float(inputSize[1])));\n    colIndex = fragmentIndex * inputCols + colIndex;\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      $h = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      Kh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          re(this, e), t = ae(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Conv3D";
          var r = n.filters,
            o = void 0 === r ? 1 : r,
            i = n.kernel_size,
            a = void 0 === i ? [1, 1, 1] : i,
            s = n.strides,
            u = void 0 === s ? [1, 1, 1] : s,
            c = n.padding,
            l = void 0 === c ? "valid" : c,
            p = n.data_format,
            h = void 0 === p ? "channels_last" : p,
            f = n.dilation_rate,
            d = void 0 === f ? [1, 1, 1] : f,
            m = n.activation,
            y = void 0 === m ? "linear" : m,
            v = n.use_bias,
            g = void 0 === v || v;
          return Array.isArray(a) ? t.kernelShape = [o].concat(ne(a)) : t.kernelShape = [o, a, a, a], Array.isArray(u) ? t.strides = u : t.strides = [u, u, u], "valid" === l || "same" === l ? t.padding = l : t.throwError("Invalid padding."), "channels_last" === h || "channels_first" === h ? t.dataFormat = h : t.throwError("Only channels_last and channels_first data formats are allowed."), Array.isArray(d) ? t.dilationRate = d : t.dilationRate = [d, d, d], 1 === t.dilationRate[0] && 1 === t.dilationRate[1] && 1 === t.dilationRate[2] || 1 === t.strides[0] && 1 === t.strides[1] && 1 === t.strides[2] || t.throwError("Incompatible combination of dilation_rate with strides."), t.activation = y, t.activationFunc = Es[y], t.useBias = g, t.params = t.useBias ? ["kernel", "bias"] : ["kernel"], t.description = "".concat(t.kernelShape[0], " ").concat(t.kernelShape.slice(1).join("x"), " filters"), t.description += t.strides.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.strides.join("x"), " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.description += t.dilationRate.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.dilationRate.join("x"), " dilation") : "", t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.gpu && (t.mapInputProgram = Up.compileProgram(Xh), t.mapInputFragmentsProgram = Up.compileProgram(Yh), t.matMulProgram = Up.compileProgram($h), t.activationProgram = Up.compileProgram(js[t.activation])), t
        }
        return ue(e, t), ie(e, [{
          key: "setWeights",
          value: function t(n) {
            "channels_first" === this.dataFormat && (n[0].tensor = n[0].tensor.transpose(2, 3, 4, 1, 0)), se(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "setWeights", this).call(this, n, !1), this._w2row(), this.gpu && (this.weights.kernel = this.wRowsMat, this.weights.kernel.createGLTexture({
              type: "2d",
              format: "float"
            }), this.useBias && this.weights.bias.createGLTexture({
              type: "2d",
              format: "float"
            }))
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_calcOutputShape",
          value: function t(e) {
            if (!this.outputShape || !this.inputPadding) {
              var n = e[0],
                r = e[1],
                o = e[2],
                i = ee(this.kernelShape, 4),
                a = i[0],
                s = i[1],
                u = i[2],
                c = i[3],
                l = s + (s - 1) * (this.dilationRate[0] - 1),
                p = u + (u - 1) * (this.dilationRate[1] - 1),
                h = c + (c - 1) * (this.dilationRate[2] - 1),
                f = "same" === this.padding ? Math.floor((n + this.strides[0] - 1) / this.strides[0]) : Math.floor((n - l + this.strides[0]) / this.strides[0]),
                d = "same" === this.padding ? Math.floor((r + this.strides[1] - 1) / this.strides[1]) : Math.floor((r - p + this.strides[1]) / this.strides[1]),
                m = "same" === this.padding ? Math.floor((o + this.strides[2] - 1) / this.strides[2]) : Math.floor((o - h + this.strides[2]) / this.strides[2]),
                y = a,
                v = "same" === this.padding ? Math.max(0, Math.floor((f - 1) * this.strides[0] + l - n)) : 0,
                g = "same" === this.padding ? Math.max(0, Math.floor((d - 1) * this.strides[1] + p - r)) : 0,
                _ = "same" === this.padding ? Math.max(0, Math.floor((m - 1) * this.strides[2] + h - o)) : 0,
                b = Math.floor(v / 2),
                x = v - b,
                w = Math.floor(g / 2),
                S = g - w,
                T = Math.floor(_ / 2),
                P = _ - T;
              this.outputShape = [f, d, m, y], this.inputPadding = [b, x, w, S, T, P]
            }
          }
        }, {
          key: "_padInput",
          value: function t(e) {
            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
            if ("same" === this.padding) {
              var r = ee(e.tensor.shape, 4),
                o = r[0],
                i = r[1],
                a = r[2],
                s = r[3],
                u = ee(this.inputPadding, 6),
                c = u[0],
                l = u[1],
                p = u[2],
                h = u[3],
                f = u[4],
                d = u[5],
                m = o + c + l,
                y = i + p + h,
                v = a + f + d,
                g = new Jp([], [m, y, v, s]);
              return 0 !== n && Yp.a.assigns(g.tensor, n), Yp.a.assign(g.tensor.hi(o + c, i + p, a + f, s).lo(c, p, f, 0), e.tensor), g
            }
            return e
          }
        }, {
          key: "_vol2col",
          value: function t(e) {
            var n = ee(e.tensor.shape, 4),
              r = n[0],
              o = n[1],
              i = n[2],
              a = n[3],
              s = this.kernelShape[1],
              u = this.kernelShape[2],
              c = this.kernelShape[3],
              l = this.outputShape[0],
              p = this.outputShape[1],
              h = this.outputShape[2],
              f = l * p * h,
              d = s * u * c * a,
              m = s + (s - 1) * (this.dilationRate[0] - 1),
              y = u + (u - 1) * (this.dilationRate[1] - 1),
              v = c + (c - 1) * (this.dilationRate[2] - 1);
            if (this.volColsMat || (this.volColsMat = new Jp([], [f, d])), 1 === m && 1 === y && 1 === v && 1 === this.strides[0] && 1 === this.strides[1] && 1 === this.strides[2]) return this.volColsMat.replaceTensorData(e.tensor.data), this.volColsMat;
            for (var g = new Jp([], [s, u, c, a]), _ = 0, b = 0, x = r - m; b <= x; b += this.strides[0])
              for (var w = 0, S = o - y; w <= S; w += this.strides[1])
                for (var T = 0, P = i - v; T <= P; T += this.strides[2]) Yp.a.assign(g.tensor, e.tensor.hi(b + m, w + y, T + v, a).lo(b, w, T, 0).step(this.dilationRate[0], this.dilationRate[1], this.dilationRate[2], 1)), this.volColsMat.tensor.data.set(g.tensor.data, _), _ += d;
            return this.volColsMat
          }
        }, {
          key: "_w2row",
          value: function t() {
            var e = this.weights.kernel.tensor.shape[3],
              n = ee(this.kernelShape, 4),
              r = n[0],
              o = n[1],
              i = n[2],
              a = n[3],
              s = o * i * a * e;
            this.wRowsMat = new Jp([], [s, r]);
            for (var u = new Jp([], [o, i, a, e]), c = new Jp([], [s]), l = 0; l < r; l++) Yp.a.assign(u.tensor, this.weights.kernel.tensor.pick(null, null, null, null, l)), c.replaceTensorData(u.tensor.data), Yp.a.assign(this.wRowsMat.tensor.pick(null, l), c.tensor);
            return this.wRowsMat
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), e = this._padInput(e), this._vol2col(e);
            var n = this.kernelShape[0],
              r = this.outputShape[0],
              o = this.outputShape[1],
              i = this.outputShape[2],
              a = r * o * i,
              s = new Jp([], [a, n]);
            if (this.useBias)
              for (var u = 0; u < n; u++) Yp.a.assigns(s.tensor.pick(null, u), this.weights.bias.tensor.get(u));
            Sh()(s.tensor, this.volColsMat.tensor, this.wRowsMat.tensor, 1, 1), this.output = new Jp([], this.outputShape);
            for (var c = new Jp([], [r * o * i]), l = new Jp([], [r, o, i]), p = 0; p < n; p++) Yp.a.assign(c.tensor, s.tensor.pick(null, p)), l.replaceTensorData(c.tensor.data), Yp.a.assign(this.output.tensor.pick(null, null, null, p), l.tensor);
            this.activationFunc(this.output), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e) {
            if (!this.indexMap) {
              var n = ee(this.inputShape, 4),
                r = n[0],
                o = n[1],
                i = n[2],
                a = n[3],
                s = new Jp(e.data, e.shape, {
                  type: Int32Array
                });
              if ("same" === this.padding) {
                var u = ee(this.inputPadding, 6),
                  c = u[0],
                  l = u[1],
                  p = u[2],
                  h = u[3],
                  f = u[4],
                  d = u[5];
                r = r + c + l, o = o + p + h, i = i + f + d;
                var m = -1;
                s = this._padInput(s, -1)
              }
              var y = this.kernelShape[1],
                v = this.kernelShape[2],
                g = this.kernelShape[3],
                _ = this.outputShape[0],
                b = this.outputShape[1],
                x = this.outputShape[2],
                w = _ * b * x,
                S = y * v * g * a,
                T = y + (y - 1) * (this.dilationRate[0] - 1),
                P = v + (v - 1) * (this.dilationRate[1] - 1),
                C = g + (g - 1) * (this.dilationRate[2] - 1);
              this.indexMap = new Jp([], [w, S], {
                type: Int32Array
              });
              for (var k = new Jp([], [y, v, g, a]), O = 0, E = 0, j = r - T; E <= j; E += this.strides[0])
                for (var A = 0, F = o - P; A <= F; A += this.strides[1])
                  for (var M = 0, R = i - C; M <= R; M += this.strides[2]) Yp.a.assign(k.tensor, s.tensor.hi(E + T, A + P, M + C, a).lo(E, A, M, 0).step(this.dilationRate[0], this.dilationRate[1], this.dilationRate[2], 1)), this.indexMap.tensor.data.set(k.tensor.data, O), O += S;
              this.indexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            var n;
            if (e.is2DReshaped || e.is2DSquareReshaped ? (this.inputShape = e.originalShape, this._calcOutputShape(this.inputShape), this._createIndexMap(e.indicesForReshaped), n = [this.indexMap.glTextureShape[0], this.weights.kernel.glTextureShape[1]]) : (this.inputShape = e.tensor.shape, this._calcOutputShape(this.inputShape), e = this._padInput(e), this._vol2col(e), this.volColsMat.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), n = [this.volColsMat.glTextureShape[0], this.weights.kernel.glTextureShape[1]]), "linear" === this.activation || this.outputPreactiv || (this.outputPreactiv = new Jp([], n), this.outputPreactiv.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.outputPreactiv.is2DReshaped = !0, this.outputPreactiv.originalShape = this.outputShape, this.outputPreactiv.indicesForReshaped = h(this.outputShape, !1, -1)), this.output || (this.output = new Jp([], n), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output.is2DReshaped = !0, this.output.originalShape = this.outputShape, this.output.indicesForReshaped = h(this.outputShape, !1, -1)), e.is2DReshaped || e.is2DSquareReshaped) {
              var r = Boolean(e.glTextureFragments);
              if (r && e.convert2DRowFragmentedGLTextureToColStack(), !this.convProgram) {
                var o = yt("conv2d", this.output.glTextureFragmentShape ? this.output.glTextureFragmentShape : this.output.glTextureShape, e.glTextureFragmentShape ? e.glTextureFragmentShape : e.glTextureShape, this.indexMap.glTextureFragmentShape ? this.indexMap.glTextureFragmentShape : this.indexMap.glTextureShape, this.useBias, r);
                this.convProgram = Up.compileProgram(o)
              }
              Up.runProgram({
                program: this.convProgram,
                output: "linear" === this.activation ? this.output : this.outputPreactiv,
                inputs: [{
                  input: e,
                  name: "x"
                }, {
                  input: this.indexMap,
                  name: "indexMap"
                }, {
                  input: this.weights.kernel,
                  name: "kernel"
                }].concat(ne(this.useBias ? [{
                  input: this.weights.bias,
                  name: "bias"
                }] : [])),
                supportsTextureFragments: !0
              }), r && e.removeGLTextureFragmentsAsColStack()
            } else {
              var i = [{
                input: this.volColsMat,
                name: "A"
              }, {
                input: this.weights.kernel,
                name: "B"
              }];
              this.useBias && i.push({
                input: this.weights.bias,
                name: "C"
              }), Up.runProgram({
                program: this.matMulProgram,
                output: "linear" === this.activation ? this.output : this.outputPreactiv,
                inputs: i,
                uniforms: [{
                  value: this.useBias ? 1 : 0,
                  type: "bool",
                  name: "addC"
                }],
                supportsTextureFragments: !0
              })
            }
            "linear" !== this.activation && Up.runProgram({
              program: this.activationProgram,
              output: this.output,
              inputs: [{
                input: this.outputPreactiv,
                name: "x"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.reshapeFrom2D(), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2)))
          }
        }]), e
      }(Bp),
      Jh = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Qh = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          le(this, e), t = fe(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Cropping1D";
          var r = n.cropping,
            o = void 0 === r ? [0, 0] : r;
          return Array.isArray(o) ? t.cropping = o : t.cropping = [o, o], t.description = "".concat(JSON.stringify(t.cropping)), t.gpu && (t.mapInputProgram = Up.compileProgram(Jh)), t
        }
        return de(e, t), he(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] - this.cropping[0] - this.cropping[1], this.inputShape[1]], this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor, e.tensor.hi(this.inputShape[0] - this.cropping[1], this.inputShape[2]).lo(this.cropping[0], 0))
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            var e, n;
            if (!this.indexMap) {
              for (var r = new Jp([], this.inputShape, {
                type: Int32Array
              }), o = new Jp([], this.inputShape, {
                type: Int32Array
              }), i = new Jp([], this.inputShape, {
                type: Int32Array
              }), a = 0; a < this.inputShape[0]; a++) Yp.a.assigns(o.tensor.pick(a, null), a);
              for (var s = 0; s < this.inputShape[1]; s++) Yp.a.assigns(i.tensor.pick(null, s), s);
              Yp.a.muls(r.tensor, o.tensor, this.inputShape[1]), Yp.a.addeq(r.tensor, i.tensor), this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              var u = [this.cropping[0], 0],
                c = [this.inputShape[0] - this.cropping[1], this.inputShape[2]];
              Yp.a.assign(this.indexMap.tensor, (e = (n = r.tensor).hi.apply(n, c)).lo.apply(e, u)), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] - this.cropping[0] - this.cropping[1], this.inputShape[1]], this._createIndexMap(), this.output || (this.output = new Jp([], this.outputShape), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Zh = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      tf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          ye(this, e), t = _e(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Cropping2D";
          var r = n.cropping,
            o = void 0 === r ? [
              [0, 0],
              [0, 0]
            ] : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return Array.isArray(o) ? Array.isArray(o[0]) ? t.cropping = o : t.cropping = [
            [o[0], o[0]],
            [o[1], o[1]]
          ] : t.cropping = [
            [o, o],
            [o, o]
          ], t.dataFormat = a, t.description = "".concat(JSON.stringify(t.cropping)), t.gpu && (t.mapInputProgram = Up.compileProgram(Zh)), t
        }
        return be(e, t), ge(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0)), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] - this.cropping[0][0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][0] - this.cropping[1][1], this.inputShape[2]], this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor, e.tensor.hi(this.inputShape[0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][1], this.inputShape[2]).lo(this.cropping[0][0], this.cropping[1][0], 0)), "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(2, 0, 1), this.output.tensor = this.output.tensor.transpose(2, 0, 1))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            var r, o;
            if (!this.indexMap) {
              var i = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              var a = "channels_first" === this.dataFormat ? [0, this.cropping[0][0], this.cropping[1][0]] : [this.cropping[0][0], this.cropping[1][0], 0],
                s = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] - this.cropping[0][1], this.inputShape[2] - this.cropping[1][1]] : [this.inputShape[0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][1], this.inputShape[2]];
              Yp.a.assign(this.indexMap.tensor, (r = (o = i.tensor).hi.apply(o, s)).lo.apply(r, a)), n ? this.indexMap.reshapeTo2D() : this.indexMap.reshapeTo2DSquare(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.inputShape = e.originalShape, this.outputShape = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] - this.cropping[0][0] - this.cropping[0][1], this.inputShape[2] - this.cropping[1][0] - this.cropping[1][1]] : [this.inputShape[0] - this.cropping[0][0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][0] - this.cropping[1][1], this.inputShape[2]], this._createIndexMap(e.indicesForReshaped, e.is2DReshaped), this.output || (this.output = new Jp([], this.outputShape), e.is2DReshaped ? this.output.reshapeTo2D() : this.output.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      ef = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      nf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          we(this, e), t = Pe(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Cropping3D";
          var r = n.cropping,
            o = void 0 === r ? [
              [0, 0],
              [0, 0],
              [0, 0]
            ] : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return Array.isArray(o) ? Array.isArray(o[0]) ? t.cropping = o : t.cropping = [
            [o[0], o[0]],
            [o[1], o[1]],
            [o[2], o[2]]
          ] : t.cropping = [
            [o, o],
            [o, o],
            [o, o]
          ], t.dataFormat = a, t.description = "".concat(JSON.stringify(t.cropping)), t.gpu && (t.mapInputProgram = Up.compileProgram(ef)), t
        }
        return Ce(e, t), Te(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0)), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] - this.cropping[0][0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][0] - this.cropping[1][1], this.inputShape[2] - this.cropping[2][0] - this.cropping[2][1], this.inputShape[3]], this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor, e.tensor.hi(this.inputShape[0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][1], this.inputShape[2] - this.cropping[2][1], this.inputShape[3]).lo(this.cropping[0][0], this.cropping[1][0], this.cropping[2][0], 0)), "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(3, 0, 1, 2), this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            var r, o;
            if (!this.indexMap) {
              var i = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              var a = "channels_first" === this.dataFormat ? [0, this.cropping[0][0], this.cropping[1][0], this.cropping[2][0]] : [this.cropping[0][0], this.cropping[1][0], this.cropping[2][0], 0],
                s = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] - this.cropping[0][1], this.inputShape[2] - this.cropping[1][1], this.inputShape[3] - this.cropping[2][1]] : [this.inputShape[0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][1], this.inputShape[2] - this.cropping[2][1], this.inputShape[3]];
              Yp.a.assign(this.indexMap.tensor, (r = (o = i.tensor).hi.apply(o, s)).lo.apply(r, a)), n ? this.indexMap.reshapeTo2D() : this.indexMap.reshapeTo2DSquare(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.inputShape = e.originalShape, this.outputShape = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] - this.cropping[0][0] - this.cropping[0][1], this.inputShape[2] - this.cropping[1][0] - this.cropping[1][1], this.inputShape[3] - this.cropping[2][0] - this.cropping[2][1]] : [this.inputShape[0] - this.cropping[0][0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][0] - this.cropping[1][1], this.inputShape[2] - this.cropping[2][0] - this.cropping[2][1], this.inputShape[3]], this._createIndexMap(e.indicesForReshaped, e.is2DReshaped), this.output || (this.output = new Jp([], this.outputShape), e.is2DReshaped ? this.output.reshapeTo2D() : this.output.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      rf = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      of = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Oe(this, e), t = Ae(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "UpSampling1D";
          var r = n.size,
            o = void 0 === r ? 2 : r;
          return t.size = o, t.description = "size ".concat(o), t.gpu && (t.mapInputProgram = Up.compileProgram(rf)), t
        }
        return Fe(e, t), je(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] * this.size, this.inputShape[1]], this.output = new Jp([], this.outputShape);
            for (var n = 0; n < this.size; n++) Yp.a.assign(this.output.tensor.lo(n, 0).step(this.size, 1), e.tensor)
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            if (!this.indexMap) {
              for (var e = new Jp([], this.inputShape, {
                type: Int32Array
              }), n = new Jp([], this.inputShape, {
                type: Int32Array
              }), r = new Jp([], this.inputShape, {
                type: Int32Array
              }), o = 0; o < this.inputShape[0]; o++) Yp.a.assigns(n.tensor.pick(o, null), o);
              for (var i = 0; i < this.inputShape[1]; i++) Yp.a.assigns(r.tensor.pick(null, i), i);
              Yp.a.muls(e.tensor, n.tensor, this.inputShape[1]), Yp.a.addeq(e.tensor, r.tensor), this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              for (var a = 0; a < this.size; a++) Yp.a.assign(this.indexMap.tensor.lo(a, 0).step(this.size, 1), e.tensor);
              this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] * this.size, this.inputShape[1]], this._createIndexMap(), this.output || (this.output = new Jp([], this.outputShape), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      af = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      sf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Re(this, e), t = Le(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "UpSampling2D";
          var r = n.size,
            o = void 0 === r ? [2, 2] : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return Array.isArray(o) ? t.size = o : t.size = [o, o], t.dataFormat = a, t.description = "size ".concat(t.size.join("x")), t.gpu && (t.mapInputProgram = Up.compileProgram(af)), t
        }
        return ze(e, t), Ie(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0)), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] * this.size[0], this.inputShape[1] * this.size[1], this.inputShape[2]], this.output = new Jp([], this.outputShape);
            for (var n = 0; n < this.size[0]; n++)
              for (var r = 0; r < this.size[1]; r++) Yp.a.assign(this.output.tensor.lo(n, r, 0).step(this.size[0], this.size[1], 1), e.tensor);
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(2, 0, 1), this.output.tensor = this.output.tensor.transpose(2, 0, 1))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            if (!this.indexMap) {
              var r = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              for (var o = 0; o < this.size[0]; o++)
                for (var i = 0; i < this.size[1]; i++) {
                  var a, s, u = "channels_first" === this.dataFormat ? [0, o, i] : [o, i, 0],
                    c = "channels_first" === this.dataFormat ? [1, this.size[0], this.size[1]] : [this.size[0], this.size[1], 1];
                  Yp.a.assign((a = (s = this.indexMap.tensor).lo.apply(s, u)).step.apply(a, c), r.tensor)
                }
              n ? this.indexMap.reshapeTo2D() : this.indexMap.reshapeTo2DSquare(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.inputShape = e.originalShape, this.outputShape = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] * this.size[0], this.inputShape[2] * this.size[1]] : [this.inputShape[0] * this.size[0], this.inputShape[1] * this.size[1], this.inputShape[2]], this._createIndexMap(e.indicesForReshaped, e.is2DReshaped), this.output || (this.output = new Jp([], this.outputShape), e.is2DReshaped ? this.output.reshapeTo2D() : this.output.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      uf = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      cf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Ge(this, e), t = qe(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "UpSampling3D";
          var r = n.size,
            o = void 0 === r ? [2, 2, 2] : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return Array.isArray(o) ? t.size = o : t.size = [o, o, o], t.dataFormat = a, t.description = "size ".concat(t.size.join("x")), t.gpu && (t.mapInputProgram = Up.compileProgram(uf)), t
        }
        return Ve(e, t), Be(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0)), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] * this.size[0], this.inputShape[1] * this.size[1], this.inputShape[2] * this.size[2], this.inputShape[3]], this.output = new Jp([], this.outputShape);
            for (var n = 0; n < this.size[0]; n++)
              for (var r = 0; r < this.size[1]; r++)
                for (var o = 0; o < this.size[2]; o++) Yp.a.assign(this.output.tensor.lo(n, r, o, 0).step(this.size[0], this.size[1], this.size[2], 1), e.tensor);
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(3, 0, 1, 2), this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            if (!this.indexMap) {
              var r = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              for (var o = 0; o < this.size[0]; o++)
                for (var i = 0; i < this.size[1]; i++)
                  for (var a = 0; a < this.size[2]; a++) {
                    var s, u, c = "channels_first" === this.dataFormat ? [0, o, i, a] : [o, i, a, 0],
                      l = "channels_first" === this.dataFormat ? [1, this.size[0], this.size[1], this.size[2]] : [this.size[0], this.size[1], this.size[2], 1];
                    Yp.a.assign((s = (u = this.indexMap.tensor).lo.apply(u, c)).step.apply(s, l), r.tensor)
                  }
              n ? this.indexMap.reshapeTo2D() : this.indexMap.reshapeTo2DSquare(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.inputShape = e.originalShape, this.outputShape = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] * this.size[0], this.inputShape[2] * this.size[1], this.inputShape[3] * this.size[2]] : [this.inputShape[0] * this.size[0], this.inputShape[1] * this.size[1], this.inputShape[2] * this.size[2], this.inputShape[3]], this._createIndexMap(e.indicesForReshaped, e.is2DReshaped), this.output || (this.output = new Jp([], this.outputShape), e.is2DReshaped ? this.output.reshapeTo2D() : this.output.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      lf = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      pf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          We(this, e), t = $e(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "ZeroPadding1D";
          var r = n.padding,
            o = void 0 === r ? [1, 1] : r;
          return Array.isArray(o) ? t.padding = o : t.padding = [o, o], t.description = "".concat(JSON.stringify(t.padding)), t.gpu && (t.mapInputProgram = Up.compileProgram(lf)), t
        }
        return Ke(e, t), Ye(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] + this.padding[0] + this.padding[1], this.inputShape[1]], this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor.hi(this.inputShape[0] + this.padding[0], this.inputShape[1]).lo(this.padding[0], 0), e.tensor)
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            var e, n;
            if (!this.indexMap) {
              for (var r = new Jp([], this.inputShape, {
                type: Int32Array
              }), o = new Jp([], this.inputShape, {
                type: Int32Array
              }), i = new Jp([], this.inputShape, {
                type: Int32Array
              }), a = 0; a < this.inputShape[0]; a++) Yp.a.assigns(o.tensor.pick(a, null), a);
              for (var s = 0; s < this.inputShape[1]; s++) Yp.a.assigns(i.tensor.pick(null, s), s);
              Yp.a.muls(r.tensor, o.tensor, this.inputShape[1]), Yp.a.addeq(r.tensor, i.tensor), this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              var u = [this.padding[0], 0],
                c = [this.inputShape[0] + this.padding[0], this.inputShape[1]];
              Yp.a.assigns(this.indexMap.tensor, -1), Yp.a.assign((e = (n = this.indexMap.tensor).hi.apply(n, c)).lo.apply(e, u), r.tensor), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] + this.padding[0] + this.padding[1], this.inputShape[1]], this._createIndexMap(), this.output || (this.output = new Jp([], this.outputShape), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      hf = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      ff = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Qe(this, e), t = en(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "ZeroPadding2D";
          var r = n.padding,
            o = void 0 === r ? [
              [1, 1],
              [1, 1]
            ] : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return Array.isArray(o) ? Array.isArray(o[0]) ? t.padding = o : t.padding = [
            [o[0], o[0]],
            [o[1], o[1]]
          ] : t.padding = [
            [o, o],
            [o, o]
          ], t.dataFormat = a, t.description = "".concat(JSON.stringify(t.padding)), t.gpu && (t.mapInputProgram = Up.compileProgram(hf)), t
        }
        return nn(e, t), tn(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0)), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] + this.padding[0][0] + this.padding[0][1], this.inputShape[1] + this.padding[1][0] + this.padding[1][1], this.inputShape[2]], this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor.hi(this.inputShape[0] + this.padding[0][0], this.inputShape[1] + this.padding[1][0], this.inputShape[2]).lo(this.padding[0][0], this.padding[1][0], 0), e.tensor), "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(2, 0, 1), this.output.tensor = this.output.tensor.transpose(2, 0, 1))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            var r, o;
            if (!this.indexMap) {
              var i = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              var a = "channels_first" === this.dataFormat ? [0, this.padding[0][0], this.padding[1][0]] : [this.padding[0][0], this.padding[1][0], 0],
                s = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] + this.padding[0][0], this.inputShape[2] + this.padding[1][0]] : [this.inputShape[0] + this.padding[0][0], this.inputShape[1] + this.padding[1][0], this.inputShape[2]];
              Yp.a.assigns(this.indexMap.tensor, -1), Yp.a.assign((r = (o = this.indexMap.tensor).hi.apply(o, s)).lo.apply(r, a), i.tensor), n ? this.indexMap.reshapeTo2D() : this.indexMap.reshapeTo2DSquare(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.inputShape = e.originalShape, this.outputShape = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] + this.padding[0][0] + this.padding[0][1], this.inputShape[2] + this.padding[1][0] + this.padding[1][1]] : [this.inputShape[0] + this.padding[0][0] + this.padding[0][1], this.inputShape[1] + this.padding[1][0] + this.padding[1][1], this.inputShape[2]], this._createIndexMap(e.indicesForReshaped, e.is2DReshaped), this.output || (this.output = new Jp([], this.outputShape), e.is2DReshaped ? this.output.reshapeTo2D() : this.output.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      df = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      mf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          on(this, e), t = un(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "ZeroPadding3D";
          var r = n.padding,
            o = void 0 === r ? [
              [1, 1],
              [1, 1],
              [1, 1]
            ] : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return Array.isArray(o) ? Array.isArray(o[0]) ? t.padding = o : t.padding = [
            [o[0], o[0]],
            [o[1], o[1]],
            [o[2], o[2]]
          ] : t.padding = [
            [o, o],
            [o, o],
            [o, o]
          ], t.dataFormat = a, t.description = "".concat(JSON.stringify(t.padding)), t.gpu && (t.mapInputProgram = Up.compileProgram(df)), t
        }
        return cn(e, t), sn(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0)), this.inputShape = e.tensor.shape, this.outputShape = [this.inputShape[0] + this.padding[0][0] + this.padding[0][1], this.inputShape[1] + this.padding[1][0] + this.padding[1][1], this.inputShape[2] + this.padding[2][0] + this.padding[2][1], this.inputShape[3]], this.output = new Jp([], this.outputShape), Yp.a.assign(this.output.tensor.hi(this.inputShape[0] + this.padding[0][0], this.inputShape[1] + this.padding[1][0], this.inputShape[2] + this.padding[2][0], this.inputShape[3]).lo(this.padding[0][0], this.padding[1][0], this.padding[2][0], 0), e.tensor), "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(3, 0, 1, 2), this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2))
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            var r, o;
            if (!this.indexMap) {
              var i = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMap = new Jp([], this.outputShape, {
                type: Int32Array
              });
              var a = "channels_first" === this.dataFormat ? [0, this.padding[0][0], this.padding[1][0], this.padding[2][0]] : [this.padding[0][0], this.padding[1][0], this.padding[2][0], 0],
                s = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] + this.padding[0][0], this.inputShape[2] + this.padding[1][0], this.inputShape[3] + this.padding[2][0]] : [this.inputShape[0] + this.padding[0][0], this.inputShape[1] + this.padding[1][0], this.inputShape[2] + this.padding[2][0], this.inputShape[3]];
              Yp.a.assigns(this.indexMap.tensor, -1), Yp.a.assign((r = (o = this.indexMap.tensor).hi.apply(o, s)).lo.apply(r, a), i.tensor), n ? this.indexMap.reshapeTo2D() : this.indexMap.reshapeTo2DSquare(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.inputShape = e.originalShape, this.outputShape = "channels_first" === this.dataFormat ? [this.inputShape[0], this.inputShape[1] + this.padding[0][0] + this.padding[0][1], this.inputShape[2] + this.padding[1][0] + this.padding[1][1], this.inputShape[3] + this.padding[2][0] + this.padding[2][1]] : [this.inputShape[0] + this.padding[0][0] + this.padding[0][1], this.inputShape[1] + this.padding[1][0] + this.padding[1][1], this.inputShape[2] + this.padding[2][0] + this.padding[2][1], this.inputShape[3]], this._createIndexMap(e.indicesForReshaped, e.is2DReshaped), this.output || (this.output = new Jp([], this.outputShape), e.is2DReshaped ? this.output.reshapeTo2D() : this.output.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      yf = n(59),
      vf = n.n(yf),
      gf = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      _f = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          pn(this, e), t = dn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Dense";
          var r = n.units,
            o = void 0 === r ? 1 : r,
            i = n.activation,
            a = void 0 === i ? "linear" : i,
            s = n.input_dim,
            u = void 0 === s ? null : s,
            c = n.use_bias,
            l = void 0 === c || c;
          return t.description = "".concat(a, " activation, output dimensions: ").concat(o), t.activation = a, t.activationFunc = Es[t.activation], t.units = o, t.input_dim = u, t.use_bias = l, t.params = t.use_bias ? ["kernel", "bias"] : ["kernel"], t.input_dim && (t.inputShape = [t.input_dim]), t.gpu && (t.matMulProgram = Up.compileProgram(gf), t.activationProgram = Up.compileProgram(js[t.activation])), t
        }
        return mn(e, t), fn(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = new Jp([], [this.units]), this.use_bias && Yp.a.assign(this.output.tensor, this.weights.bias.tensor), Object(yf.gemv)(1, this.weights.kernel.tensor.transpose(1, 0), e.tensor, 1, this.output.tensor), this.activationFunc(this.output)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), "linear" === this.activation || this.outputPreactiv || (this.outputPreactiv = new Jp([], [this.units]), this.outputPreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.output || (this.output = new Jp([], [this.units]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }));
            var n = [{
              input: e,
              name: "A"
            }, {
              input: this.weights.kernel,
              name: "B"
            }];
            this.use_bias && n.push({
              input: this.weights.bias,
              name: "C"
            }), Up.runProgram({
              program: this.matMulProgram,
              output: "linear" === this.activation ? this.output : this.outputPreactiv,
              inputs: n,
              uniforms: [{
                value: this.use_bias ? 1 : 0,
                type: "bool",
                name: "addC"
              }]
            }), "linear" !== this.activation && Up.runProgram({
              program: this.activationProgram,
              output: this.output,
              inputs: [{
                input: this.outputPreactiv,
                name: "x"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      bf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          vn(this, e), t = bn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Activation";
          var r = n.activation,
            o = void 0 === r ? "linear" : r;
          return t.activation = o, t.activationFunc = Es[o], t.description = "".concat(t.activation), t.gpu && (t.program = Up.compileProgram(js[t.activation])), t
        }
        return xn(e, t), _n(e, [{
          key: "call",
          value: function t(e) {
            return "linear" === this.activation ? (this.output = e, this.output) : (this.gpu ? this._callGPU(e) : this._callCPU(e), this.output)
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = new Jp(new e.arrayType(e.tensor.data), e.tensor.shape), this.activationFunc(this.output)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.output || (this.output = new Jp([], e.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e.is1D ? this.output.is1D = e.is1D : (e.is2DReshaped || e.is2DSquareReshaped) && (e.is2DReshaped ? this.output.is2DReshaped = e.is2DReshaped : e.is2DSquareReshaped && (this.output.is2DSquareReshaped = e.is2DSquareReshaped), this.output.originalShape = e.originalShape, this.output.indicesForReshaped = e.indicesForReshaped)), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      xf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Sn(this, e), t = Cn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Dropout";
          var r = n.rate,
            o = void 0 === r ? .5 : r;
          return t.description = "".concat(o), t.rate = Math.min(Math.max(0, o), 1), t
        }
        return kn(e, t), Pn(e, [{
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), e
      }(Bp),
      wf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          En(this, e), t = Fn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "SpatialDropout1D";
          var r = n.p,
            o = void 0 === r ? .5 : r;
          return t.description = "".concat(o), t.p = Math.min(Math.max(0, o), 1), t
        }
        return Mn(e, t), An(e, [{
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), e
      }(Bp),
      Sf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Dn(this, e), t = zn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "SpatialDropout2D";
          var r = n.rate,
            o = void 0 === r ? .5 : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return t.description = "".concat(o), t.rate = Math.min(Math.max(0, o), 1), t.dataFormat = a, t
        }
        return Un(e, t), Ln(e, [{
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), e
      }(Bp),
      Tf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Nn(this, e), t = Vn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "SpatialDropout3D";
          var r = n.rate,
            o = void 0 === r ? .5 : r,
            i = n.data_format,
            a = void 0 === i ? "channels_last" : i;
          return t.description = "".concat(o), t.rate = Math.min(Math.max(0, o), 1), t.dataFormat = a, t
        }
        return Hn(e, t), qn(e, [{
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), e
      }(Bp),
      Pf = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int outputSize;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  int out_x = int(float(outputSize) * outTex.x);\n  int out_y = 0;\n\n  int i = int(floor(float(out_x) / float(inputCols)));\n  int j = int(mod(float(out_x), float(inputCols)));\n  outColor = vec4(texelFetch(x, ivec2(j, i), 0).r);\n}\n",
      Cf = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int outputSize;\nuniform int inputRows;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  int out_x = int(float(outputSize) * outTex.x);\n  int out_y = 0;\n\n  int rowIndex = int(mod(floor(float(out_x) / float(inputCols)), float(inputRows)));\n  int colIndex = int(mod(float(out_x), float(inputCols)));\n  int fragmentIndex = int(floor(float(out_x) / (float(inputRows) * float(inputCols))));\n  colIndex += fragmentIndex * inputCols;\n  outColor = vec4(texelFetch(x, ivec2(colIndex, rowIndex), 0).r);\n}\n",
      kf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Xn(this, e), t = Kn(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Flatten", t.gpu && (t.flattenProgram = Up.compileProgram(Pf), t.flattenFragmentsProgram = Up.compileProgram(Cf)), t
        }
        return Jn(e, t), $n(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            e.tensor.shape.length <= 1 ? this.output = e : (this.output = new Jp([], [e.tensor.shape.reduce(function(t, e) {
              return t * e
            }, 1)]), this.output.replaceTensorData(e.tensor.data))
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || (e.tensor.shape.length <= 2 ? e.createGLTexture({
              type: "2d",
              format: "float"
            }) : e.tensor.shape.length > 2 && !e.is2DReshaped && (e.reshapeTo2D(), e.createGLTexture({
              type: "2d",
              format: "float"
            }))), this.output || (this.output = new Jp([], [e.glTextureShape.reduce(function(t, e) {
              return t * e
            }, 1)]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), e.glTextureFragments ? (e.convert2DRowFragmentedGLTextureToColStack(), Up.runProgram({
              program: this.flattenFragmentsProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.output.glTextureShape[1],
                type: "int",
                name: "outputSize"
              }, {
                value: e.glTextureShape[0],
                type: "int",
                name: "inputRows"
              }, {
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }],
              supportsTextureFragments: !0
            }), e.removeGLTextureFragmentsAsColStack()) : Up.runProgram({
              program: this.flattenProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.output.glTextureShape[1],
                type: "int",
                name: "outputSize"
              }, {
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }],
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Of = n(164),
      Ef = n.n(Of),
      jf = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Af = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          tr(this, e), t = rr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Reshape";
          var r = n.target_shape,
            o = void 0 === r ? [] : r;
          return t.targetShape = o, t.description = "target shape: ".concat(JSON.stringify(t.targetShape)), t.gpu && (t.mapInputProgram = Up.compileProgram(jf)), t
        }
        return or(e, t), nr(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.targetShape.reduce(function(t, e) {
              return t * e
            }, 1) !== e.tensor.size && this.throwError("The total size of new array must be unchanged in reshape layer."), this.output = new Jp([], this.targetShape), this.output.replaceTensorData(e.tensor.data)
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            if (!this.indexMap) {
              var e = new Jp([], this.inputShape, {
                  type: Int32Array
                }),
                n = new Jp([], this.inputShape, {
                  type: Int32Array
                }),
                r = new Jp([], this.inputShape, {
                  type: Int32Array
                });
              if (2 === this.inputShape.length)
                for (var o = 0; o < this.inputShape[0]; o++) Yp.a.assigns(n.tensor.pick(o, null), o);
              else if (3 === this.inputShape.length)
                for (var i = 0; i < this.inputShape[0]; i++)
                  for (var a = 0; a < this.inputShape[1]; a++) Yp.a.assigns(n.tensor.pick(i, a, null), i * this.inputShape[1] + a);
              else if (4 === this.inputShape.length)
                for (var s = 0; s < this.inputShape[0]; s++)
                  for (var u = 0; u < this.inputShape[1]; u++)
                    for (var c = 0; c < this.inputShape[2]; c++) Yp.a.assigns(n.tensor.pick(s, u, c, null), s * this.inputShape[1] * this.inputShape[2] + u * this.inputShape[2] + c);
              for (var l = 0; l < Ef()(this.inputShape); l++) {
                var p;
                Yp.a.assigns((p = r.tensor).pick.apply(p, Zn(Array(this.inputShape.length - 1).fill(null)).concat([l])), l)
              }
              Yp.a.muls(e.tensor, n.tensor, Ef()(this.inputShape)), Yp.a.addeq(e.tensor, r.tensor), this.indexMap = new Jp([], this.targetShape, {
                type: Int32Array
              }), this.indexMap.replaceTensorData(new Int32Array(e.tensor.data)), this.targetShape.length > 2 && this.indexMap.reshapeTo2D(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture ? e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : this.inputShape = e.tensor.shape : (this.inputShape = e.tensor.shape, e.tensor.shape.length <= 2 ? e.createGLTexture({
              type: "2d",
              format: "float"
            }) : e.tensor.shape.length > 2 && !e.is2DReshaped && (e.reshapeTo2D(), e.createGLTexture({
              type: "2d",
              format: "float"
            }))), this._createIndexMap(), this.output || (this.output = new Jp([], this.targetShape), this.targetShape.length > 2 && this.output.reshapeTo2D(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      Ff = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Mf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          sr(this, e), t = lr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Permute";
          var r = n.dims,
            o = void 0 === r ? [] : r;
          return t.description = "".concat(JSON.stringify(o)), t.dims = o.map(function(t) {
            return t - 1
          }), t.gpu && (t.mapInputProgram = Up.compileProgram(Ff)), t
        }
        return pr(e, t), cr(e, [{
          key: "call",
          value: function t(e) {
            return e.tensor.shape.length <= 1 || bp()(Vp()(e.tensor.shape.length), this.dims) ? (this.output = e, this.output) : (this.gpu ? this._callGPU(e) : this._callCPU(e), this.output)
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n;
            this.dims.length !== e.tensor.shape.length && this.throwError("The specified dims permutation must match the number of dimensions.");
            var r = this.dims.map(function(t) {
              return e.tensor.shape[t]
            });
            this.output = new Jp([], r), Yp.a.assign(this.output.tensor, (n = e.tensor).transpose.apply(n, ar(this.dims)))
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            var e = this,
              n;
            if (!this.indexMap) {
              var r = new Jp([], this.inputShape, {
                  type: Int32Array
                }),
                o = new Jp([], this.inputShape, {
                  type: Int32Array
                }),
                i = new Jp([], this.inputShape, {
                  type: Int32Array
                });
              if (2 === this.inputShape.length)
                for (var a = 0; a < this.inputShape[0]; a++) Yp.a.assigns(o.tensor.pick(a, null), a);
              else if (3 === this.inputShape.length)
                for (var s = 0; s < this.inputShape[0]; s++)
                  for (var u = 0; u < this.inputShape[1]; u++) Yp.a.assigns(o.tensor.pick(s, u, null), s * this.inputShape[1] + u);
              else if (4 === this.inputShape.length)
                for (var c = 0; c < this.inputShape[0]; c++)
                  for (var l = 0; l < this.inputShape[1]; l++)
                    for (var p = 0; p < this.inputShape[2]; p++) Yp.a.assigns(o.tensor.pick(c, l, p, null), c * this.inputShape[1] * this.inputShape[2] + l * this.inputShape[2] + p);
              for (var h = 0; h < Ef()(this.inputShape); h++) {
                var f;
                Yp.a.assigns((f = i.tensor).pick.apply(f, ar(Array(this.inputShape.length - 1).fill(null)).concat([h])), h)
              }
              Yp.a.muls(r.tensor, o.tensor, Ef()(this.inputShape)), Yp.a.addeq(r.tensor, i.tensor);
              var d = this.dims.map(function(t) {
                return e.inputShape[t]
              });
              this.indexMap = new Jp([], d, {
                type: Int32Array
              }), Yp.a.assign(this.indexMap.tensor, (n = r.tensor).transpose.apply(n, ar(this.dims))), d.length > 2 && this.indexMap.reshapeTo2D(), this.indexMap.createGLTexture({
                type: "2d",
                format: "int"
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            var n = this;
            if (e.glTexture ? e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : this.inputShape = e.tensor.shape : (this.inputShape = e.tensor.shape, e.tensor.shape.length <= 2 ? e.createGLTexture({
              type: "2d",
              format: "float"
            }) : e.tensor.shape.length > 2 && !e.is2DReshaped && (e.reshapeTo2D(), e.createGLTexture({
              type: "2d",
              format: "float"
            }))), this._createIndexMap(), !this.output) {
              var r = this.dims.map(function(t) {
                return n.inputShape[t]
              });
              this.output = new Jp([], r), r.length > 2 && this.output.reshapeTo2D(), this.output.createGLTexture({
                type: "2d",
                format: "float"
              })
            }
            Up.runProgram({
              program: this.mapInputProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMap,
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      Rf = n(449),
      Df = n.n(Rf),
      If = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nout vec4 outColor;\n\nvoid main() {\n  outColor = texture(x, vec2(outTex.x, 0));\n}\n",
      Lf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          fr(this, e), t = yr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "RepeatVector";
          var r = n.n,
            o = void 0 === r ? 1 : r;
          return t.n = o, t.description = "n = ".concat(o), t.gpu && (t.program = Up.compileProgram(If)), t
        }
        return vr(e, t), mr(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            1 !== e.tensor.shape.length && this.throwError("Only 1D tensor inputs allowed."), this.output = new Jp([], [this.n, e.tensor.shape[1]]), this.output.tensor = Df()(Uh()(e.tensor, 0), [this.n, 1])
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.output || (this.output = new Jp([], [this.n, e.glTextureShape[1]]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      zf = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform sampler2D embeddings;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 x_size = textureSize(x, 0);\n  ivec2 embeddings_size = textureSize(embeddings, 0);\n  int out_x = int(float(embeddings_size[0]) * outTex.x);\n  int out_y = int(float(x_size[0]) * outTex.y);\n\n  int index = int(texelFetch(x, ivec2(out_y, 0), 0).r);\n  outColor = texelFetch(embeddings, ivec2(out_x, index), 0);\n}\n",
      Uf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          _r(this, e), t = wr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Embedding";
          var r = n.input_dim,
            o = void 0 === r ? 1 : r,
            i = n.output_dim,
            a = void 0 === i ? 1 : i,
            s = n.input_length,
            u = void 0 === s ? 0 : s,
            c = n.mask_zero,
            l = void 0 !== c && c;
          return t.description = "output dimensions: ".concat(a), t.inputDim = o, t.outputDim = a, t.inputLength = u, t.maskZero = l, t.params = ["embeddings"], t.gpu && (t.program = Up.compileProgram(zf)), t
        }
        return Sr(e, t), xr(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.output = new Jp([], [e.tensor.shape[0], this.weights.embeddings.tensor.shape[1]]);
            for (var n = 0, r = e.tensor.shape[0]; n < r; n++) Yp.a.assign(this.output.tensor.pick(n, null), this.weights.embeddings.tensor.pick(e.tensor.get(n), null))
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.output || (this.output = new Jp([], [e.glTextureShape[1], this.weights.embeddings.glTextureShape[1]]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.weights.embeddings,
                name: "embeddings"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Gf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Pr(this, e), t = Or(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_Merge", t.isMergeLayer = !0, t
        }
        return Er(e, t), kr(e, [{
          key: "call",
          value: function t(e) {
            if (this.gpu) this._callGPU(e);
            else {
              this._validateInputs(e) || this.throwError("Invalid inputs to call method."), this._callCPU(e)
            }
            return this.output
          }
        }, {
          key: "_validateInputs",
          value: function t(e) {
            var n = e.map(function(t) {
              return t.tensor.shape.slice()
            });
            if (["sum", "diff", "mul", "ave", "max", "min"].indexOf(this.mode) > -1 && (n.every(function(t) {
              return bp()(t, n[0])
            }) || this.throwError("All input shapes must be the same for mode ".concat(this.mode, "."))), "dot" === this.mode) 2 !== e.length && this.throwError("Exactly 2 inputs required for mode ".concat(this.mode, ".")), this.dotAxes[0] < 0 && (this.dotAxes[0] = n[0].length + this.dotAxes[0]), this.dotAxes[1] < 0 && (this.dotAxes[1] = n[1].length + this.dotAxes[1]), n[0][this.dotAxes[0]] !== n[1][this.dotAxes[1]] && this.throwError("Dimensions incompatibility using dot mode.");
            else if ("concat" === this.mode) {
              var r = n.slice(),
                o = this.concatAxis < 0 ? r[0].length + this.concatAxis : this.concatAxis;
              0 === this.concatAxis && (o = 0), Vp()(r.length).forEach(function(t) {
                r[t].splice(o, 1)
              }), r.every(function(t) {
                return bp()(t, r[0])
              }) || this.throwError("In concat mode, all shapes must be the same except along the concat axis.")
            }
            return !0
          }
        }, {
          key: "_callCPU",
          value: function t() {}
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.forEach(function(t) {
              t.glTexture || t.glTextureFragments || t.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              })
            }), this.output || (this.output = new Jp([], e[0].glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e[0].is1D ? this.output.is1D = e[0].is1D : (e[0].is2DReshaped || e[0].is2DSquareReshaped) && (e[0].is2DReshaped ? this.output.is2DReshaped = e[0].is2DReshaped : e[0].is2DSquareReshaped && (this.output.is2DSquareReshaped = e[0].is2DSquareReshaped), this.output.originalShape = e[0].originalShape.slice(), this.output.indicesForReshaped = e[0].indicesForReshaped)), Up.runProgram({
              program: this.mergeProgram,
              output: this.output,
              inputs: e.map(function(t, e) {
                return {
                  input: t,
                  name: "inputs[".concat(e, "]")
                }
              }),
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      Nf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Ar(this, e), t = Rr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Add", t.mode = "sum", t
        }
        return Ir(e, t), Mr(e, [{
          key: "_callCPU",
          value: function t(e) {
            var n = e[0].tensor.shape.slice();
            this.output = new Jp([], n);
            for (var r = 0; r < e.length; r++) Yp.a.addeq(this.output.tensor, e[r].tensor)
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (!this.mergeProgram) {
              var r = n[0].glTextureFragments ? n[0].glTextureFragmentShape : n[0].glTextureShape,
                o = yt("add", n.length, r);
              this.mergeProgram = Up.compileProgram(o)
            }
            Dr(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n)
          }
        }]), e
      }(Gf),
      Bf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return zr(this, e), t = Nr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Subtract", t.mode = "diff", t
        }
        return qr(e, t), Gr(e, [{
          key: "_callCPU",
          value: function t(e) {
            2 !== e.length && this.throwError("Inputs should be an array of 2 Tensors.");
            var n = e[0].tensor.shape.slice();
            this.output = new Jp([], n), Yp.a.sub(this.output.tensor, e[0].tensor, e[1].tensor)
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (!this.mergeProgram) {
              var r = n[0].glTextureFragments ? n[0].glTextureFragmentShape : n[0].glTextureShape,
                o = yt("subtract", n.length, r);
              this.mergeProgram = Up.compileProgram(o)
            }
            Br(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n)
          }
        }]), e
      }(Gf),
      qf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Hr(this, e), t = Yr(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Multiply", t.mode = "mul", t
        }
        return Kr(e, t), Xr(e, [{
          key: "_callCPU",
          value: function t(e) {
            var n = e[0].tensor.shape.slice();
            this.output = new Jp([], n), Yp.a.assigns(this.output.tensor, 1);
            for (var r = 0; r < e.length; r++) Yp.a.muleq(this.output.tensor, e[r].tensor)
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (!this.mergeProgram) {
              var r = n[0].glTextureFragments ? n[0].glTextureFragmentShape : n[0].glTextureShape,
                o = yt("multiply", n.length, r);
              this.mergeProgram = Up.compileProgram(o)
            }
            $r(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n)
          }
        }]), e
      }(Gf),
      Vf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Qr(this, e), t = eo(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Average", t.mode = "ave", t
        }
        return ro(e, t), to(e, [{
          key: "_callCPU",
          value: function t(e) {
            var n = e[0].tensor.shape.slice();
            this.output = new Jp([], n);
            for (var r = 0; r < e.length; r++) Yp.a.addeq(this.output.tensor, e[r].tensor);
            Yp.a.divseq(this.output.tensor, e.length)
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (!this.mergeProgram) {
              var r = n[0].glTextureFragments ? n[0].glTextureFragmentShape : n[0].glTextureShape,
                o = yt("average", n.length, r);
              this.mergeProgram = Up.compileProgram(o)
            }
            no(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n)
          }
        }]), e
      }(Gf),
      Hf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return io(this, e), t = uo(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Maximum", t.mode = "max", t
        }
        return lo(e, t), so(e, [{
          key: "_callCPU",
          value: function t(e) {
            var n = e[0].tensor.shape.slice();
            this.output = new Jp([], n), Yp.a.assign(this.output.tensor, e[0].tensor);
            for (var r = 1; r < e.length; r++) Yp.a.maxeq(this.output.tensor, e[r].tensor)
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (!this.mergeProgram) {
              var r = n[0].glTextureFragments ? n[0].glTextureFragmentShape : n[0].glTextureShape,
                o = yt("maximum", n.length, r);
              this.mergeProgram = Up.compileProgram(o)
            }
            co(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n)
          }
        }]), e
      }(Gf),
      Wf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return ho(this, e), t = yo(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Minimum", t.mode = "min", t
        }
        return go(e, t), mo(e, [{
          key: "_callCPU",
          value: function t(e) {
            var n = e[0].tensor.shape.slice();
            this.output = new Jp([], n), Yp.a.assign(this.output.tensor, e[0].tensor);
            for (var r = 1; r < e.length; r++) Yp.a.mineq(this.output.tensor, e[r].tensor)
          }
        }, {
          key: "_callGPU",
          value: function t(n) {
            if (!this.mergeProgram) {
              var r = n[0].glTextureFragments ? n[0].glTextureFragmentShape : n[0].glTextureShape,
                o = yt("minimum", n.length, r);
              this.mergeProgram = Up.compileProgram(o)
            }
            vo(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "_callGPU", this).call(this, n)
          }
        }]), e
      }(Gf),
      Xf = n(456),
      Yf = n.n(Xf),
      $f = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          bo(this, e), t = So(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Concatenate", t.mode = "concat";
          var r = n.axis,
            o = void 0 === r ? -1 : r;
          return t.concatAxis = o <= 0 ? o : o - 1, t
        }
        return To(e, t), wo(e, [{
          key: "_callCPU",
          value: function t(e) {
            var n = e[0].tensor.shape.slice(),
              r = this.concatAxis < 0 ? n.length + this.concatAxis : this.concatAxis;
            if (e.slice(1, e.length).forEach(function(t) {
              var e = t.tensor.shape.slice()[r];
              n[r] += e
            }), this.output = new Jp([], n), 0 === r) Yf()(this.output.tensor, e.map(function(t) {
              return t.tensor
            }));
            else {
              for (var o, i = [r], a = 0; a < e[0].tensor.shape.length; a++) a !== r && i.push(a);
              Yf()((o = this.output.tensor).transpose.apply(o, i), e.map(function(t) {
                var e;
                return (e = t.tensor).transpose.apply(e, i)
              }))
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.forEach(function(t) {
              t.glTexture || t.glTextureFragments || t.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              })
            });
            var n = e[0].glTextureShape.slice(),
              r = 1;
            if (e[0].is2DReshaped ? -1 === this.concatAxis || this.concatAxis === e[0].originalShape.length - 1 ? r = 1 : this.throwError("specified axis not supported for now.") : -1 === this.concatAxis || 1 === this.concatAxis ? r = 1 : -2 === this.concatAxis || 0 === this.concatAxis ? r = 0 : this.throwError("specified axis not supported for now."), n[r] = xh()(e.map(function(t) {
              return t.glTextureShape[r]
            })), !this.output)
              if (this.output = new Jp([], n), this.output.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: 1 === r
              }), e[0].is1D) this.output.is1D = e[0].is1D;
              else if (e[0].is2DReshaped) {
                this.output.is2DReshaped = e[0].is2DReshaped, this.output.originalShape = e[0].originalShape.slice();
                var o = this.concatAxis < 0 ? this.output.originalShape.length + this.concatAxis : this.concatAxis;
                this.output.originalShape[o] = xh()(e.map(function(t) {
                  return t.originalShape[o]
                })), this.output.indicesForReshaped = h(this.output.originalShape, !1, o)
              }
            if (!this.mergeProgram) {
              var i = this.output.glTextureFragments ? this.output.glTextureFragmentShape : this.output.glTextureShape,
                a = yt("concatenate", e.length, e.map(function(t) {
                  return t.glTextureShape
                }), i, r);
              this.mergeProgram = Up.compileProgram(a)
            }
            Up.runProgram({
              program: this.mergeProgram,
              output: this.output,
              inputs: e.map(function(t, e) {
                return {
                  input: t,
                  name: "inputs[".concat(e, "]")
                }
              }),
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Gf),
      Kf = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D input1;\nuniform sampler2D input2;\nuniform int rows;\nuniform int cols;\nuniform int dotAxis1;\nuniform int dotAxis2;\nuniform int commonDim;\nuniform bool normalize;\nout vec4 outColor;\n\nvoid main() {\n  int out_x = int(float(cols) * outTex.x);\n  int out_y = int(float(rows) * outTex.y);\n\n  float sum = 0.;\n  float a = 0.;\n  float b = 0.;\n  float norm1 = 0.;\n  float norm2 = 0.;\n\n  for (int i = 0; i < commonDim; ++i) {\n    if (dotAxis1 == 0 && dotAxis2 == 0) {\n      a = texelFetch(input1, ivec2(out_y, i), 0).r;\n      b = texelFetch(input2, ivec2(out_x, i), 0).r;\n    } else if (dotAxis1 == 1 && dotAxis2 == 1) {\n      a = texelFetch(input1, ivec2(i, out_y), 0).r;\n      b = texelFetch(input2, ivec2(i, out_x), 0).r;\n    }\n\n    sum += a * b;\n\n    if (normalize) {\n      norm1 += a * a;\n      norm2 += b * b;\n    }\n  }\n\n  if (normalize) {\n    sum /= sqrt(norm1) * sqrt(norm2);\n  }\n\n  outColor = vec4(sum);\n}\n",
      Jf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Co(this, e), t = Eo(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Dot", t.mode = "dot";
          var r = n.axes,
            o = void 0 === r ? -1 : r,
            i = n.normalize,
            a = void 0 !== i && i;
          return Array.isArray(o) ? t.dotAxes = [o[0] <= 0 ? o[0] : o[0] - 1, o[1] <= 0 ? o[1] : o[1] - 1] : t.dotAxes = [o <= 0 ? o : o - 1, o <= 0 ? o : o - 1], t.normalize = a, t.gpu && (t.mergeProgram = Up.compileProgram(Kf)), t
        }
        return jo(e, t), Oo(e, [{
          key: "_calcOutputShape",
          value: function t(e) {
            var n = e[0].slice(),
              r = e[1].slice();
            n.splice(this.dotAxes[0], 1), r.splice(this.dotAxes[1], 1), this.outputShape = n.concat(r), 1 === this.outputShape.length && this.outputShape.push(1)
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            if (this._calcOutputShape([e[0].tensor.shape, e[1].tensor.shape]), this.output = new Jp([], this.outputShape), 2 === e[0].tensor.shape.length && 2 === e[1].tensor.shape.length) {
              if (0 === this.dotAxes[0] && 0 === this.dotAxes[1]) {
                if (this.normalize) {
                  for (var n = 0; n < e[0].tensor.shape[1]; n++) Yp.a.divseq(e[0].tensor.pick(null, n), Yp.a.norm2(e[0].tensor.pick(null, n)));
                  for (var r = 0; r < e[1].tensor.shape[1]; r++) Yp.a.divseq(e[1].tensor.pick(null, r), Yp.a.norm2(e[1].tensor.pick(null, r)))
                }
                Sh()(this.output.tensor, e[0].tensor.transpose(1, 0), e[1].tensor)
              } else if (1 === this.dotAxes[0] && 1 === this.dotAxes[1]) {
                if (this.normalize) {
                  for (var o = 0; o < e[0].tensor.shape[0]; o++) Yp.a.divseq(e[0].tensor.pick(o, null), Yp.a.norm2(e[0].tensor.pick(o, null)));
                  for (var i = 0; i < e[1].tensor.shape[0]; i++) Yp.a.divseq(e[1].tensor.pick(i, null), Yp.a.norm2(e[1].tensor.pick(i, null)))
                }
                Sh()(this.output.tensor, e[0].tensor, e[1].tensor.transpose(1, 0))
              }
            } else this.throwError("dot mode for 3+ dim tensors not yet implemented.")
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.forEach(function(t) {
              t.glTexture || t.glTextureFragments || t.createGLTexture({
                type: "2d",
                format: "float"
              })
            }), this._calcOutputShape([e[0].glTextureShape, e[1].glTextureShape]), this.output || (this.output = new Jp([], this.outputShape), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }));
            var n = e[0].glTextureShape[this.dotAxes[0]];
            Up.runProgram({
              program: this.mergeProgram,
              output: this.output,
              inputs: [{
                input: e[0],
                name: "input1"
              }, {
                input: e[1],
                name: "input2"
              }],
              uniforms: [{
                value: this.output.glTextureShape[0],
                type: "int",
                name: "rows"
              }, {
                value: this.output.glTextureShape[1],
                type: "int",
                name: "cols"
              }, {
                value: this.dotAxes[0],
                type: "int",
                name: "dotAxis1"
              }, {
                value: this.dotAxes[1],
                type: "int",
                name: "dotAxis2"
              }, {
                value: n,
                type: "int",
                name: "commonDim"
              }, {
                value: +this.normalize,
                type: "bool",
                name: "normalize"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Gf),
      Qf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Fo(this, e), t = Do(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GaussianDropout";
          var r = n.rate,
            o = void 0 === r ? .5 : r;
          return t.rate = Math.min(Math.max(0, o), 1), t
        }
        return Io(e, t), Ro(e, [{
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), e
      }(Bp),
      Zf = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          zo(this, e), t = No(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GaussianNoise";
          var r = n.stddev,
            o = void 0 === r ? 0 : r;
          return t.stddev = o, t
        }
        return Bo(e, t), Go(e, [{
          key: "call",
          value: function t(e) {
            return this.output = e, this.output
          }
        }]), e
      }(Bp),
      td = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D X;\nuniform isampler2D normAxisIndexMap;\nuniform sampler2D gamma;\nuniform sampler2D beta;\nuniform sampler2D mean;\nuniform sampler2D std;\nuniform float epsilon;\nuniform bool scale;\nuniform bool center;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(X, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\nint normAxisIndex = texelFetch(normAxisIndexMap, ivec2(out_x, out_y), 0).r;\n\n  float _x = texelFetch(X, ivec2(out_x, out_y), 0).r;\n  float _mean = texelFetch(mean, ivec2(normAxisIndex, 0), 0).r;\n  float _std = texelFetch(std, ivec2(normAxisIndex, 0), 0).r;\n\n  float _gamma = 1.0;\n  if (scale) {\n    _gamma = texelFetch(gamma, ivec2(normAxisIndex, 0), 0).r;\n  }\n\n  float _beta = 0.0;\n  if (center) {\n    _beta = texelFetch(beta, ivec2(normAxisIndex, 0), 0).r;\n  }\n\n  float sum = _beta + _gamma * (_x - _mean) / sqrt(_std + epsilon);\n\n  outColor = vec4(sum);\n}\n",
      ed = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Ho(this, e), t = Yo(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "BatchNormalization";
          var r = n.epsilon,
            o = void 0 === r ? .001 : r,
            i = n.axis,
            a = void 0 === i ? -1 : i,
            s = n.center,
            u = void 0 === s || s,
            c = n.scale,
            l = void 0 === c || c;
          return t.epsilon = o, t.center = u, t.scale = l, t.axis = a, t.axisNormalized = !1, t.params = [], t.scale && t.params.push("gamma"), t.center && t.params.push("beta"), t.params = t.params.concat(["moving_mean", "moving_variance"]), t.gpu && (t.program = Up.compileProgram(td)), t
        }
        return $o(e, t), Xo(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.axisNormalized || (this.axis = this.axis < 0 ? e.tensor.shape.length + this.axis : this.axis - 1, this.axisNormalized = !0);
            for (var n = [], r = 0; r < e.tensor.shape.length; r++) r === this.axis ? n.push(1) : n.push(null);
            for (var o = new Jp([], e.tensor.shape), i = new Jp([], e.tensor.shape), a = 0; a < e.tensor.shape[this.axis]; a++) {
              if (n[this.axis] = a, this.scale) {
                var s;
                Yp.a.assigns((s = o.tensor).pick.apply(s, n), this.weights.gamma.tensor.get(a))
              }
              if (this.center) {
                var u;
                Yp.a.assigns((u = i.tensor).pick.apply(u, n), this.weights.beta.tensor.get(a))
              }
            }
            for (var c = new Jp([], e.tensor.shape), l = new Jp([], e.tensor.shape), p = 0; p < e.tensor.shape[this.axis]; p++) {
              var h, f;
              n[this.axis] = p, Yp.a.assigns((h = c.tensor).pick.apply(h, n), this.weights.moving_mean.tensor.get(p)), Yp.a.assigns((f = l.tensor).pick.apply(f, n), this.weights.moving_variance.tensor.get(p) + this.epsilon)
            }
            Yp.a.sqrteq(l.tensor), this.output = new Jp(e.tensor.data, e.tensor.shape), Yp.a.subeq(this.output.tensor, c.tensor), Yp.a.diveq(this.output.tensor, l.tensor), this.scale && Yp.a.muleq(this.output.tensor, o.tensor), this.center && Yp.a.addeq(this.output.tensor, i.tensor)
          }
        }, {
          key: "_createIndexMap",
          value: function t(e, n) {
            if (!this.normAxisIndexMap) {
              var r = new Jp([], this.inputShape, {
                type: Int32Array
              });
              this.normAxisIndexMap = new Jp([], e, {
                type: Int32Array
              });
              for (var o = Array(this.inputShape.length).fill(null), i = 0; i < this.inputShape[this.axis]; i++) {
                var a;
                o[this.axis] = i, Yp.a.assigns((a = r.tensor).pick.apply(a, Vo(o)), i)
              }
              if (n)
                for (var s = 0; s < n.data.length; s++) this.normAxisIndexMap.tensor.data[n.data[s]] = r.tensor.data[s];
              else this.normAxisIndexMap = r;
              this.normAxisIndexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            this.axisNormalized || (e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : this.inputShape = e.tensor.shape, this.axis = this.axis < 0 ? this.inputShape.length + this.axis : this.axis - 1, this.axisNormalized = !0), e.glTexture || e.glTextureFragments || (e.tensor.shape.length <= 2 ? e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }) : e.tensor.shape.length > 2 && !e.is2DReshaped && (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }))), this._createIndexMap(e.glTextureShape, e.indicesForReshaped), this.output || (this.output = new Jp([], e.glTextureShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), e.is1D ? this.output.is1D = e.is1D : (e.is2DReshaped || e.is2DSquareReshaped) && (e.is2DReshaped ? this.output.is2DReshaped = e.is2DReshaped : e.is2DSquareReshaped && (this.output.is2DSquareReshaped = e.is2DSquareReshaped), this.output.originalShape = e.originalShape, this.output.indicesForReshaped = e.indicesForReshaped));
            var n = [{
              input: e,
              name: "X"
            }, {
              input: this.normAxisIndexMap,
              name: "normAxisIndexMap"
            }];
            this.scale && n.push({
              input: this.weights.gamma,
              name: "gamma"
            }), this.center && n.push({
              input: this.weights.beta,
              name: "beta"
            }), n.push({
              input: this.weights.moving_mean,
              name: "mean"
            }), n.push({
              input: this.weights.moving_variance,
              name: "std"
            });
            var r = [{
              value: this.epsilon,
              type: "float",
              name: "epsilon"
            }, {
              value: +this.scale,
              type: "bool",
              name: "scale"
            }, {
              value: +this.center,
              type: "bool",
              name: "center"
            }];
            Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: n,
              uniforms: r,
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      nd = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D poolIndexMap;\nuniform int channels;\nuniform int poolSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  int out_x = int(float(channels) * outTex.x);\n  int out_y = int(float(textureSize(poolIndexMap, 0)[1]) * outTex.y);\n\n  float val = 0.;\n  int count = 0;\n  for (int i = 0; i < poolSize; ++i) {\n    int poolIndex = texelFetch(poolIndexMap, ivec2(i, out_y), 0).r;\n    if (poolIndex != -1) {\n      float val2 = texelFetch(x, ivec2(out_x, poolIndex), 0).r;\n      if (isMaxPooling) {\n        if (count == 0 || val2 > val) {\n          val = val2;\n        }\n      } else {\n        val += val2;\n      }\n      count += 1;\n    }\n  }\n\n  if (!isMaxPooling) {\n    val /= float(count);\n  }\n\n  outColor = vec4(val);\n}\n",
      rd = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D poolIndexMap;\nuniform int channels;\nuniform int poolSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 inputSize = textureSize(x, 0);\n  ivec2 outputSize = textureSize(poolIndexMap, 0);\n  int out_x = int(float(channels) * outTex.x);\n  int out_y = int(float(outputSize[1]) * outTex.y);\n\n  float val = 0.;\n  int count = 0;\n  for (int i = 0; i < poolSize; ++i) {\n    int poolIndex = texelFetch(poolIndexMap, ivec2(i, out_y), 0).r;\n    int fragmentIndex = int(floor(float(poolIndex) / float(inputSize[1])));\n    if (poolIndex != -1) {\n      poolIndex = int(mod(float(poolIndex), float(inputSize[1])));\n      float val2 = texelFetch(x, ivec2(fragmentIndex * channels + out_x, poolIndex), 0).r;\n      if (isMaxPooling) {\n        if (count == 0 || val2 > val) {\n          val = val2;\n        }\n      } else {\n        val += val2;\n      }\n      count += 1;\n    }\n  }\n\n  if (!isMaxPooling) {\n    val /= float(count);\n  }\n\n  outColor = vec4(val);\n}\n",
      od = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Jo(this, e), t = ti(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_Pooling1D";
          var r = n.pool_size,
            o = void 0 === r ? 2 : r,
            i = n.strides,
            a = void 0 === i ? null : i,
            s = n.padding,
            u = void 0 === s ? "valid" : s;
          return t.poolSize = o, t.strides = null === a ? t.poolSize : a, t.padding = u, t.poolingFunc = "max", t.description = "pool size ".concat(t.poolSize), t.description += t.strides > 1 ? ", striding ".concat(t.strides, " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.gpu && (t.poolingProgram = Up.compileProgram(nd), t.poolingFragmentsProgram = Up.compileProgram(rd)), t
        }
        return ei(e, t), Zo(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n = "valid" === this.padding ? Math.floor((e.tensor.shape[0] - this.poolSize + this.strides) / this.strides) : Math.floor((e.tensor.shape[0] + this.strides - 1) / this.strides);
            this.output = new Jp([], [n, e.tensor.shape[1]]);
            for (var r = new Jp([], [e.tensor.shape[1]]), o = "valid" === this.padding ? 0 : Math.min(0, Math.ceil((e.tensor.shape[0] - (n - 1) * this.strides - this.poolSize) / 2)), i = 0; i < n; i++) {
              var a = Math.max(0, o),
                s = this.poolSize + Math.min(0, o);
              Yp.a.assign(r.tensor, e.tensor.pick(a, null));
              for (var u = 1, c = 1; c < s && !(a + c > e.tensor.shape[0] - 1); c++) "max" === this.poolingFunc ? Yp.a.maxeq(r.tensor, e.tensor.pick(a + c, null)) : "average" === this.poolingFunc && Yp.a.addeq(r.tensor, e.tensor.pick(a + c, null)), u += 1;
              "average" === this.poolingFunc && Yp.a.divseq(r.tensor, u), Yp.a.assign(this.output.tensor.pick(i, null), r.tensor), o += this.strides
            }
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            if (!this.poolIndexMap) {
              var e = "valid" === this.padding ? Math.floor((this.inputShape[0] - this.poolSize + this.strides) / this.strides) : Math.floor((this.inputShape[0] + this.strides - 1) / this.strides);
              this.outputShape = [e, this.inputShape[1]], this.poolIndexMap = new Jp([], [e, this.poolSize], {
                type: Int32Array
              }), Yp.a.assigns(this.poolIndexMap.tensor, -1);
              for (var n = "valid" === this.padding ? 0 : Math.min(0, Math.ceil((this.inputShape[0] - (e - 1) * this.strides - this.poolSize) / 2)), r = 0; r < e; r++) {
                var o = Math.max(0, n),
                  i = this.poolSize + Math.min(0, n),
                  a = o;
                this.poolIndexMap.tensor.set(r, 0, a);
                for (var s = 1; s < i && (a = o + s) <= this.inputShape[0] - 1; s++) this.poolIndexMap.tensor.set(r, s, a);
                n += this.strides
              }
              this.poolIndexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.glTextureFragments || e.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }), this.inputShape = e.tensor.shape, this._createIndexMap(), this.output || (this.output = new Jp([], this.outputShape), this.output.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            }));
            var n = "max" === this.poolingFunc,
              r = [{
                value: this.output.glTextureShape[1],
                type: "int",
                name: "channels"
              }, {
                value: this.poolSize,
                type: "int",
                name: "poolSize"
              }, {
                value: +n,
                type: "bool",
                name: "isMaxPooling"
              }];
            e.glTextureFragments ? (e.convert2DRowFragmentedGLTextureToColStack(), Up.runProgram({
              program: this.poolingFragmentsProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.poolIndexMap,
                name: "poolIndexMap"
              }],
              uniforms: r,
              supportsTextureFragments: !0
            }), e.removeGLTextureFragmentsAsColStack()) : Up.runProgram({
              program: this.poolingProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.poolIndexMap,
                name: "poolIndexMap"
              }],
              uniforms: r,
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      id = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return ri(this, e), t = oi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "MaxPooling1D", t.poolingFunc = "max", t
        }
        return ii(e, t), e
      }(od),
      ad = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D poolIndexMap;\nuniform int channels;\nuniform int poolSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  int out_x = int(float(channels) * outTex.x);\n  int out_y = int(float(textureSize(poolIndexMap, 0)[1]) * outTex.y);\n\n  float val = 0.;\n  int count = 0;\n  for (int i = 0; i < poolSize; ++i) {\n    int poolIndex = texelFetch(poolIndexMap, ivec2(i, out_y), 0).r;\n    if (poolIndex != -1) {\n      float val2 = texelFetch(x, ivec2(out_x, poolIndex), 0).r;\n      if (isMaxPooling) {\n        if (count == 0 || val2 > val) {\n          val = val2;\n        }\n      } else {\n        val += val2;\n      }\n      count += 1;\n    }\n  }\n\n  if (!isMaxPooling) {\n    val /= float(count);\n  }\n\n  outColor = vec4(val);\n}\n",
      sd = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D poolIndexMap;\nuniform int channels;\nuniform int poolSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 inputSize = textureSize(x, 0);\n  ivec2 outputSize = textureSize(poolIndexMap, 0);\n  int out_x = int(float(channels) * outTex.x);\n  int out_y = int(float(outputSize[1]) * outTex.y);\n\n  float val = 0.;\n  int count = 0;\n  for (int i = 0; i < poolSize; ++i) {\n    int poolIndex = texelFetch(poolIndexMap, ivec2(i, out_y), 0).r;\n    int fragmentIndex = int(floor(float(poolIndex) / float(inputSize[1])));\n    if (poolIndex != -1) {\n      poolIndex = int(mod(float(poolIndex), float(inputSize[1])));\n      float val2 = texelFetch(x, ivec2(fragmentIndex * channels + out_x, poolIndex), 0).r;\n      if (isMaxPooling) {\n        if (count == 0 || val2 > val) {\n          val = val2;\n        }\n      } else {\n        val += val2;\n      }\n      count += 1;\n    }\n  }\n\n  if (!isMaxPooling) {\n    val /= float(count);\n  }\n\n  outColor = vec4(val);\n}\n",
      ud = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          ci(this, e), t = hi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_Pooling2D";
          var r = n.pool_size,
            o = void 0 === r ? [2, 2] : r,
            i = n.strides,
            a = void 0 === i ? null : i,
            s = n.padding,
            u = void 0 === s ? "valid" : s,
            c = n.data_format,
            l = void 0 === c ? "channels_last" : c;
          return Array.isArray(o) ? t.poolSize = o : t.poolSize = [o, o], Array.isArray(a) ? t.strides = a : t.strides = null !== a ? [a, a] : t.poolSize, t.padding = u, t.dataFormat = l, t.poolingFunc = "max", t.description = "pool size ".concat(t.poolSize.join("x")), t.description += t.strides.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.strides.join("x"), " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.gpu && (t.poolingProgram = Up.compileProgram(ad), t.poolingFragmentsProgram = Up.compileProgram(sd)), t
        }
        return fi(e, t), pi(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_calcOutputShape",
          value: function t(e) {
            if (!this.outputShape || !this.inputPadding) {
              var n = ui(e, 3),
                r = n[0],
                o = n[1],
                i = n[2],
                a = ui(this.poolSize, 2),
                s = a[0],
                u = a[1],
                c = "same" === this.padding ? Math.floor((r + this.strides[0] - 1) / this.strides[0]) : Math.floor((r - s + this.strides[0]) / this.strides[0]),
                l = "same" === this.padding ? Math.floor((o + this.strides[1] - 1) / this.strides[1]) : Math.floor((o - u + this.strides[1]) / this.strides[1]),
                p = "same" === this.padding ? Math.max(0, Math.floor((c - 1) * this.strides[0] + s - r)) : 0,
                h = "same" === this.padding ? Math.max(0, Math.floor((l - 1) * this.strides[1] + u - o)) : 0,
                f = Math.floor(p / 2),
                d = p - f,
                m = Math.floor(h / 2),
                y = h - m;
              this.outputShape = [c, l, i], this.inputPadding = [f, d, m, y]
            }
          }
        }, {
          key: "_padInput",
          value: function t(e) {
            if ("same" === this.padding) {
              var n = ui(e.tensor.shape, 3),
                r = n[0],
                o = n[1],
                i = n[2],
                a = ui(this.inputPadding, 4),
                s = a[0],
                u = a[1],
                c = a[2],
                l = a[3],
                p = r + s + u,
                h = o + c + l,
                f = new Jp([], [p, h, i]);
              return "max" === this.poolingFunc && Yp.a.assigns(f.tensor, Number.NEGATIVE_INFINITY), Yp.a.assign(f.tensor.hi(r + s, o + c, i).lo(s, c, 0), e.tensor), f
            }
            return e
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0)), this._calcOutputShape(e.tensor.shape), e = this._padInput(e);
            var n = ui(e.tensor.shape, 3),
              r = n[0],
              o = n[1],
              i = n[2],
              a = ui(this.poolSize, 2),
              s = a[0],
              u = a[1];
            this.output = new Jp([], this.outputShape);
            for (var c = new Jp([], [s, u, i]), l = ui(this.inputPadding, 4), p = l[0], h = l[1], f = l[2], d = l[3], m = 0, y = 0; m <= r - s; m += this.strides[0], y++) {
              var v = 0;
              m < p ? v = p - m : m + s > r - h && (v = m + s - (r - h));
              for (var g = 0, _ = 0; g <= o - u; g += this.strides[1], _++) {
                var b = 0;
                g < f ? b = f - g : g + u > o - d && (b = g + u - (o - d));
                var x = (s - v) * (u - b);
                Yp.a.assign(c.tensor, e.tensor.hi(m + s, g + u, i).lo(m, g, 0));
                for (var w = 0; w < i; w++) "max" === this.poolingFunc ? this.output.tensor.set(y, _, w, Yp.a.sup(c.tensor.pick(null, null, w))) : "average" === this.poolingFunc && this.output.tensor.set(y, _, w, Yp.a.sum(c.tensor.pick(null, null, w)) / x)
              }
            }
            "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1))
          }
        }, {
          key: "_im2col",
          value: function t(e) {
            var n = ui(e.tensor.shape, 3),
              r = n[0],
              o = n[1],
              i = n[2];
            this.tiledInput || (this.tiledInput = new Jp([], [r * o, i]));
            for (var a = new Jp([], [r, o]), s = new Jp([], [r * o]), u = 0; u < i; u++) Yp.a.assign(a.tensor, e.tensor.pick(null, null, u)), s.replaceTensorData(a.tensor.data), Yp.a.assign(this.tiledInput.tensor.pick(null, u), s.tensor);
            return this.tiledInput
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            if (!this.poolIndexMap) {
              for (var e = this.inputShape[0], n = this.inputShape[1], r = new Jp([], [e, n]), o = 0, i = 0; i < e; i++)
                for (var a = 0; a < n; a++) r.tensor.set(i, a, o), o += 1;
              if ("same" === this.padding) {
                var s = ui(this.inputPadding, 4),
                  u = s[0],
                  c = s[1],
                  l = s[2],
                  p = s[3];
                e = e + u + c, n = n + l + p;
                var h = new Jp([], [e, n]);
                Yp.a.assigns(h.tensor, -1), Yp.a.assign(h.tensor.hi(this.inputShape[0] + u, this.inputShape[1] + l).lo(u, l), r.tensor), r.tensor = h.tensor
              }
              var f = ui(this.poolSize, 2),
                d = f[0],
                m = f[1],
                y = this.outputShape[0],
                v = this.outputShape[1];
              this.poolIndexMap = new Jp([], [y * v, d * m], {
                type: Int32Array
              });
              for (var g = new Jp([], [d, m]), _ = 0, b = 0, x = e - d; b <= x; b += this.strides[0])
                for (var w = 0, S = n - m; w <= S; w += this.strides[1]) Yp.a.assign(g.tensor, r.tensor.hi(b + d, w + m).lo(b, w)), this.poolIndexMap.tensor.data.set(g.tensor.data, _), _ += d * m;
              this.poolIndexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            if (e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : ("channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0)), this.inputShape = e.tensor.shape, this._im2col(e), this.tiledInput.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            })), this._calcOutputShape(this.inputShape), this._createIndexMap(), !this.output) {
              var n = ui(this.outputShape, 3),
                r = n[0],
                o = n[1],
                i = n[2],
                a = [r * o, i];
              this.output = new Jp([], a), this.output.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              }), this.output.is2DReshaped = !0, this.output.originalShape = this.outputShape, this.output.indicesForReshaped = h(this.outputShape, !1, -1)
            }
            var s = e.is2DReshaped || e.is2DSquareReshaped ? e : this.tiledInput,
              u = this.poolSize[0] * this.poolSize[1],
              c = "max" === this.poolingFunc,
              l = [{
                value: this.output.glTextureShape[1],
                type: "int",
                name: "channels"
              }, {
                value: u,
                type: "int",
                name: "poolSize"
              }, {
                value: +c,
                type: "bool",
                name: "isMaxPooling"
              }];
            s.glTextureFragments ? (s.convert2DRowFragmentedGLTextureToColStack(), Up.runProgram({
              program: this.poolingFragmentsProgram,
              output: this.output,
              inputs: [{
                input: s,
                name: "x"
              }, {
                input: this.poolIndexMap,
                name: "poolIndexMap"
              }],
              uniforms: l,
              supportsTextureFragments: !0
            }), s.removeGLTextureFragmentsAsColStack()) : Up.runProgram({
              program: this.poolingProgram,
              output: this.output,
              inputs: [{
                input: s,
                name: "x"
              }, {
                input: this.poolIndexMap,
                name: "poolIndexMap"
              }],
              uniforms: l,
              supportsTextureFragments: !0
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.reshapeFrom2D(), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(2, 0, 1)))
          }
        }]), e
      }(Bp),
      cd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return mi(this, e), t = yi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "MaxPooling2D", t.poolingFunc = "max", t
        }
        return vi(e, t), e
      }(ud),
      ld = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D poolIndexMap;\nuniform int channels;\nuniform int poolSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  int out_x = int(float(channels) * outTex.x);\n  int out_y = int(float(textureSize(poolIndexMap, 0)[1]) * outTex.y);\n\n  float val = 0.;\n  int count = 0;\n  for (int i = 0; i < poolSize; ++i) {\n    int poolIndex = texelFetch(poolIndexMap, ivec2(i, out_y), 0).r;\n    if (poolIndex != -1) {\n      float val2 = texelFetch(x, ivec2(out_x, poolIndex), 0).r;\n      if (isMaxPooling) {\n        if (count == 0 || val2 > val) {\n          val = val2;\n        }\n      } else {\n        val += val2;\n      }\n      count += 1;\n    }\n  }\n\n  if (!isMaxPooling) {\n    val /= float(count);\n  }\n\n  outColor = vec4(val);\n}\n",
      pd = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D poolIndexMap;\nuniform int channels;\nuniform int poolSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 inputSize = textureSize(x, 0);\n  ivec2 outputSize = textureSize(poolIndexMap, 0);\n  int out_x = int(float(channels) * outTex.x);\n  int out_y = int(float(outputSize[1]) * outTex.y);\n\n  float val = 0.;\n  int count = 0;\n  for (int i = 0; i < poolSize; ++i) {\n    int poolIndex = texelFetch(poolIndexMap, ivec2(i, out_y), 0).r;\n    int fragmentIndex = int(floor(float(poolIndex) / float(inputSize[1])));\n    if (poolIndex != -1) {\n      poolIndex = int(mod(float(poolIndex), float(inputSize[1])));\n      float val2 = texelFetch(x, ivec2(fragmentIndex * channels + out_x, poolIndex), 0).r;\n      if (isMaxPooling) {\n        if (count == 0 || val2 > val) {\n          val = val2;\n        }\n      } else {\n        val += val2;\n      }\n      count += 1;\n    }\n  }\n\n  if (!isMaxPooling) {\n    val /= float(count);\n  }\n\n  outColor = vec4(val);\n}\n",
      hd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          xi(this, e), t = Ti(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_Pooling3D";
          var r = n.pool_size,
            o = void 0 === r ? [2, 2, 2] : r,
            i = n.strides,
            a = void 0 === i ? null : i,
            s = n.padding,
            u = void 0 === s ? "valid" : s,
            c = n.data_format,
            l = void 0 === c ? "channels_last" : c;
          return Array.isArray(o) ? t.poolSize = o : t.poolSize = [o, o, o], Array.isArray(a) ? t.strides = a : t.strides = null !== a ? [a, a, a] : t.poolSize, t.padding = u, t.dataFormat = l, t.poolingFunc = "max", t.description = "pool size ".concat(t.poolSize.join("x")), t.description += t.strides.some(function(t) {
            return t > 1
          }) ? ", ".concat(t.strides.join("x"), " striding") : "", t.description += "valid" === t.padding ? ", no border padding" : ", pad to same borders", t.gpu && (t.poolingProgram = Up.compileProgram(ld), t.poolingFragmentsProgram = Up.compileProgram(pd)), t
        }
        return Pi(e, t), Si(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_calcOutputShape",
          value: function t(e) {
            if (!this.outputShape || !this.inputPadding) {
              var n = bi(e, 4),
                r = n[0],
                o = n[1],
                i = n[2],
                a = n[3],
                s = bi(this.poolSize, 3),
                u = s[0],
                c = s[1],
                l = s[2],
                p = "same" === this.padding ? Math.floor((r + this.strides[0] - 1) / this.strides[0]) : Math.floor((r - u + this.strides[0]) / this.strides[0]),
                h = "same" === this.padding ? Math.floor((o + this.strides[1] - 1) / this.strides[1]) : Math.floor((o - c + this.strides[1]) / this.strides[1]),
                f = "same" === this.padding ? Math.floor((i + this.strides[2] - 1) / this.strides[2]) : Math.floor((i - l + this.strides[2]) / this.strides[2]),
                d = "same" === this.padding ? Math.max(0, Math.floor((p - 1) * this.strides[0] + u - r)) : 0,
                m = "same" === this.padding ? Math.max(0, Math.floor((h - 1) * this.strides[1] + c - o)) : 0,
                y = "same" === this.padding ? Math.max(0, Math.floor((f - 1) * this.strides[2] + l - i)) : 0,
                v = Math.floor(d / 2),
                g = d - v,
                _ = Math.floor(m / 2),
                b = m - _,
                x = Math.floor(y / 2),
                w = y - x;
              this.outputShape = [p, h, f, a], this.inputPadding = [v, g, _, b, x, w]
            }
          }
        }, {
          key: "_padInput",
          value: function t(e) {
            if ("same" === this.padding) {
              var n = bi(e.tensor.shape, 4),
                r = n[0],
                o = n[1],
                i = n[2],
                a = n[3],
                s = bi(this.inputPadding, 6),
                u = s[0],
                c = s[1],
                l = s[2],
                p = s[3],
                h = s[4],
                f = s[5],
                d = r + u + c,
                m = o + l + p,
                y = i + h + f,
                v = new Jp([], [d, m, y, a]);
              return "max" === this.poolingFunc && Yp.a.assigns(v.tensor, Number.NEGATIVE_INFINITY), Yp.a.assign(v.tensor.hi(r + u, o + l, i + h, a).lo(u, l, h, 0), e.tensor), v
            }
            return e
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0)), this._calcOutputShape(e.tensor.shape), e = this._padInput(e);
            var n = bi(e.tensor.shape, 4),
              r = n[0],
              o = n[1],
              i = n[2],
              a = n[3],
              s = bi(this.poolSize, 3),
              u = s[0],
              c = s[1],
              l = s[2];
            this.output = new Jp([], this.outputShape);
            for (var p = new Jp([], [u, c, l, a]), h = bi(this.inputPadding, 6), f = h[0], d = h[1], m = h[2], y = h[3], v = h[4], g = h[5], _ = 0, b = 0; _ <= r - u; _ += this.strides[0], b++) {
              var x = 0;
              _ < f ? x = f - _ : _ + u > r - d && (x = _ + u - (r - d));
              for (var w = 0, S = 0; w <= o - c; w += this.strides[1], S++) {
                var T = 0;
                w < m ? T = m - w : w + c > o - y && (T = w + c - (o - y));
                for (var P = 0, C = 0; P <= i - l; P += this.strides[2], C++) {
                  var k = 0;
                  P < v ? k = v - P : P + l > i - g && (k = P + l - (i - g));
                  var O = (u - x) * (c - T) * (l - k);
                  Yp.a.assign(p.tensor, e.tensor.hi(_ + u, w + c, P + l, a).lo(_, w, P, 0));
                  for (var E = 0; E < a; E++) "max" === this.poolingFunc ? this.output.tensor.set(b, S, C, E, Yp.a.sup(p.tensor.pick(null, null, null, E))) : "average" === this.poolingFunc && this.output.tensor.set(b, S, C, E, Yp.a.sum(p.tensor.pick(null, null, null, E)) / O)
                }
              }
            }
            "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2))
          }
        }, {
          key: "_vol2col",
          value: function t(e) {
            var n = bi(e.tensor.shape, 4),
              r = n[0],
              o = n[1],
              i = n[2],
              a = n[3];
            this.tiledInput || (this.tiledInput = new Jp([], [r * o * i, a]));
            for (var s = new Jp([], [r, o, i]), u = new Jp([], [r * o * i]), c = 0; c < a; c++) Yp.a.assign(s.tensor, e.tensor.pick(null, null, null, c)), u.replaceTensorData(s.tensor.data), Yp.a.assign(this.tiledInput.tensor.pick(null, c), u.tensor);
            return this.tiledInput
          }
        }, {
          key: "_createIndexMap",
          value: function t() {
            if (!this.poolIndexMap) {
              for (var e = this.inputShape[0], n = this.inputShape[1], r = this.inputShape[2], o = new Jp([], [e, n, r]), i = 0, a = 0; a < e; a++)
                for (var s = 0; s < n; s++)
                  for (var u = 0; u < r; u++) o.tensor.set(a, s, u, i), i += 1;
              if ("same" === this.padding) {
                var c = bi(this.inputPadding, 6),
                  l = c[0],
                  p = c[1],
                  h = c[2],
                  f = c[3],
                  d = c[4],
                  m = c[5];
                e = e + l + p, n = n + h + f, r = r + d + m;
                var y = new Jp([], [e, n, r]);
                Yp.a.assigns(y.tensor, -1), Yp.a.assign(y.tensor.hi(this.inputShape[0] + l, this.inputShape[1] + h, this.inputShape[2] + d).lo(l, h, d), o.tensor), o.tensor = y.tensor
              }
              var v = bi(this.poolSize, 3),
                g = v[0],
                _ = v[1],
                b = v[2],
                x = this.outputShape[0],
                w = this.outputShape[1],
                S = this.outputShape[2];
              this.poolIndexMap = new Jp([], [x * w * S, g * _ * b], {
                type: Int32Array
              });
              for (var T = new Jp([], [g, _, b]), P = 0, C = 0, k = e - g; C <= k; C += this.strides[0])
                for (var O = 0, E = n - _; O <= E; O += this.strides[1])
                  for (var j = 0, A = r - b; j <= A; j += this.strides[2]) Yp.a.assign(T.tensor, o.tensor.hi(C + g, O + _, j + b).lo(C, O, j)), this.poolIndexMap.tensor.data.set(T.tensor.data, P), P += g * _ * b;
              this.poolIndexMap.createGLTexture({
                type: "2d",
                format: "int",
                supportsTextureFragments: !0
              })
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            if (e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : ("channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0)), this.inputShape = e.tensor.shape, this._vol2col(e), this.tiledInput.createGLTexture({
              type: "2d",
              format: "float",
              supportsTextureFragments: !0
            })), this._calcOutputShape(this.inputShape), this._createIndexMap(), !this.output) {
              var n = bi(this.outputShape, 4),
                r = n[0],
                o = n[1],
                i = n[2],
                a = n[3],
                s = [r * o * i, a];
              this.output = new Jp([], s), this.output.createGLTexture({
                type: "2d",
                format: "float",
                supportsTextureFragments: !0
              }), this.output.is2DReshaped = !0, this.output.originalShape = this.outputShape, this.output.indicesForReshaped = h(this.outputShape, !1, -1)
            }
            var u = e.is2DReshaped || e.is2DSquareReshaped ? e : this.tiledInput,
              c = this.poolSize[0] * this.poolSize[1] * this.poolSize[2],
              l = "max" === this.poolingFunc,
              p = [{
                value: this.output.glTextureShape[1],
                type: "int",
                name: "channels"
              }, {
                value: c,
                type: "int",
                name: "poolSize"
              }, {
                value: +l,
                type: "bool",
                name: "isMaxPooling"
              }];
            u.glTextureFragments ? (u.convert2DRowFragmentedGLTextureToColStack(), Up.runProgram({
              program: this.poolingFragmentsProgram,
              output: this.output,
              inputs: [{
                input: u,
                name: "x"
              }, {
                input: this.poolIndexMap,
                name: "poolIndexMap"
              }],
              uniforms: p,
              supportsTextureFragments: !0
            }), u.removeGLTextureFragmentsAsColStack()) : Up.runProgram({
              program: this.poolingProgram,
              output: this.output,
              inputs: [{
                input: u,
                name: "x"
              }, {
                input: this.poolIndexMap,
                name: "poolIndexMap"
              }],
              uniforms: p
            }), 0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.reshapeFrom2D(), "channels_first" === this.dataFormat && (this.output.tensor = this.output.tensor.transpose(3, 0, 1, 2)))
          }
        }]), e
      }(Bp),
      fd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return ki(this, e), t = Oi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "MaxPooling3D", t.poolingFunc = "max", t
        }
        return Ei(e, t), e
      }(hd),
      dd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Ai(this, e), t = Fi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "AveragePooling1D", t.poolingFunc = "average", t
        }
        return Mi(e, t), e
      }(od),
      md = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Di(this, e), t = Ii(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "AveragePooling2D", t.poolingFunc = "average", t
        }
        return Li(e, t), e
      }(ud),
      yd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Ui(this, e), t = Gi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "AveragePooling3D", t.poolingFunc = "average", t
        }
        return Ni(e, t), e
      }(hd),
      vd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int channelDataSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (isMaxPooling) {\n    // GlobalMaxPooling\n    float maxval = 0.0;\n    for (int j = 0; j < size[1]; ++j) {\n      float val = texelFetch(x, ivec2(out_x, j), 0).r;\n      if (j == 0 || val > maxval) {\n        maxval = val;\n      }\n    }\n    outColor = vec4(maxval);\n  } else {\n    // GlobalAveragePooling\n    float sum = 0.0;\n    for (int j = 0; j < size[1]; ++j) {\n      float val = texelFetch(x, ivec2(out_x, j), 0).r;\n      sum += val;\n    }\n    outColor = vec4(sum / float(channelDataSize));\n  }\n}\n",
      gd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Hi(this, e), t = Yi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_GlobalPooling1D";
          var r = n.data_format,
            o = void 0 === r ? "channels_last" : r;
          return t.dataFormat = o, t.poolingFunc = "max", t.gpu && (t.poolingProgram = Up.compileProgram(vd)), t
        }
        return $i(e, t), Xi(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n = Vi(e.tensor.shape, 2),
              r = n[0],
              o = n[1];
            this.output = new Jp([], [o]);
            for (var i = 0, a = o; i < a; i++) "max" === this.poolingFunc ? this.output.tensor.set(i, Yp.a.sup(e.tensor.pick(null, i))) : "average" === this.poolingFunc && this.output.tensor.set(i, Yp.a.sum(e.tensor.pick(null, i)) / r)
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.inputShape = e.tensor.shape, this.output || (this.output = new Jp([], [this.inputShape[1]]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }));
            var n = "max" === this.poolingFunc;
            Up.runProgram({
              program: this.poolingProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.inputShape[0],
                type: "int",
                name: "channelDataSize"
              }, {
                value: +n,
                type: "bool",
                name: "isMaxPooling"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      _d = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Ji(this, e), t = Qi(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GlobalMaxPooling1D", t.poolingFunc = "max", t
        }
        return Zi(e, t), e
      }(gd),
      bd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int channelDataSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (isMaxPooling) {\n    // GlobalMaxPooling\n    float maxval = 0.0;\n    for (int j = 0; j < size[1]; ++j) {\n      float val = texelFetch(x, ivec2(out_x, j), 0).r;\n      if (j == 0 || val > maxval) {\n        maxval = val;\n      }\n    }\n    outColor = vec4(maxval);\n  } else {\n    // GlobalAveragePooling\n    float sum = 0.0;\n    for (int j = 0; j < size[1]; ++j) {\n      float val = texelFetch(x, ivec2(out_x, j), 0).r;\n      sum += val;\n    }\n    outColor = vec4(sum / float(channelDataSize));\n  }\n}\n",
      xd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          ra(this, e), t = aa(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_GlobalPooling2D";
          var r = n.data_format,
            o = void 0 === r ? "channels_last" : r;
          return t.dataFormat = o, t.poolingFunc = "max", t.gpu && (t.poolingProgram = Up.compileProgram(bd)), t
        }
        return sa(e, t), ia(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0));
            var n = na(e.tensor.shape, 3),
              r = n[0],
              o = n[1],
              i = n[2];
            this.output = new Jp([], [i]);
            for (var a = 0, s = i; a < s; a++) "max" === this.poolingFunc ? this.output.tensor.set(a, Yp.a.sup(e.tensor.pick(null, null, a))) : "average" === this.poolingFunc && this.output.tensor.set(a, Yp.a.sum(e.tensor.pick(null, null, a)) / (r * o))
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : ("channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 0)), this.inputShape = e.tensor.shape, e.reshapeTo2D(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.output || (this.output = new Jp([], [this.inputShape[2]]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }));
            var n = "max" === this.poolingFunc;
            Up.runProgram({
              program: this.poolingProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.inputShape[0] * this.inputShape[1],
                type: "int",
                name: "channelDataSize"
              }, {
                value: +n,
                type: "bool",
                name: "isMaxPooling"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      wd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return ca(this, e), t = la(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GlobalMaxPooling2D", t.poolingFunc = "max", t
        }
        return pa(e, t), e
      }(xd),
      Sd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int channelDataSize;\nuniform bool isMaxPooling;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (isMaxPooling) {\n    // GlobalMaxPooling\n    float maxval = 0.0;\n    for (int j = 0; j < size[1]; ++j) {\n      float val = texelFetch(x, ivec2(out_x, j), 0).r;\n      if (j == 0 || val > maxval) {\n        maxval = val;\n      }\n    }\n    outColor = vec4(maxval);\n  } else {\n    // GlobalAveragePooling\n    float sum = 0.0;\n    for (int j = 0; j < size[1]; ++j) {\n      float val = texelFetch(x, ivec2(out_x, j), 0).r;\n      sum += val;\n    }\n    outColor = vec4(sum / float(channelDataSize));\n  }\n}\n",
      Td = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          ma(this, e), t = ga(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "_GlobalPooling3D";
          var r = n.data_format,
            o = void 0 === r ? "channels_last" : r;
          return t.dataFormat = o, t.poolingFunc = "max", t.gpu && (t.poolingProgram = Up.compileProgram(Sd)), t
        }
        return _a(e, t), va(e, [{
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            "channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0));
            var n = da(e.tensor.shape, 4),
              r = n[0],
              o = n[1],
              i = n[2],
              a = n[3];
            this.output = new Jp([], [a]);
            for (var s = 0, u = a; s < u; s++) "max" === this.poolingFunc ? this.output.tensor.set(s, Yp.a.sup(e.tensor.pick(null, null, null, s))) : "average" === this.poolingFunc && this.output.tensor.set(s, Yp.a.sum(e.tensor.pick(null, null, null, s)) / (r * o * i))
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : ("channels_first" === this.dataFormat && (e.tensor = e.tensor.transpose(1, 2, 3, 0)), this.inputShape = e.tensor.shape, e.reshapeTo2D(), e.createGLTexture({
              type: "2d",
              format: "float"
            })), this.output || (this.output = new Jp([], [this.inputShape[3]]), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }));
            var n = "max" === this.poolingFunc;
            Up.runProgram({
              program: this.poolingProgram,
              output: this.output,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: this.inputShape[0] * this.inputShape[1] * this.inputShape[2],
                type: "int",
                name: "channelDataSize"
              }, {
                value: +n,
                type: "bool",
                name: "isMaxPooling"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Pd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return xa(this, e), t = wa(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GlobalMaxPooling3D", t.poolingFunc = "max", t
        }
        return Sa(e, t), e
      }(Td),
      Cd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Pa(this, e), t = Ca(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GlobalAveragePooling1D", t.poolingFunc = "average", t
        }
        return ka(e, t), e
      }(gd),
      kd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Ea(this, e), t = ja(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GlobalAveragePooling2D", t.poolingFunc = "average", t
        }
        return Aa(e, t), e
      }(xd),
      Od = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          return Ma(this, e), t = Ra(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "GlobalAveragePooling3D", t.poolingFunc = "average", t
        }
        return Da(e, t), e
      }(Td),
      Ed = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D source;\nout vec4 outColor;\n\nvoid main(void) {\n  outColor = texture(source, vec2(outTex.x, outTex.y));\n}\n",
      jd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      Ad = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D t1;\nuniform sampler2D t2;\nuniform sampler2D bias;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(bias, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float t1_val = texelFetch(t1, ivec2(out_x, out_y), 0).r;\n  float t2_val = texelFetch(t2, ivec2(out_x, out_y), 0).r;\n  float bias_val = texelFetch(bias, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(t1_val + t2_val + bias_val);\n}\n",
      Fd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int index;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n\n  outColor = vec4(texelFetch(x, ivec2(out_x, index), 0).r);\n}\n",
      Md = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform sampler2D y;\nuniform int index;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(y, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (out_y == index) {\n    outColor = vec4(texelFetch(x, ivec2(out_x, 0), 0).r);\n  } else {\n    outColor = vec4(texelFetch(y, ivec2(out_x, out_y), 0).r);\n  }\n}\n",
      Rd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          La(this, e), t = Ga(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), Object.defineProperty(qa(t), "_combine", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: th()({
              args: ["array", "array", "array", "array"],
              body: function t(e, n, r, o) {
                e = n + r + o
              }
            })
          }), t.layerClass = "SimpleRNN";
          var r = n.units,
            o = void 0 === r ? 1 : r,
            i = n.activation,
            a = void 0 === i ? "tanh" : i,
            s = n.use_bias,
            u = void 0 === s || s,
            c = n.return_sequences,
            l = void 0 !== c && c,
            p = n.go_backwards,
            h = void 0 !== p && p,
            f = n.stateful,
            d = void 0 !== f && f;
          return t.units = o, t.activation = a, t.activationFunc = Es[a], t.use_bias = u, t.returnSequences = l, t.goBackwards = h, t.stateful = d, t.params = t.use_bias ? ["kernel", "recurrent_kernel", "bias"] : ["kernel", "recurrent_kernel"], t.description = "output dimensions: ".concat(t.units), t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.description += t.returnSequences ? ", return sequences" : "", t.description += t.goBackwards ? ", backward direction" : "", t.description += t.stateful ? ", stateful" : "", t.gpu && (t.copyTextureProgram = Up.compileProgram(Ed), t.matMulProgram = Up.compileProgram(jd), t.activationProgram = Up.compileProgram(js[t.activation]), t.gateSummationProgram = Up.compileProgram(Ad), t.timestepReadProgram = Up.compileProgram(Fd), t.timestepWriteProgram = Up.compileProgram(Md)), t
        }
        return Ba(e, t), Ua(e, [{
          key: "setWeights",
          value: function t(n) {
            Na(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "setWeights", this).call(this, n), this.use_bias || (this.weights.bias = new Jp([], [this.units]), this.gpu && this.weights.bias.createGLTexture({
              type: "2d",
              format: "float"
            }))
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n = this,
              r = this.units,
              o = this.stateful && this.currentHiddenState ? this.currentHiddenState : new Jp([], [r]),
              i = new Jp([], [r]),
              a = new Jp([], [r]),
              s = new Jp([], [r]);
            this.hiddenStateSequence = new Jp([], [e.tensor.shape[0], r]);
            for (var u = new Jp([], [e.tensor.shape[1]]), c = function t() {
              Yp.a.assign(s.tensor, o.tensor), Object(yf.gemv)(1, n.weights.kernel.tensor.transpose(1, 0), u.tensor, 1, i.tensor), Object(yf.gemv)(1, n.weights.recurrent_kernel.tensor.transpose(1, 0), s.tensor, 1, a.tensor), n._combine(o.tensor, i.tensor, a.tensor, n.weights.bias.tensor), n.activationFunc(o)
            }, l = 0, p = e.tensor.shape[0]; l < p; l++) {
              var h = this.goBackwards ? p - l - 1 : l;
              Yp.a.assign(u.tensor, e.tensor.pick(h, null));
              [i, a].forEach(function(t) {
                return Yp.a.assigns(t.tensor, 0)
              }), c(), this.returnSequences && Yp.a.assign(this.hiddenStateSequence.tensor.pick(l, null), o.tensor)
            }
            this.returnSequences ? this.output = this.hiddenStateSequence : this.output = o, this.stateful && (this.currentHiddenState = o)
          }
        }, {
          key: "_stepGPU",
          value: function t() {
            Up.runProgram({
              program: this.copyTextureProgram,
              output: this.previousHiddenState,
              inputs: [{
                input: this.currentHiddenState,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXH,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.kernel,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHH,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.recurrent_kernel,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentHiddenStatePreactiv,
              inputs: [{
                input: this.tempXH,
                name: "t1"
              }, {
                input: this.tempHH,
                name: "t2"
              }, {
                input: this.weights.bias,
                name: "bias"
              }]
            }), "linear" !== this.activation ? Up.runProgram({
              program: this.activationProgram,
              output: this.currentHiddenState,
              inputs: [{
                input: this.currentHiddenStatePreactiv,
                name: "x"
              }]
            }) : this.currentHiddenState = this.currentHiddenStatePreactiv
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            });
            var n = this.units;
            this.currentHiddenState && this.stateful || (this.currentHiddenState = new Jp([], [n]), this.currentHiddenState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentHiddenStatePreactiv || (this.currentHiddenStatePreactiv = new Jp([], [n]), this.currentHiddenStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXH || (this.tempXH = new Jp([], [n]), this.tempXH.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHH || (this.tempHH = new Jp([], [n]), this.tempHH.createGLTexture({
              type: "2d",
              format: "float"
            })), this.previousHiddenState || (this.previousHiddenState = new Jp([], [n]), this.previousHiddenState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.hiddenStateSequence || (this.hiddenStateSequence = new Jp([], [e.glTextureShape[0], n]), this.hiddenStateSequence.createGLTexture({
              type: "2d",
              format: "float"
            })), this.hiddenStateSequenceCopy || (this.hiddenStateSequenceCopy = new Jp([], [e.glTextureShape[0], n]), this.hiddenStateSequenceCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentX || (this.currentX = new Jp([], [e.glTextureShape[1]]), this.currentX.createGLTexture({
              type: "2d",
              format: "float"
            }));
            for (var r = 0, o = e.glTextureShape[0]; r < o; r++) {
              var i = this.goBackwards ? o - r - 1 : r;
              Up.runProgram({
                program: this.timestepReadProgram,
                output: this.currentX,
                inputs: [{
                  input: e,
                  name: "x"
                }],
                uniforms: [{
                  value: i,
                  type: "int",
                  name: "index"
                }]
              }), this._stepGPU(), this.returnSequences && (Up.runProgram({
                program: this.copyTextureProgram,
                output: this.hiddenStateSequenceCopy,
                inputs: [{
                  input: this.hiddenStateSequence,
                  name: "source"
                }]
              }), Up.runProgram({
                program: this.timestepWriteProgram,
                output: this.hiddenStateSequence,
                inputs: [{
                  input: this.currentHiddenState,
                  name: "x"
                }, {
                  input: this.hiddenStateSequenceCopy,
                  name: "y"
                }],
                uniforms: [{
                  value: r,
                  type: "int",
                  name: "index"
                }]
              }))
            }
            this.returnSequences ? this.output = this.hiddenStateSequence : this.output = this.currentHiddenState, 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Dd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D source;\nout vec4 outColor;\n\nvoid main(void) {\n  outColor = texture(source, vec2(outTex.x, outTex.y));\n}\n",
      Id = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      Ld = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D t1;\nuniform sampler2D t2;\nuniform sampler2D bias;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(bias, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float t1_val = texelFetch(t1, ivec2(out_x, out_y), 0).r;\n  float t2_val = texelFetch(t2, ivec2(out_x, out_y), 0).r;\n  float bias_val = texelFetch(bias, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(t1_val + t2_val + bias_val);\n}\n",
      zd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D t1;\nuniform sampler2D t2;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(t1, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float t1_val = texelFetch(t1, ivec2(out_x, out_y), 0).r;\n  float t2_val = texelFetch(t2, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(t1_val * t2_val);\n}\n",
      Ud = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int index;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n\n  outColor = vec4(texelFetch(x, ivec2(out_x, index), 0).r);\n}\n",
      Gd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform sampler2D y;\nuniform int index;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(y, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (out_y == index) {\n    outColor = vec4(texelFetch(x, ivec2(out_x, 0), 0).r);\n  } else {\n    outColor = vec4(texelFetch(y, ivec2(out_x, out_y), 0).r);\n  }\n}\n",
      Nd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D c;\nuniform sampler2D ctm1;\nuniform sampler2D i;\nuniform sampler2D f;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(c, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float c_val = texelFetch(c, ivec2(out_x, out_y), 0).r;\n  float ctm1_val = texelFetch(ctm1, ivec2(out_x, out_y), 0).r;\n  float i_val = texelFetch(i, ivec2(out_x, out_y), 0).r;\n  float f_val = texelFetch(f, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(c_val * i_val + ctm1_val * f_val);\n}\n",
      Bd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Ha(this, e), t = Ya(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), Object.defineProperty(Ja(t), "_combine", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: th()({
              args: ["array", "array", "array", "array"],
              body: function t(e, n, r, o) {
                e = n + r + o
              }
            })
          }), Object.defineProperty(Ja(t), "_update", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: th()({
              args: ["array", "array", "array", "array"],
              body: function t(e, n, r, o) {
                e = e * r + n * o
              }
            })
          }), t.layerClass = "LSTM";
          var r = n.units,
            o = void 0 === r ? 1 : r,
            i = n.activation,
            a = void 0 === i ? "tanh" : i,
            s = n.use_bias,
            u = void 0 === s || s,
            c = n.recurrent_activation,
            l = void 0 === c ? "hard_sigmoid" : c,
            p = n.return_sequences,
            h = void 0 !== p && p,
            f = n.go_backwards,
            d = void 0 !== f && f,
            m = n.stateful,
            y = void 0 !== m && m;
          return t.units = o, t.activation = a, t.recurrentActivation = l, t.activationFunc = Es[a], t.recurrentActivationFunc = Es[l], t.use_bias = u, t.returnSequences = h, t.goBackwards = d, t.stateful = y, t.params = t.use_bias ? ["kernel", "recurrent_kernel", "bias"] : ["kernel", "recurrent_kernel"], t.description = "output dimensions: ".concat(t.units), t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.description += "linear" !== t.recurrentActivation ? ", ".concat(t.recurrentActivation, " recurrent activation") : "", t.description += t.returnSequences ? ", return sequences" : "", t.description += t.goBackwards ? ", backward direction" : "", t.description += t.stateful ? ", stateful" : "", t.gpu && (t.copyTextureProgram = Up.compileProgram(Dd), t.matMulProgram = Up.compileProgram(Id), t.activationProgram = Up.compileProgram(js[t.activation]), t.recurrentActivationProgram = Up.compileProgram(js[t.recurrentActivation]), t.gateSummationProgram = Up.compileProgram(Ld), t.gateProductProgram = Up.compileProgram(zd), t.timestepReadProgram = Up.compileProgram(Ud), t.timestepWriteProgram = Up.compileProgram(Gd), t.updateProgram = Up.compileProgram(Nd)), t
        }
        return Ka(e, t), Xa(e, [{
          key: "setWeights",
          value: function t(n) {
            var r = this;
            $a(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "setWeights", this).call(this, n);
            var o = this.weights.kernel.tensor.shape;
            this.weights.W_i = new Jp([], [o[0], this.units]), this.weights.W_f = new Jp([], [o[0], this.units]), this.weights.W_c = new Jp([], [o[0], this.units]), this.weights.W_o = new Jp([], [o[0], this.units]), Yp.a.assign(this.weights.W_i.tensor, this.weights.kernel.tensor.hi(o[0], this.units).lo(0, 0)), Yp.a.assign(this.weights.W_f.tensor, this.weights.kernel.tensor.hi(o[0], 2 * this.units).lo(0, this.units)), Yp.a.assign(this.weights.W_c.tensor, this.weights.kernel.tensor.hi(o[0], 3 * this.units).lo(0, 2 * this.units)), Yp.a.assign(this.weights.W_o.tensor, this.weights.kernel.tensor.hi(o[0], 4 * this.units).lo(0, 3 * this.units));
            var i = this.weights.recurrent_kernel.tensor.shape;
            if (this.weights.U_i = new Jp([], [i[0], this.units]), this.weights.U_f = new Jp([], [i[0], this.units]), this.weights.U_c = new Jp([], [i[0], this.units]), this.weights.U_o = new Jp([], [i[0], this.units]), Yp.a.assign(this.weights.U_i.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], this.units).lo(0, 0)), Yp.a.assign(this.weights.U_f.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], 2 * this.units).lo(0, this.units)), Yp.a.assign(this.weights.U_c.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], 3 * this.units).lo(0, 2 * this.units)), Yp.a.assign(this.weights.U_o.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], 4 * this.units).lo(0, 3 * this.units)), this.weights.b_i = new Jp([], [this.units]), this.weights.b_f = new Jp([], [this.units]), this.weights.b_c = new Jp([], [this.units]), this.weights.b_o = new Jp([], [this.units]), this.use_bias && (Yp.a.assign(this.weights.b_i.tensor, this.weights.bias.tensor.hi(this.units).lo(0)), Yp.a.assign(this.weights.b_f.tensor, this.weights.bias.tensor.hi(2 * this.units).lo(this.units)), Yp.a.assign(this.weights.b_c.tensor, this.weights.bias.tensor.hi(3 * this.units).lo(2 * this.units)), Yp.a.assign(this.weights.b_o.tensor, this.weights.bias.tensor.hi(4 * this.units).lo(3 * this.units))), this.gpu) {
              ["W_i", "W_f", "W_c", "W_o", "U_i", "U_f", "U_c", "U_o", "b_i", "b_f", "b_c", "b_o"].forEach(function(t) {
                r.weights[t].createGLTexture({
                  type: "2d",
                  format: "float"
                })
              })
            }
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n = this,
              r = this.weights.b_i.tensor.shape[0],
              o = this.weights.b_c.tensor.shape[0],
              i = this.weights.b_f.tensor.shape[0],
              a = this.weights.b_o.tensor.shape[0],
              s = new Jp([], [r]),
              u = new Jp([], [r]),
              c = new Jp([], [r]),
              l = new Jp([], [i]),
              p = new Jp([], [i]),
              h = new Jp([], [i]),
              f = new Jp([], [a]),
              d = new Jp([], [a]),
              m = new Jp([], [a]),
              y = new Jp([], [o]),
              v = new Jp([], [o]),
              g = new Jp([], [o]),
              _ = this.stateful && this.previousCandidate ? this.previousCandidate : new Jp([], [o]),
              b = this.stateful && this.currentHiddenState ? this.currentHiddenState : new Jp([], [o]),
              x = new Jp([], [o]);
            this.hiddenStateSequence = new Jp([], [e.tensor.shape[0], o]);
            for (var w = new Jp([], [e.tensor.shape[1]]), S = function t() {
              Yp.a.assign(x.tensor, b.tensor), Object(yf.gemv)(1, n.weights.W_i.tensor.transpose(1, 0), w.tensor, 1, u.tensor), Object(yf.gemv)(1, n.weights.U_i.tensor.transpose(1, 0), x.tensor, 1, c.tensor), n._combine(s.tensor, u.tensor, c.tensor, n.weights.b_i.tensor), n.recurrentActivationFunc(s), Object(yf.gemv)(1, n.weights.W_f.tensor.transpose(1, 0), w.tensor, 1, p.tensor), Object(yf.gemv)(1, n.weights.U_f.tensor.transpose(1, 0), x.tensor, 1, h.tensor), n._combine(l.tensor, p.tensor, h.tensor, n.weights.b_f.tensor), n.recurrentActivationFunc(l), Object(yf.gemv)(1, n.weights.W_o.tensor.transpose(1, 0), w.tensor, 1, d.tensor), Object(yf.gemv)(1, n.weights.U_o.tensor.transpose(1, 0), x.tensor, 1, m.tensor), n._combine(f.tensor, d.tensor, m.tensor, n.weights.b_o.tensor), n.recurrentActivationFunc(f), Object(yf.gemv)(1, n.weights.W_c.tensor.transpose(1, 0), w.tensor, 1, v.tensor), Object(yf.gemv)(1, n.weights.U_c.tensor.transpose(1, 0), x.tensor, 1, g.tensor), n._combine(y.tensor, v.tensor, g.tensor, n.weights.b_c.tensor), n.activationFunc(y), n._update(y.tensor, _.tensor, s.tensor, l.tensor), Yp.a.assign(_.tensor, y.tensor), n.activationFunc(y), Yp.a.mul(b.tensor, f.tensor, y.tensor)
            }, T = 0, P = e.tensor.shape[0]; T < P; T++) {
              var C = this.goBackwards ? P - T - 1 : T;
              Yp.a.assign(w.tensor, e.tensor.pick(C, null));
              [u, c, p, h, d, m, v, g].forEach(function(t) {
                return Yp.a.assigns(t.tensor, 0)
              }), S(), Yp.a.assign(this.hiddenStateSequence.tensor.pick(T, null), b.tensor)
            }
            this.returnSequences ? this.output = this.hiddenStateSequence : this.output = b, this.stateful && (this.previousCandidate = _, this.currentHiddenState = b)
          }
        }, {
          key: "_stepGPU",
          value: function t() {
            Up.runProgram({
              program: this.copyTextureProgram,
              output: this.previousHiddenState,
              inputs: [{
                input: this.currentHiddenState,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXI,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_i,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHI,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.U_i,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentInputGateStatePreactiv,
              inputs: [{
                input: this.tempXI,
                name: "t1"
              }, {
                input: this.tempHI,
                name: "t2"
              }, {
                input: this.weights.b_i,
                name: "bias"
              }]
            }), "linear" !== this.recurrentActivation ? Up.runProgram({
              program: this.recurrentActivationProgram,
              output: this.currentInputGateState,
              inputs: [{
                input: this.currentInputGateStatePreactiv,
                name: "x"
              }]
            }) : this.currentInputGateState = this.currentInputGateStatePreactiv, Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXF,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_f,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHF,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.U_f,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentForgetGateStatePreactiv,
              inputs: [{
                input: this.tempXF,
                name: "t1"
              }, {
                input: this.tempHF,
                name: "t2"
              }, {
                input: this.weights.b_f,
                name: "bias"
              }]
            }), "linear" !== this.recurrentActivation ? Up.runProgram({
              program: this.recurrentActivationProgram,
              output: this.currentForgetGateState,
              inputs: [{
                input: this.currentForgetGateStatePreactiv,
                name: "x"
              }]
            }) : this.currentForgetGateState = this.currentForgetGateStatePreactiv, Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXO,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_o,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHO,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.U_o,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentOutputGateStatePreactiv,
              inputs: [{
                input: this.tempXO,
                name: "t1"
              }, {
                input: this.tempHO,
                name: "t2"
              }, {
                input: this.weights.b_o,
                name: "bias"
              }]
            }), "linear" !== this.recurrentActivation ? Up.runProgram({
              program: this.recurrentActivationProgram,
              output: this.currentOutputGateState,
              inputs: [{
                input: this.currentOutputGateStatePreactiv,
                name: "x"
              }]
            }) : this.currentOutputGateState = this.currentOutputGateStatePreactiv, Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXC,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_c,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHC,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.U_c,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentCandidatePreactiv,
              inputs: [{
                input: this.tempXC,
                name: "t1"
              }, {
                input: this.tempHC,
                name: "t2"
              }, {
                input: this.weights.b_c,
                name: "bias"
              }]
            }), "linear" !== this.activation ? Up.runProgram({
              program: this.activationProgram,
              output: this.currentCandidate,
              inputs: [{
                input: this.currentCandidatePreactiv,
                name: "x"
              }]
            }) : this.currentCandidate = this.currentCandidatePreactiv, Up.runProgram({
              program: this.copyTextureProgram,
              output: this.currentCandidateCopy,
              inputs: [{
                input: this.currentCandidate,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.updateProgram,
              output: this.currentCandidate,
              inputs: [{
                input: this.currentCandidateCopy,
                name: "c"
              }, {
                input: this.previousCandidate,
                name: "ctm1"
              }, {
                input: this.currentInputGateState,
                name: "i"
              }, {
                input: this.currentForgetGateState,
                name: "f"
              }]
            }), Up.runProgram({
              program: this.copyTextureProgram,
              output: this.previousCandidate,
              inputs: [{
                input: this.currentCandidate,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.copyTextureProgram,
              output: this.currentCandidatePreactiv,
              inputs: [{
                input: this.currentCandidate,
                name: "source"
              }]
            }), "linear" !== this.activation ? Up.runProgram({
              program: this.activationProgram,
              output: this.currentCandidate,
              inputs: [{
                input: this.currentCandidatePreactiv,
                name: "x"
              }]
            }) : this.currentCandidate = this.currentCandidatePreactiv, Up.runProgram({
              program: this.gateProductProgram,
              output: this.currentHiddenState,
              inputs: [{
                input: this.currentOutputGateState,
                name: "t1"
              }, {
                input: this.currentCandidate,
                name: "t2"
              }]
            })
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            });
            var n = this.weights.b_i.glTextureShape[1],
              r = this.weights.b_c.glTextureShape[1],
              o = this.weights.b_f.glTextureShape[1],
              i = this.weights.b_o.glTextureShape[1];
            this.currentInputGateState || (this.currentInputGateState = new Jp([], [n]), this.currentInputGateState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentInputGateStatePreactiv || (this.currentInputGateStatePreactiv = new Jp([], [n]), this.currentInputGateStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXI || (this.tempXI = new Jp([], [n]), this.tempXI.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHI || (this.tempHI = new Jp([], [n]), this.tempHI.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentForgetGateState || (this.currentForgetGateState = new Jp([], [o]), this.currentForgetGateState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentForgetGateStatePreactiv || (this.currentForgetGateStatePreactiv = new Jp([], [o]), this.currentForgetGateStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXF || (this.tempXF = new Jp([], [o]), this.tempXF.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHF || (this.tempHF = new Jp([], [o]), this.tempHF.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentOutputGateState || (this.currentOutputGateState = new Jp([], [i]), this.currentOutputGateState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentOutputGateStatePreactiv || (this.currentOutputGateStatePreactiv = new Jp([], [i]), this.currentOutputGateStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXO || (this.tempXO = new Jp([], [i]), this.tempXO.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHO || (this.tempHO = new Jp([], [i]), this.tempHO.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentCandidate || (this.currentCandidate = new Jp([], [r]), this.currentCandidate.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentCandidateCopy || (this.currentCandidateCopy = new Jp([], [r]), this.currentCandidateCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentCandidatePreactiv || (this.currentCandidatePreactiv = new Jp([], [r]), this.currentCandidatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXC || (this.tempXC = new Jp([], [r]), this.tempXC.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHC || (this.tempHC = new Jp([], [r]), this.tempHC.createGLTexture({
              type: "2d",
              format: "float"
            })), this.previousCandidate && this.stateful || (this.previousCandidate = new Jp([], [r]), this.previousCandidate.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentHiddenState && this.stateful || (this.currentHiddenState = new Jp([], [r]), this.currentHiddenState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.previousHiddenState || (this.previousHiddenState = new Jp([], [r]), this.previousHiddenState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.hiddenStateSequence || (this.hiddenStateSequence = new Jp([], [e.glTextureShape[0], r]), this.hiddenStateSequence.createGLTexture({
              type: "2d",
              format: "float"
            })), this.hiddenStateSequenceCopy || (this.hiddenStateSequenceCopy = new Jp([], [e.glTextureShape[0], r]), this.hiddenStateSequenceCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentX || (this.currentX = new Jp([], [e.glTextureShape[1]]), this.currentX.createGLTexture({
              type: "2d",
              format: "float"
            }));
            for (var a = 0, s = e.glTextureShape[0]; a < s; a++) {
              var u = this.goBackwards ? s - a - 1 : a;
              Up.runProgram({
                program: this.timestepReadProgram,
                output: this.currentX,
                inputs: [{
                  input: e,
                  name: "x"
                }],
                uniforms: [{
                  value: u,
                  type: "int",
                  name: "index"
                }]
              }), this._stepGPU(), this.returnSequences && (Up.runProgram({
                program: this.copyTextureProgram,
                output: this.hiddenStateSequenceCopy,
                inputs: [{
                  input: this.hiddenStateSequence,
                  name: "source"
                }]
              }), Up.runProgram({
                program: this.timestepWriteProgram,
                output: this.hiddenStateSequence,
                inputs: [{
                  input: this.currentHiddenState,
                  name: "x"
                }, {
                  input: this.hiddenStateSequenceCopy,
                  name: "y"
                }],
                uniforms: [{
                  value: a,
                  type: "int",
                  name: "index"
                }]
              }))
            }
            this.returnSequences ? this.output = this.hiddenStateSequence : this.output = this.currentHiddenState, 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      qd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D source;\nout vec4 outColor;\n\nvoid main(void) {\n  outColor = texture(source, vec2(outTex.x, outTex.y));\n}\n",
      Vd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D A;\nuniform sampler2D B;\nuniform sampler2D C;\nuniform bool addC;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 A_size = textureSize(A, 0);\n  ivec2 B_size = textureSize(B, 0);\n  int out_x = int(float(B_size[0]) * outTex.x);\n  int out_y = int(float(A_size[1]) * outTex.y);\n  int commonDim = A_size[0];\n\n  float sum = 0.;\n  for (int i = 0; i < commonDim; ++i) {\n    float a = texelFetch(A, ivec2(i, out_y), 0).r;\n    float b = texelFetch(B, ivec2(out_x, i), 0).r;\n    sum += a * b;\n  }\n\n  if (addC) {\n    sum += texelFetch(C, ivec2(out_x, 0), 0).r;\n  }\n\n  outColor = vec4(sum);\n}\n",
      Hd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D t1;\nuniform sampler2D t2;\nuniform sampler2D bias;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(bias, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float t1_val = texelFetch(t1, ivec2(out_x, out_y), 0).r;\n  float t2_val = texelFetch(t2, ivec2(out_x, out_y), 0).r;\n  float bias_val = texelFetch(bias, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(t1_val + t2_val + bias_val);\n}\n",
      Wd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D t1;\nuniform sampler2D t2;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(t1, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float t1_val = texelFetch(t1, ivec2(out_x, out_y), 0).r;\n  float t2_val = texelFetch(t2, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(t1_val * t2_val);\n}\n",
      Xd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int index;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n\n  outColor = vec4(texelFetch(x, ivec2(out_x, index), 0).r);\n}\n",
      Yd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform sampler2D y;\nuniform int index;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(y, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (out_y == index) {\n    outColor = vec4(texelFetch(x, ivec2(out_x, 0), 0).r);\n  } else {\n    outColor = vec4(texelFetch(y, ivec2(out_x, out_y), 0).r);\n  }\n}\n",
      $d = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D h;\nuniform sampler2D htm1;\nuniform sampler2D z;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(h, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float h_val = texelFetch(h, ivec2(out_x, out_y), 0).r;\n  float htm1_val = texelFetch(htm1, ivec2(out_x, out_y), 0).r;\n  float z_val = texelFetch(z, ivec2(out_x, out_y), 0).r;\n\n  outColor = vec4(h_val * (float(1.0) - z_val) + htm1_val * z_val);\n}\n",
      Kd = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Za(this, e), t = ns(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), Object.defineProperty(is(t), "_combine", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: th()({
              args: ["array", "array", "array", "array"],
              body: function t(e, n, r, o) {
                e = n + r + o
              }
            })
          }), Object.defineProperty(is(t), "_update", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: th()({
              args: ["array", "array", "array"],
              body: function t(e, n, r) {
                e = e * (1 - r) + n * r
              }
            })
          }), t.layerClass = "GRU";
          var r = n.units,
            o = void 0 === r ? 1 : r,
            i = n.activation,
            a = void 0 === i ? "tanh" : i,
            s = n.use_bias,
            u = void 0 === s || s,
            c = n.recurrent_activation,
            l = void 0 === c ? "hard_sigmoid" : c,
            p = n.return_sequences,
            h = void 0 !== p && p,
            f = n.go_backwards,
            d = void 0 !== f && f,
            m = n.stateful,
            y = void 0 !== m && m;
          return t.units = o, t.activation = a, t.recurrentActivation = l, t.activationFunc = Es[a], t.recurrentActivationFunc = Es[l], t.use_bias = u, t.returnSequences = h, t.goBackwards = d, t.stateful = y, t.params = t.use_bias ? ["kernel", "recurrent_kernel", "bias"] : ["kernel", "recurrent_kernel"], t.description = "output dimensions: ".concat(t.units), t.description += "linear" !== t.activation ? ", ".concat(t.activation, " activation") : "", t.description += "linear" !== t.recurrentActivation ? ", ".concat(t.recurrentActivation, " recurrent activation") : "", t.description += t.returnSequences ? ", return sequences" : "", t.description += t.goBackwards ? ", backward direction" : "", t.description += t.stateful ? ", stateful" : "", t.gpu && (t.copyTextureProgram = Up.compileProgram(qd), t.matMulProgram = Up.compileProgram(Vd), t.activationProgram = Up.compileProgram(js[t.activation]), t.recurrentActivationProgram = Up.compileProgram(js[t.recurrentActivation]), t.gateSummationProgram = Up.compileProgram(Hd), t.gateProductProgram = Up.compileProgram(Wd), t.timestepReadProgram = Up.compileProgram(Xd), t.timestepWriteProgram = Up.compileProgram(Yd), t.updateProgram = Up.compileProgram($d)), t
        }
        return os(e, t), es(e, [{
          key: "setWeights",
          value: function t(n) {
            var r = this;
            rs(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "setWeights", this).call(this, n);
            var o = this.weights.kernel.tensor.shape;
            this.weights.W_z = new Jp([], [o[0], this.units]), this.weights.W_r = new Jp([], [o[0], this.units]), this.weights.W_h = new Jp([], [o[0], this.units]), Yp.a.assign(this.weights.W_z.tensor, this.weights.kernel.tensor.hi(o[0], this.units).lo(0, 0)), Yp.a.assign(this.weights.W_r.tensor, this.weights.kernel.tensor.hi(o[0], 2 * this.units).lo(0, this.units)), Yp.a.assign(this.weights.W_h.tensor, this.weights.kernel.tensor.hi(o[0], 3 * this.units).lo(0, 2 * this.units));
            var i = this.weights.recurrent_kernel.tensor.shape;
            if (this.weights.U_z = new Jp([], [i[0], this.units]), this.weights.U_r = new Jp([], [i[0], this.units]), this.weights.U_h = new Jp([], [i[0], this.units]), Yp.a.assign(this.weights.U_z.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], this.units).lo(0, 0)), Yp.a.assign(this.weights.U_r.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], 2 * this.units).lo(0, this.units)), Yp.a.assign(this.weights.U_h.tensor, this.weights.recurrent_kernel.tensor.hi(i[0], 3 * this.units).lo(0, 2 * this.units)), this.weights.b_z = new Jp([], [this.units]), this.weights.b_r = new Jp([], [this.units]), this.weights.b_h = new Jp([], [this.units]), this.use_bias && (Yp.a.assign(this.weights.b_z.tensor, this.weights.bias.tensor.hi(this.units).lo(0)), Yp.a.assign(this.weights.b_r.tensor, this.weights.bias.tensor.hi(2 * this.units).lo(this.units)), Yp.a.assign(this.weights.b_h.tensor, this.weights.bias.tensor.hi(3 * this.units).lo(2 * this.units))), this.gpu) {
              ["W_z", "W_r", "W_h", "U_z", "U_r", "U_h", "b_z", "b_r", "b_h"].forEach(function(t) {
                r.weights[t].createGLTexture({
                  type: "2d",
                  format: "float"
                })
              })
            }
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n = this,
              r = this.weights.b_z.tensor.shape[0],
              o = this.weights.b_r.tensor.shape[0],
              i = this.weights.b_h.tensor.shape[0],
              a = new Jp([], [r]),
              s = new Jp([], [r]),
              u = new Jp([], [r]),
              c = new Jp([], [o]),
              l = new Jp([], [o]),
              p = new Jp([], [o]),
              h = this.stateful && this.currentHiddenState ? this.currentHiddenState : new Jp([], [i]),
              f = new Jp([], [i]),
              d = new Jp([], [i]),
              m = new Jp([], [i]);
            this.hiddenStateSequence = new Jp([], [e.tensor.shape[0], i]);
            for (var y = new Jp([], [e.tensor.shape[1]]), v = function t() {
              Yp.a.assign(m.tensor, h.tensor), Object(yf.gemv)(1, n.weights.W_z.tensor.transpose(1, 0), y.tensor, 1, s.tensor), Object(yf.gemv)(1, n.weights.U_z.tensor.transpose(1, 0), m.tensor, 1, u.tensor), n._combine(a.tensor, s.tensor, u.tensor, n.weights.b_z.tensor), n.recurrentActivationFunc(a), Object(yf.gemv)(1, n.weights.W_r.tensor.transpose(1, 0), y.tensor, 1, l.tensor), Object(yf.gemv)(1, n.weights.U_r.tensor.transpose(1, 0), m.tensor, 1, p.tensor), n._combine(c.tensor, l.tensor, p.tensor, n.weights.b_r.tensor), n.recurrentActivationFunc(c), Yp.a.muleq(c.tensor, m.tensor), Object(yf.gemv)(1, n.weights.W_h.tensor.transpose(1, 0), y.tensor, 1, f.tensor), Object(yf.gemv)(1, n.weights.U_h.tensor.transpose(1, 0), c.tensor, 1, d.tensor), n._combine(h.tensor, f.tensor, d.tensor, n.weights.b_h.tensor), n.activationFunc(h), n._update(h.tensor, m.tensor, a.tensor)
            }, g = 0, _ = e.tensor.shape[0]; g < _; g++) {
              var b = this.goBackwards ? _ - g - 1 : g;
              Yp.a.assign(y.tensor, e.tensor.pick(b, null));
              [s, u, l, p, f, d].forEach(function(t) {
                return Yp.a.assigns(t.tensor, 0)
              }), v(), this.returnSequences && Yp.a.assign(this.hiddenStateSequence.tensor.pick(g, null), h.tensor)
            }
            this.returnSequences ? this.output = this.hiddenStateSequence : this.output = h, this.stateful && (this.currentHiddenState = h)
          }
        }, {
          key: "_stepGPU",
          value: function t() {
            Up.runProgram({
              program: this.copyTextureProgram,
              output: this.previousHiddenState,
              inputs: [{
                input: this.currentHiddenState,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXZ,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_z,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHZ,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.U_z,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentUpdateGateStatePreactiv,
              inputs: [{
                input: this.tempXZ,
                name: "t1"
              }, {
                input: this.tempHZ,
                name: "t2"
              }, {
                input: this.weights.b_z,
                name: "bias"
              }]
            }), "linear" !== this.recurrentActivation ? Up.runProgram({
              program: this.recurrentActivationProgram,
              output: this.currentUpdateGateState,
              inputs: [{
                input: this.currentUpdateGateStatePreactiv,
                name: "x"
              }]
            }) : this.currentUpdateGateState = this.currentUpdateGateStatePreactiv, Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXR,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_r,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHR,
              inputs: [{
                input: this.previousHiddenState,
                name: "A"
              }, {
                input: this.weights.U_r,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentResetGateStatePreactiv,
              inputs: [{
                input: this.tempXR,
                name: "t1"
              }, {
                input: this.tempHR,
                name: "t2"
              }, {
                input: this.weights.b_r,
                name: "bias"
              }]
            }), "linear" !== this.recurrentActivation ? Up.runProgram({
              program: this.recurrentActivationProgram,
              output: this.currentResetGateState,
              inputs: [{
                input: this.currentResetGateStatePreactiv,
                name: "x"
              }]
            }) : this.currentResetGateState = this.currentResetGateStatePreactiv, Up.runProgram({
              program: this.copyTextureProgram,
              output: this.currentResetGateStateCopy,
              inputs: [{
                input: this.currentResetGateState,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.gateProductProgram,
              output: this.currentResetGateState,
              inputs: [{
                input: this.currentResetGateStateCopy,
                name: "t1"
              }, {
                input: this.previousHiddenState,
                name: "t2"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempXH,
              inputs: [{
                input: this.currentX,
                name: "A"
              }, {
                input: this.weights.W_h,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.matMulProgram,
              output: this.tempHH,
              inputs: [{
                input: this.currentResetGateState,
                name: "A"
              }, {
                input: this.weights.U_h,
                name: "B"
              }],
              uniforms: [{
                value: 0,
                type: "bool",
                name: "addC"
              }]
            }), Up.runProgram({
              program: this.gateSummationProgram,
              output: this.currentHiddenStatePreactiv,
              inputs: [{
                input: this.tempXH,
                name: "t1"
              }, {
                input: this.tempHH,
                name: "t2"
              }, {
                input: this.weights.b_h,
                name: "bias"
              }]
            }), "linear" !== this.activation ? Up.runProgram({
              program: this.activationProgram,
              output: this.currentHiddenState,
              inputs: [{
                input: this.currentHiddenStatePreactiv,
                name: "x"
              }]
            }) : this.currentHiddenState = this.currentHiddenStatePreactiv, Up.runProgram({
              program: this.copyTextureProgram,
              output: this.currentHiddenStateCopy,
              inputs: [{
                input: this.currentHiddenState,
                name: "source"
              }]
            }), Up.runProgram({
              program: this.updateProgram,
              output: this.currentHiddenState,
              inputs: [{
                input: this.currentHiddenStateCopy,
                name: "h"
              }, {
                input: this.previousHiddenState,
                name: "htm1"
              }, {
                input: this.currentUpdateGateState,
                name: "z"
              }]
            })
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            });
            var n = this.weights.b_z.glTextureShape[1],
              r = this.weights.b_r.glTextureShape[1],
              o = this.weights.b_h.glTextureShape[1];
            this.currentHiddenState && this.stateful || (this.currentHiddenState = new Jp([], [o]), this.currentHiddenState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentHiddenStateCopy || (this.currentHiddenStateCopy = new Jp([], [o]), this.currentHiddenStateCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentHiddenStatePreactiv || (this.currentHiddenStatePreactiv = new Jp([], [o]), this.currentHiddenStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentUpdateGateState || (this.currentUpdateGateState = new Jp([], [n]), this.currentUpdateGateState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentUpdateGateStatePreactiv || (this.currentUpdateGateStatePreactiv = new Jp([], [n]), this.currentUpdateGateStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXZ || (this.tempXZ = new Jp([], [n]), this.tempXZ.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHZ || (this.tempHZ = new Jp([], [n]), this.tempHZ.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentResetGateState || (this.currentResetGateState = new Jp([], [r]), this.currentResetGateState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentResetGateStateCopy || (this.currentResetGateStateCopy = new Jp([], [r]), this.currentResetGateStateCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentResetGateStatePreactiv || (this.currentResetGateStatePreactiv = new Jp([], [r]), this.currentResetGateStatePreactiv.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXR || (this.tempXR = new Jp([], [r]), this.tempXR.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHR || (this.tempHR = new Jp([], [r]), this.tempHR.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempXH || (this.tempXH = new Jp([], [o]), this.tempXH.createGLTexture({
              type: "2d",
              format: "float"
            })), this.tempHH || (this.tempHH = new Jp([], [o]), this.tempHH.createGLTexture({
              type: "2d",
              format: "float"
            })), this.previousHiddenState || (this.previousHiddenState = new Jp([], [o]), this.previousHiddenState.createGLTexture({
              type: "2d",
              format: "float"
            })), this.hiddenStateSequence || (this.hiddenStateSequence = new Jp([], [e.glTextureShape[0], o]), this.hiddenStateSequence.createGLTexture({
              type: "2d",
              format: "float"
            })), this.hiddenStateSequenceCopy || (this.hiddenStateSequenceCopy = new Jp([], [e.glTextureShape[0], o]), this.hiddenStateSequenceCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), this.currentX || (this.currentX = new Jp([], [e.glTextureShape[1]]), this.currentX.createGLTexture({
              type: "2d",
              format: "float"
            }));
            for (var i = 0, a = e.glTextureShape[0]; i < a; i++) {
              var s = this.goBackwards ? a - i - 1 : i;
              Up.runProgram({
                program: this.timestepReadProgram,
                output: this.currentX,
                inputs: [{
                  input: e,
                  name: "x"
                }],
                uniforms: [{
                  value: s,
                  type: "int",
                  name: "index"
                }]
              }), this._stepGPU(), this.returnSequences && (Up.runProgram({
                program: this.copyTextureProgram,
                output: this.hiddenStateSequenceCopy,
                inputs: [{
                  input: this.hiddenStateSequence,
                  name: "source"
                }]
              }), Up.runProgram({
                program: this.timestepWriteProgram,
                output: this.hiddenStateSequence,
                inputs: [{
                  input: this.currentHiddenState,
                  name: "x"
                }, {
                  input: this.hiddenStateSequenceCopy,
                  name: "y"
                }],
                uniforms: [{
                  value: i,
                  type: "int",
                  name: "index"
                }]
              }))
            }
            this.returnSequences ? this.output = this.hiddenStateSequence : this.output = this.currentHiddenState, 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      Jd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D source;\nout vec4 outColor;\n\nvoid main(void) {\n  outColor = texture(source, vec2(outTex.x, outTex.y));\n}\n",
      Qd = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform isampler2D indexMap;\nuniform int inputCols;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(indexMap, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(inputCols)));\n    int colIndex = int(mod(float(index), float(inputCols)));\n    float val = texelFetch(x, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = vec4(0.0);\n  }\n}\n",
      Zd = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D x;\nuniform int t;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(x, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n\n  outColor = vec4(texelFetch(x, ivec2(out_x, t), 0).r);\n}\n",
      tm = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D outputCopy;\nuniform sampler2D sliceOutput;\nuniform int t;\nuniform int timesteps;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(sliceOutput, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(timesteps) * outTex.y);\n\n  if (t == out_y) {\n    outColor = vec4(texelFetch(sliceOutput, ivec2(out_x, 0), 0).r);\n  } else {\n    outColor = texelFetch(outputCopy, ivec2(out_x, out_y), 0);\n  }\n}\n",
      em = "#version 300 es\nprecision highp float;\nprecision highp isampler2D;\n\nin vec2 outTex;\nuniform sampler2D outputCopy;\nuniform sampler2D sliceOutput;\nuniform isampler2D indexMap;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(outputCopy, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  int index = texelFetch(indexMap, ivec2(out_x, out_y), 0).r;\n\n  if (index != -1) {\n    int rowIndex = int(floor(float(index) / float(textureSize(sliceOutput, 0)[0])));\n    int colIndex = int(mod(float(index), float(textureSize(sliceOutput, 0)[0])));\n    float val = texelFetch(sliceOutput, ivec2(colIndex, rowIndex), 0).r;\n    outColor = vec4(val);\n  } else {\n    outColor = texelFetch(outputCopy, ivec2(out_x, out_y), 0);\n  }\n}\n",
      nm = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          us(this, e), t = ps(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "TimeDistributed";
          var r = n.layer;
          r || t.throwError("wrapped layer is undefined.");
          var o = Object.assign({}, r.config, {
            gpu: n.gpu
          });
          return t.wrappedLayer = new Fs[r.class_name](o), t.wrappedLayer.outbound = [null], t.gpu && (t.copyTextureProgram = Up.compileProgram(Jd), t.mapInputProgram = Up.compileProgram(Qd), t.selectSliceProgram = Up.compileProgram(Zd), t.copySliceOutputProgram = Up.compileProgram(tm), t.mapSliceOutputProgram = Up.compileProgram(em)), t
        }
        return hs(e, t), ls(e, [{
          key: "setWeights",
          value: function t(e) {
            this.wrappedLayer.setWeights(e)
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            var n, r, o = ss(e.tensor.shape.slice(1)),
              i = new Jp([], o);
            Yp.a.assign(i.tensor, (n = e.tensor).pick.apply(n, [0].concat(ss(Array(o.length).fill(null)))));
            var a = this.wrappedLayer.call(i),
              s = a.tensor.shape.slice();
            this.output = new Jp([], [e.tensor.shape[0]].concat(ss(s))), Yp.a.assign((r = this.output.tensor).pick.apply(r, [0].concat(ss(Array(s.length).fill(null)))), a.tensor);
            for (var u = 1, c = e.tensor.shape[0]; u < c; u++) {
              var l, p;
              Yp.a.assign(i.tensor, (l = e.tensor).pick.apply(l, [u].concat(ss(Array(o.length).fill(null))))), a = this.wrappedLayer.call(i), Yp.a.assign((p = this.output.tensor).pick.apply(p, [u].concat(ss(Array(s.length).fill(null)))), a.tensor)
            }
          }
        }, {
          key: "_createIndexMap",
          value: function t(e) {
            if (!this.indexMaps) {
              var n = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.indexMaps = [];
              for (var r = this.inputShape[0], o = this.inputShape.slice(1), i = 0; i < r; i++) {
                var a, s = new Jp([], o, {
                  type: Int32Array
                });
                Yp.a.assign(s.tensor, (a = n.tensor).pick.apply(a, [i].concat(ss(Array(o.length).fill(null))))), s.reshapeTo2DSquare(), s.createGLTexture({
                  type: "2d",
                  format: "int"
                }), this.indexMaps.push(s)
              }
            }
          }
        }, {
          key: "_createOutputIndexMap",
          value: function t(e) {
            if (!this.outputIndexMaps) {
              var n = new Jp(e.data, e.shape, {
                type: Int32Array
              });
              this.outputIndexMaps = [];
              for (var r = this.outputShape[0], o = this.outputShape.slice(1), i = 0; i < r; i++) {
                var a, s = new Jp([], this.outputShape, {
                  type: Int32Array
                });
                Yp.a.assigns(s.tensor, -1), Yp.a.assign((a = s.tensor).pick.apply(a, [i].concat(ss(Array(o.length).fill(null)))), n.tensor), s.reshapeTo2DSquare(), s.createGLTexture({
                  type: "2d",
                  format: "int"
                }), this.outputIndexMaps.push(s)
              }
            }
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.is2DReshaped || e.is2DSquareReshaped ? this.inputShape = e.originalShape : this.inputShape = e.tensor.shape, e.glTexture || (e.tensor.shape.length <= 2 ? e.createGLTexture({
              type: "2d",
              format: "float"
            }) : e.tensor.shape.length > 2 && !e.is2DReshaped && (e.reshapeTo2DSquare(), e.createGLTexture({
              type: "2d",
              format: "float"
            }))), this.inputShape.length > 2 && this._createIndexMap(e.indicesForReshaped);
            var n = this.inputShape[0],
              r = this.inputShape.slice(1);
            this.slice || (this.slice = new Jp([], r), r.length <= 2 ? this.slice.createGLTexture({
              type: "2d",
              format: "float"
            }) : (this.slice.reshapeTo2DSquare(), this.slice.createGLTexture({
              type: "2d",
              format: "float"
            }))), this.inputShape.length <= 2 ? Up.runProgram({
              program: this.selectSliceProgram,
              output: this.slice,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: 0,
                type: "int",
                name: "t"
              }]
            }) : Up.runProgram({
              program: this.mapInputProgram,
              output: this.slice,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMaps[0],
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), this.wrappedLayer._callGPU(this.slice), this.sliceOutput = this.wrappedLayer.output, this.output || (this.inputShape.length <= 2 ? (this.outputShape = [n, this.sliceOutput.glTextureShape[1]], this.output = new Jp([], this.outputShape), this.outputCopy = new Jp([], this.outputShape), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }), this.outputCopy.createGLTexture({
              type: "2d",
              format: "float"
            })) : (this.outputShape = [n].concat(ss(this.sliceOutput.originalShape)), this.output = new Jp([], this.outputShape), this.outputCopy = new Jp([], this.outputShape), this.output.reshapeTo2DSquare(), this.outputCopy.reshapeTo2DSquare(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }), this.outputCopy.createGLTexture({
              type: "2d",
              format: "float"
            }), this._createOutputIndexMap(this.sliceOutput.indicesForReshaped))), Up.runProgram({
              program: this.copyTextureProgram,
              output: this.outputCopy,
              inputs: [{
                input: this.output,
                name: "source"
              }]
            }), this.inputShape.length <= 2 ? Up.runProgram({
              program: this.copySliceOutputProgram,
              output: this.output,
              inputs: [{
                input: this.outputCopy,
                name: "outputCopy"
              }, {
                input: this.sliceOutput,
                name: "sliceOutput"
              }],
              uniforms: [{
                value: 0,
                type: "int",
                name: "t"
              }, {
                value: n,
                type: "int",
                name: "timesteps"
              }]
            }) : Up.runProgram({
              program: this.mapSliceOutputProgram,
              output: this.output,
              inputs: [{
                input: this.outputCopy,
                name: "outputCopy"
              }, {
                input: this.sliceOutput,
                name: "sliceOutput"
              }, {
                input: this.outputIndexMaps[0],
                name: "indexMap"
              }]
            });
            for (var o = 1; o < n; o++) this.inputShape.length <= 2 ? Up.runProgram({
              program: this.selectSliceProgram,
              output: this.slice,
              inputs: [{
                input: e,
                name: "x"
              }],
              uniforms: [{
                value: o,
                type: "int",
                name: "t"
              }]
            }) : Up.runProgram({
              program: this.mapInputProgram,
              output: this.slice,
              inputs: [{
                input: e,
                name: "x"
              }, {
                input: this.indexMaps[o],
                name: "indexMap"
              }],
              uniforms: [{
                value: e.glTextureShape[1],
                type: "int",
                name: "inputCols"
              }]
            }), this.wrappedLayer._callGPU(this.slice), this.sliceOutput = this.wrappedLayer.output, Up.runProgram({
              program: this.copyTextureProgram,
              output: this.outputCopy,
              inputs: [{
                input: this.output,
                name: "source"
              }]
            }), this.inputShape.length <= 2 ? Up.runProgram({
              program: this.copySliceOutputProgram,
              output: this.output,
              inputs: [{
                input: this.outputCopy,
                name: "outputCopy"
              }, {
                input: this.sliceOutput,
                name: "sliceOutput"
              }],
              uniforms: [{
                value: o,
                type: "int",
                name: "t"
              }, {
                value: n,
                type: "int",
                name: "timesteps"
              }]
            }) : Up.runProgram({
              program: this.mapSliceOutputProgram,
              output: this.output,
              inputs: [{
                input: this.outputCopy,
                name: "outputCopy"
              }, {
                input: this.sliceOutput,
                name: "sliceOutput"
              }, {
                input: this.outputIndexMaps[o],
                name: "indexMap"
              }]
            });
            0 === this.outbound.length && (this.output.transferFromGLTexture(), this.output.is2DReshaped ? this.output.reshapeFrom2D() : this.output.is2DSquareReshaped && this.output.reshapeFrom2DSquare())
          }
        }]), e
      }(Bp),
      rm = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D source;\nout vec4 outColor;\n\nvoid main(void) {\n  outColor = texture(source, vec2(outTex.x, outTex.y));\n}\n",
      om = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D forward;\nuniform sampler2D backward;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(forward, 0);\n  int out_x = int(float(size[0] * 2) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  if (out_x >= 0 && out_x < size[0]) {\n    outColor = vec4(texelFetch(forward, ivec2(out_x, out_y), 0).r);\n  } else {\n    outColor = vec4(texelFetch(backward, ivec2(out_x - size[0], size[1] - out_y - 1), 0).r);\n  }\n}\n",
      im = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D forward;\nuniform sampler2D backward;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(forward, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float forward_val = texelFetch(forward, ivec2(out_x, out_y), 0).r;\n  float backward_val = texelFetch(backward, ivec2(out_x, size[1] - out_y - 1), 0).r;\n\n  outColor = vec4(forward_val + backward_val);\n}\n",
      am = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D forward;\nuniform sampler2D backward;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(forward, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float forward_val = texelFetch(forward, ivec2(out_x, out_y), 0).r;\n  float backward_val = texelFetch(backward, ivec2(out_x, size[1] - out_y - 1), 0).r;\n\n  outColor = vec4(forward_val * backward_val);\n}\n",
      sm = "#version 300 es\nprecision highp float;\n\nin vec2 outTex;\nuniform sampler2D forward;\nuniform sampler2D backward;\nout vec4 outColor;\n\nvoid main() {\n  ivec2 size = textureSize(forward, 0);\n  int out_x = int(float(size[0]) * outTex.x);\n  int out_y = int(float(size[1]) * outTex.y);\n\n  float forward_val = texelFetch(forward, ivec2(out_x, out_y), 0).r;\n  float backward_val = texelFetch(backward, ivec2(out_x, size[1] - out_y - 1), 0).r;\n\n  outColor = vec4(0.5 * (forward_val + backward_val));\n}\n",
      um = function(t) {
        function e() {
          var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          ds(this, e), t = vs(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this, n)), t.layerClass = "Bidirectional";
          var r = n.layer,
            o = n.merge_mode,
            i = void 0 === o ? "concat" : o;
          r || t.throwError("wrapped layer is undefined."), ["SimpleRNN", "GRU", "LSTM"].includes(r.class_name) || t.throwError("cannot wrap ".concat(r.class_name, " layer.")), ["concat", "sum", "mul", "ave"].includes(i) || t.throwError("merge_mode ".concat(i, " not supported."));
          var a = Object.assign({}, r.config, {
              gpu: n.gpu
            }),
            s = Object.assign({}, r.config, {
              gpu: n.gpu
            });
          return s.go_backwards = !s.go_backwards, t.forwardLayer = new As[r.class_name](a), t.backwardLayer = new As[r.class_name](s), t.forwardLayer.outbound = [null], t.backwardLayer.outbound = [null], t.mergeMode = i, t.returnSequences = r.config.return_sequences, t.gpu && (t.copyTextureProgram = Up.compileProgram(rm), "concat" === t.mergeMode ? t.mergeProgram = Up.compileProgram(om) : "sum" === t.mergeMode ? t.mergeProgram = Up.compileProgram(im) : "mul" === t.mergeMode ? t.mergeProgram = Up.compileProgram(am) : "ave" === t.mergeMode && (t.mergeProgram = Up.compileProgram(sm))), t
        }
        return gs(e, t), ys(e, [{
          key: "setWeights",
          value: function t(e) {
            this.forwardLayer.setWeights(e.slice(0, e.length / 2)), this.backwardLayer.setWeights(e.slice(e.length / 2))
          }
        }, {
          key: "call",
          value: function t(e) {
            return this.gpu ? this._callGPU(e) : this._callCPU(e), this.output
          }
        }, {
          key: "_callCPU",
          value: function t(e) {
            this.forwardLayer._callCPU(new Jp(e.tensor.data, e.tensor.shape)), this.backwardLayer._callCPU(new Jp(e.tensor.data, e.tensor.shape));
            var n = this.forwardLayer.output,
              r = this.backwardLayer.output;
            this.returnSequences && (r.tensor = r.tensor.step(-1));
            var o = n.tensor.shape.slice();
            "concat" === this.mergeMode && (o[o.length - 1] += r.tensor.shape[o.length - 1]), this.output = new Jp([], o), "concat" === this.mergeMode ? this.returnSequences ? (Yp.a.assign(this.output.tensor.hi(o[0], n.tensor.shape[1]).lo(0, 0), n.tensor), Yp.a.assign(this.output.tensor.hi(o[0], o[1]).lo(0, n.tensor.shape[1]), r.tensor)) : (Yp.a.assign(this.output.tensor.hi(n.tensor.shape[0]).lo(0), n.tensor), Yp.a.assign(this.output.tensor.hi(o[0]).lo(n.tensor.shape[0]), r.tensor)) : "sum" === this.mergeMode ? (Yp.a.addeq(this.output.tensor, n.tensor), Yp.a.addeq(this.output.tensor, r.tensor)) : "mul" === this.mergeMode ? (Yp.a.assigns(this.output.tensor, 1), Yp.a.muleq(this.output.tensor, n.tensor), Yp.a.muleq(this.output.tensor, r.tensor)) : "ave" === this.mergeMode && (Yp.a.addeq(this.output.tensor, n.tensor), Yp.a.addeq(this.output.tensor, r.tensor), Yp.a.divseq(this.output.tensor, 2))
          }
        }, {
          key: "_callGPU",
          value: function t(e) {
            e.glTexture || e.createGLTexture({
              type: "2d",
              format: "float"
            }), this.inputCopy || (this.inputCopy = new Jp([], e.glTextureShape), this.inputCopy.createGLTexture({
              type: "2d",
              format: "float"
            })), Up.runProgram({
              program: this.copyTextureProgram,
              output: this.inputCopy,
              inputs: [{
                input: e,
                name: "source"
              }]
            }), this.forwardLayer._callGPU(e), this.backwardLayer._callGPU(this.inputCopy);
            var n = this.forwardLayer.output,
              r = this.backwardLayer.output,
              o = n.glTextureShape.slice();
            "concat" === this.mergeMode && (o[1] += r.glTextureShape[1]), this.output || (this.output = new Jp([], o), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }), this.returnSequences || (this.output.is1D = !0)), Up.runProgram({
              program: this.mergeProgram,
              output: this.output,
              inputs: [{
                input: n,
                name: "forward"
              }, {
                input: r,
                name: "backward"
              }]
            }), 0 === this.outbound.length && this.output.transferFromGLTexture()
          }
        }]), e
      }(Bp),
      cm = function() {
        function t() {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          if (bs(this, t), this.modelLayersMap = e.modelLayersMap, this.gpu = e.gpu, !this.modelLayersMap) throw new Error("[CAM] modelLayersMap is required")
        }
        return ws(t, [{
          key: "initialize",
          value: function t() {
            var e = this;
            if (this.modelLayersMap.forEach(function(t) {
              "GlobalAveragePooling2D" === t.layerClass && (e.enabled = !0, e.poolLayer = t)
            }), this.enabled && !this.data) {
              this.featureMaps = this.modelLayersMap.get(this.poolLayer.inbound[0]).output;
              var n = this.poolLayer;
              for (n.outbound.length || (this.weights = this.poolLayer.output); n.outbound.length;) n = this.modelLayersMap.get(n.outbound[0]), n.weights.kernel ? this.weights = n.weights.kernel : this.weights = this.poolLayer.output;
              if (this.featureMaps.is2DReshaped ? this.inputShape = this.featureMaps.originalShape.slice(0, 2) : this.inputShape = this.featureMaps.tensor.shape.slice(0, 2), 1 === this.weights.tensor.shape.length) this.shape = this.inputShape;
              else {
                var r = this.weights.tensor.shape[1];
                this.shape = _s(this.inputShape).concat([r])
              }
              this.data = new Float32Array(this.shape.reduce(function(t, e) {
                return t * e
              }, 1))
            }
          }
        }, {
          key: "update",
          value: function t() {
            if (this.enabled) {
              this.featureMaps = this.modelLayersMap.get(this.poolLayer.inbound[0]).output, this.gpu ? this._updateGPU() : this._updateCPU();
              var e = Yp.a.inf(this.output.tensor),
                n = Yp.a.sup(this.output.tensor);
              Yp.a.divseq(Yp.a.subseq(this.output.tensor, e), n - e), this.data = this.output.tensor.data
            }
          }
        }, {
          key: "_updateCPU",
          value: function t() {
            if (this.featureMaps.is2DReshaped || this.featureMaps.reshapeTo2D(), 1 === this.weights.tensor.shape.length) {
              this.output || (this.output = new Jp([], this.shape));
              var e = new Jp([], [this.shape[0] * this.shape[1]]);
              Object(yf.gemv)(1, this.featureMaps.tensor, this.weights.tensor, 1, e.tensor), this.output.replaceTensorData(e.tensor.data)
            } else this.output || (this.output = new Jp([], this.shape)), this.output.reshapeTo2D(), Sh()(this.output.tensor, this.featureMaps.tensor, this.weights.tensor, 1, 1), this.output.reshapeFrom2D();
            Yp.a.maxseq(this.output.tensor, 0), this.featureMaps.is2DReshaped && this.featureMaps.reshapeFrom2D()
          }
        }, {
          key: "_updateGPU",
          value: function t() {
            this.output || (this.output = new Jp([], this.shape));
            var e = this.weights.is1D;
            !this.output.glTexture && e ? this.output.createGLTexture({
              type: "2d",
              format: "float"
            }) : (this.output.reshapeTo2D(), this.output.createGLTexture({
              type: "2d",
              format: "float"
            }));
            var n = e ? this.weights.glTextureShape[1] : this.weights.glTextureShape[0];
            if (!this.program) {
              var r = yt("cam", this.output.glTextureShape, n, e);
              this.program = Up.compileProgram(r)
            }
            Up.runProgram({
              program: this.program,
              output: this.output,
              inputs: [{
                input: this.featureMaps,
                name: "featureMaps"
              }, {
                input: this.weights,
                name: "weights"
              }]
            }), this.output.transferFromGLTexture(), this.output.is2DReshaped && this.output.reshapeFrom2D()
          }
        }]), t
      }(),
      lm = n(458),
      pm = n.n(lm),
      hm = lm.Reader,
      fm = lm.Writer,
      dm = lm.util,
      mm = lm.roots.default || (lm.roots.default = {}),
      ym = mm.Weights = function() {
        function t(t) {
          if (this.shape = [], t)
            for (var e = Object.keys(t), n = 0; n < e.length; ++n) null != t[e[n]] && (this[e[n]] = t[e[n]])
        }
        return t.prototype.layerName = "", t.prototype.weightName = "", t.prototype.shape = dm.emptyArray, t.prototype.type = "", t.prototype.data = dm.newBuffer([]), t.prototype.quantizeMin = 0, t.prototype.quantizeMax = 0, t.create = function e(n) {
          return new t(n)
        }, t.encode = function t(e, n) {
          if (n || (n = fm.create()), null != e.layerName && e.hasOwnProperty("layerName") && n.uint32(10).string(e.layerName), null != e.weightName && e.hasOwnProperty("weightName") && n.uint32(18).string(e.weightName), null != e.shape && e.shape.length) {
            n.uint32(26).fork();
            for (var r = 0; r < e.shape.length; ++r) n.uint32(e.shape[r]);
            n.ldelim()
          }
          return null != e.type && e.hasOwnProperty("type") && n.uint32(34).string(e.type), null != e.data && e.hasOwnProperty("data") && n.uint32(42).bytes(e.data), null != e.quantizeMin && e.hasOwnProperty("quantizeMin") && n.uint32(53).float(e.quantizeMin), null != e.quantizeMax && e.hasOwnProperty("quantizeMax") && n.uint32(61).float(e.quantizeMax), n
        }, t.encodeDelimited = function t(e, n) {
          return this.encode(e, n).ldelim()
        }, t.decode = function t(e, n) {
          e instanceof hm || (e = hm.create(e));
          for (var r = void 0 === n ? e.len : e.pos + n, o = new mm.Weights; e.pos < r;) {
            var i = e.uint32();
            switch (i >>> 3) {
              case 1:
                o.layerName = e.string();
                break;
              case 2:
                o.weightName = e.string();
                break;
              case 3:
                if (o.shape && o.shape.length || (o.shape = []), 2 == (7 & i))
                  for (var a = e.uint32() + e.pos; e.pos < a;) o.shape.push(e.uint32());
                else o.shape.push(e.uint32());
                break;
              case 4:
                o.type = e.string();
                break;
              case 5:
                o.data = e.bytes();
                break;
              case 6:
                o.quantizeMin = e.float();
                break;
              case 7:
                o.quantizeMax = e.float();
                break;
              default:
                e.skipType(7 & i)
            }
          }
          return o
        }, t.decodeDelimited = function t(e) {
          return e instanceof hm || (e = new hm(e)), this.decode(e, e.uint32())
        }, t.verify = function t(e) {
          if ("object" !== Ss(e) || null === e) return "object expected";
          if (null != e.layerName && e.hasOwnProperty("layerName") && !dm.isString(e.layerName)) return "layerName: string expected";
          if (null != e.weightName && e.hasOwnProperty("weightName") && !dm.isString(e.weightName)) return "weightName: string expected";
          if (null != e.shape && e.hasOwnProperty("shape")) {
            if (!Array.isArray(e.shape)) return "shape: array expected";
            for (var n = 0; n < e.shape.length; ++n)
              if (!dm.isInteger(e.shape[n])) return "shape: integer[] expected"
          }
          return null != e.type && e.hasOwnProperty("type") && !dm.isString(e.type) ? "type: string expected" : null != e.data && e.hasOwnProperty("data") && !(e.data && "number" == typeof e.data.length || dm.isString(e.data)) ? "data: buffer expected" : null != e.quantizeMin && e.hasOwnProperty("quantizeMin") && "number" != typeof e.quantizeMin ? "quantizeMin: number expected" : null != e.quantizeMax && e.hasOwnProperty("quantizeMax") && "number" != typeof e.quantizeMax ? "quantizeMax: number expected" : null
        }, t.fromObject = function t(e) {
          if (e instanceof mm.Weights) return e;
          var n = new mm.Weights;
          if (null != e.layerName && (n.layerName = String(e.layerName)), null != e.weightName && (n.weightName = String(e.weightName)), e.shape) {
            if (!Array.isArray(e.shape)) throw TypeError(".Weights.shape: array expected");
            n.shape = [];
            for (var r = 0; r < e.shape.length; ++r) n.shape[r] = e.shape[r] >>> 0
          }
          return null != e.type && (n.type = String(e.type)), null != e.data && ("string" == typeof e.data ? dm.base64.decode(e.data, n.data = dm.newBuffer(dm.base64.length(e.data)), 0) : e.data.length && (n.data = e.data)), null != e.quantizeMin && (n.quantizeMin = Number(e.quantizeMin)), null != e.quantizeMax && (n.quantizeMax = Number(e.quantizeMax)), n
        }, t.toObject = function t(e, n) {
          n || (n = {});
          var r = {};
          if ((n.arrays || n.defaults) && (r.shape = []), n.defaults && (r.layerName = "", r.weightName = "", r.type = "", r.data = n.bytes === String ? "" : [], r.quantizeMin = 0, r.quantizeMax = 0), null != e.layerName && e.hasOwnProperty("layerName") && (r.layerName = e.layerName), null != e.weightName && e.hasOwnProperty("weightName") && (r.weightName = e.weightName), e.shape && e.shape.length) {
            r.shape = [];
            for (var o = 0; o < e.shape.length; ++o) r.shape[o] = e.shape[o]
          }
          return null != e.type && e.hasOwnProperty("type") && (r.type = e.type), null != e.data && e.hasOwnProperty("data") && (r.data = n.bytes === String ? dm.base64.encode(e.data, 0, e.data.length) : n.bytes === Array ? Array.prototype.slice.call(e.data) : e.data), null != e.quantizeMin && e.hasOwnProperty("quantizeMin") && (r.quantizeMin = n.json && !isFinite(e.quantizeMin) ? String(e.quantizeMin) : e.quantizeMin), null != e.quantizeMax && e.hasOwnProperty("quantizeMax") && (r.quantizeMax = n.json && !isFinite(e.quantizeMax) ? String(e.quantizeMax) : e.quantizeMax), r
        }, t.prototype.toJSON = function t() {
          return this.constructor.toObject(this, lm.util.toJSONOptions)
        }, t
      }(),
      vm = mm.Model = function() {
        function t(t) {
          if (this.modelWeights = [], t)
            for (var e = Object.keys(t), n = 0; n < e.length; ++n) null != t[e[n]] && (this[e[n]] = t[e[n]])
        }
        return t.prototype.id = "", t.prototype.name = "", t.prototype.kerasVersion = "", t.prototype.backend = "", t.prototype.modelConfig = "", t.prototype.modelWeights = dm.emptyArray, t.create = function e(n) {
          return new t(n)
        }, t.encode = function t(e, n) {
          if (n || (n = fm.create()), null != e.id && e.hasOwnProperty("id") && n.uint32(10).string(e.id), null != e.name && e.hasOwnProperty("name") && n.uint32(18).string(e.name), null != e.kerasVersion && e.hasOwnProperty("kerasVersion") && n.uint32(26).string(e.kerasVersion), null != e.backend && e.hasOwnProperty("backend") && n.uint32(34).string(e.backend), null != e.modelConfig && e.hasOwnProperty("modelConfig") && n.uint32(42).string(e.modelConfig), null != e.modelWeights && e.modelWeights.length)
            for (var r = 0; r < e.modelWeights.length; ++r) mm.Weights.encode(e.modelWeights[r], n.uint32(50).fork()).ldelim();
          return n
        }, t.encodeDelimited = function t(e, n) {
          return this.encode(e, n).ldelim()
        }, t.decode = function t(e, n) {
          e instanceof hm || (e = hm.create(e));
          for (var r = void 0 === n ? e.len : e.pos + n, o = new mm.Model; e.pos < r;) {
            var i = e.uint32();
            switch (i >>> 3) {
              case 1:
                o.id = e.string();
                break;
              case 2:
                o.name = e.string();
                break;
              case 3:
                o.kerasVersion = e.string();
                break;
              case 4:
                o.backend = e.string();
                break;
              case 5:
                o.modelConfig = e.string();
                break;
              case 6:
                o.modelWeights && o.modelWeights.length || (o.modelWeights = []), o.modelWeights.push(mm.Weights.decode(e, e.uint32()));
                break;
              default:
                e.skipType(7 & i)
            }
          }
          return o
        }, t.decodeDelimited = function t(e) {
          return e instanceof hm || (e = new hm(e)), this.decode(e, e.uint32())
        }, t.verify = function t(e) {
          if ("object" !== Ss(e) || null === e) return "object expected";
          if (null != e.id && e.hasOwnProperty("id") && !dm.isString(e.id)) return "id: string expected";
          if (null != e.name && e.hasOwnProperty("name") && !dm.isString(e.name)) return "name: string expected";
          if (null != e.kerasVersion && e.hasOwnProperty("kerasVersion") && !dm.isString(e.kerasVersion)) return "kerasVersion: string expected";
          if (null != e.backend && e.hasOwnProperty("backend") && !dm.isString(e.backend)) return "backend: string expected";
          if (null != e.modelConfig && e.hasOwnProperty("modelConfig") && !dm.isString(e.modelConfig)) return "modelConfig: string expected";
          if (null != e.modelWeights && e.hasOwnProperty("modelWeights")) {
            if (!Array.isArray(e.modelWeights)) return "modelWeights: array expected";
            for (var n = 0; n < e.modelWeights.length; ++n) {
              var r = mm.Weights.verify(e.modelWeights[n]);
              if (r) return "modelWeights." + r
            }
          }
          return null
        }, t.fromObject = function t(e) {
          if (e instanceof mm.Model) return e;
          var n = new mm.Model;
          if (null != e.id && (n.id = String(e.id)), null != e.name && (n.name = String(e.name)), null != e.kerasVersion && (n.kerasVersion = String(e.kerasVersion)), null != e.backend && (n.backend = String(e.backend)), null != e.modelConfig && (n.modelConfig = String(e.modelConfig)), e.modelWeights) {
            if (!Array.isArray(e.modelWeights)) throw TypeError(".Model.modelWeights: array expected");
            n.modelWeights = [];
            for (var r = 0; r < e.modelWeights.length; ++r) {
              if ("object" !== Ss(e.modelWeights[r])) throw TypeError(".Model.modelWeights: object expected");
              n.modelWeights[r] = mm.Weights.fromObject(e.modelWeights[r])
            }
          }
          return n
        }, t.toObject = function t(e, n) {
          n || (n = {});
          var r = {};
          if ((n.arrays || n.defaults) && (r.modelWeights = []), n.defaults && (r.id = "", r.name = "", r.kerasVersion = "", r.backend = "", r.modelConfig = ""), null != e.id && e.hasOwnProperty("id") && (r.id = e.id), null != e.name && e.hasOwnProperty("name") && (r.name = e.name), null != e.kerasVersion && e.hasOwnProperty("kerasVersion") && (r.kerasVersion = e.kerasVersion), null != e.backend && e.hasOwnProperty("backend") && (r.backend = e.backend), null != e.modelConfig && e.hasOwnProperty("modelConfig") && (r.modelConfig = e.modelConfig), e.modelWeights && e.modelWeights.length) {
            r.modelWeights = [];
            for (var o = 0; o < e.modelWeights.length; ++o) r.modelWeights[o] = mm.Weights.toObject(e.modelWeights[o], n)
          }
          return r
        }, t.prototype.toJSON = function t() {
          return this.constructor.toObject(this, lm.util.toJSONOptions)
        }, t
      }(),
      gm = Fp.a.CancelToken.source(),
      _m = function() {
        function t() {
          var e = this,
            n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
          Ps(this, t);
          var r = n.filepath,
            o = void 0 === r ? null : r,
            i = n.headers,
            a = void 0 === i ? {} : i,
            s = n.filesystem,
            u = void 0 !== s && s,
            c = n.gpu,
            l = void 0 !== c && c,
            p = n.transferLayerOutputs,
            h = void 0 !== p && p,
            f = n.pauseAfterLayerCalls,
            d = void 0 !== f && f,
            m = n.visualizations,
            y = void 0 === m ? [] : m;
          if (!o) throw new Error("[Model] path to protobuf-serialized model definition file is missing.");
          this.filepath = o, this.headers = a, this.filesystem = "undefined" == typeof window && u, this.events = new Dp.EventEmitter, this.id = null, this.name = null, this.kerasVersion = null, this.backend = null, this.modelConfig = {}, this.modelWeights = [], this.gpu = !("undefined" == typeof window || !Up.isSupported) && l, this.transferLayerOutputs = h, this.pauseAfterLayerCalls = d, this.modelLayersInfo = [], this.modelLayersMap = new Map, this.inputTensorsMap = new Map, this.inputLayerNames = [], this.outputLayerNames = [], this.finishedLayerNames = [], this.isRunning = !1, this.runningProgress = 0, this.predictStats = {}, this.visMap = new Map, y.forEach(function(t) {
            if (t in Ms) {
              var n = new Ms[t]({
                modelLayersMap: e.modelLayersMap,
                gpu: e.gpu
              });
              e.visMap.set(t, n)
            }
          }), this._ready = this._initialize()
        }
        return ks(t, [{
          key: "checkGPUSupport",
          value: function t() {
            return Up.isSupported
          }
        }, {
          key: "ready",
          value: function t() {
            return this._ready
          }
        }, {
          key: "_interrupt",
          value: function t() {
            gm.cancel()
          }
        }, {
          key: "_initialize",
          value: function() {
            var t = Ts(regeneratorRuntime.mark(function t() {
              var e = this,
                n, r;
              return regeneratorRuntime.wrap(function t(o) {
                for (;;) switch (o.prev = o.next) {
                  case 0:
                    return this.events.emit("loadingProgress", 0), o.prev = 1, n = this.filesystem ? this._dataRequestFS() : this._dataRequestHTTP(this.headers), o.next = 5, n;
                  case 5:
                    o.next = 11;
                    break;
                  case 7:
                    o.prev = 7, o.t0 = o.catch(1), console.log(o.t0), this._interrupt();
                  case 11:
                    return this.events.emit("loadingProgress", 100), this._buildDAG(), this.inputLayerNames.forEach(function(t) {
                      var n = e.modelLayersMap.get(t);
                      n.call(e.inputTensorsMap.get(t)), n.hasOutput = !0, n.visited = !0
                    }), r = this.pauseAfterLayerCalls, this.pauseAfterLayerCalls = !0, this.runningProgress = 0, this.events.emit("initProgress", 0), o.next = 20, this._traverseDAG(this.inputLayerNames, "initProgress");
                  case 20:
                    return this.pauseAfterLayerCalls = r, this.finishedLayerNames = [], this.modelLayersMap.forEach(function(t) {
                      t.hasOutput = !1, t.visited = !1
                    }), this.visMap.forEach(function(t) {
                      t.initialize()
                    }), this.events.emit("initProgress", 100), o.abrupt("return", !0);
                  case 26:
                  case "end":
                    return o.stop()
                }
              }, t, this, [
                [1, 7]
              ])
            }));
            return function e() {
              return t.apply(this, arguments)
            }
          }()
        }, {
          key: "_dataRequestHTTP",
          value: function() {
            var t = Ts(regeneratorRuntime.mark(function t() {
              var e = this,
                n, r, o = arguments;
              return regeneratorRuntime.wrap(function t(i) {
                for (;;) switch (i.prev = i.next) {
                  case 0:
                    return n = o.length > 0 && void 0 !== o[0] ? o[0] : {}, i.prev = 1, i.next = 4, Fp.a.get(this.filepath, {
                      responseType: "arraybuffer",
                      headers: n,
                      onDownloadProgress: function t(n) {
                        if (n.lengthComputable) {
                          var r = Math.round(100 * n.loaded / n.total);
                          e.events.emit("loadingProgress", r)
                        }
                      },
                      cancelToken: gm.token
                    });
                  case 4:
                    r = i.sent, this._decodeProtobuf(new Uint8Array(r.data)), i.next = 15;
                    break;
                  case 8:
                    if (i.prev = 8, i.t0 = i.catch(1), !Fp.a.isCancel(i.t0)) {
                      i.next = 14;
                      break
                    }
                    console.log("[Model] Data request canceled", i.t0.message), i.next = 15;
                    break;
                  case 14:
                    throw i.t0;
                  case 15:
                  case "end":
                    return i.stop()
                }
              }, t, this, [
                [1, 8]
              ])
            }));
            return function e() {
              return t.apply(this, arguments)
            }
          }()
        }, {
          key: "_dataRequestFS",
          value: function() {
            var t = Ts(regeneratorRuntime.mark(function t() {
              var e, r;
              return regeneratorRuntime.wrap(function t(o) {
                for (;;) switch (o.prev = o.next) {
                  case 0:
                    return e = jp.a.promisify(n(473).readFile), o.prev = 1, o.next = 4, e(this.filepath);
                  case 4:
                    r = o.sent, this._decodeProtobuf(r), o.next = 11;
                    break;
                  case 8:
                    throw o.prev = 8, o.t0 = o.catch(1), o.t0;
                  case 11:
                  case "end":
                    return o.stop()
                }
              }, t, this, [
                [1, 8]
              ])
            }));
            return function e() {
              return t.apply(this, arguments)
            }
          }()
        }, {
          key: "_decodeProtobuf",
          value: function t(e) {
            if (mm.Model.verify(e)) throw new Error("[Model] Invalid model - check protobuf serialization: {err}");
            var n = mm.Model.decode(e);
            this.id = n.id, this.name = n.name, this.kerasVersion = n.kerasVersion, this.backend = n.backend, this.modelConfig = JSON.parse(n.modelConfig), this.modelWeights = n.modelWeights
          }
        }, {
          key: "toggleGPU",
          value: function t(e) {
            var n = this;
            this.gpu = void 0 === e ? !this.gpu : e, this.modelLayersMap.forEach(function(t) {
              t.toggleGPU(n.gpu)
            }), this.visMap.forEach(function(t) {
              t.gpu = n.gpu
            }), this.resetInputTensors()
          }
        }, {
          key: "resetInputTensors",
          value: function t() {
            var e = this;
            this.inputLayerNames.forEach(function(t) {
              var n = e.modelLayersMap.get(t);
              e.inputTensorsMap.set(t, new Jp([], n.shape))
            })
          }
        }, {
          key: "_buildDAG",
          value: function t() {
            var e = this,
              n = this.modelConfig.class_name,
              r = [];
            if ("Sequential" === n ? r = this.modelConfig.config : "Model" === n && (r = this.modelConfig.config.layers), !Array.isArray(r) || !r.length) throw new Error("[Model] Model configuration does not contain any layers.");
            r.forEach(function(t, o) {
              var i = t.class_name,
                a = t.config;
              if ("Model" === n && "Sequential" === i) a.forEach(function(n, r) {
                var o = n.class_name,
                  i = n.config,
                  s = 0 === r ? t.inbound_nodes[0].map(function(t) {
                    return t[0]
                  }) : [a[r - 1].config.name];
                e._createLayer(o, i, s)
              });
              else {
                if (!(i in Fs)) throw new Error("[Model] Layer ".concat(i, " specified in model configuration is not implemented!"));
                if ("Sequential" === n && 0 === o) {
                  var s = "input",
                    u = a.batch_input_shape.slice(1),
                    c = new Qp({
                      name: "input",
                      shape: u,
                      gpu: e.gpu
                    });
                  e.modelLayersMap.set("input", c), e.inputTensorsMap.set("input", new Jp([], u)), e.inputLayerNames.push("input")
                } else if ("Model" === n && "InputLayer" === i) {
                  var l = a.batch_input_shape.slice(1);
                  e.inputTensorsMap.set(a.name, new Jp([], l)), e.inputLayerNames.push(a.name)
                }
                var p = [];
                if ("Sequential" === n) p = 0 === o ? ["input"] : [r[o - 1].config.name];
                else if ("Model" === n) {
                  var h = t.inbound_nodes;
                  h && h.length && (p = h[0].map(function(t) {
                    return t[0]
                  }))
                }
                e._createLayer(i, a, p)
              }
            }), this.modelLayersMap.forEach(function(t) {
              e.modelLayersInfo.push(Op()(t, ["name", "description", "layerClass", "inbound", "outbound"])), 0 === t.outbound.length && e.outputLayerNames.push(t.name)
            }), this.inputLayerNames.sort(), this.outputLayerNames.sort()
          }
        }, {
          key: "_createLayer",
          value: function t(e, n, r) {
            var o = this,
              i = new Fs[e](Object.assign({}, n, {
                gpu: this.gpu
              })),
              a = [];
            if ("Bidirectional" === e) {
              var s = i.forwardLayer.params.map(function(t) {
                  return "".concat(n.name, "/forward_").concat(n.layer.config.name, "/").concat(t)
                }),
                u = i.backwardLayer.params.map(function(t) {
                  return "".concat(n.name, "/backward_").concat(n.layer.config.name, "/").concat(t)
                });
              a = s.concat(u)
            } else a = "TimeDistributed" === e ? i.layer.params.map(function(t) {
              return "".concat(n.name, "/").concat(t)
            }) : i.params.map(function(t) {
              return "".concat(n.name, "/").concat(t)
            });
            if (a && a.length) {
              var c = a.map(function(t) {
                var e = Cp()(o.modelWeights, function(e) {
                  return new RegExp("^.*".concat(t)).test(e.weightName)
                });
                if (!e) throw new Error("[Model] error loading weights.");
                var n = e.data,
                  r = e.shape,
                  i = e.type,
                  a = new ArrayBuffer(n.byteLength),
                  s = new Uint8Array(a);
                if (s.set(new Uint8Array(n.buffer, n.byteOffset, n.byteLength)), "uint8" === i) {
                  for (var u = e.quantizeMin, c = e.quantizeMax, l = new Float32Array(s), p = 0, h = l.length; p < h; p++) l[p] *= (c - u) / 255, l[p] += u;
                  return new Jp(l, r)
                }
                return new Jp(new Float32Array(a), r)
              });
              i.setWeights(c)
            }
            this.modelLayersMap.set(n.name, i), r.forEach(function(t) {
              o.modelLayersMap.get(n.name).inbound.push(t), o.modelLayersMap.get(t).outbound.push(n.name)
            })
          }
        }, {
          key: "_traverseDAG",
          value: function() {
            var t = Ts(regeneratorRuntime.mark(function t(e, n) {
              var r = this,
                o, i, a, s;
              return regeneratorRuntime.wrap(function t(u) {
                for (;;) switch (u.prev = u.next) {
                  case 0:
                    if (0 !== e.length) {
                      u.next = 6;
                      break
                    }
                    return this.runningProgress = 100, this.events.emit(n, 100), u.abrupt("return", !0);
                  case 6:
                    if (1 !== e.length) {
                      u.next = 32;
                      break
                    }
                    if (o = e[0], i = this.modelLayersMap.get(o), "InputLayer" !== i.layerClass) {
                      u.next = 13;
                      break
                    }
                    this.finishedLayerNames.push(this.modelLayersMap.get(o).name), u.next = 26;
                    break;
                  case 13:
                    if (a = this.modelLayersMap.get(o), !a.visited) {
                      u.next = 16;
                      break
                    }
                    return u.abrupt("return", !1);
                  case 16:
                    if (s = a.inbound.map(function(t) {
                      return r.modelLayersMap.get(t)
                    }), Tp()(wp()(s, "hasOutput"))) {
                      u.next = 19;
                      break
                    }
                    return u.abrupt("return", !1);
                  case 19:
                    if (a.isMergeLayer ? a.call(wp()(s, "output")) : a.call(s[0].output), a.hasOutput = !0, a.visited = !0, this.finishedLayerNames.push(a.name), !this.pauseAfterLayerCalls) {
                      u.next = 26;
                      break
                    }
                    return u.next = 26, jp.a.delay(0);
                  case 26:
                    return this.runningProgress += 100 / this.modelLayersMap.size, this.events.emit(n, this.runningProgress), u.next = 30, this._traverseDAG(i.outbound, n);
                  case 30:
                    u.next = 34;
                    break;
                  case 32:
                    return u.next = 34, jp.a.all(e.map(function(t) {
                      return r._traverseDAG([t], n)
                    }));
                  case 34:
                  case "end":
                    return u.stop()
                }
              }, t, this)
            }));
            return function e(n, r) {
              return t.apply(this, arguments)
            }
          }()
        }, {
          key: "_maybeTransferIntermediateOutputs",
          value: function t() {
            this.gpu && this.transferLayerOutputs && this.modelLayersMap.forEach(function(t) {
              t.output && t.output.glTexture && (Up.bindOutputTexture(t.output.glTexture, t.output.glTextureShape), t.output.transferFromGLTexture(), t.output.is2DReshaped && t.output.reshapeFrom2D())
            })
          }
        }, {
          key: "loadData",
          value: function t(e) {
            var n = this;
            this.inputLayerNames.forEach(function(t) {
              var r = n.modelLayersMap.get(t);
              n.inputTensorsMap.get(t).replaceTensorData(e[t]), r.call(n.inputTensorsMap.get(t)), r.hasOutput = !0, r.visited = !0
            })
          }
        }, {
          key: "predict",
          value: function() {
            var t = Ts(regeneratorRuntime.mark(function t(e) {
              var n = this,
                r, o, i, a;
              return regeneratorRuntime.wrap(function t(s) {
                for (;;) switch (s.prev = s.next) {
                  case 0:
                    if (this.isRunning = !0, this.runningProgress = 0, this.events.emit("predictProgress", 0), bp()(gp()(e).sort(), this.inputLayerNames)) {
                      s.next = 6;
                      break
                    }
                    throw this.isRunning = !1, new Error("[Model] predict() must take an object where the keys are the named inputs of the model: " + JSON.stringify(this.inputLayerNames));
                  case 6:
                    if (Tp()(this.inputLayerNames, function(t) {
                      return e[t] instanceof Float32Array
                    })) {
                      s.next = 9;
                      break
                    }
                    throw this.isRunning = !1, new Error("[Model] predict() must take an object where the values are the flattened data as Float32Array.");
                  case 9:
                    return this.finishedLayerNames = [], this.modelLayersMap.forEach(function(t) {
                      t.hasOutput = !1, t.visited = !1
                    }), r = Rp()(), this.loadData(e), this.predictStats.loadData = Rp()() - r, r = Rp()(), s.next = 17, this._traverseDAG(this.inputLayerNames, "predictProgress");
                  case 17:
                    return this.predictStats.forwardPass = Rp()() - r, this._maybeTransferIntermediateOutputs(), o = this.modelConfig.class_name, i = {}, "Sequential" === o ? (a = this.modelLayersMap.get(this.outputLayerNames[0]), i.output = a.output.tensor.data) : "Model" === o && this.outputLayerNames.forEach(function(t) {
                      var e = n.modelLayersMap.get(t);
                      i[t] = e.output.tensor.data
                    }), r = Rp()(), this.visMap.forEach(function(t) {
                      t.update()
                    }), this.predictStats.visualizations = Rp()() - r, this.isRunning = !1, this.events.emit("predictProgress", 100), s.abrupt("return", i);
                  case 28:
                  case "end":
                    return s.stop()
                }
              }, t, this)
            }));
            return function e(n) {
              return t.apply(this, arguments)
            }
          }()
        }, {
          key: "layerCall",
          value: function t(e, n) {
            if (this.modelLayersMap.has(e)) {
              var r;
              r = n instanceof Jp ? n : new Jp(n.data, n.shape);
              return this.modelLayersMap.get(e).call(r)
            }
          }
        }, {
          key: "cleanup",
          value: function t() {
            Up.clearRefs(), this.modelLayersMap.clear(), this.inputTensorsMap.clear(), this.visMap.clear(), delete this.modelWeights
          }
        }]), t
      }(),
      bm = n(474),
      xm = n.n(bm),
      wm = n(475),
      Sm = n.n(wm),
      Tm = n(476),
      Pm = n.n(Tm);
    n.d(e, "GPU_SUPPORT", function() {
      return Cm
    }), n.d(e, "default", function() {
      return km
    }), n.d(e, "Model", function() {
      return _m
    }), n.d(e, "Tensor", function() {
      return Jp
    }), n.d(e, "activations", function() {
      return Es
    }), n.d(e, "layers", function() {
      return Fs
    }), n.d(e, "testUtils", function() {
      return Rs
    });
    var Cm = Up.isSupported,
      km = {
        Model: _m,
        Tensor: Jp,
        GPU_SUPPORT: Cm,
        activations: Es,
        layers: Fs,
        testUtils: Rs
      }
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(23),
      i = n(15),
      a = n(5),
      s = [].sort,
      u = [1, 2, 3];
    r(r.P + r.F * (a(function() {
      u.sort(void 0)
    }) || !a(function() {
      u.sort(null)
    }) || !n(171)(s)), "Array", {
      sort: function t(e) {
        return void 0 === e ? s.call(i(this)) : s.call(i(this), o(e))
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(5);
    t.exports = function(t, e) {
      return !!t && r(function() {
        e ? t.call(null, function() {}, 1) : t.call(null)
      })
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(80),
      i = n(111),
      a = n(4),
      s = n(39),
      u = n(9),
      c = n(2),
      l = n(3).ArrayBuffer,
      p = n(87),
      h = i.ArrayBuffer,
      f = i.DataView,
      d = o.ABV && l.isView,
      m = h.prototype.slice,
      y = o.VIEW,
      v = "ArrayBuffer";
    r(r.G + r.W + r.F * (l !== h), {
      ArrayBuffer: h
    }), r(r.S + r.F * !o.CONSTR, v, {
      isView: function t(e) {
        return d && d(e) || c(e) && y in e
      }
    }), r(r.P + r.U + r.F * n(5)(function() {
      return !new h(2).slice(1, void 0).byteLength
    }), v, {
      slice: function t(e, n) {
        if (void 0 !== m && void 0 === n) return m.call(a(this), e);
        for (var r = a(this).byteLength, o = s(e, r), i = s(void 0 === n ? r : n, r), c = new(p(this, h))(u(i - o)), l = new f(this), d = new f(c), y = 0; o < i;) d.setUint8(y++, l.getUint8(o++));
        return c
      }
    }), n(60)(v)
  }, function(t, e, n) {
    n(20)("Int8", 1, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    var r = n(7),
      o = n(4),
      i = n(29);
    t.exports = n(10) ? Object.defineProperties : function t(e, n) {
      o(e);
      for (var a = i(n), s = a.length, u = 0, c; s > u;) r.f(e, c = a[u++], n[c]);
      return e
    }
  }, function(t, e, n) {
    var r = n(176);
    t.exports = function(t, e) {
      return new(r(t))(e)
    }
  }, function(t, e, n) {
    var r = n(2),
      o = n(115),
      i = n(6)("species");
    t.exports = function(t) {
      var e;
      return o(t) && (e = t.constructor, "function" != typeof e || e !== Array && !o(e.prototype) || (e = void 0), r(e) && null === (e = e[i]) && (e = void 0)), void 0 === e ? Array : e
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(49),
      o = n(26),
      i = n(40),
      a = {};
    n(13)(a, n(6)("iterator"), function() {
      return this
    }), t.exports = function(t, e, n) {
      t.prototype = r(a, {
        next: o(1, n)
      }), i(t, e + " Iterator")
    }
  }, function(t, e, n) {
    n(20)("Uint8", 1, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    n(20)("Uint8", 1, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    }, !0)
  }, function(t, e, n) {
    n(20)("Int16", 2, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    n(20)("Uint16", 2, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    n(20)("Int32", 4, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    n(20)("Uint32", 4, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    n(20)("Float32", 4, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    n(20)("Float64", 8, function(t) {
      return function e(n, r, o) {
        return t(this, n, r, o)
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(119),
      o = n(44),
      i = "Map";
    t.exports = n(63)(i, function(t) {
      return function e() {
        return t(this, arguments.length > 0 ? arguments[0] : void 0)
      }
    }, {
      get: function t(e) {
        var n = r.getEntry(o(this, i), e);
        return n && n.v
      },
      set: function t(e, n) {
        return r.def(o(this, i), 0 === e ? 0 : e, n)
      }
    }, r, !0)
  }, function(t, e, n) {
    var r = n(2),
      o = n(92).set;
    t.exports = function(t, e, n) {
      var i = e.constructor,
        a;
      return i !== n && "function" == typeof i && (a = i.prototype) !== n.prototype && r(a) && o && o(t, a), t
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(119),
      o = n(44),
      i = "Set";
    t.exports = n(63)(i, function(t) {
      return function e() {
        return t(this, arguments.length > 0 ? arguments[0] : void 0)
      }
    }, {
      add: function t(e) {
        return r.def(o(this, i), e = 0 === e ? 0 : e, e)
      }
    }, r)
  }, function(t, e, n) {
    "use strict";
    var r = n(50)(0),
      o = n(22),
      i = n(25),
      a = n(121),
      s = n(122),
      u = n(2),
      c = n(5),
      l = n(44),
      p = "WeakMap",
      h = i.getWeak,
      f = Object.isExtensible,
      d = s.ufstore,
      m = {},
      y, v = function(t) {
        return function e() {
          return t(this, arguments.length > 0 ? arguments[0] : void 0)
        }
      },
      g = {
        get: function t(e) {
          if (u(e)) {
            var n = h(e);
            return !0 === n ? d(l(this, p)).get(e) : n ? n[this._i] : void 0
          }
        },
        set: function t(e, n) {
          return s.def(l(this, p), e, n)
        }
      },
      _ = t.exports = n(63)(p, v, g, s, !0, !0);
    c(function() {
      return 7 != (new _).set((Object.freeze || Object)(m), 7).get(m)
    }) && (y = s.getConstructor(v, p), a(y.prototype, g), i.NEED = !0, r(["delete", "has", "get", "set"], function(t) {
      var e = _.prototype,
        n = e[t];
      o(e, t, function(e, r) {
        if (u(e) && !f(e)) {
          this._f || (this._f = new y);
          var o = this._f[t](e, r);
          return "set" == t ? this : o
        }
        return n.call(this, e, r)
      })
    }))
  }, function(t, e, n) {
    "use strict";
    var r = n(122),
      o = n(44),
      i = "WeakSet";
    n(63)(i, function(t) {
      return function e() {
        return t(this, arguments.length > 0 ? arguments[0] : void 0)
      }
    }, {
      add: function t(e) {
        return r.def(o(this, i), e, !0)
      }
    }, r, !1, !0)
  }, function(t, e, n) {
    var r = n(0),
      o = n(23),
      i = n(4),
      a = (n(3).Reflect || {}).apply,
      s = Function.apply;
    r(r.S + r.F * !n(5)(function() {
      a(function() {})
    }), "Reflect", {
      apply: function t(e, n, r) {
        var u = o(e),
          c = i(r);
        return a ? a(u, n, c) : s.call(u, n, c)
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(49),
      i = n(23),
      a = n(4),
      s = n(2),
      u = n(5),
      c = n(193),
      l = (n(3).Reflect || {}).construct,
      p = u(function() {
        function t() {}
        return !(l(function() {}, [], t) instanceof t)
      }),
      h = !u(function() {
        l(function() {})
      });
    r(r.S + r.F * (p || h), "Reflect", {
      construct: function t(e, n) {
        i(e), a(n);
        var r = arguments.length < 3 ? e : i(arguments[2]);
        if (h && !p) return l(e, n, r);
        if (e == r) {
          switch (n.length) {
            case 0:
              return new e;
            case 1:
              return new e(n[0]);
            case 2:
              return new e(n[0], n[1]);
            case 3:
              return new e(n[0], n[1], n[2]);
            case 4:
              return new e(n[0], n[1], n[2], n[3])
          }
          var u = [null];
          return u.push.apply(u, n), new(c.apply(e, u))
        }
        var f = r.prototype,
          d = o(s(f) ? f : Object.prototype),
          m = Function.apply.call(e, d, n);
        return s(m) ? m : d
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(23),
      o = n(2),
      i = n(123),
      a = [].slice,
      s = {},
      u = function(t, e, n) {
        if (!(e in s)) {
          for (var r = [], o = 0; o < e; o++) r[o] = "a[" + o + "]";
          s[e] = Function("F,a", "return new F(" + r.join(",") + ")")
        }
        return s[e](t, n)
      };
    t.exports = Function.bind || function t(e) {
      var n = r(this),
        s = a.call(arguments, 1),
        c = function() {
          var t = s.concat(a.call(arguments));
          return this instanceof c ? u(n, t.length, t) : i(n, t, e)
        };
      return o(n.prototype) && (c.prototype = n.prototype), c
    }
  }, function(t, e, n) {
    var r = n(7),
      o = n(0),
      i = n(4),
      a = n(47);
    o(o.S + o.F * n(5)(function() {
      Reflect.defineProperty(r.f({}, 1, {
        value: 1
      }), 1, {
        value: 2
      })
    }), "Reflect", {
      defineProperty: function t(e, n, o) {
        i(e), n = a(n, !0), i(o);
        try {
          return r.f(e, n, o), !0
        } catch (t) {
          return !1
        }
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(21).f,
      i = n(4);
    r(r.S, "Reflect", {
      deleteProperty: function t(e, n) {
        var r = o(i(e), n);
        return !(r && !r.configurable) && delete e[n]
      }
    })
  }, function(t, e, n) {
    function r(t, e) {
      var n = arguments.length < 3 ? t : arguments[2],
        s, l;
      return c(t) === n ? t[e] : (s = o.f(t, e)) ? a(s, "value") ? s.value : void 0 !== s.get ? s.get.call(n) : void 0 : u(l = i(t)) ? r(l, e, n) : void 0
    }
    var o = n(21),
      i = n(42),
      a = n(11),
      s = n(0),
      u = n(2),
      c = n(4);
    s(s.S, "Reflect", {
      get: r
    })
  }, function(t, e, n) {
    var r = n(21),
      o = n(0),
      i = n(4);
    o(o.S, "Reflect", {
      getOwnPropertyDescriptor: function t(e, n) {
        return r.f(i(e), n)
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(42),
      i = n(4);
    r(r.S, "Reflect", {
      getPrototypeOf: function t(e) {
        return o(i(e))
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Reflect", {
      has: function t(e, n) {
        return n in e
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(4),
      i = Object.isExtensible;
    r(r.S, "Reflect", {
      isExtensible: function t(e) {
        return o(e), !i || i(e)
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Reflect", {
      ownKeys: n(124)
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(4),
      i = Object.preventExtensions;
    r(r.S, "Reflect", {
      preventExtensions: function t(e) {
        o(e);
        try {
          return i && i(e), !0
        } catch (t) {
          return !1
        }
      }
    })
  }, function(t, e, n) {
    function r(t, e, n) {
      var u = arguments.length < 4 ? t : arguments[3],
        h = i.f(l(t), e),
        f, d;
      if (!h) {
        if (p(d = a(t))) return r(d, e, n, u);
        h = c(0)
      }
      return s(h, "value") ? !(!1 === h.writable || !p(u)) && (f = i.f(u, e) || c(0), f.value = n, o.f(u, e, f), !0) : void 0 !== h.set && (h.set.call(u, n), !0)
    }
    var o = n(7),
      i = n(21),
      a = n(42),
      s = n(11),
      u = n(0),
      c = n(26),
      l = n(4),
      p = n(2);
    u(u.S, "Reflect", {
      set: r
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(92);
    o && r(r.S, "Reflect", {
      setPrototypeOf: function t(e, n) {
        o.check(e, n);
        try {
          return o.set(e, n), !0
        } catch (t) {
          return !1
        }
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(35),
      o = n(3),
      i = n(19),
      a = n(88),
      s = n(0),
      u = n(2),
      c = n(23),
      l = n(37),
      p = n(62),
      h = n(87),
      f = n(93).set,
      d = n(206)(),
      m = n(125),
      y = n(207),
      v = n(208),
      g = "Promise",
      _ = o.TypeError,
      b = o.process,
      x = o[g],
      w = "process" == a(b),
      S = function() {},
      T, P, C, k, O = P = m.f,
      E = !! function() {
        try {
          var t = x.resolve(1),
            e = (t.constructor = {})[n(6)("species")] = function(t) {
              t(S, S)
            };
          return (w || "function" == typeof PromiseRejectionEvent) && t.then(S) instanceof e
        } catch (t) {}
      }(),
      j = function(t) {
        var e;
        return !(!u(t) || "function" != typeof(e = t.then)) && e
      },
      A = function(t, e) {
        if (!t._n) {
          t._n = !0;
          var n = t._c;
          d(function() {
            for (var r = t._v, o = 1 == t._s, i = 0, a = function(e) {
              var n = o ? e.ok : e.fail,
                i = e.resolve,
                a = e.reject,
                s = e.domain,
                u, c;
              try {
                n ? (o || (2 == t._h && R(t), t._h = 1), !0 === n ? u = r : (s && s.enter(), u = n(r), s && s.exit()), u === e.promise ? a(_("Promise-chain cycle")) : (c = j(u)) ? c.call(u, i, a) : i(u)) : a(r)
              } catch (t) {
                a(t)
              }
            }; n.length > i;) a(n[i++]);
            t._c = [], t._n = !1, e && !t._h && F(t)
          })
        }
      },
      F = function(t) {
        f.call(o, function() {
          var e = t._v,
            n = M(t),
            r, i, a;
          if (n && (r = y(function() {
            w ? b.emit("unhandledRejection", e, t) : (i = o.onunhandledrejection) ? i({
              promise: t,
              reason: e
            }) : (a = o.console) && a.error && a.error("Unhandled promise rejection", e)
          }), t._h = w || M(t) ? 2 : 1), t._a = void 0, n && r.e) throw r.v
        })
      },
      M = function(t) {
        return 1 !== t._h && 0 === (t._a || t._c).length
      },
      R = function(t) {
        f.call(o, function() {
          var e;
          w ? b.emit("rejectionHandled", t) : (e = o.onrejectionhandled) && e({
            promise: t,
            reason: t._v
          })
        })
      },
      D = function(t) {
        var e = this;
        e._d || (e._d = !0, e = e._w || e, e._v = t, e._s = 2, e._a || (e._a = e._c.slice()), A(e, !0))
      },
      I = function(t) {
        var e = this,
          n;
        if (!e._d) {
          e._d = !0, e = e._w || e;
          try {
            if (e === t) throw _("Promise can't be resolved itself");
            (n = j(t)) ? d(function() {
              var r = {
                _w: e,
                _d: !1
              };
              try {
                n.call(t, i(I, r, 1), i(D, r, 1))
              } catch (t) {
                D.call(r, t)
              }
            }): (e._v = t, e._s = 1, A(e, !1))
          } catch (t) {
            D.call({
              _w: e,
              _d: !1
            }, t)
          }
        }
      };
    E || (x = function t(e) {
      l(this, x, g, "_h"), c(e), T.call(this);
      try {
        e(i(I, this, 1), i(D, this, 1))
      } catch (t) {
        D.call(this, t)
      }
    }, T = function t(e) {
      this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this._n = !1
    }, T.prototype = n(36)(x.prototype, {
      then: function t(e, n) {
        var r = O(h(this, x));
        return r.ok = "function" != typeof e || e, r.fail = "function" == typeof n && n, r.domain = w ? b.domain : void 0, this._c.push(r), this._a && this._a.push(r), this._s && A(this, !1), r.promise
      },
      catch: function(t) {
        return this.then(void 0, t)
      }
    }), C = function() {
      var t = new T;
      this.promise = t, this.resolve = i(I, t, 1), this.reject = i(D, t, 1)
    }, m.f = O = function(t) {
      return t === x || t === k ? new C(t) : P(t)
    }), s(s.G + s.W + s.F * !E, {
      Promise: x
    }), n(40)(x, g), n(60)(g), k = n(34)[g], s(s.S + s.F * !E, g, {
      reject: function t(e) {
        var n = O(this);
        return (0, n.reject)(e), n.promise
      }
    }), s(s.S + s.F * (r || !E), g, {
      resolve: function t(e) {
        return v(r && this === k ? x : this, e)
      }
    }), s(s.S + s.F * !(E && n(61)(function(t) {
      x.all(t).catch(S)
    })), g, {
      all: function t(e) {
        var n = this,
          r = O(n),
          o = r.resolve,
          i = r.reject,
          a = y(function() {
            var t = [],
              r = 0,
              a = 1;
            p(e, !1, function(e) {
              var s = r++,
                u = !1;
              t.push(void 0), a++, n.resolve(e).then(function(e) {
                u || (u = !0, t[s] = e, --a || o(t))
              }, i)
            }), --a || o(t)
          });
        return a.e && i(a.v), r.promise
      },
      race: function t(e) {
        var n = this,
          r = O(n),
          o = r.reject,
          i = y(function() {
            p(e, !1, function(t) {
              n.resolve(t).then(r.resolve, o)
            })
          });
        return i.e && o(i.v), r.promise
      }
    })
  }, function(t, e, n) {
    var r = n(3),
      o = n(93).set,
      i = r.MutationObserver || r.WebKitMutationObserver,
      a = r.process,
      s = r.Promise,
      u = "process" == n(38)(a);
    t.exports = function() {
      var t, e, n, c = function() {
        var r, o;
        for (u && (r = a.domain) && r.exit(); t;) {
          o = t.fn, t = t.next;
          try {
            o()
          } catch (r) {
            throw t ? n() : e = void 0, r
          }
        }
        e = void 0, r && r.enter()
      };
      if (u) n = function() {
        a.nextTick(c)
      };
      else if (!i || r.navigator && r.navigator.standalone)
        if (s && s.resolve) {
          var l = s.resolve();
          n = function() {
            l.then(c)
          }
        } else n = function() {
          o.call(r, c)
        };
      else {
        var p = !0,
          h = document.createTextNode("");
        new i(c).observe(h, {
          characterData: !0
        }), n = function() {
          h.data = p = !p
        }
      }
      return function(r) {
        var o = {
          fn: r,
          next: void 0
        };
        e && (e.next = o), t || (t = o, n()), e = o
      }
    }
  }, function(t, e) {
    t.exports = function(t) {
      try {
        return {
          e: !1,
          v: t()
        }
      } catch (t) {
        return {
          e: !0,
          v: t
        }
      }
    }
  }, function(t, e, n) {
    var r = n(4),
      o = n(2),
      i = n(125);
    t.exports = function(t, e) {
      if (r(t), o(e) && e.constructor === t) return e;
      var n = i.f(t);
      return (0, n.resolve)(e), n.promise
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(3),
      o = n(11),
      i = n(10),
      a = n(0),
      s = n(22),
      u = n(25).KEY,
      c = n(5),
      l = n(84),
      p = n(40),
      h = n(27),
      f = n(6),
      d = n(126),
      m = n(210),
      y = n(211),
      v = n(115),
      g = n(4),
      _ = n(2),
      b = n(16),
      x = n(47),
      w = n(26),
      S = n(49),
      T = n(127),
      P = n(21),
      C = n(7),
      k = n(29),
      O = P.f,
      E = C.f,
      j = T.f,
      A = r.Symbol,
      F = r.JSON,
      M = F && F.stringify,
      R = "prototype",
      D = f("_hidden"),
      I = f("toPrimitive"),
      L = {}.propertyIsEnumerable,
      z = l("symbol-registry"),
      U = l("symbols"),
      G = l("op-symbols"),
      N = Object[R],
      B = "function" == typeof A,
      q = r.QObject,
      V = !q || !q[R] || !q[R].findChild,
      H = i && c(function() {
        return 7 != S(E({}, "a", {
          get: function() {
            return E(this, "a", {
              value: 7
            }).a
          }
        })).a
      }) ? function(t, e, n) {
        var r = O(N, e);
        r && delete N[e], E(t, e, n), r && t !== N && E(N, e, r)
      } : E,
      W = function(t) {
        var e = U[t] = S(A[R]);
        return e._k = t, e
      },
      X = B && "symbol" == typeof A.iterator ? function(t) {
        return "symbol" == typeof t
      } : function(t) {
        return t instanceof A
      },
      Y = function t(e, n, r) {
        return e === N && Y(G, n, r), g(e), n = x(n, !0), g(r), o(U, n) ? (r.enumerable ? (o(e, D) && e[D][n] && (e[D][n] = !1), r = S(r, {
          enumerable: w(0, !1)
        })) : (o(e, D) || E(e, D, w(1, {})), e[D][n] = !0), H(e, n, r)) : E(e, n, r)
      },
      $ = function t(e, n) {
        g(e);
        for (var r = y(n = b(n)), o = 0, i = r.length, a; i > o;) Y(e, a = r[o++], n[a]);
        return e
      },
      K = function t(e, n) {
        return void 0 === n ? S(e) : $(S(e), n)
      },
      J = function t(e) {
        var n = L.call(this, e = x(e, !0));
        return !(this === N && o(U, e) && !o(G, e)) && (!(n || !o(this, e) || !o(U, e) || o(this, D) && this[D][e]) || n)
      },
      Q = function t(e, n) {
        if (e = b(e), n = x(n, !0), e !== N || !o(U, n) || o(G, n)) {
          var r = O(e, n);
          return !r || !o(U, n) || o(e, D) && e[D][n] || (r.enumerable = !0), r
        }
      },
      Z = function t(e) {
        for (var n = j(b(e)), r = [], i = 0, a; n.length > i;) o(U, a = n[i++]) || a == D || a == u || r.push(a);
        return r
      },
      tt = function t(e) {
        for (var n = e === N, r = j(n ? G : b(e)), i = [], a = 0, s; r.length > a;) !o(U, s = r[a++]) || n && !o(N, s) || i.push(U[s]);
        return i
      };
    B || (A = function t() {
      if (this instanceof A) throw TypeError("Symbol is not a constructor!");
      var e = h(arguments.length > 0 ? arguments[0] : void 0),
        n = function(t) {
          this === N && n.call(G, t), o(this, D) && o(this[D], e) && (this[D][e] = !1), H(this, e, w(1, t))
        };
      return i && V && H(N, e, {
        configurable: !0,
        set: n
      }), W(e)
    }, s(A[R], "toString", function t() {
      return this._k
    }), P.f = Q, C.f = Y, n(48).f = T.f = Z, n(51).f = J, n(64).f = tt, i && !n(35) && s(N, "propertyIsEnumerable", J, !0), d.f = function(t) {
      return W(f(t))
    }), a(a.G + a.W + a.F * !B, {
      Symbol: A
    });
    for (var et = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), nt = 0; et.length > nt;) f(et[nt++]);
    for (var rt = k(f.store), ot = 0; rt.length > ot;) m(rt[ot++]);
    a(a.S + a.F * !B, "Symbol", {
      for: function(t) {
        return o(z, t += "") ? z[t] : z[t] = A(t)
      },
      keyFor: function t(e) {
        if (!X(e)) throw TypeError(e + " is not a symbol!");
        for (var n in z)
          if (z[n] === e) return n
      },
      useSetter: function() {
        V = !0
      },
      useSimple: function() {
        V = !1
      }
    }), a(a.S + a.F * !B, "Object", {
      create: K,
      defineProperty: Y,
      defineProperties: $,
      getOwnPropertyDescriptor: Q,
      getOwnPropertyNames: Z,
      getOwnPropertySymbols: tt
    }), F && a(a.S + a.F * (!B || c(function() {
      var t = A();
      return "[null]" != M([t]) || "{}" != M({
        a: t
      }) || "{}" != M(Object(t))
    })), "JSON", {
      stringify: function t(e) {
        for (var n = [e], r = 1, o, i; arguments.length > r;) n.push(arguments[r++]);
        if (i = o = n[1], (_(o) || void 0 !== e) && !X(e)) return v(o) || (o = function(t, e) {
          if ("function" == typeof i && (e = i.call(this, t, e)), !X(e)) return e
        }), n[1] = o, M.apply(F, n)
      }
    }), A[R][I] || n(13)(A[R], I, A[R].valueOf), p(A, "Symbol"), p(Math, "Math", !0), p(r.JSON, "JSON", !0)
  }, function(t, e, n) {
    var r = n(3),
      o = n(34),
      i = n(35),
      a = n(126),
      s = n(7).f;
    t.exports = function(t) {
      var e = o.Symbol || (o.Symbol = i ? {} : r.Symbol || {});
      "_" == t.charAt(0) || t in e || s(e, t, {
        value: a.f(t)
      })
    }
  }, function(t, e, n) {
    var r = n(29),
      o = n(64),
      i = n(51);
    t.exports = function(t) {
      var e = r(t),
        n = o.f;
      if (n)
        for (var a = n(t), s = i.f, u = 0, c; a.length > u;) s.call(t, c = a[u++]) && e.push(c);
      return e
    }
  }, function(t, e, n) {
    var r = n(2),
      o = n(25).onFreeze;
    n(17)("freeze", function(t) {
      return function e(n) {
        return t && r(n) ? t(o(n)) : n
      }
    })
  }, function(t, e, n) {
    var r = n(2),
      o = n(25).onFreeze;
    n(17)("seal", function(t) {
      return function e(n) {
        return t && r(n) ? t(o(n)) : n
      }
    })
  }, function(t, e, n) {
    var r = n(2),
      o = n(25).onFreeze;
    n(17)("preventExtensions", function(t) {
      return function e(n) {
        return t && r(n) ? t(o(n)) : n
      }
    })
  }, function(t, e, n) {
    var r = n(2);
    n(17)("isFrozen", function(t) {
      return function e(n) {
        return !r(n) || !!t && t(n)
      }
    })
  }, function(t, e, n) {
    var r = n(2);
    n(17)("isSealed", function(t) {
      return function e(n) {
        return !r(n) || !!t && t(n)
      }
    })
  }, function(t, e, n) {
    var r = n(2);
    n(17)("isExtensible", function(t) {
      return function e(n) {
        return !!r(n) && (!t || t(n))
      }
    })
  }, function(t, e, n) {
    var r = n(16),
      o = n(21).f;
    n(17)("getOwnPropertyDescriptor", function() {
      return function t(e, n) {
        return o(r(e), n)
      }
    })
  }, function(t, e, n) {
    var r = n(15),
      o = n(42);
    n(17)("getPrototypeOf", function() {
      return function t(e) {
        return o(r(e))
      }
    })
  }, function(t, e, n) {
    var r = n(15),
      o = n(29);
    n(17)("keys", function() {
      return function t(e) {
        return o(r(e))
      }
    })
  }, function(t, e, n) {
    n(17)("getOwnPropertyNames", function() {
      return n(127).f
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S + r.F, "Object", {
      assign: n(121)
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Object", {
      is: n(224)
    })
  }, function(t, e) {
    t.exports = Object.is || function t(e, n) {
      return e === n ? 0 !== e || 1 / e == 1 / n : e != e && n != n
    }
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Object", {
      setPrototypeOf: n(92).set
    })
  }, function(t, e, n) {
    var r = n(7).f,
      o = Function.prototype,
      i = /^\s*function ([^ (]*)/,
      a = "name";
    a in o || n(10) && r(o, a, {
      configurable: !0,
      get: function() {
        try {
          return ("" + this).match(i)[1]
        } catch (t) {
          return ""
        }
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(16),
      i = n(9);
    r(r.S, "String", {
      raw: function t(e) {
        for (var n = o(e.raw), r = i(n.length), a = arguments.length, s = [], u = 0; r > u;) s.push(String(n[u++])), u < a && s.push(String(arguments[u]));
        return s.join("")
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(39),
      i = String.fromCharCode,
      a = String.fromCodePoint;
    r(r.S + r.F * (!!a && 1 != a.length), "String", {
      fromCodePoint: function t(e) {
        for (var n = [], r = arguments.length, a = 0, s; r > a;) {
          if (s = +arguments[a++], o(s, 1114111) !== s) throw RangeError(s + " is not a valid code point");
          n.push(s < 65536 ? i(s) : i(55296 + ((s -= 65536) >> 10), s % 1024 + 56320))
        }
        return n.join("")
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(230)(!1);
    r(r.P, "String", {
      codePointAt: function t(e) {
        return o(this, e)
      }
    })
  }, function(t, e, n) {
    var r = n(28),
      o = n(24);
    t.exports = function(t) {
      return function(e, n) {
        var i = String(o(e)),
          a = r(n),
          s = i.length,
          u, c;
        return a < 0 || a >= s ? t ? "" : void 0 : (u = i.charCodeAt(a), u < 55296 || u > 56319 || a + 1 === s || (c = i.charCodeAt(a + 1)) < 56320 || c > 57343 ? t ? i.charAt(a) : u : t ? i.slice(a, a + 2) : c - 56320 + (u - 55296 << 10) + 65536)
      }
    }
  }, function(t, e, n) {
    var r = n(0);
    r(r.P, "String", {
      repeat: n(128)
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(9),
      i = n(94),
      a = "startsWith",
      s = "" [a];
    r(r.P + r.F * n(95)(a), "String", {
      startsWith: function t(e) {
        var n = i(this, e, a),
          r = o(Math.min(arguments.length > 1 ? arguments[1] : void 0, n.length)),
          u = String(e);
        return s ? s.call(n, u, r) : n.slice(r, r + u.length) === u
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(9),
      i = n(94),
      a = "endsWith",
      s = "" [a];
    r(r.P + r.F * n(95)(a), "String", {
      endsWith: function t(e) {
        var n = i(this, e, a),
          r = arguments.length > 1 ? arguments[1] : void 0,
          u = o(n.length),
          c = void 0 === r ? u : Math.min(o(r), u),
          l = String(e);
        return s ? s.call(n, l, c) : n.slice(c - l.length, c) === l
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(94),
      i = "includes";
    r(r.P + r.F * n(95)(i), "String", {
      includes: function t(e) {
        return !!~o(this, e, i).indexOf(e, arguments.length > 1 ? arguments[1] : void 0)
      }
    })
  }, function(t, e, n) {
    n(10) && "g" != /./g.flags && n(7).f(RegExp.prototype, "flags", {
      configurable: !0,
      get: n(236)
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(4);
    t.exports = function() {
      var t = r(this),
        e = "";
      return t.global && (e += "g"), t.ignoreCase && (e += "i"), t.multiline && (e += "m"), t.unicode && (e += "u"), t.sticky && (e += "y"), e
    }
  }, function(t, e, n) {
    n(65)("match", 1, function(t, e, n) {
      return [function n(r) {
        "use strict";
        var o = t(this),
          i = void 0 == r ? void 0 : r[e];
        return void 0 !== i ? i.call(r, o) : new RegExp(r)[e](String(o))
      }, n]
    })
  }, function(t, e, n) {
    n(65)("replace", 2, function(t, e, n) {
      return [function r(o, i) {
        "use strict";
        var a = t(this),
          s = void 0 == o ? void 0 : o[e];
        return void 0 !== s ? s.call(o, a, i) : n.call(String(a), o, i)
      }, n]
    })
  }, function(t, e, n) {
    n(65)("split", 2, function(t, e, r) {
      "use strict";
      var o = n(129),
        i = r,
        a = [].push,
        s = "split",
        u = "length",
        c = "lastIndex";
      if ("c" == "abbc" [s](/(b)*/)[1] || 4 != "test" [s](/(?:)/, -1)[u] || 2 != "ab" [s](/(?:ab)*/)[u] || 4 != "." [s](/(.?)(.?)/)[u] || "." [s](/()()/)[u] > 1 || "" [s](/.?/)[u]) {
        var l = void 0 === /()??/.exec("")[1];
        r = function(t, e) {
          var n = String(this);
          if (void 0 === t && 0 === e) return [];
          if (!o(t)) return i.call(n, t, e);
          var r = [],
            s = (t.ignoreCase ? "i" : "") + (t.multiline ? "m" : "") + (t.unicode ? "u" : "") + (t.sticky ? "y" : ""),
            p = 0,
            h = void 0 === e ? 4294967295 : e >>> 0,
            f = new RegExp(t.source, s + "g"),
            d, m, y, v, g;
          for (l || (d = new RegExp("^" + f.source + "$(?!\\s)", s));
               (m = f.exec(n)) && !((y = m.index + m[0][u]) > p && (r.push(n.slice(p, m.index)), !l && m[u] > 1 && m[0].replace(d, function() {
                 for (g = 1; g < arguments[u] - 2; g++) void 0 === arguments[g] && (m[g] = void 0)
               }), m[u] > 1 && m.index < n[u] && a.apply(r, m.slice(1)), v = m[0][u], p = y, r[u] >= h));) f[c] === m.index && f[c]++;
          return p === n[u] ? !v && f.test("") || r.push("") : r.push(n.slice(p)), r[u] > h ? r.slice(0, h) : r
        }
      } else "0" [s](void 0, 0)[u] && (r = function(t, e) {
        return void 0 === t && 0 === e ? [] : i.call(this, t, e)
      });
      return [function n(o, i) {
        var a = t(this),
          s = void 0 == o ? void 0 : o[e];
        return void 0 !== s ? s.call(o, a, i) : r.call(String(a), o, i)
      }, r]
    })
  }, function(t, e, n) {
    n(65)("search", 1, function(t, e, n) {
      return [function n(r) {
        "use strict";
        var o = t(this),
          i = void 0 == r ? void 0 : r[e];
        return void 0 !== i ? i.call(r, o) : new RegExp(r)[e](String(o))
      }, n]
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(19),
      o = n(0),
      i = n(15),
      a = n(120),
      s = n(89),
      u = n(9),
      c = n(96),
      l = n(90);
    o(o.S + o.F * !n(61)(function(t) {
      Array.from(t)
    }), "Array", {
      from: function t(e) {
        var n = i(e),
          o = "function" == typeof this ? this : Array,
          p = arguments.length,
          h = p > 1 ? arguments[1] : void 0,
          f = void 0 !== h,
          d = 0,
          m = l(n),
          y, v, g, _;
        if (f && (h = r(h, p > 2 ? arguments[2] : void 0, 2)), void 0 == m || o == Array && s(m))
          for (y = u(n.length), v = new o(y); y > d; d++) c(v, d, f ? h(n[d], d) : n[d]);
        else
          for (_ = m.call(n), v = new o; !(g = _.next()).done; d++) c(v, d, f ? a(_, h, [g.value, d], !0) : g.value);
        return v.length = d, v
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(96);
    r(r.S + r.F * n(5)(function() {
      function t() {}
      return !(Array.of.call(t) instanceof t)
    }), "Array", {
      of: function t() {
        for (var e = 0, n = arguments.length, r = new("function" == typeof this ? this : Array)(n); n > e;) o(r, e, arguments[e++]);
        return r.length = n, r
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.P, "Array", {
      copyWithin: n(118)
    }), n(43)("copyWithin")
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(50)(5),
      i = "find",
      a = !0;
    i in [] && Array(1)[i](function() {
      a = !1
    }), r(r.P + r.F * a, "Array", {
      find: function t(e) {
        return o(this, e, arguments.length > 1 ? arguments[1] : void 0)
      }
    }), n(43)(i)
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(50)(6),
      i = "findIndex",
      a = !0;
    i in [] && Array(1)[i](function() {
      a = !1
    }), r(r.P + r.F * a, "Array", {
      findIndex: function t(e) {
        return o(this, e, arguments.length > 1 ? arguments[1] : void 0)
      }
    }), n(43)(i)
  }, function(t, e, n) {
    var r = n(0);
    r(r.P, "Array", {
      fill: n(86)
    }), n(43)("fill")
  }, function(t, e, n) {
    var r = n(0),
      o = n(3).isFinite;
    r(r.S, "Number", {
      isFinite: function t(e) {
        return "number" == typeof e && o(e)
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Number", {
      isInteger: n(130)
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(130),
      i = Math.abs;
    r(r.S, "Number", {
      isSafeInteger: function t(e) {
        return o(e) && i(e) <= 9007199254740991
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Number", {
      isNaN: function t(e) {
        return e != e
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Number", {
      EPSILON: Math.pow(2, -52)
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Number", {
      MIN_SAFE_INTEGER: -9007199254740991
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Number", {
      MAX_SAFE_INTEGER: 9007199254740991
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(255);
    r(r.S + r.F * (Number.parseFloat != o), "Number", {
      parseFloat: o
    })
  }, function(t, e, n) {
    var r = n(3).parseFloat,
      o = n(131).trim;
    t.exports = 1 / r(n(97) + "-0") != -1 / 0 ? function t(e) {
      var n = o(String(e), 3),
        i = r(n);
      return 0 === i && "-" == n.charAt(0) ? -0 : i
    } : r
  }, function(t, e, n) {
    var r = n(0),
      o = n(257);
    r(r.S + r.F * (Number.parseInt != o), "Number", {
      parseInt: o
    })
  }, function(t, e, n) {
    var r = n(3).parseInt,
      o = n(131).trim,
      i = n(97),
      a = /^[-+]?0[xX]/;
    t.exports = 8 !== r(i + "08") || 22 !== r(i + "0x16") ? function t(e, n) {
      var i = o(String(e), 3);
      return r(i, n >>> 0 || (a.test(i) ? 16 : 10))
    } : r
  }, function(t, e, n) {
    var r = n(0),
      o = n(132),
      i = Math.sqrt,
      a = Math.acosh;
    r(r.S + r.F * !(a && 710 == Math.floor(a(Number.MAX_VALUE)) && a(1 / 0) == 1 / 0), "Math", {
      acosh: function t(e) {
        return (e = +e) < 1 ? NaN : e > 94906265.62425156 ? Math.log(e) + Math.LN2 : o(e - 1 + i(e - 1) * i(e + 1))
      }
    })
  }, function(t, e, n) {
    function r(t) {
      return isFinite(t = +t) && 0 != t ? t < 0 ? -r(-t) : Math.log(t + Math.sqrt(t * t + 1)) : t
    }
    var o = n(0),
      i = Math.asinh;
    o(o.S + o.F * !(i && 1 / i(0) > 0), "Math", {
      asinh: r
    })
  }, function(t, e, n) {
    var r = n(0),
      o = Math.atanh;
    r(r.S + r.F * !(o && 1 / o(-0) < 0), "Math", {
      atanh: function t(e) {
        return 0 == (e = +e) ? e : Math.log((1 + e) / (1 - e)) / 2
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(98);
    r(r.S, "Math", {
      cbrt: function t(e) {
        return o(e = +e) * Math.pow(Math.abs(e), 1 / 3)
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      clz32: function t(e) {
        return (e >>>= 0) ? 31 - Math.floor(Math.log(e + .5) * Math.LOG2E) : 32
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = Math.exp;
    r(r.S, "Math", {
      cosh: function t(e) {
        return (o(e = +e) + o(-e)) / 2
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(99);
    r(r.S + r.F * (o != Math.expm1), "Math", {
      expm1: o
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      fround: n(266)
    })
  }, function(t, e, n) {
    var r = n(98),
      o = Math.pow,
      i = o(2, -52),
      a = o(2, -23),
      s = o(2, 127) * (2 - a),
      u = o(2, -126),
      c = function(t) {
        return t + 1 / i - 1 / i
      };
    t.exports = Math.fround || function t(e) {
      var n = Math.abs(e),
        o = r(e),
        l, p;
      return n < u ? o * c(n / u / a) * u * a : (l = (1 + a / i) * n, p = l - (l - n), p > s || p != p ? o * (1 / 0) : o * p)
    }
  }, function(t, e, n) {
    var r = n(0),
      o = Math.abs;
    r(r.S, "Math", {
      hypot: function t(e, n) {
        for (var r = 0, i = 0, a = arguments.length, s = 0, u, c; i < a;) u = o(arguments[i++]), s < u ? (c = s / u, r = r * c * c + 1, s = u) : u > 0 ? (c = u / s, r += c * c) : r += u;
        return s === 1 / 0 ? 1 / 0 : s * Math.sqrt(r)
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = Math.imul;
    r(r.S + r.F * n(5)(function() {
      return -5 != o(4294967295, 5) || 2 != o.length
    }), "Math", {
      imul: function t(e, n) {
        var r = 65535,
          o = +e,
          i = +n,
          a = 65535 & o,
          s = 65535 & i;
        return 0 | a * s + ((65535 & o >>> 16) * s + a * (65535 & i >>> 16) << 16 >>> 0)
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      log1p: n(132)
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      log10: function t(e) {
        return Math.log(e) * Math.LOG10E
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      log2: function t(e) {
        return Math.log(e) / Math.LN2
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      sign: n(98)
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(99),
      i = Math.exp;
    r(r.S + r.F * n(5)(function() {
      return -2e-17 != !Math.sinh(-2e-17)
    }), "Math", {
      sinh: function t(e) {
        return Math.abs(e = +e) < 1 ? (o(e) - o(-e)) / 2 : (i(e - 1) - i(-e - 1)) * (Math.E / 2)
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(99),
      i = Math.exp;
    r(r.S, "Math", {
      tanh: function t(e) {
        var n = o(e = +e),
          r = o(-e);
        return n == 1 / 0 ? 1 : r == 1 / 0 ? -1 : (n - r) / (i(e) + i(-e))
      }
    })
  }, function(t, e, n) {
    var r = n(0);
    r(r.S, "Math", {
      trunc: function t(e) {
        return (e > 0 ? Math.floor : Math.ceil)(e)
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(82)(!0);
    r(r.P, "Array", {
      includes: function t(e) {
        return o(this, e, arguments.length > 1 ? arguments[1] : void 0)
      }
    }), n(43)("includes")
  }, function(t, e, n) {
    var r = n(0),
      o = n(133)(!1);
    r(r.S, "Object", {
      values: function t(e) {
        return o(e)
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(133)(!0);
    r(r.S, "Object", {
      entries: function t(e) {
        return o(e)
      }
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(124),
      i = n(16),
      a = n(21),
      s = n(96);
    r(r.S, "Object", {
      getOwnPropertyDescriptors: function t(e) {
        for (var n = i(e), r = a.f, u = o(n), c = {}, l = 0, p, h; u.length > l;) void 0 !== (h = r(n, p = u[l++])) && s(c, p, h);
        return c
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(134),
      i = n(100);
    r(r.P + r.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(i), "String", {
      padStart: function t(e) {
        return o(this, e, arguments.length > 1 ? arguments[1] : void 0, !0)
      }
    })
  }, function(t, e, n) {
    "use strict";
    var r = n(0),
      o = n(134),
      i = n(100);
    r(r.P + r.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(i), "String", {
      padEnd: function t(e) {
        return o(this, e, arguments.length > 1 ? arguments[1] : void 0, !1)
      }
    })
  }, function(t, e, n) {
    var r = n(3),
      o = n(0),
      i = n(100),
      a = [].slice,
      s = /MSIE .\./.test(i),
      u = function(t) {
        return function(e, n) {
          var r = arguments.length > 2,
            o = !!r && a.call(arguments, 2);
          return t(r ? function() {
            ("function" == typeof e ? e : Function(e)).apply(this, o)
          } : e, n)
        }
      };
    o(o.G + o.B + o.F * s, {
      setTimeout: u(r.setTimeout),
      setInterval: u(r.setInterval)
    })
  }, function(t, e, n) {
    var r = n(0),
      o = n(93);
    r(r.G + r.B, {
      setImmediate: o.set,
      clearImmediate: o.clear
    })
  }, function(t, e, n) {
    for (var r = n(91), o = n(29), i = n(22), a = n(3), s = n(13), u = n(41), c = n(6), l = c("iterator"), p = c("toStringTag"), h = u.Array, f = {
      CSSRuleList: !0,
      CSSStyleDeclaration: !1,
      CSSValueList: !1,
      ClientRectList: !1,
      DOMRectList: !1,
      DOMStringList: !1,
      DOMTokenList: !0,
      DataTransferItemList: !1,
      FileList: !1,
      HTMLAllCollection: !1,
      HTMLCollection: !1,
      HTMLFormElement: !1,
      HTMLSelectElement: !1,
      MediaList: !0,
      MimeTypeArray: !1,
      NamedNodeMap: !1,
      NodeList: !0,
      PaintRequestList: !1,
      Plugin: !1,
      PluginArray: !1,
      SVGLengthList: !1,
      SVGNumberList: !1,
      SVGPathSegList: !1,
      SVGPointList: !1,
      SVGStringList: !1,
      SVGTransformList: !1,
      SourceBufferList: !1,
      StyleSheetList: !0,
      TextTrackCueList: !1,
      TextTrackList: !1,
      TouchList: !1
    }, d = o(f), m = 0; m < d.length; m++) {
      var y = d[m],
        v = f[y],
        g = a[y],
        _ = g && g.prototype,
        b;
      if (_ && (_[l] || s(_, l, h), _[p] || s(_, p, y), u[y] = h, v))
        for (b in r) _[b] || i(_, b, r[b], !0)
    }
  }, function(t, e) {
    ! function(e) {
      "use strict";

      function n(t, e, n, r) {
        var i = e && e.prototype instanceof o ? e : o,
          a = Object.create(i.prototype),
          s = new f(r || []);
        return a._invoke = c(t, n, s), a
      }

      function r(t, e, n) {
        try {
          return {
            type: "normal",
            arg: t.call(e, n)
          }
        } catch (t) {
          return {
            type: "throw",
            arg: t
          }
        }
      }

      function o() {}

      function i() {}

      function a() {}

      function s(t) {
        ["next", "throw", "return"].forEach(function(e) {
          t[e] = function(t) {
            return this._invoke(e, t)
          }
        })
      }

      function u(t) {
        function e(n, o, i, a) {
          var s = r(t[n], t, o);
          if ("throw" !== s.type) {
            var u = s.arg,
              c = u.value;
            return c && "object" == typeof c && v.call(c, "__await") ? Promise.resolve(c.__await).then(function(t) {
              e("next", t, i, a)
            }, function(t) {
              e("throw", t, i, a)
            }) : Promise.resolve(c).then(function(t) {
              u.value = t, i(u)
            }, a)
          }
          a(s.arg)
        }

        function n(t, n) {
          function r() {
            return new Promise(function(r, o) {
              e(t, n, r, o)
            })
          }
          return o = o ? o.then(r, r) : r()
        }
        var o;
        this._invoke = n
      }

      function c(t, e, n) {
        var o = P;
        return function i(a, s) {
          if (o === k) throw new Error("Generator is already running");
          if (o === O) {
            if ("throw" === a) throw s;
            return m()
          }
          for (n.method = a, n.arg = s;;) {
            var u = n.delegate;
            if (u) {
              var c = l(u, n);
              if (c) {
                if (c === E) continue;
                return c
              }
            }
            if ("next" === n.method) n.sent = n._sent = n.arg;
            else if ("throw" === n.method) {
              if (o === P) throw o = O, n.arg;
              n.dispatchException(n.arg)
            } else "return" === n.method && n.abrupt("return", n.arg);
            o = k;
            var p = r(t, e, n);
            if ("normal" === p.type) {
              if (o = n.done ? O : C, p.arg === E) continue;
              return {
                value: p.arg,
                done: n.done
              }
            }
            "throw" === p.type && (o = O, n.method = "throw", n.arg = p.arg)
          }
        }
      }

      function l(t, e) {
        var n = t.iterator[e.method];
        if (n === g) {
          if (e.delegate = null, "throw" === e.method) {
            if (t.iterator.return && (e.method = "return", e.arg = g, l(t, e), "throw" === e.method)) return E;
            e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method")
          }
          return E
        }
        var o = r(n, t.iterator, e.arg);
        if ("throw" === o.type) return e.method = "throw", e.arg = o.arg, e.delegate = null, E;
        var i = o.arg;
        return i ? i.done ? (e[t.resultName] = i.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = g), e.delegate = null, E) : i : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, E)
      }

      function p(t) {
        var e = {
          tryLoc: t[0]
        };
        1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e)
      }

      function h(t) {
        var e = t.completion || {};
        e.type = "normal", delete e.arg, t.completion = e
      }

      function f(t) {
        this.tryEntries = [{
          tryLoc: "root"
        }], t.forEach(p, this), this.reset(!0)
      }

      function d(t) {
        if (t) {
          var e = t[b];
          if (e) return e.call(t);
          if ("function" == typeof t.next) return t;
          if (!isNaN(t.length)) {
            var n = -1,
              r = function e() {
                for (; ++n < t.length;)
                  if (v.call(t, n)) return e.value = t[n], e.done = !1, e;
                return e.value = g, e.done = !0, e
              };
            return r.next = r
          }
        }
        return {
          next: m
        }
      }

      function m() {
        return {
          value: g,
          done: !0
        }
      }
      var y = Object.prototype,
        v = y.hasOwnProperty,
        g, _ = "function" == typeof Symbol ? Symbol : {},
        b = _.iterator || "@@iterator",
        x = _.asyncIterator || "@@asyncIterator",
        w = _.toStringTag || "@@toStringTag",
        S = "object" == typeof t,
        T = e.regeneratorRuntime;
      if (T) return void(S && (t.exports = T));
      T = e.regeneratorRuntime = S ? t.exports : {}, T.wrap = n;
      var P = "suspendedStart",
        C = "suspendedYield",
        k = "executing",
        O = "completed",
        E = {},
        j = {};
      j[b] = function() {
        return this
      };
      var A = Object.getPrototypeOf,
        F = A && A(A(d([])));
      F && F !== y && v.call(F, b) && (j = F);
      var M = a.prototype = o.prototype = Object.create(j);
      i.prototype = M.constructor = a, a.constructor = i, a[w] = i.displayName = "GeneratorFunction", T.isGeneratorFunction = function(t) {
        var e = "function" == typeof t && t.constructor;
        return !!e && (e === i || "GeneratorFunction" === (e.displayName || e.name))
      }, T.mark = function(t) {
        return Object.setPrototypeOf ? Object.setPrototypeOf(t, a) : (t.__proto__ = a, w in t || (t[w] = "GeneratorFunction")), t.prototype = Object.create(M), t
      }, T.awrap = function(t) {
        return {
          __await: t
        }
      }, s(u.prototype), u.prototype[x] = function() {
        return this
      }, T.AsyncIterator = u, T.async = function(t, e, r, o) {
        var i = new u(n(t, e, r, o));
        return T.isGeneratorFunction(e) ? i : i.next().then(function(t) {
          return t.done ? t.value : i.next()
        })
      }, s(M), M[w] = "Generator", M[b] = function() {
        return this
      }, M.toString = function() {
        return "[object Generator]"
      }, T.keys = function(t) {
        var e = [];
        for (var n in t) e.push(n);
        return e.reverse(),
          function n() {
            for (; e.length;) {
              var r = e.pop();
              if (r in t) return n.value = r, n.done = !1, n
            }
            return n.done = !0, n
          }
      }, T.values = d, f.prototype = {
        constructor: f,
        reset: function(t) {
          if (this.prev = 0, this.next = 0, this.sent = this._sent = g, this.done = !1, this.delegate = null, this.method = "next", this.arg = g, this.tryEntries.forEach(h), !t)
            for (var e in this) "t" === e.charAt(0) && v.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = g)
        },
        stop: function() {
          this.done = !0;
          var t = this.tryEntries[0],
            e = t.completion;
          if ("throw" === e.type) throw e.arg;
          return this.rval
        },
        dispatchException: function(t) {
          function e(e, r) {
            return i.type = "throw", i.arg = t, n.next = e, r && (n.method = "next", n.arg = g), !!r
          }
          if (this.done) throw t;
          for (var n = this, r = this.tryEntries.length - 1; r >= 0; --r) {
            var o = this.tryEntries[r],
              i = o.completion;
            if ("root" === o.tryLoc) return e("end");
            if (o.tryLoc <= this.prev) {
              var a = v.call(o, "catchLoc"),
                s = v.call(o, "finallyLoc");
              if (a && s) {
                if (this.prev < o.catchLoc) return e(o.catchLoc, !0);
                if (this.prev < o.finallyLoc) return e(o.finallyLoc)
              } else if (a) {
                if (this.prev < o.catchLoc) return e(o.catchLoc, !0)
              } else {
                if (!s) throw new Error("try statement without catch or finally");
                if (this.prev < o.finallyLoc) return e(o.finallyLoc)
              }
            }
          }
        },
        abrupt: function(t, e) {
          for (var n = this.tryEntries.length - 1; n >= 0; --n) {
            var r = this.tryEntries[n];
            if (r.tryLoc <= this.prev && v.call(r, "finallyLoc") && this.prev < r.finallyLoc) {
              var o = r;
              break
            }
          }
          o && ("break" === t || "continue" === t) && o.tryLoc <= e && e <= o.finallyLoc && (o = null);
          var i = o ? o.completion : {};
          return i.type = t, i.arg = e, o ? (this.method = "next", this.next = o.finallyLoc, E) : this.complete(i)
        },
        complete: function(t, e) {
          if ("throw" === t.type) throw t.arg;
          return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), E
        },
        finish: function(t) {
          for (var e = this.tryEntries.length - 1; e >= 0; --e) {
            var n = this.tryEntries[e];
            if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc), h(n), E
          }
        },
        catch: function(t) {
          for (var e = this.tryEntries.length - 1; e >= 0; --e) {
            var n = this.tryEntries[e];
            if (n.tryLoc === t) {
              var r = n.completion;
              if ("throw" === r.type) {
                var o = r.arg;
                h(n)
              }
              return o
            }
          }
          throw new Error("illegal catch attempt")
        },
        delegateYield: function(t, e, n) {
          return this.delegate = {
            iterator: d(t),
            resultName: e,
            nextLoc: n
          }, "next" === this.method && (this.arg = g), E
        }
      }
    }(function() {
      return this
    }() || Function("return this")())
  }, function(t, e, n) {
    function r(t, e) {
      var n = a(t),
        r = !n && i(t),
        l = !n && !r && s(t),
        h = !n && !r && !l && c(t),
        f = n || r || l || h,
        d = f ? o(t.length, String) : [],
        m = d.length;
      for (var y in t) !e && !p.call(t, y) || f && ("length" == y || l && ("offset" == y || "parent" == y) || h && ("buffer" == y || "byteLength" == y || "byteOffset" == y) || u(y, m)) || d.push(y);
      return d
    }
    var o = n(287),
      i = n(101),
      a = n(14),
      s = n(136),
      u = n(67),
      c = n(137),
      l = Object.prototype,
      p = l.hasOwnProperty;
    t.exports = r
  }, function(t, e) {
    function n(t, e) {
      for (var n = -1, r = Array(t); ++n < t;) r[n] = e(n);
      return r
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      return i(t) && o(t) == a
    }
    var o = n(53),
      i = n(55),
      a = "[object Arguments]";
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = a.call(t, u),
        n = t[u];
      try {
        t[u] = void 0;
        var r = !0
      } catch (t) {}
      var o = s.call(t);
      return r && (e ? t[u] = n : delete t[u]), o
    }
    var o = n(54),
      i = Object.prototype,
      a = i.hasOwnProperty,
      s = i.toString,
      u = o ? o.toStringTag : void 0;
    t.exports = r
  }, function(t, e) {
    function n(t) {
      return o.call(t)
    }
    var r = Object.prototype,
      o = r.toString;
    t.exports = n
  }, function(t, e) {
    function n() {
      return !1
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      return a(t) && i(t.length) && !!s[o(t)]
    }
    var o = n(53),
      i = n(102),
      a = n(55),
      s = {};
    s["[object Float32Array]"] = s["[object Float64Array]"] = s["[object Int8Array]"] = s["[object Int16Array]"] = s["[object Int32Array]"] = s["[object Uint8Array]"] = s["[object Uint8ClampedArray]"] = s["[object Uint16Array]"] = s["[object Uint32Array]"] = !0, s["[object Arguments]"] = s["[object Array]"] = s["[object ArrayBuffer]"] = s["[object Boolean]"] = s["[object DataView]"] = s["[object Date]"] = s["[object Error]"] = s["[object Function]"] = s["[object Map]"] = s["[object Number]"] = s["[object Object]"] = s["[object RegExp]"] = s["[object Set]"] = s["[object String]"] = s["[object WeakMap]"] = !1, t.exports = r
  }, function(t, e) {
    function n(t) {
      return function(e) {
        return t(e)
      }
    }
    t.exports = n
  }, function(t, e, n) {
    (function(t) {
      var r = n(135),
        o = "object" == typeof e && e && !e.nodeType && e,
        i = o && "object" == typeof t && t && !t.nodeType && t,
        a = i && i.exports === o,
        s = a && r.process,
        u = function() {
          try {
            return s && s.binding && s.binding("util")
          } catch (t) {}
        }();
      t.exports = u
    }).call(e, n(66)(t))
  }, function(t, e, n) {
    function r(t) {
      if (!o(t)) return i(t);
      var e = [];
      for (var n in Object(t)) s.call(t, n) && "constructor" != n && e.push(n);
      return e
    }
    var o = n(296),
      i = n(297),
      a = Object.prototype,
      s = a.hasOwnProperty;
    t.exports = r
  }, function(t, e) {
    function n(t) {
      var e = t && t.constructor;
      return t === ("function" == typeof e && e.prototype || r)
    }
    var r = Object.prototype;
    t.exports = n
  }, function(t, e, n) {
    var r = n(298),
      o = r(Object.keys, Object);
    t.exports = o
  }, function(t, e) {
    function n(t, e) {
      return function(n) {
        return t(e(n))
      }
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e, n, r, y, g) {
      var _ = c(t),
        b = c(e),
        x = _ ? d : u(t),
        w = b ? d : u(e);
      x = x == f ? m : x, w = w == f ? m : w;
      var S = x == m,
        T = w == m,
        P = x == w;
      if (P && l(t)) {
        if (!l(e)) return !1;
        _ = !0, S = !1
      }
      if (P && !S) return g || (g = new o), _ || p(t) ? i(t, e, n, r, y, g) : a(t, e, x, n, r, y, g);
      if (!(n & h)) {
        var C = S && v.call(t, "__wrapped__"),
          k = T && v.call(e, "__wrapped__");
        if (C || k) {
          var O = C ? t.value() : t,
            E = k ? e.value() : e;
          return g || (g = new o), y(O, E, n, r, g)
        }
      }
      return !!P && (g || (g = new o), s(t, e, n, r, y, g))
    }
    var o = n(139),
      i = n(141),
      a = n(331),
      s = n(335),
      u = n(341),
      c = n(14),
      l = n(136),
      p = n(137),
      h = 1,
      f = "[object Arguments]",
      d = "[object Array]",
      m = "[object Object]",
      y = Object.prototype,
      v = y.hasOwnProperty;
    t.exports = r
  }, function(t, e) {
    function n() {
      this.__data__ = [], this.size = 0
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      var e = this.__data__,
        n = o(e, t);
      return !(n < 0) && (n == e.length - 1 ? e.pop() : a.call(e, n, 1), --this.size, !0)
    }
    var o = n(70),
      i = Array.prototype,
      a = i.splice;
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = this.__data__,
        n = o(e, t);
      return n < 0 ? void 0 : e[n][1]
    }
    var o = n(70);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return o(this.__data__, t) > -1
    }
    var o = n(70);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      var n = this.__data__,
        r = o(n, t);
      return r < 0 ? (++this.size, n.push([t, e])) : n[r][1] = e, this
    }
    var o = n(70);
    t.exports = r
  }, function(t, e, n) {
    function r() {
      this.__data__ = new o, this.size = 0
    }
    var o = n(69);
    t.exports = r
  }, function(t, e) {
    function n(t) {
      var e = this.__data__,
        n = e.delete(t);
      return this.size = e.size, n
    }
    t.exports = n
  }, function(t, e) {
    function n(t) {
      return this.__data__.get(t)
    }
    t.exports = n
  }, function(t, e) {
    function n(t) {
      return this.__data__.has(t)
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e) {
      var n = this.__data__;
      if (n instanceof o) {
        var r = n.__data__;
        if (!i || r.length < s - 1) return r.push([t, e]), this.size = ++n.size, this;
        n = this.__data__ = new a(r)
      }
      return n.set(t, e), this.size = n.size, this
    }
    var o = n(69),
      i = n(104),
      a = n(105),
      s = 200;
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return !(!a(t) || i(t)) && (o(t) ? d : c).test(s(t))
    }
    var o = n(138),
      i = n(311),
      a = n(45),
      s = n(140),
      u = /[\\^$.*+?()[\]{}|]/g,
      c = /^\[object .+?Constructor\]$/,
      l = Function.prototype,
      p = Object.prototype,
      h = l.toString,
      f = p.hasOwnProperty,
      d = RegExp("^" + h.call(f).replace(u, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return !!i && i in t
    }
    var o = n(312),
      i = function() {
        var t = /[^.]+$/.exec(o && o.keys && o.keys.IE_PROTO || "");
        return t ? "Symbol(src)_1." + t : ""
      }();
    t.exports = r
  }, function(t, e, n) {
    var r = n(18),
      o = r["__core-js_shared__"];
    t.exports = o
  }, function(t, e) {
    function n(t, e) {
      return null == t ? void 0 : t[e]
    }
    t.exports = n
  }, function(t, e, n) {
    function r() {
      this.size = 0, this.__data__ = {
        hash: new o,
        map: new(a || i),
        string: new o
      }
    }
    var o = n(315),
      i = n(69),
      a = n(104);
    t.exports = r
  }, function(t, e, n) {
    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])
      }
    }
    var o = n(316),
      i = n(317),
      a = n(318),
      s = n(319),
      u = n(320);
    r.prototype.clear = o, r.prototype.delete = i, r.prototype.get = a, r.prototype.has = s, r.prototype.set = u, t.exports = r
  }, function(t, e, n) {
    function r() {
      this.__data__ = o ? o(null) : {}, this.size = 0
    }
    var o = n(72);
    t.exports = r
  }, function(t, e) {
    function n(t) {
      var e = this.has(t) && delete this.__data__[t];
      return this.size -= e ? 1 : 0, e
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      var e = this.__data__;
      if (o) {
        var n = e[t];
        return n === i ? void 0 : n
      }
      return s.call(e, t) ? e[t] : void 0
    }
    var o = n(72),
      i = "__lodash_hash_undefined__",
      a = Object.prototype,
      s = a.hasOwnProperty;
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = this.__data__;
      return o ? void 0 !== e[t] : a.call(e, t)
    }
    var o = n(72),
      i = Object.prototype,
      a = i.hasOwnProperty;
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      var n = this.__data__;
      return this.size += this.has(t) ? 0 : 1, n[t] = o && void 0 === e ? i : e, this
    }
    var o = n(72),
      i = "__lodash_hash_undefined__";
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = o(this, t).delete(t);
      return this.size -= e ? 1 : 0, e
    }
    var o = n(73);
    t.exports = r
  }, function(t, e) {
    function n(t) {
      var e = typeof t;
      return "string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      return o(this, t).get(t)
    }
    var o = n(73);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return o(this, t).has(t)
    }
    var o = n(73);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      var n = o(this, t),
        r = n.size;
      return n.set(t, e), this.size += n.size == r ? 0 : 1, this
    }
    var o = n(73);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = -1,
        n = null == t ? 0 : t.length;
      for (this.__data__ = new o; ++e < n;) this.add(t[e])
    }
    var o = n(105),
      i = n(327),
      a = n(328);
    r.prototype.add = r.prototype.push = i, r.prototype.has = a, t.exports = r
  }, function(t, e) {
    function n(t) {
      return this.__data__.set(t, r), this
    }
    var r = "__lodash_hash_undefined__";
    t.exports = n
  }, function(t, e) {
    function n(t) {
      return this.__data__.has(t)
    }
    t.exports = n
  }, function(t, e) {
    function n(t, e) {
      for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
        if (e(t[n], n, t)) return !0;
      return !1
    }
    t.exports = n
  }, function(t, e) {
    function n(t, e) {
      return t.has(e)
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e, n, r, o, S, P) {
      switch (n) {
        case w:
          if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1;
          t = t.buffer, e = e.buffer;
        case x:
          return !(t.byteLength != e.byteLength || !S(new i(t), new i(e)));
        case h:
        case f:
        case y:
          return a(+t, +e);
        case d:
          return t.name == e.name && t.message == e.message;
        case v:
        case _:
          return t == e + "";
        case m:
          var C = u;
        case g:
          var k = r & l;
          if (C || (C = c), t.size != e.size && !k) return !1;
          var O = P.get(t);
          if (O) return O == e;
          r |= p, P.set(t, e);
          var E = s(C(t), C(e), r, o, S, P);
          return P.delete(t), E;
        case b:
          if (T) return T.call(t) == T.call(e)
      }
      return !1
    }
    var o = n(54),
      i = n(332),
      a = n(71),
      s = n(141),
      u = n(333),
      c = n(334),
      l = 1,
      p = 2,
      h = "[object Boolean]",
      f = "[object Date]",
      d = "[object Error]",
      m = "[object Map]",
      y = "[object Number]",
      v = "[object RegExp]",
      g = "[object Set]",
      _ = "[object String]",
      b = "[object Symbol]",
      x = "[object ArrayBuffer]",
      w = "[object DataView]",
      S = o ? o.prototype : void 0,
      T = S ? S.valueOf : void 0;
    t.exports = r
  }, function(t, e, n) {
    var r = n(18),
      o = r.Uint8Array;
    t.exports = o
  }, function(t, e) {
    function n(t) {
      var e = -1,
        n = Array(t.size);
      return t.forEach(function(t, r) {
        n[++e] = [r, t]
      }), n
    }
    t.exports = n
  }, function(t, e) {
    function n(t) {
      var e = -1,
        n = Array(t.size);
      return t.forEach(function(t) {
        n[++e] = t
      }), n
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e, n, r, a, u) {
      var c = n & i,
        l = o(t),
        p = l.length;
      if (p != o(e).length && !c) return !1;
      for (var h = p; h--;) {
        var f = l[h];
        if (!(c ? f in e : s.call(e, f))) return !1
      }
      var d = u.get(t);
      if (d && u.get(e)) return d == e;
      var m = !0;
      u.set(t, e), u.set(e, t);
      for (var y = c; ++h < p;) {
        f = l[h];
        var v = t[f],
          g = e[f];
        if (r) var _ = c ? r(g, v, f, e, t, u) : r(v, g, f, t, e, u);
        if (!(void 0 === _ ? v === g || a(v, g, n, r, u) : _)) {
          m = !1;
          break
        }
        y || (y = "constructor" == f)
      }
      if (m && !y) {
        var b = t.constructor,
          x = e.constructor;
        b != x && "constructor" in t && "constructor" in e && !("function" == typeof b && b instanceof b && "function" == typeof x && x instanceof x) && (m = !1)
      }
      return u.delete(t), u.delete(e), m
    }
    var o = n(336),
      i = 1,
      a = Object.prototype,
      s = a.hasOwnProperty;
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return o(t, a, i)
    }
    var o = n(337),
      i = n(338),
      a = n(52);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      var r = e(t);
      return i(t) ? r : o(r, n(t))
    }
    var o = n(142),
      i = n(14);
    t.exports = r
  }, function(t, e, n) {
    var r = n(339),
      o = n(340),
      i = Object.prototype,
      a = i.propertyIsEnumerable,
      s = Object.getOwnPropertySymbols,
      u = s ? function(t) {
        return null == t ? [] : (t = Object(t), r(s(t), function(e) {
          return a.call(t, e)
        }))
      } : o;
    t.exports = u
  }, function(t, e) {
    function n(t, e) {
      for (var n = -1, r = null == t ? 0 : t.length, o = 0, i = []; ++n < r;) {
        var a = t[n];
        e(a, n, t) && (i[o++] = a)
      }
      return i
    }
    t.exports = n
  }, function(t, e) {
    function n() {
      return []
    }
    t.exports = n
  }, function(t, e, n) {
    var r = n(342),
      o = n(104),
      i = n(343),
      a = n(344),
      s = n(345),
      u = n(53),
      c = n(140),
      l = "[object Map]",
      p = "[object Promise]",
      h = "[object Set]",
      f = "[object WeakMap]",
      d = "[object DataView]",
      m = c(r),
      y = c(o),
      v = c(i),
      g = c(a),
      _ = c(s),
      b = u;
    (r && b(new r(new ArrayBuffer(1))) != d || o && b(new o) != l || i && b(i.resolve()) != p || a && b(new a) != h || s && b(new s) != f) && (b = function(t) {
      var e = u(t),
        n = "[object Object]" == e ? t.constructor : void 0,
        r = n ? c(n) : "";
      if (r) switch (r) {
        case m:
          return d;
        case y:
          return l;
        case v:
          return p;
        case g:
          return h;
        case _:
          return f
      }
      return e
    }), t.exports = b
  }, function(t, e, n) {
    var r = n(31),
      o = n(18),
      i = r(o, "DataView");
    t.exports = i
  }, function(t, e, n) {
    var r = n(31),
      o = n(18),
      i = r(o, "Promise");
    t.exports = i
  }, function(t, e, n) {
    var r = n(31),
      o = n(18),
      i = r(o, "Set");
    t.exports = i
  }, function(t, e, n) {
    var r = n(31),
      o = n(18),
      i = r(o, "WeakMap");
    t.exports = i
  }, function(t, e, n) {
    function r(t, e) {
      return (s(t) ? o : a)(t, i(e, 3))
    }
    var o = n(143),
      i = n(74),
      a = n(362),
      s = n(14);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      var e = i(t);
      return 1 == e.length && e[0][2] ? a(e[0][0], e[0][1]) : function(n) {
        return n === t || o(n, t, e)
      }
    }
    var o = n(348),
      i = n(349),
      a = n(145);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n, r) {
      var u = n.length,
        c = u,
        l = !r;
      if (null == t) return !c;
      for (t = Object(t); u--;) {
        var p = n[u];
        if (l && p[2] ? p[1] !== t[p[0]] : !(p[0] in t)) return !1
      }
      for (; ++u < c;) {
        p = n[u];
        var h = p[0],
          f = t[h],
          d = p[1];
        if (l && p[2]) {
          if (void 0 === f && !(h in t)) return !1
        } else {
          var m = new o;
          if (r) var y = r(f, d, h, t, e, m);
          if (!(void 0 === y ? i(d, f, a | s, r, m) : y)) return !1
        }
      }
      return !0
    }
    var o = n(139),
      i = n(103),
      a = 1,
      s = 2;
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      for (var e = i(t), n = e.length; n--;) {
        var r = e[n],
          a = t[r];
        e[n] = [r, a, o(a)]
      }
      return e
    }
    var o = n(144),
      i = n(52);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      return s(t) && u(e) ? c(l(t), e) : function(n) {
        var r = i(n, t);
        return void 0 === r && r === e ? a(n, t) : o(e, r, p | h)
      }
    }
    var o = n(103),
      i = n(351),
      a = n(146),
      s = n(107),
      u = n(144),
      c = n(145),
      l = n(57),
      p = 1,
      h = 2;
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      var r = null == t ? void 0 : o(t, e);
      return void 0 === r ? n : r
    }
    var o = n(106);
    t.exports = r
  }, function(t, e, n) {
    var r = n(353),
      o = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
      i = /\\(\\)?/g,
      a = r(function(t) {
        var e = [];
        return 46 === t.charCodeAt(0) && e.push(""), t.replace(o, function(t, n, r, o) {
          e.push(r ? o.replace(i, "$1") : n || t)
        }), e
      });
    t.exports = a
  }, function(t, e, n) {
    function r(t) {
      var e = o(t, function(t) {
          return n.size === i && n.clear(), t
        }),
        n = e.cache;
      return e
    }
    var o = n(354),
      i = 500;
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      if ("function" != typeof t || null != e && "function" != typeof e) throw new TypeError(i);
      var n = function() {
        var r = arguments,
          o = e ? e.apply(this, r) : r[0],
          i = n.cache;
        if (i.has(o)) return i.get(o);
        var a = t.apply(this, r);
        return n.cache = i.set(o, a) || i, a
      };
      return n.cache = new(r.Cache || o), n
    }
    var o = n(105),
      i = "Expected a function";
    r.Cache = o, t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return null == t ? "" : o(t)
    }
    var o = n(356);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      if ("string" == typeof t) return t;
      if (a(t)) return i(t, r) + "";
      if (s(t)) return l ? l.call(t) : "";
      var e = t + "";
      return "0" == e && 1 / t == -u ? "-0" : e
    }
    var o = n(54),
      i = n(143),
      a = n(14),
      s = n(76),
      u = 1 / 0,
      c = o ? o.prototype : void 0,
      l = c ? c.toString : void 0;
    t.exports = r
  }, function(t, e) {
    function n(t, e) {
      return null != t && e in Object(t)
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e, n) {
      e = o(e, t);
      for (var r = -1, l = e.length, p = !1; ++r < l;) {
        var h = c(e[r]);
        if (!(p = null != t && n(t, h))) break;
        t = t[h]
      }
      return p || ++r != l ? p : !!(l = null == t ? 0 : t.length) && u(l) && s(h, l) && (a(t) || i(t))
    }
    var o = n(75),
      i = n(101),
      a = n(14),
      s = n(67),
      u = n(102),
      c = n(57);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return a(t) ? o(s(t)) : i(t)
    }
    var o = n(360),
      i = n(361),
      a = n(107),
      s = n(57);
    t.exports = r
  }, function(t, e) {
    function n(t) {
      return function(e) {
        return null == e ? void 0 : e[t]
      }
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      return function(e) {
        return o(e, t)
      }
    }
    var o = n(106);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      var n = -1,
        r = i(t) ? Array(t.length) : [];
      return o(t, function(t, o, i) {
        r[++n] = e(t, o, i)
      }), r
    }
    var o = n(147),
      i = n(56);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e) {
      return t && o(t, e, i)
    }
    var o = n(364),
      i = n(52);
    t.exports = r
  }, function(t, e, n) {
    var r = n(365),
      o = r();
    t.exports = o
  }, function(t, e) {
    function n(t) {
      return function(e, n, r) {
        for (var o = -1, i = Object(e), a = r(e), s = a.length; s--;) {
          var u = a[t ? s : ++o];
          if (!1 === n(i[u], u, i)) break
        }
        return e
      }
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e) {
      return function(n, r) {
        if (null == n) return n;
        if (!o(n)) return t(n, r);
        for (var i = n.length, a = e ? i : -1, s = Object(n);
             (e ? a-- : ++a < i) && !1 !== r(s[a], a, s););
        return n
      }
    }
    var o = n(56);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      var r = s(t) ? o : i;
      return n && u(t, e, n) && (e = void 0), r(t, a(e, 3))
    }
    var o = n(368),
      i = n(369),
      a = n(74),
      s = n(14),
      u = n(148);
    t.exports = r
  }, function(t, e) {
    function n(t, e) {
      for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
        if (!e(t[n], n, t)) return !1;
      return !0
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t, e) {
      var n = !0;
      return o(t, function(t, r, o) {
        return n = !!e(t, r, o)
      }), n
    }
    var o = n(147);
    t.exports = r
  }, function(t, e, n) {
    var r = n(371),
      o = n(372),
      i = r(o);
    t.exports = i
  }, function(t, e, n) {
    function r(t) {
      return function(e, n, r) {
        var s = Object(e);
        if (!i(e)) {
          var u = o(n, 3);
          e = a(e), n = function(t) {
            return u(s[t], t, s)
          }
        }
        var c = t(e, n, r);
        return c > -1 ? s[u ? e[c] : c] : void 0
      }
    }
    var o = n(74),
      i = n(56),
      a = n(52);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      var r = null == t ? 0 : t.length;
      if (!r) return -1;
      var u = null == n ? 0 : a(n);
      return u < 0 && (u = s(r + u, 0)), o(t, i(e, 3), u)
    }
    var o = n(373),
      i = n(74),
      a = n(149),
      s = Math.max;
    t.exports = r
  }, function(t, e) {
    function n(t, e, n, r) {
      for (var o = t.length, i = n + (r ? 1 : -1); r ? i-- : ++i < o;)
        if (e(t[i], i, t)) return i;
      return -1
    }
    t.exports = n
  }, function(t, e, n) {
    function r(t) {
      if ("number" == typeof t) return t;
      if (i(t)) return a;
      if (o(t)) {
        var e = "function" == typeof t.valueOf ? t.valueOf() : t;
        t = o(e) ? e + "" : e
      }
      if ("string" != typeof t) return 0 === t ? t : +t;
      t = t.replace(s, "");
      var n = c.test(t);
      return n || l.test(t) ? p(t.slice(2), n ? 2 : 8) : u.test(t) ? a : +t
    }
    var o = n(45),
      i = n(76),
      a = NaN,
      s = /^\s+|\s+$/g,
      u = /^[-+]0x[0-9a-f]+$/i,
      c = /^0b[01]+$/i,
      l = /^0o[0-7]+$/i,
      p = parseInt;
    t.exports = r
  }, function(t, e, n) {
    var r = n(376),
      o = n(381),
      i = o(function(t, e) {
        return null == t ? {} : r(t, e)
      });
    t.exports = i
  }, function(t, e, n) {
    function r(t, e) {
      return o(t, e, function(e, n) {
        return i(t, n)
      })
    }
    var o = n(377),
      i = n(146);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      for (var r = -1, s = e.length, u = {}; ++r < s;) {
        var c = e[r],
          l = o(t, c);
        n(l, c) && i(u, a(c, t), l)
      }
      return u
    }
    var o = n(106),
      i = n(378),
      a = n(75);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n, r) {
      if (!s(t)) return t;
      e = i(e, t);
      for (var c = -1, l = e.length, p = l - 1, h = t; null != h && ++c < l;) {
        var f = u(e[c]),
          d = n;
        if (c != p) {
          var m = h[f];
          d = r ? r(m, f, h) : void 0, void 0 === d && (d = s(m) ? m : a(e[c + 1]) ? [] : {})
        }
        o(h, f, d), h = h[f]
      }
      return t
    }
    var o = n(379),
      i = n(75),
      a = n(67),
      s = n(45),
      u = n(57);
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      var r = t[e];
      s.call(t, e) && i(r, n) && (void 0 !== n || e in t) || o(t, e, n)
    }
    var o = n(380),
      i = n(71),
      a = Object.prototype,
      s = a.hasOwnProperty;
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      "__proto__" == e && o ? o(t, e, {
        configurable: !0,
        enumerable: !0,
        value: n,
        writable: !0
      }) : t[e] = n
    }
    var o = n(151);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return a(i(t, void 0, o), t + "")
    }
    var o = n(382),
      i = n(384),
      a = n(386);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return (null == t ? 0 : t.length) ? o(t, 1) : []
    }
    var o = n(152);
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return a(t) || i(t) || !!(s && t && t[s])
    }
    var o = n(54),
      i = n(101),
      a = n(14),
      s = o ? o.isConcatSpreadable : void 0;
    t.exports = r
  }, function(t, e, n) {
    function r(t, e, n) {
      return e = i(void 0 === e ? t.length - 1 : e, 0),
        function() {
          for (var r = arguments, a = -1, s = i(r.length - e, 0), u = Array(s); ++a < s;) u[a] = r[e + a];
          a = -1;
          for (var c = Array(e + 1); ++a < e;) c[a] = r[a];
          return c[e] = n(u), o(t, this, c)
        }
    }
    var o = n(385),
      i = Math.max;
    t.exports = r
  }, function(t, e) {
    function n(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)
    }
    t.exports = n
  }, function(t, e, n) {
    var r = n(387),
      o = n(389),
      i = o(r);
    t.exports = i
  }, function(t, e, n) {
    var r = n(388),
      o = n(151),
      i = n(108),
      a = o ? function(t, e) {
        return o(t, "toString", {
          configurable: !0,
          enumerable: !1,
          value: r(e),
          writable: !0
        })
      } : i;
    t.exports = a
  }, function(t, e) {
    function n(t) {
      return function() {
        return t
      }
    }
    t.exports = n
  }, function(t, e) {
    function n(t) {
      var e = 0,
        n = 0;
      return function() {
        var a = i(),
          s = o - (a - n);
        if (n = a, s > 0) {
          if (++e >= r) return arguments[0]
        } else e = 0;
        return t.apply(void 0, arguments)
      }
    }
    var r = 800,
      o = 16,
      i = Date.now;
    t.exports = n
  }, function(t, e, n) {
    (function(e, n, r) {
      ! function(e) {
        var n;
        t.exports = e()
      }(function() {
        var t, o, i;
        return function t(e, n, r) {
          function o(a, s) {
            if (!n[a]) {
              if (!e[a]) {
                var u = "function" == typeof _dereq_ && _dereq_;
                if (!s && u) return u(a, !0);
                if (i) return i(a, !0);
                var c = new Error("Cannot find module '" + a + "'");
                throw c.code = "MODULE_NOT_FOUND", c
              }
              var l = n[a] = {
                exports: {}
              };
              e[a][0].call(l.exports, function(t) {
                var n = e[a][1][t];
                return o(n || t)
              }, l, l.exports, t, e, n, r)
            }
            return n[a].exports
          }
          for (var i = "function" == typeof _dereq_ && _dereq_, a = 0; a < r.length; a++) o(r[a]);
          return o
        }({
          1: [function(t, e, n) {
            "use strict";
            e.exports = function(t) {
              function e(t) {
                var e = new n(t),
                  r = e.promise();
                return e.setHowMany(1), e.setUnwrap(), e.init(), r
              }
              var n = t._SomePromiseArray;
              t.any = function(t) {
                return e(t)
              }, t.prototype.any = function() {
                return e(this)
              }
            }
          }, {}],
          2: [function(t, n, r) {
            "use strict";

            function o() {
              this._customScheduler = !1, this._isTickUsed = !1, this._lateQueue = new l(16), this._normalQueue = new l(16), this._haveDrainedQueues = !1, this._trampolineEnabled = !0;
              var t = this;
              this.drainQueues = function() {
                t._drainQueues()
              }, this._schedule = c
            }

            function i(t, e, n) {
              this._lateQueue.push(t, e, n), this._queueTick()
            }

            function a(t, e, n) {
              this._normalQueue.push(t, e, n), this._queueTick()
            }

            function s(t) {
              this._normalQueue._pushOne(t), this._queueTick()
            }
            var u;
            try {
              throw new Error
            } catch (t) {
              u = t
            }
            var c = t("./schedule"),
              l = t("./queue"),
              p = t("./util");
            o.prototype.setScheduler = function(t) {
              var e = this._schedule;
              return this._schedule = t, this._customScheduler = !0, e
            }, o.prototype.hasCustomScheduler = function() {
              return this._customScheduler
            }, o.prototype.enableTrampoline = function() {
              this._trampolineEnabled = !0
            }, o.prototype.disableTrampolineIfNecessary = function() {
              p.hasDevTools && (this._trampolineEnabled = !1)
            }, o.prototype.haveItemsQueued = function() {
              return this._isTickUsed || this._haveDrainedQueues
            }, o.prototype.fatalError = function(t, n) {
              n ? (e.stderr.write("Fatal " + (t instanceof Error ? t.stack : t) + "\n"), e.exit(2)) : this.throwLater(t)
            }, o.prototype.throwLater = function(t, e) {
              if (1 === arguments.length && (e = t, t = function() {
                throw e
              }), "undefined" != typeof setTimeout) setTimeout(function() {
                t(e)
              }, 0);
              else try {
                this._schedule(function() {
                  t(e)
                })
              } catch (t) {
                throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n")
              }
            }, p.hasDevTools ? (o.prototype.invokeLater = function(t, e, n) {
              this._trampolineEnabled ? i.call(this, t, e, n) : this._schedule(function() {
                setTimeout(function() {
                  t.call(e, n)
                }, 100)
              })
            }, o.prototype.invoke = function(t, e, n) {
              this._trampolineEnabled ? a.call(this, t, e, n) : this._schedule(function() {
                t.call(e, n)
              })
            }, o.prototype.settlePromises = function(t) {
              this._trampolineEnabled ? s.call(this, t) : this._schedule(function() {
                t._settlePromises()
              })
            }) : (o.prototype.invokeLater = i, o.prototype.invoke = a, o.prototype.settlePromises = s), o.prototype._drainQueue = function(t) {
              for (; t.length() > 0;) {
                var e = t.shift();
                if ("function" == typeof e) {
                  var n = t.shift(),
                    r = t.shift();
                  e.call(n, r)
                } else e._settlePromises()
              }
            }, o.prototype._drainQueues = function() {
              this._drainQueue(this._normalQueue), this._reset(), this._haveDrainedQueues = !0, this._drainQueue(this._lateQueue)
            }, o.prototype._queueTick = function() {
              this._isTickUsed || (this._isTickUsed = !0, this._schedule(this.drainQueues))
            }, o.prototype._reset = function() {
              this._isTickUsed = !1
            }, n.exports = o, n.exports.firstLineError = u
          }, {
            "./queue": 26,
            "./schedule": 29,
            "./util": 36
          }],
          3: [function(t, e, n) {
            "use strict";
            e.exports = function(t, e, n, r) {
              var o = !1,
                i = function(t, e) {
                  this._reject(e)
                },
                a = function(t, e) {
                  e.promiseRejectionQueued = !0, e.bindingPromise._then(i, i, null, this, t)
                },
                s = function(t, e) {
                  0 == (50397184 & this._bitField) && this._resolveCallback(e.target)
                },
                u = function(t, e) {
                  e.promiseRejectionQueued || this._reject(t)
                };
              t.prototype.bind = function(i) {
                o || (o = !0, t.prototype._propagateFrom = r.propagateFromFunction(), t.prototype._boundValue = r.boundValueFunction());
                var c = n(i),
                  l = new t(e);
                l._propagateFrom(this, 1);
                var p = this._target();
                if (l._setBoundTo(c), c instanceof t) {
                  var h = {
                    promiseRejectionQueued: !1,
                    promise: l,
                    target: p,
                    bindingPromise: c
                  };
                  p._then(e, a, void 0, l, h), c._then(s, u, void 0, l, h), l._setOnCancel(c)
                } else l._resolveCallback(p);
                return l
              }, t.prototype._setBoundTo = function(t) {
                void 0 !== t ? (this._bitField = 2097152 | this._bitField, this._boundTo = t) : this._bitField = -2097153 & this._bitField
              }, t.prototype._isBound = function() {
                return 2097152 == (2097152 & this._bitField)
              }, t.bind = function(e, n) {
                return t.resolve(n).bind(e)
              }
            }
          }, {}],
          4: [function(t, e, n) {
            "use strict";

            function r() {
              try {
                Promise === i && (Promise = o)
              } catch (t) {}
              return i
            }
            var o;
            "undefined" != typeof Promise && (o = Promise);
            var i = t("./promise")();
            i.noConflict = r, e.exports = i
          }, {
            "./promise": 22
          }],
          5: [function(t, e, n) {
            "use strict";
            var r = Object.create;
            if (r) {
              var o = r(null),
                i = r(null);
              o[" size"] = i[" size"] = 0
            }
            e.exports = function(e) {
              function n(t, n) {
                var r;
                if (null != t && (r = t[n]), "function" != typeof r) {
                  var o = "Object " + a.classString(t) + " has no method '" + a.toString(n) + "'";
                  throw new e.TypeError(o)
                }
                return r
              }

              function r(t) {
                return n(t, this.pop()).apply(t, this)
              }

              function o(t) {
                return t[this]
              }

              function i(t) {
                var e = +this;
                return e < 0 && (e = Math.max(0, e + t.length)), t[e]
              }
              var a = t("./util"),
                s = a.canEvaluate,
                u = a.isIdentifier,
                c, l, p, h, f;
              e.prototype.call = function(t) {
                var e = [].slice.call(arguments, 1),
                  n;
                return e.push(t), this._then(r, void 0, void 0, e, void 0)
              }, e.prototype.get = function(t) {
                var e = "number" == typeof t,
                  n;
                if (e) n = i;
                else if (s) {
                  var r = l(t);
                  n = null !== r ? r : o
                } else n = o;
                return this._then(n, void 0, void 0, t, void 0)
              }
            }
          }, {
            "./util": 36
          }],
          6: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o) {
              var i = t("./util"),
                a = i.tryCatch,
                s = i.errorObj,
                u = e._async;
              e.prototype.break = e.prototype.cancel = function() {
                if (!o.cancellation()) return this._warn("cancellation is disabled");
                for (var t = this, e = t; t._isCancellable();) {
                  if (!t._cancelBy(e)) {
                    e._isFollowing() ? e._followee().cancel() : e._cancelBranched();
                    break
                  }
                  var n = t._cancellationParent;
                  if (null == n || !n._isCancellable()) {
                    t._isFollowing() ? t._followee().cancel() : t._cancelBranched();
                    break
                  }
                  t._isFollowing() && t._followee().cancel(), t._setWillBeCancelled(), e = t, t = n
                }
              }, e.prototype._branchHasCancelled = function() {
                this._branchesRemainingToCancel--
              }, e.prototype._enoughBranchesHaveCancelled = function() {
                return void 0 === this._branchesRemainingToCancel || this._branchesRemainingToCancel <= 0
              }, e.prototype._cancelBy = function(t) {
                return t === this ? (this._branchesRemainingToCancel = 0, this._invokeOnCancel(), !0) : (this._branchHasCancelled(), !!this._enoughBranchesHaveCancelled() && (this._invokeOnCancel(), !0))
              }, e.prototype._cancelBranched = function() {
                this._enoughBranchesHaveCancelled() && this._cancel()
              }, e.prototype._cancel = function() {
                this._isCancellable() && (this._setCancelled(), u.invoke(this._cancelPromises, this, void 0))
              }, e.prototype._cancelPromises = function() {
                this._length() > 0 && this._settlePromises()
              }, e.prototype._unsetOnCancel = function() {
                this._onCancelField = void 0
              }, e.prototype._isCancellable = function() {
                return this.isPending() && !this._isCancelled()
              }, e.prototype.isCancellable = function() {
                return this.isPending() && !this.isCancelled()
              }, e.prototype._doInvokeOnCancel = function(t, e) {
                if (i.isArray(t))
                  for (var n = 0; n < t.length; ++n) this._doInvokeOnCancel(t[n], e);
                else if (void 0 !== t)
                  if ("function" == typeof t) {
                    if (!e) {
                      var r = a(t).call(this._boundValue());
                      r === s && (this._attachExtraTrace(r.e), u.throwLater(r.e))
                    }
                  } else t._resultCancelled(this)
              }, e.prototype._invokeOnCancel = function() {
                var t = this._onCancel();
                this._unsetOnCancel(), u.invoke(this._doInvokeOnCancel, this, t)
              }, e.prototype._invokeInternalOnCancel = function() {
                this._isCancellable() && (this._doInvokeOnCancel(this._onCancel(), !0), this._unsetOnCancel())
              }, e.prototype._resultCancelled = function() {
                this.cancel()
              }
            }
          }, {
            "./util": 36
          }],
          7: [function(t, e, n) {
            "use strict";
            e.exports = function(e) {
              function n(t, n, s) {
                return function(u) {
                  var c = s._boundValue();
                  t: for (var l = 0; l < t.length; ++l) {
                    var p = t[l];
                    if (p === Error || null != p && p.prototype instanceof Error) {
                      if (u instanceof p) return i(n).call(c, u)
                    } else if ("function" == typeof p) {
                      var h = i(p).call(c, u);
                      if (h === a) return h;
                      if (h) return i(n).call(c, u)
                    } else if (r.isObject(u)) {
                      for (var f = o(p), d = 0; d < f.length; ++d) {
                        var m = f[d];
                        if (p[m] != u[m]) continue t
                      }
                      return i(n).call(c, u)
                    }
                  }
                  return e
                }
              }
              var r = t("./util"),
                o = t("./es5").keys,
                i = r.tryCatch,
                a = r.errorObj;
              return n
            }
          }, {
            "./es5": 13,
            "./util": 36
          }],
          8: [function(t, e, n) {
            "use strict";
            e.exports = function(t) {
              function e() {
                this._trace = new e.CapturedTrace(r())
              }

              function n() {
                if (o) return new e
              }

              function r() {
                var t = i.length - 1;
                if (t >= 0) return i[t]
              }
              var o = !1,
                i = [];
              return t.prototype._promiseCreated = function() {}, t.prototype._pushContext = function() {}, t.prototype._popContext = function() {
                return null
              }, t._peekContext = t.prototype._peekContext = function() {}, e.prototype._pushContext = function() {
                void 0 !== this._trace && (this._trace._promiseCreated = null, i.push(this._trace))
              }, e.prototype._popContext = function() {
                if (void 0 !== this._trace) {
                  var t = i.pop(),
                    e = t._promiseCreated;
                  return t._promiseCreated = null, e
                }
                return null
              }, e.CapturedTrace = null, e.create = n, e.deactivateLongStackTraces = function() {}, e.activateLongStackTraces = function() {
                var n = t.prototype._pushContext,
                  i = t.prototype._popContext,
                  a = t._peekContext,
                  s = t.prototype._peekContext,
                  u = t.prototype._promiseCreated;
                e.deactivateLongStackTraces = function() {
                  t.prototype._pushContext = n, t.prototype._popContext = i, t._peekContext = a, t.prototype._peekContext = s, t.prototype._promiseCreated = u, o = !1
                }, o = !0, t.prototype._pushContext = e.prototype._pushContext, t.prototype._popContext = e.prototype._popContext, t._peekContext = t.prototype._peekContext = r, t.prototype._promiseCreated = function() {
                  var t = this._peekContext();
                  t && null == t._promiseCreated && (t._promiseCreated = this)
                }
              }, e
            }
          }, {}],
          9: [function(t, n, r) {
            "use strict";
            n.exports = function(n, r) {
              function o(t, e) {
                return {
                  promise: e
                }
              }

              function i() {
                return !1
              }

              function a(t, e, n) {
                var r = this;
                try {
                  t(e, n, function(t) {
                    if ("function" != typeof t) throw new TypeError("onCancel must be a function, got: " + I.toString(t));
                    r._attachCancellationCallback(t)
                  })
                } catch (t) {
                  return t
                }
              }

              function s(t) {
                if (!this._isCancellable()) return this;
                var e = this._onCancel();
                void 0 !== e ? I.isArray(e) ? e.push(t) : this._setOnCancel([e, t]) : this._setOnCancel(t)
              }

              function u() {
                return this._onCancelField
              }

              function c(t) {
                this._onCancelField = t
              }

              function l() {
                this._cancellationParent = void 0, this._onCancelField = void 0
              }

              function p(t, e) {
                if (0 != (1 & e)) {
                  this._cancellationParent = t;
                  var n = t._branchesRemainingToCancel;
                  void 0 === n && (n = 0), t._branchesRemainingToCancel = n + 1
                }
                0 != (2 & e) && t._isBound() && this._setBoundTo(t._boundTo)
              }

              function h(t, e) {
                0 != (2 & e) && t._isBound() && this._setBoundTo(t._boundTo)
              }

              function f() {
                var t = this._boundTo;
                return void 0 !== t && t instanceof n ? t.isFulfilled() ? t.value() : void 0 : t
              }

              function d() {
                this._trace = new F(this._peekContext())
              }

              function m(t, e) {
                if (L(t)) {
                  var n = this._trace;
                  if (void 0 !== n && e && (n = n._parent), void 0 !== n) n.attachExtraTrace(t);
                  else if (!t.__stackCleaned__) {
                    var r = T(t);
                    I.notEnumerableProp(t, "stack", r.message + "\n" + r.stack.join("\n")), I.notEnumerableProp(t, "__stackCleaned__", !0)
                  }
                }
              }

              function y(t, e, n, r, o) {
                if (void 0 === t && null !== e && K) {
                  if (void 0 !== o && o._returnedNonUndefined()) return;
                  if (0 == (65535 & r._bitField)) return;
                  n && (n += " ");
                  var i = "",
                    a = "";
                  if (e._trace) {
                    for (var s = e._trace.stack.split("\n"), u = w(s), c = u.length - 1; c >= 0; --c) {
                      var l = u[c];
                      if (!N.test(l)) {
                        var p = l.match(B);
                        p && (i = "at " + p[1] + ":" + p[2] + ":" + p[3] + " ");
                        break
                      }
                    }
                    if (u.length > 0)
                      for (var h = u[0], c = 0; c < s.length; ++c)
                        if (s[c] === h) {
                          c > 0 && (a = "\n" + s[c - 1]);
                          break
                        }
                  }
                  var f = "a promise was created in a " + n + "handler " + i + "but was not returned from it, see http://goo.gl/rRqMUw" + a;
                  r._warn(f, !0, e)
                }
              }

              function v(t, e) {
                var n = t + " is deprecated and will be removed in a future version.";
                return e && (n += " Use " + e + " instead."), g(n)
              }

              function g(t, e, r) {
                if (at.warnings) {
                  var o = new D(t),
                    i;
                  if (e) r._attachExtraTrace(o);
                  else if (at.longStackTraces && (i = n._peekContext())) i.attachExtraTrace(o);
                  else {
                    var a = T(o);
                    o.stack = a.message + "\n" + a.stack.join("\n")
                  }
                  et("warning", o) || P(o, "", !0)
                }
              }

              function _(t, e) {
                for (var n = 0; n < e.length - 1; ++n) e[n].push("From previous event:"), e[n] = e[n].join("\n");
                return n < e.length && (e[n] = e[n].join("\n")), t + "\n" + e.join("\n")
              }

              function b(t) {
                for (var e = 0; e < t.length; ++e)(0 === t[e].length || e + 1 < t.length && t[e][0] === t[e + 1][0]) && (t.splice(e, 1), e--)
              }

              function x(t) {
                for (var e = t[0], n = 1; n < t.length; ++n) {
                  for (var r = t[n], o = e.length - 1, i = e[o], a = -1, s = r.length - 1; s >= 0; --s)
                    if (r[s] === i) {
                      a = s;
                      break
                    }
                  for (var s = a; s >= 0; --s) {
                    var u = r[s];
                    if (e[o] !== u) break;
                    e.pop(), o--
                  }
                  e = r
                }
              }

              function w(t) {
                for (var e = [], n = 0; n < t.length; ++n) {
                  var r = t[n],
                    o = "    (No stack trace)" === r || q.test(r),
                    i = o && rt(r);
                  o && !i && (H && " " !== r.charAt(0) && (r = "    " + r), e.push(r))
                }
                return e
              }

              function S(t) {
                for (var e = t.stack.replace(/\s+$/g, "").split("\n"), n = 0; n < e.length; ++n) {
                  var r = e[n];
                  if ("    (No stack trace)" === r || q.test(r)) break
                }
                return n > 0 && "SyntaxError" != t.name && (e = e.slice(n)), e
              }

              function T(t) {
                var e = t.stack,
                  n = t.toString();
                return e = "string" == typeof e && e.length > 0 ? S(t) : ["    (No stack trace)"], {
                  message: n,
                  stack: "SyntaxError" == t.name ? e : w(e)
                }
              }

              function P(t, e, n) {
                if ("undefined" != typeof console) {
                  var r;
                  if (I.isObject(t)) {
                    var o = t.stack;
                    r = e + V(o, t)
                  } else r = e + String(t);
                  "function" == typeof W ? W(r, n) : "function" != typeof console.log && "object" != typeof console.log || console.log(r)
                }
              }

              function C(t, e, n, r) {
                var o = !1;
                try {
                  "function" == typeof e && (o = !0, "rejectionHandled" === t ? e(r) : e(n, r))
                } catch (t) {
                  R.throwLater(t)
                }
                "unhandledRejection" === t ? et(t, n, r) || o || P(n, "Unhandled rejection ") : et(t, r)
              }

              function k(t) {
                var e;
                if ("function" == typeof t) e = "[function " + (t.name || "anonymous") + "]";
                else {
                  e = t && "function" == typeof t.toString ? t.toString() : I.toString(t);
                  if (/\[object [a-zA-Z0-9$_]+\]/.test(e)) try {
                    e = JSON.stringify(t)
                  } catch (t) {}
                  0 === e.length && (e = "(empty array)")
                }
                return "(<" + O(e) + ">, no stack trace)"
              }

              function O(t) {
                var e = 41;
                return t.length < 41 ? t : t.substr(0, 38) + "..."
              }

              function E() {
                return "function" == typeof it
              }

              function j(t) {
                var e = t.match(ot);
                if (e) return {
                  fileName: e[1],
                  line: parseInt(e[2], 10)
                }
              }

              function A(t, e) {
                if (E()) {
                  for (var n = t.stack.split("\n"), r = e.stack.split("\n"), o = -1, i = -1, a, s, u = 0; u < n.length; ++u) {
                    var c = j(n[u]);
                    if (c) {
                      a = c.fileName, o = c.line;
                      break
                    }
                  }
                  for (var u = 0; u < r.length; ++u) {
                    var c = j(r[u]);
                    if (c) {
                      s = c.fileName, i = c.line;
                      break
                    }
                  }
                  o < 0 || i < 0 || !a || !s || a !== s || o >= i || (rt = function(t) {
                    if (G.test(t)) return !0;
                    var e = j(t);
                    return !!(e && e.fileName === a && o <= e.line && e.line <= i)
                  })
                }
              }

              function F(t) {
                this._parent = t, this._promisesCreated = 0;
                var e = this._length = 1 + (void 0 === t ? 0 : t._length);
                it(this, F), e > 32 && this.uncycle()
              }
              var M = n._getDomain,
                R = n._async,
                D = t("./errors").Warning,
                I = t("./util"),
                L = I.canAttachTrace,
                z, U, G = /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,
                N = /\((?:timers\.js):\d+:\d+\)/,
                B = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,
                q = null,
                V = null,
                H = !1,
                W, X = !(0 == I.env("BLUEBIRD_DEBUG")),
                Y = !(0 == I.env("BLUEBIRD_WARNINGS") || !X && !I.env("BLUEBIRD_WARNINGS")),
                $ = !(0 == I.env("BLUEBIRD_LONG_STACK_TRACES") || !X && !I.env("BLUEBIRD_LONG_STACK_TRACES")),
                K = 0 != I.env("BLUEBIRD_W_FORGOTTEN_RETURN") && (Y || !!I.env("BLUEBIRD_W_FORGOTTEN_RETURN"));
              n.prototype.suppressUnhandledRejections = function() {
                var t = this._target();
                t._bitField = -1048577 & t._bitField | 524288
              }, n.prototype._ensurePossibleRejectionHandled = function() {
                if (0 == (524288 & this._bitField)) {
                  this._setRejectionIsUnhandled();
                  var t = this;
                  setTimeout(function() {
                    t._notifyUnhandledRejection()
                  }, 1)
                }
              }, n.prototype._notifyUnhandledRejectionIsHandled = function() {
                C("rejectionHandled", z, void 0, this)
              }, n.prototype._setReturnedNonUndefined = function() {
                this._bitField = 268435456 | this._bitField
              }, n.prototype._returnedNonUndefined = function() {
                return 0 != (268435456 & this._bitField)
              }, n.prototype._notifyUnhandledRejection = function() {
                if (this._isRejectionUnhandled()) {
                  var t = this._settledValue();
                  this._setUnhandledRejectionIsNotified(), C("unhandledRejection", U, t, this)
                }
              }, n.prototype._setUnhandledRejectionIsNotified = function() {
                this._bitField = 262144 | this._bitField
              }, n.prototype._unsetUnhandledRejectionIsNotified = function() {
                this._bitField = -262145 & this._bitField
              }, n.prototype._isUnhandledRejectionNotified = function() {
                return (262144 & this._bitField) > 0
              }, n.prototype._setRejectionIsUnhandled = function() {
                this._bitField = 1048576 | this._bitField
              }, n.prototype._unsetRejectionIsUnhandled = function() {
                this._bitField = -1048577 & this._bitField, this._isUnhandledRejectionNotified() && (this._unsetUnhandledRejectionIsNotified(), this._notifyUnhandledRejectionIsHandled())
              }, n.prototype._isRejectionUnhandled = function() {
                return (1048576 & this._bitField) > 0
              }, n.prototype._warn = function(t, e, n) {
                return g(t, e, n || this)
              }, n.onPossiblyUnhandledRejection = function(t) {
                var e = M();
                U = "function" == typeof t ? null === e ? t : I.domainBind(e, t) : void 0
              }, n.onUnhandledRejectionHandled = function(t) {
                var e = M();
                z = "function" == typeof t ? null === e ? t : I.domainBind(e, t) : void 0
              };
              var J = function() {};
              n.longStackTraces = function() {
                if (R.haveItemsQueued() && !at.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");
                if (!at.longStackTraces && E()) {
                  var t = n.prototype._captureStackTrace,
                    e = n.prototype._attachExtraTrace;
                  at.longStackTraces = !0, J = function() {
                    if (R.haveItemsQueued() && !at.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");
                    n.prototype._captureStackTrace = t, n.prototype._attachExtraTrace = e, r.deactivateLongStackTraces(), R.enableTrampoline(), at.longStackTraces = !1
                  }, n.prototype._captureStackTrace = d, n.prototype._attachExtraTrace = m, r.activateLongStackTraces(), R.disableTrampolineIfNecessary()
                }
              }, n.hasLongStackTraces = function() {
                return at.longStackTraces && E()
              };
              var Q = function() {
                  try {
                    if ("function" == typeof CustomEvent) {
                      var t = new CustomEvent("CustomEvent");
                      return I.global.dispatchEvent(t),
                        function(t, e) {
                          var n = new CustomEvent(t.toLowerCase(), {
                            detail: e,
                            cancelable: !0
                          });
                          return !I.global.dispatchEvent(n)
                        }
                    }
                    if ("function" == typeof Event) {
                      var t = new Event("CustomEvent");
                      return I.global.dispatchEvent(t),
                        function(t, e) {
                          var n = new Event(t.toLowerCase(), {
                            cancelable: !0
                          });
                          return n.detail = e, !I.global.dispatchEvent(n)
                        }
                    }
                    var t = document.createEvent("CustomEvent");
                    return t.initCustomEvent("testingtheevent", !1, !0, {}), I.global.dispatchEvent(t),
                      function(t, e) {
                        var n = document.createEvent("CustomEvent");
                        return n.initCustomEvent(t.toLowerCase(), !1, !0, e), !I.global.dispatchEvent(n)
                      }
                  } catch (t) {}
                  return function() {
                    return !1
                  }
                }(),
                Z = function() {
                  return I.isNode ? function() {
                    return e.emit.apply(e, arguments)
                  } : I.global ? function(t) {
                    var e = "on" + t.toLowerCase(),
                      n = I.global[e];
                    return !!n && (n.apply(I.global, [].slice.call(arguments, 1)), !0)
                  } : function() {
                    return !1
                  }
                }(),
                tt = {
                  promiseCreated: o,
                  promiseFulfilled: o,
                  promiseRejected: o,
                  promiseResolved: o,
                  promiseCancelled: o,
                  promiseChained: function(t, e, n) {
                    return {
                      promise: e,
                      child: n
                    }
                  },
                  warning: function(t, e) {
                    return {
                      warning: e
                    }
                  },
                  unhandledRejection: function(t, e, n) {
                    return {
                      reason: e,
                      promise: n
                    }
                  },
                  rejectionHandled: o
                },
                et = function(t) {
                  var e = !1;
                  try {
                    e = Z.apply(null, arguments)
                  } catch (t) {
                    R.throwLater(t), e = !0
                  }
                  var n = !1;
                  try {
                    n = Q(t, tt[t].apply(null, arguments))
                  } catch (t) {
                    R.throwLater(t), n = !0
                  }
                  return n || e
                };
              n.config = function(t) {
                if (t = Object(t), "longStackTraces" in t && (t.longStackTraces ? n.longStackTraces() : !t.longStackTraces && n.hasLongStackTraces() && J()), "warnings" in t) {
                  var e = t.warnings;
                  at.warnings = !!e, K = at.warnings, I.isObject(e) && "wForgottenReturn" in e && (K = !!e.wForgottenReturn)
                }
                if ("cancellation" in t && t.cancellation && !at.cancellation) {
                  if (R.haveItemsQueued()) throw new Error("cannot enable cancellation after promises are in use");
                  n.prototype._clearCancellationData = l, n.prototype._propagateFrom = p, n.prototype._onCancel = u, n.prototype._setOnCancel = c, n.prototype._attachCancellationCallback = s, n.prototype._execute = a, nt = p, at.cancellation = !0
                }
                return "monitoring" in t && (t.monitoring && !at.monitoring ? (at.monitoring = !0, n.prototype._fireEvent = et) : !t.monitoring && at.monitoring && (at.monitoring = !1, n.prototype._fireEvent = i)), n
              }, n.prototype._fireEvent = i, n.prototype._execute = function(t, e, n) {
                try {
                  t(e, n)
                } catch (t) {
                  return t
                }
              }, n.prototype._onCancel = function() {}, n.prototype._setOnCancel = function(t) {}, n.prototype._attachCancellationCallback = function(t) {}, n.prototype._captureStackTrace = function() {}, n.prototype._attachExtraTrace = function() {}, n.prototype._clearCancellationData = function() {}, n.prototype._propagateFrom = function(t, e) {};
              var nt = h,
                rt = function() {
                  return !1
                },
                ot = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;
              I.inherits(F, Error), r.CapturedTrace = F, F.prototype.uncycle = function() {
                var t = this._length;
                if (!(t < 2)) {
                  for (var e = [], n = {}, r = 0, o = this; void 0 !== o; ++r) e.push(o), o = o._parent;
                  t = this._length = r;
                  for (var r = t - 1; r >= 0; --r) {
                    var i = e[r].stack;
                    void 0 === n[i] && (n[i] = r)
                  }
                  for (var r = 0; r < t; ++r) {
                    var a = e[r].stack,
                      s = n[a];
                    if (void 0 !== s && s !== r) {
                      s > 0 && (e[s - 1]._parent = void 0, e[s - 1]._length = 1), e[r]._parent = void 0, e[r]._length = 1;
                      var u = r > 0 ? e[r - 1] : this;
                      s < t - 1 ? (u._parent = e[s + 1], u._parent.uncycle(), u._length = u._parent._length + 1) : (u._parent = void 0, u._length = 1);
                      for (var c = u._length + 1, l = r - 2; l >= 0; --l) e[l]._length = c, c++;
                      return
                    }
                  }
                }
              }, F.prototype.attachExtraTrace = function(t) {
                if (!t.__stackCleaned__) {
                  this.uncycle();
                  for (var e = T(t), n = e.message, r = [e.stack], o = this; void 0 !== o;) r.push(w(o.stack.split("\n"))), o = o._parent;
                  x(r), b(r), I.notEnumerableProp(t, "stack", _(n, r)), I.notEnumerableProp(t, "__stackCleaned__", !0)
                }
              };
              var it = function t() {
                var e = /^\s*at\s*/,
                  n = function(t, e) {
                    return "string" == typeof t ? t : void 0 !== e.name && void 0 !== e.message ? e.toString() : k(e)
                  };
                if ("number" == typeof Error.stackTraceLimit && "function" == typeof Error.captureStackTrace) {
                  Error.stackTraceLimit += 6, q = e, V = n;
                  var r = Error.captureStackTrace;
                  return rt = function(t) {
                    return G.test(t)
                  },
                    function(t, e) {
                      Error.stackTraceLimit += 6, r(t, e), Error.stackTraceLimit -= 6
                    }
                }
                var o = new Error;
                if ("string" == typeof o.stack && o.stack.split("\n")[0].indexOf("stackDetection@") >= 0) return q = /@/, V = n, H = !0,
                  function t(e) {
                    e.stack = (new Error).stack
                  };
                var i;
                try {
                  throw new Error
                } catch (t) {
                  i = "stack" in t
                }
                return "stack" in o || !i || "number" != typeof Error.stackTraceLimit ? (V = function(t, e) {
                  return "string" == typeof t ? t : "object" != typeof e && "function" != typeof e || void 0 === e.name || void 0 === e.message ? k(e) : e.toString()
                }, null) : (q = e, V = n, function t(e) {
                  Error.stackTraceLimit += 6;
                  try {
                    throw new Error
                  } catch (t) {
                    e.stack = t.stack
                  }
                  Error.stackTraceLimit -= 6
                })
              }([]);
              "undefined" != typeof console && void 0 !== console.warn && (W = function(t) {
                console.warn(t)
              }, I.isNode && e.stderr.isTTY ? W = function(t, e) {
                var n = e ? "[33m" : "[31m";
                console.warn(n + t + "[0m\n")
              } : I.isNode || "string" != typeof(new Error).stack || (W = function(t, e) {
                console.warn("%c" + t, e ? "color: darkorange" : "color: red")
              }));
              var at = {
                warnings: Y,
                longStackTraces: !1,
                cancellation: !1,
                monitoring: !1
              };
              return $ && n.longStackTraces(), {
                longStackTraces: function() {
                  return at.longStackTraces
                },
                warnings: function() {
                  return at.warnings
                },
                cancellation: function() {
                  return at.cancellation
                },
                monitoring: function() {
                  return at.monitoring
                },
                propagateFromFunction: function() {
                  return nt
                },
                boundValueFunction: function() {
                  return f
                },
                checkForgottenReturns: y,
                setBounds: A,
                warn: g,
                deprecated: v,
                CapturedTrace: F,
                fireDomEvent: Q,
                fireGlobalEvent: Z
              }
            }
          }, {
            "./errors": 12,
            "./util": 36
          }],
          10: [function(t, e, n) {
            "use strict";
            e.exports = function(t) {
              function e() {
                return this.value
              }

              function n() {
                throw this.reason
              }
              t.prototype.return = t.prototype.thenReturn = function(n) {
                return n instanceof t && n.suppressUnhandledRejections(), this._then(e, void 0, void 0, {
                  value: n
                }, void 0)
              }, t.prototype.throw = t.prototype.thenThrow = function(t) {
                return this._then(n, void 0, void 0, {
                  reason: t
                }, void 0)
              }, t.prototype.catchThrow = function(t) {
                if (arguments.length <= 1) return this._then(void 0, n, void 0, {
                  reason: t
                }, void 0);
                var e = arguments[1],
                  r = function() {
                    throw e
                  };
                return this.caught(t, r)
              }, t.prototype.catchReturn = function(n) {
                if (arguments.length <= 1) return n instanceof t && n.suppressUnhandledRejections(), this._then(void 0, e, void 0, {
                  value: n
                }, void 0);
                var r = arguments[1];
                r instanceof t && r.suppressUnhandledRejections();
                var o = function() {
                  return r
                };
                return this.caught(n, o)
              }
            }
          }, {}],
          11: [function(t, e, n) {
            "use strict";
            e.exports = function(t, e) {
              function n() {
                return i(this)
              }

              function r(t, n) {
                return o(t, n, e, e)
              }
              var o = t.reduce,
                i = t.all;
              t.prototype.each = function(t) {
                return o(this, t, e, 0)._then(n, void 0, void 0, this, void 0)
              }, t.prototype.mapSeries = function(t) {
                return o(this, t, e, e)
              }, t.each = function(t, r) {
                return o(t, r, e, 0)._then(n, void 0, void 0, t, void 0)
              }, t.mapSeries = r
            }
          }, {}],
          12: [function(t, e, n) {
            "use strict";

            function r(t, e) {
              function n(r) {
                if (!(this instanceof n)) return new n(r);
                c(this, "message", "string" == typeof r ? r : e), c(this, "name", t), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : Error.call(this)
              }
              return u(n, Error), n
            }

            function o(t) {
              if (!(this instanceof o)) return new o(t);
              c(this, "name", "OperationalError"), c(this, "message", t), this.cause = t, this.isOperational = !0, t instanceof Error ? (c(this, "message", t.message), c(this, "stack", t.stack)) : Error.captureStackTrace && Error.captureStackTrace(this, this.constructor)
            }
            var i = t("./es5"),
              a = i.freeze,
              s = t("./util"),
              u = s.inherits,
              c = s.notEnumerableProp,
              l, p, h = r("Warning", "warning"),
              f = r("CancellationError", "cancellation error"),
              d = r("TimeoutError", "timeout error"),
              m = r("AggregateError", "aggregate error");
            try {
              l = TypeError, p = RangeError
            } catch (t) {
              l = r("TypeError", "type error"), p = r("RangeError", "range error")
            }
            for (var y = "join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "), v = 0; v < y.length; ++v) "function" == typeof Array.prototype[y[v]] && (m.prototype[y[v]] = Array.prototype[y[v]]);
            i.defineProperty(m.prototype, "length", {
              value: 0,
              configurable: !1,
              writable: !0,
              enumerable: !0
            }), m.prototype.isOperational = !0;
            var g = 0;
            m.prototype.toString = function() {
              var t = Array(4 * g + 1).join(" "),
                e = "\n" + t + "AggregateError of:\n";
              g++, t = Array(4 * g + 1).join(" ");
              for (var n = 0; n < this.length; ++n) {
                for (var r = this[n] === this ? "[Circular AggregateError]" : this[n] + "", o = r.split("\n"), i = 0; i < o.length; ++i) o[i] = t + o[i];
                r = o.join("\n"), e += r + "\n"
              }
              return g--, e
            }, u(o, Error);
            var _ = Error.__BluebirdErrorTypes__;
            _ || (_ = a({
              CancellationError: f,
              TimeoutError: d,
              OperationalError: o,
              RejectionError: o,
              AggregateError: m
            }), i.defineProperty(Error, "__BluebirdErrorTypes__", {
              value: _,
              writable: !1,
              enumerable: !1,
              configurable: !1
            })), e.exports = {
              Error: Error,
              TypeError: l,
              RangeError: p,
              CancellationError: _.CancellationError,
              OperationalError: _.OperationalError,
              TimeoutError: _.TimeoutError,
              AggregateError: _.AggregateError,
              Warning: h
            }
          }, {
            "./es5": 13,
            "./util": 36
          }],
          13: [function(t, e, n) {
            var r = function() {
              "use strict";
              return void 0 === this
            }();
            if (r) e.exports = {
              freeze: Object.freeze,
              defineProperty: Object.defineProperty,
              getDescriptor: Object.getOwnPropertyDescriptor,
              keys: Object.keys,
              names: Object.getOwnPropertyNames,
              getPrototypeOf: Object.getPrototypeOf,
              isArray: Array.isArray,
              isES5: r,
              propertyIsWritable: function(t, e) {
                var n = Object.getOwnPropertyDescriptor(t, e);
                return !(n && !n.writable && !n.set)
              }
            };
            else {
              var o = {}.hasOwnProperty,
                i = {}.toString,
                a = {}.constructor.prototype,
                s = function(t) {
                  var e = [];
                  for (var n in t) o.call(t, n) && e.push(n);
                  return e
                },
                u = function(t, e) {
                  return {
                    value: t[e]
                  }
                },
                c = function(t, e, n) {
                  return t[e] = n.value, t
                },
                l = function(t) {
                  return t
                },
                p = function(t) {
                  try {
                    return Object(t).constructor.prototype
                  } catch (t) {
                    return a
                  }
                },
                h = function(t) {
                  try {
                    return "[object Array]" === i.call(t)
                  } catch (t) {
                    return !1
                  }
                };
              e.exports = {
                isArray: h,
                keys: s,
                names: s,
                defineProperty: c,
                getDescriptor: u,
                freeze: l,
                getPrototypeOf: p,
                isES5: r,
                propertyIsWritable: function() {
                  return !0
                }
              }
            }
          }, {}],
          14: [function(t, e, n) {
            "use strict";
            e.exports = function(t, e) {
              var n = t.map;
              t.prototype.filter = function(t, r) {
                return n(this, t, r, e)
              }, t.filter = function(t, r, o) {
                return n(t, r, o, e)
              }
            }
          }, {}],
          15: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r) {
              function o(t, e, n) {
                this.promise = t, this.type = e, this.handler = n, this.called = !1, this.cancelPromise = null
              }

              function i(t) {
                this.finallyHandler = t
              }

              function a(t, e) {
                return null != t.cancelPromise && (arguments.length > 1 ? t.cancelPromise._reject(e) : t.cancelPromise._cancel(), t.cancelPromise = null, !0)
              }

              function s() {
                return c.call(this, this.promise._target()._settledValue())
              }

              function u(t) {
                if (!a(this, t)) return h.e = t, h
              }

              function c(t) {
                var o = this.promise,
                  c = this.handler;
                if (!this.called) {
                  this.called = !0;
                  var l = this.isFinallyHandler() ? c.call(o._boundValue()) : c.call(o._boundValue(), t);
                  if (l === r) return l;
                  if (void 0 !== l) {
                    o._setReturnedNonUndefined();
                    var f = n(l, o);
                    if (f instanceof e) {
                      if (null != this.cancelPromise) {
                        if (f._isCancelled()) {
                          var d = new p("late cancellation observer");
                          return o._attachExtraTrace(d), h.e = d, h
                        }
                        f.isPending() && f._attachCancellationCallback(new i(this))
                      }
                      return f._then(s, u, void 0, this, void 0)
                    }
                  }
                }
                return o.isRejected() ? (a(this), h.e = t, h) : (a(this), t)
              }
              var l = t("./util"),
                p = e.CancellationError,
                h = l.errorObj,
                f = t("./catch_filter")(r);
              return o.prototype.isFinallyHandler = function() {
                return 0 === this.type
              }, i.prototype._resultCancelled = function() {
                a(this.finallyHandler)
              }, e.prototype._passThrough = function(t, e, n, r) {
                return "function" != typeof t ? this.then() : this._then(n, r, void 0, new o(this, e, t), void 0)
              }, e.prototype.lastly = e.prototype.finally = function(t) {
                return this._passThrough(t, 0, c, c)
              }, e.prototype.tap = function(t) {
                return this._passThrough(t, 1, c)
              }, e.prototype.tapCatch = function(t) {
                var n = arguments.length;
                if (1 === n) return this._passThrough(t, 1, void 0, c);
                var r = new Array(n - 1),
                  o = 0,
                  i;
                for (i = 0; i < n - 1; ++i) {
                  var a = arguments[i];
                  if (!l.isObject(a)) return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got " + l.classString(a)));
                  r[o++] = a
                }
                r.length = o;
                var s = arguments[i];
                return this._passThrough(f(r, s, this), 1, void 0, c)
              }, o
            }
          }, {
            "./catch_filter": 7,
            "./util": 36
          }],
          16: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i, a) {
              function s(t, n, r) {
                for (var i = 0; i < n.length; ++i) {
                  r._pushContext();
                  var a = f(n[i])(t);
                  if (r._popContext(), a === h) {
                    r._pushContext();
                    var s = e.reject(h.e);
                    return r._popContext(), s
                  }
                  var u = o(a, r);
                  if (u instanceof e) return u
                }
                return null
              }

              function u(t, n, o, i) {
                if (a.cancellation()) {
                  var s = new e(r),
                    u = this._finallyPromise = new e(r);
                  this._promise = s.lastly(function() {
                    return u
                  }), s._captureStackTrace(), s._setOnCancel(this)
                } else {
                  (this._promise = new e(r))._captureStackTrace()
                }
                this._stack = i, this._generatorFunction = t, this._receiver = n, this._generator = void 0, this._yieldHandlers = "function" == typeof o ? [o].concat(d) : d, this._yieldedPromise = null, this._cancellationPhase = !1
              }
              var c = t("./errors"),
                l = c.TypeError,
                p = t("./util"),
                h = p.errorObj,
                f = p.tryCatch,
                d = [];
              p.inherits(u, i), u.prototype._isResolved = function() {
                return null === this._promise
              }, u.prototype._cleanup = function() {
                this._promise = this._generator = null, a.cancellation() && null !== this._finallyPromise && (this._finallyPromise._fulfill(), this._finallyPromise = null)
              }, u.prototype._promiseCancelled = function() {
                if (!this._isResolved()) {
                  var t = void 0 !== this._generator.return,
                    n;
                  if (t) this._promise._pushContext(), n = f(this._generator.return).call(this._generator, void 0), this._promise._popContext();
                  else {
                    var r = new e.CancellationError("generator .return() sentinel");
                    e.coroutine.returnSentinel = r, this._promise._attachExtraTrace(r), this._promise._pushContext(), n = f(this._generator.throw).call(this._generator, r), this._promise._popContext()
                  }
                  this._cancellationPhase = !0, this._yieldedPromise = null, this._continue(n)
                }
              }, u.prototype._promiseFulfilled = function(t) {
                this._yieldedPromise = null, this._promise._pushContext();
                var e = f(this._generator.next).call(this._generator, t);
                this._promise._popContext(), this._continue(e)
              }, u.prototype._promiseRejected = function(t) {
                this._yieldedPromise = null, this._promise._attachExtraTrace(t), this._promise._pushContext();
                var e = f(this._generator.throw).call(this._generator, t);
                this._promise._popContext(), this._continue(e)
              }, u.prototype._resultCancelled = function() {
                if (this._yieldedPromise instanceof e) {
                  var t = this._yieldedPromise;
                  this._yieldedPromise = null, t.cancel()
                }
              }, u.prototype.promise = function() {
                return this._promise
              }, u.prototype._run = function() {
                this._generator = this._generatorFunction.call(this._receiver), this._receiver = this._generatorFunction = void 0, this._promiseFulfilled(void 0)
              }, u.prototype._continue = function(t) {
                var n = this._promise;
                if (t === h) return this._cleanup(), this._cancellationPhase ? n.cancel() : n._rejectCallback(t.e, !1);
                var r = t.value;
                if (!0 === t.done) return this._cleanup(), this._cancellationPhase ? n.cancel() : n._resolveCallback(r);
                var i = o(r, this._promise);
                if (!(i instanceof e) && null === (i = s(i, this._yieldHandlers, this._promise))) return void this._promiseRejected(new l("A value %s was yielded that could not be treated as a promise\n\n    See http://goo.gl/MqrFmX\n\n".replace("%s", String(r)) + "From coroutine:\n" + this._stack.split("\n").slice(1, -7).join("\n")));
                i = i._target();
                var a = i._bitField;
                0 == (50397184 & a) ? (this._yieldedPromise = i, i._proxy(this, null)) : 0 != (33554432 & a) ? e._async.invoke(this._promiseFulfilled, this, i._value()) : 0 != (16777216 & a) ? e._async.invoke(this._promiseRejected, this, i._reason()) : this._promiseCancelled()
              }, e.coroutine = function(t, e) {
                if ("function" != typeof t) throw new l("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");
                var n = Object(e).yieldHandler,
                  r = u,
                  o = (new Error).stack;
                return function() {
                  var e = t.apply(this, arguments),
                    i = new r(void 0, void 0, n, o),
                    a = i.promise();
                  return i._generator = e, i._promiseFulfilled(void 0), a
                }
              }, e.coroutine.addYieldHandler = function(t) {
                if ("function" != typeof t) throw new l("expecting a function but got " + p.classString(t));
                d.push(t)
              }, e.spawn = function(t) {
                if (a.deprecated("Promise.spawn()", "Promise.coroutine()"), "function" != typeof t) return n("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");
                var r = new u(t, this),
                  o = r.promise();
                return r._run(e.spawn), o
              }
            }
          }, {
            "./errors": 12,
            "./util": 36
          }],
          17: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i, a) {
              var s = t("./util"),
                u = s.canEvaluate,
                c = s.tryCatch,
                l = s.errorObj,
                p, h, f, d, m, y, v, g;
              e.join = function() {
                var t = arguments.length - 1,
                  e;
                if (t > 0 && "function" == typeof arguments[t]) {
                  e = arguments[t];
                  var r, o, i, a, s, u, c, l
                }
                var p = [].slice.call(arguments);
                e && p.pop();
                var r = new n(p).promise();
                return void 0 !== e ? r.spread(e) : r
              }
            }
          }, {
            "./util": 36
          }],
          18: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i, a) {
              function s(t, e, n, r) {
                this.constructor$(t), this._promise._captureStackTrace();
                var o = c();
                this._callback = null === o ? e : l.domainBind(o, e), this._preservedValues = r === i ? new Array(this.length()) : null, this._limit = n, this._inFlight = 0, this._queue = [], f.invoke(this._asyncInit, this, void 0)
              }

              function u(t, n, o, i) {
                if ("function" != typeof n) return r("expecting a function but got " + l.classString(n));
                var a = 0;
                if (void 0 !== o) {
                  if ("object" != typeof o || null === o) return e.reject(new TypeError("options argument must be an object but it is " + l.classString(o)));
                  if ("number" != typeof o.concurrency) return e.reject(new TypeError("'concurrency' must be a number but it is " + l.classString(o.concurrency)));
                  a = o.concurrency
                }
                return a = "number" == typeof a && isFinite(a) && a >= 1 ? a : 0, new s(t, n, a, i).promise()
              }
              var c = e._getDomain,
                l = t("./util"),
                p = l.tryCatch,
                h = l.errorObj,
                f = e._async;
              l.inherits(s, n), s.prototype._asyncInit = function() {
                this._init$(void 0, -2)
              }, s.prototype._init = function() {}, s.prototype._promiseFulfilled = function(t, n) {
                var r = this._values,
                  i = this.length(),
                  s = this._preservedValues,
                  u = this._limit;
                if (n < 0) {
                  if (n = -1 * n - 1, r[n] = t, u >= 1 && (this._inFlight--, this._drainQueue(), this._isResolved())) return !0
                } else {
                  if (u >= 1 && this._inFlight >= u) return r[n] = t, this._queue.push(n), !1;
                  null !== s && (s[n] = t);
                  var c = this._promise,
                    l = this._callback,
                    f = c._boundValue();
                  c._pushContext();
                  var d = p(l).call(f, t, n, i),
                    m = c._popContext();
                  if (a.checkForgottenReturns(d, m, null !== s ? "Promise.filter" : "Promise.map", c), d === h) return this._reject(d.e), !0;
                  var y = o(d, this._promise);
                  if (y instanceof e) {
                    y = y._target();
                    var v = y._bitField;
                    if (0 == (50397184 & v)) return u >= 1 && this._inFlight++, r[n] = y, y._proxy(this, -1 * (n + 1)), !1;
                    if (0 == (33554432 & v)) return 0 != (16777216 & v) ? (this._reject(y._reason()), !0) : (this._cancel(), !0);
                    d = y._value()
                  }
                  r[n] = d
                }
                return ++this._totalResolved >= i && (null !== s ? this._filter(r, s) : this._resolve(r), !0)
              }, s.prototype._drainQueue = function() {
                for (var t = this._queue, e = this._limit, n = this._values; t.length > 0 && this._inFlight < e;) {
                  if (this._isResolved()) return;
                  var r = t.pop();
                  this._promiseFulfilled(n[r], r)
                }
              }, s.prototype._filter = function(t, e) {
                for (var n = e.length, r = new Array(n), o = 0, i = 0; i < n; ++i) t[i] && (r[o++] = e[i]);
                r.length = o, this._resolve(r)
              }, s.prototype.preservedValues = function() {
                return this._preservedValues
              }, e.prototype.map = function(t, e) {
                return u(this, t, e, null)
              }, e.map = function(t, e, n, r) {
                return u(t, e, n, r)
              }
            }
          }, {
            "./util": 36
          }],
          19: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i) {
              var a = t("./util"),
                s = a.tryCatch;
              e.method = function(t) {
                if ("function" != typeof t) throw new e.TypeError("expecting a function but got " + a.classString(t));
                return function() {
                  var r = new e(n);
                  r._captureStackTrace(), r._pushContext();
                  var o = s(t).apply(this, arguments),
                    a = r._popContext();
                  return i.checkForgottenReturns(o, a, "Promise.method", r), r._resolveFromSyncValue(o), r
                }
              }, e.attempt = e.try = function(t) {
                if ("function" != typeof t) return o("expecting a function but got " + a.classString(t));
                var r = new e(n);
                r._captureStackTrace(), r._pushContext();
                var u;
                if (arguments.length > 1) {
                  i.deprecated("calling Promise.try with more than 1 argument");
                  var c = arguments[1],
                    l = arguments[2];
                  u = a.isArray(c) ? s(t).apply(l, c) : s(t).call(l, c)
                } else u = s(t)();
                var p = r._popContext();
                return i.checkForgottenReturns(u, p, "Promise.try", r), r._resolveFromSyncValue(u), r
              }, e.prototype._resolveFromSyncValue = function(t) {
                t === a.errorObj ? this._rejectCallback(t.e, !1) : this._resolveCallback(t, !0)
              }
            }
          }, {
            "./util": 36
          }],
          20: [function(t, e, n) {
            "use strict";

            function r(t) {
              return t instanceof Error && l.getPrototypeOf(t) === Error.prototype
            }

            function o(t) {
              var e;
              if (r(t)) {
                e = new c(t), e.name = t.name, e.message = t.message, e.stack = t.stack;
                for (var n = l.keys(t), o = 0; o < n.length; ++o) {
                  var i = n[o];
                  p.test(i) || (e[i] = t[i])
                }
                return e
              }
              return a.markAsOriginatingFromRejection(t), t
            }

            function i(t, e) {
              return function(n, r) {
                if (null !== t) {
                  if (n) {
                    var i = o(s(n));
                    t._attachExtraTrace(i), t._reject(i)
                  } else if (e) {
                    var a = [].slice.call(arguments, 1);
                    t._fulfill(a)
                  } else t._fulfill(r);
                  t = null
                }
              }
            }
            var a = t("./util"),
              s = a.maybeWrapAsError,
              u = t("./errors"),
              c = u.OperationalError,
              l = t("./es5"),
              p = /^(?:name|message|stack|cause)$/;
            e.exports = i
          }, {
            "./errors": 12,
            "./es5": 13,
            "./util": 36
          }],
          21: [function(t, e, n) {
            "use strict";
            e.exports = function(e) {
              function n(t, e) {
                var n = this;
                if (!i.isArray(t)) return r.call(n, t, e);
                var o = s(e).apply(n._boundValue(), [null].concat(t));
                o === u && a.throwLater(o.e)
              }

              function r(t, e) {
                var n = this,
                  r = n._boundValue(),
                  o = void 0 === t ? s(e).call(r, null) : s(e).call(r, null, t);
                o === u && a.throwLater(o.e)
              }

              function o(t, e) {
                var n = this;
                if (!t) {
                  var r = new Error(t + "");
                  r.cause = t, t = r
                }
                var o = s(e).call(n._boundValue(), t);
                o === u && a.throwLater(o.e)
              }
              var i = t("./util"),
                a = e._async,
                s = i.tryCatch,
                u = i.errorObj;
              e.prototype.asCallback = e.prototype.nodeify = function(t, e) {
                if ("function" == typeof t) {
                  var i = r;
                  void 0 !== e && Object(e).spread && (i = n), this._then(i, o, void 0, this, t)
                }
                return this
              }
            }
          }, {
            "./util": 36
          }],
          22: [function(t, n, r) {
            "use strict";
            n.exports = function() {
              function r() {}

              function o(t, e) {
                if (null == t || t.constructor !== i) throw new _("the promise constructor cannot be invoked directly\n\n    See http://goo.gl/MqrFmX\n");
                if ("function" != typeof e) throw new _("expecting a function but got " + f.classString(e))
              }

              function i(t) {
                t !== x && o(this, t), this._bitField = 0, this._fulfillmentHandler0 = void 0, this._rejectionHandler0 = void 0, this._promise0 = void 0, this._receiver0 = void 0, this._resolveFromExecutor(t), this._promiseCreated(), this._fireEvent("promiseCreated", this)
              }

              function a(t) {
                this.promise._resolveCallback(t)
              }

              function s(t) {
                this.promise._rejectCallback(t, !1)
              }

              function u(t) {
                var e = new i(x);
                e._fulfillmentHandler0 = t, e._rejectionHandler0 = t, e._promise0 = t, e._receiver0 = t
              }
              var c = function() {
                  return new _("circular promise resolution chain\n\n    See http://goo.gl/MqrFmX\n")
                },
                l = function() {
                  return new i.PromiseInspection(this._target())
                },
                p = function(t) {
                  return i.reject(new _(t))
                },
                h = {},
                f = t("./util"),
                d;
              d = f.isNode ? function() {
                var t = e.domain;
                return void 0 === t && (t = null), t
              } : function() {
                return null
              }, f.notEnumerableProp(i, "_getDomain", d);
              var m = t("./es5"),
                y = t("./async"),
                v = new y;
              m.defineProperty(i, "_async", {
                value: v
              });
              var g = t("./errors"),
                _ = i.TypeError = g.TypeError;
              i.RangeError = g.RangeError;
              var b = i.CancellationError = g.CancellationError;
              i.TimeoutError = g.TimeoutError, i.OperationalError = g.OperationalError, i.RejectionError = g.OperationalError, i.AggregateError = g.AggregateError;
              var x = function() {},
                w = {},
                S = {},
                T = t("./thenables")(i, x),
                P = t("./promise_array")(i, x, T, p, r),
                C = t("./context")(i),
                k = C.create,
                O = t("./debuggability")(i, C),
                E = O.CapturedTrace,
                j = t("./finally")(i, T, S),
                A = t("./catch_filter")(S),
                F = t("./nodeback"),
                M = f.errorObj,
                R = f.tryCatch;
              return i.prototype.toString = function() {
                return "[object Promise]"
              }, i.prototype.caught = i.prototype.catch = function(t) {
                var e = arguments.length;
                if (e > 1) {
                  var n = new Array(e - 1),
                    r = 0,
                    o;
                  for (o = 0; o < e - 1; ++o) {
                    var i = arguments[o];
                    if (!f.isObject(i)) return p("Catch statement predicate: expecting an object but got " + f.classString(i));
                    n[r++] = i
                  }
                  return n.length = r, t = arguments[o], this.then(void 0, A(n, t, this))
                }
                return this.then(void 0, t)
              }, i.prototype.reflect = function() {
                return this._then(l, l, void 0, this, void 0)
              }, i.prototype.then = function(t, e) {
                if (O.warnings() && arguments.length > 0 && "function" != typeof t && "function" != typeof e) {
                  var n = ".then() only accepts functions but was passed: " + f.classString(t);
                  arguments.length > 1 && (n += ", " + f.classString(e)), this._warn(n)
                }
                return this._then(t, e, void 0, void 0, void 0)
              }, i.prototype.done = function(t, e) {
                this._then(t, e, void 0, void 0, void 0)._setIsFinal()
              }, i.prototype.spread = function(t) {
                return "function" != typeof t ? p("expecting a function but got " + f.classString(t)) : this.all()._then(t, void 0, void 0, w, void 0)
              }, i.prototype.toJSON = function() {
                var t = {
                  isFulfilled: !1,
                  isRejected: !1,
                  fulfillmentValue: void 0,
                  rejectionReason: void 0
                };
                return this.isFulfilled() ? (t.fulfillmentValue = this.value(), t.isFulfilled = !0) : this.isRejected() && (t.rejectionReason = this.reason(), t.isRejected = !0), t
              }, i.prototype.all = function() {
                return arguments.length > 0 && this._warn(".all() was passed arguments but it does not take any"), new P(this).promise()
              }, i.prototype.error = function(t) {
                return this.caught(f.originatesFromRejection, t)
              }, i.getNewLibraryCopy = n.exports, i.is = function(t) {
                return t instanceof i
              }, i.fromNode = i.fromCallback = function(t) {
                var e = new i(x);
                e._captureStackTrace();
                var n = arguments.length > 1 && !!Object(arguments[1]).multiArgs,
                  r = R(t)(F(e, n));
                return r === M && e._rejectCallback(r.e, !0), e._isFateSealed() || e._setAsyncGuaranteed(), e
              }, i.all = function(t) {
                return new P(t).promise()
              }, i.cast = function(t) {
                var e = T(t);
                return e instanceof i || (e = new i(x), e._captureStackTrace(), e._setFulfilled(), e._rejectionHandler0 = t), e
              }, i.resolve = i.fulfilled = i.cast, i.reject = i.rejected = function(t) {
                var e = new i(x);
                return e._captureStackTrace(), e._rejectCallback(t, !0), e
              }, i.setScheduler = function(t) {
                if ("function" != typeof t) throw new _("expecting a function but got " + f.classString(t));
                return v.setScheduler(t)
              }, i.prototype._then = function(t, e, n, r, o) {
                var a = void 0 !== o,
                  s = a ? o : new i(x),
                  u = this._target(),
                  c = u._bitField;
                a || (s._propagateFrom(this, 3), s._captureStackTrace(), void 0 === r && 0 != (2097152 & this._bitField) && (r = 0 != (50397184 & c) ? this._boundValue() : u === this ? void 0 : this._boundTo), this._fireEvent("promiseChained", this, s));
                var l = d();
                if (0 != (50397184 & c)) {
                  var p, h, m = u._settlePromiseCtx;
                  0 != (33554432 & c) ? (h = u._rejectionHandler0, p = t) : 0 != (16777216 & c) ? (h = u._fulfillmentHandler0, p = e, u._unsetRejectionIsUnhandled()) : (m = u._settlePromiseLateCancellationObserver, h = new b("late cancellation observer"), u._attachExtraTrace(h), p = e), v.invoke(m, u, {
                    handler: null === l ? p : "function" == typeof p && f.domainBind(l, p),
                    promise: s,
                    receiver: r,
                    value: h
                  })
                } else u._addCallbacks(t, e, s, r, l);
                return s
              }, i.prototype._length = function() {
                return 65535 & this._bitField
              }, i.prototype._isFateSealed = function() {
                return 0 != (117506048 & this._bitField)
              }, i.prototype._isFollowing = function() {
                return 67108864 == (67108864 & this._bitField)
              }, i.prototype._setLength = function(t) {
                this._bitField = -65536 & this._bitField | 65535 & t
              }, i.prototype._setFulfilled = function() {
                this._bitField = 33554432 | this._bitField, this._fireEvent("promiseFulfilled", this)
              }, i.prototype._setRejected = function() {
                this._bitField = 16777216 | this._bitField, this._fireEvent("promiseRejected", this)
              }, i.prototype._setFollowing = function() {
                this._bitField = 67108864 | this._bitField, this._fireEvent("promiseResolved", this)
              }, i.prototype._setIsFinal = function() {
                this._bitField = 4194304 | this._bitField
              }, i.prototype._isFinal = function() {
                return (4194304 & this._bitField) > 0
              }, i.prototype._unsetCancelled = function() {
                this._bitField = -65537 & this._bitField
              }, i.prototype._setCancelled = function() {
                this._bitField = 65536 | this._bitField, this._fireEvent("promiseCancelled", this)
              }, i.prototype._setWillBeCancelled = function() {
                this._bitField = 8388608 | this._bitField
              }, i.prototype._setAsyncGuaranteed = function() {
                v.hasCustomScheduler() || (this._bitField = 134217728 | this._bitField)
              }, i.prototype._receiverAt = function(t) {
                var e = 0 === t ? this._receiver0 : this[4 * t - 4 + 3];
                if (e !== h) return void 0 === e && this._isBound() ? this._boundValue() : e
              }, i.prototype._promiseAt = function(t) {
                return this[4 * t - 4 + 2]
              }, i.prototype._fulfillmentHandlerAt = function(t) {
                return this[4 * t - 4 + 0]
              }, i.prototype._rejectionHandlerAt = function(t) {
                return this[4 * t - 4 + 1]
              }, i.prototype._boundValue = function() {}, i.prototype._migrateCallback0 = function(t) {
                var e = t._bitField,
                  n = t._fulfillmentHandler0,
                  r = t._rejectionHandler0,
                  o = t._promise0,
                  i = t._receiverAt(0);
                void 0 === i && (i = h), this._addCallbacks(n, r, o, i, null)
              }, i.prototype._migrateCallbackAt = function(t, e) {
                var n = t._fulfillmentHandlerAt(e),
                  r = t._rejectionHandlerAt(e),
                  o = t._promiseAt(e),
                  i = t._receiverAt(e);
                void 0 === i && (i = h), this._addCallbacks(n, r, o, i, null)
              }, i.prototype._addCallbacks = function(t, e, n, r, o) {
                var i = this._length();
                if (i >= 65531 && (i = 0, this._setLength(0)), 0 === i) this._promise0 = n, this._receiver0 = r, "function" == typeof t && (this._fulfillmentHandler0 = null === o ? t : f.domainBind(o, t)), "function" == typeof e && (this._rejectionHandler0 = null === o ? e : f.domainBind(o, e));
                else {
                  var a = 4 * i - 4;
                  this[a + 2] = n, this[a + 3] = r, "function" == typeof t && (this[a + 0] = null === o ? t : f.domainBind(o, t)), "function" == typeof e && (this[a + 1] = null === o ? e : f.domainBind(o, e))
                }
                return this._setLength(i + 1), i
              }, i.prototype._proxy = function(t, e) {
                this._addCallbacks(void 0, void 0, e, t, null)
              }, i.prototype._resolveCallback = function(t, e) {
                if (0 == (117506048 & this._bitField)) {
                  if (t === this) return this._rejectCallback(c(), !1);
                  var n = T(t, this);
                  if (!(n instanceof i)) return this._fulfill(t);
                  e && this._propagateFrom(n, 2);
                  var r = n._target();
                  if (r === this) return void this._reject(c());
                  var o = r._bitField;
                  if (0 == (50397184 & o)) {
                    var a = this._length();
                    a > 0 && r._migrateCallback0(this);
                    for (var s = 1; s < a; ++s) r._migrateCallbackAt(this, s);
                    this._setFollowing(), this._setLength(0), this._setFollowee(r)
                  } else if (0 != (33554432 & o)) this._fulfill(r._value());
                  else if (0 != (16777216 & o)) this._reject(r._reason());
                  else {
                    var u = new b("late cancellation observer");
                    r._attachExtraTrace(u), this._reject(u)
                  }
                }
              }, i.prototype._rejectCallback = function(t, e, n) {
                var r = f.ensureErrorObject(t),
                  o = r === t;
                if (!o && !n && O.warnings()) {
                  var i = "a promise was rejected with a non-error: " + f.classString(t);
                  this._warn(i, !0)
                }
                this._attachExtraTrace(r, !!e && o), this._reject(t)
              }, i.prototype._resolveFromExecutor = function(t) {
                if (t !== x) {
                  var e = this;
                  this._captureStackTrace(), this._pushContext();
                  var n = !0,
                    r = this._execute(t, function(t) {
                      e._resolveCallback(t)
                    }, function(t) {
                      e._rejectCallback(t, n)
                    });
                  n = !1, this._popContext(), void 0 !== r && e._rejectCallback(r, !0)
                }
              }, i.prototype._settlePromiseFromHandler = function(t, e, n, r) {
                var o = r._bitField;
                if (0 == (65536 & o)) {
                  r._pushContext();
                  var i;
                  e === w ? n && "number" == typeof n.length ? i = R(t).apply(this._boundValue(), n) : (i = M, i.e = new _("cannot .spread() a non-array: " + f.classString(n))) : i = R(t).call(e, n);
                  var a = r._popContext();
                  o = r._bitField, 0 == (65536 & o) && (i === S ? r._reject(n) : i === M ? r._rejectCallback(i.e, !1) : (O.checkForgottenReturns(i, a, "", r, this), r._resolveCallback(i)))
                }
              }, i.prototype._target = function() {
                for (var t = this; t._isFollowing();) t = t._followee();
                return t
              }, i.prototype._followee = function() {
                return this._rejectionHandler0
              }, i.prototype._setFollowee = function(t) {
                this._rejectionHandler0 = t
              }, i.prototype._settlePromise = function(t, e, n, o) {
                var a = t instanceof i,
                  s = this._bitField,
                  u = 0 != (134217728 & s);
                0 != (65536 & s) ? (a && t._invokeInternalOnCancel(), n instanceof j && n.isFinallyHandler() ? (n.cancelPromise = t, R(e).call(n, o) === M && t._reject(M.e)) : e === l ? t._fulfill(l.call(n)) : n instanceof r ? n._promiseCancelled(t) : a || t instanceof P ? t._cancel() : n.cancel()) : "function" == typeof e ? a ? (u && t._setAsyncGuaranteed(), this._settlePromiseFromHandler(e, n, o, t)) : e.call(n, o, t) : n instanceof r ? n._isResolved() || (0 != (33554432 & s) ? n._promiseFulfilled(o, t) : n._promiseRejected(o, t)) : a && (u && t._setAsyncGuaranteed(), 0 != (33554432 & s) ? t._fulfill(o) : t._reject(o))
              }, i.prototype._settlePromiseLateCancellationObserver = function(t) {
                var e = t.handler,
                  n = t.promise,
                  r = t.receiver,
                  o = t.value;
                "function" == typeof e ? n instanceof i ? this._settlePromiseFromHandler(e, r, o, n) : e.call(r, o, n) : n instanceof i && n._reject(o)
              }, i.prototype._settlePromiseCtx = function(t) {
                this._settlePromise(t.promise, t.handler, t.receiver, t.value)
              }, i.prototype._settlePromise0 = function(t, e, n) {
                var r = this._promise0,
                  o = this._receiverAt(0);
                this._promise0 = void 0, this._receiver0 = void 0, this._settlePromise(r, t, o, e)
              }, i.prototype._clearCallbackDataAtIndex = function(t) {
                var e = 4 * t - 4;
                this[e + 2] = this[e + 3] = this[e + 0] = this[e + 1] = void 0
              }, i.prototype._fulfill = function(t) {
                var e = this._bitField;
                if (!((117506048 & e) >>> 16)) {
                  if (t === this) {
                    var n = c();
                    return this._attachExtraTrace(n), this._reject(n)
                  }
                  this._setFulfilled(), this._rejectionHandler0 = t, (65535 & e) > 0 && (0 != (134217728 & e) ? this._settlePromises() : v.settlePromises(this))
                }
              }, i.prototype._reject = function(t) {
                var e = this._bitField;
                if (!((117506048 & e) >>> 16)) {
                  if (this._setRejected(), this._fulfillmentHandler0 = t, this._isFinal()) return v.fatalError(t, f.isNode);
                  (65535 & e) > 0 ? v.settlePromises(this) : this._ensurePossibleRejectionHandled()
                }
              }, i.prototype._fulfillPromises = function(t, e) {
                for (var n = 1; n < t; n++) {
                  var r = this._fulfillmentHandlerAt(n),
                    o = this._promiseAt(n),
                    i = this._receiverAt(n);
                  this._clearCallbackDataAtIndex(n), this._settlePromise(o, r, i, e)
                }
              }, i.prototype._rejectPromises = function(t, e) {
                for (var n = 1; n < t; n++) {
                  var r = this._rejectionHandlerAt(n),
                    o = this._promiseAt(n),
                    i = this._receiverAt(n);
                  this._clearCallbackDataAtIndex(n), this._settlePromise(o, r, i, e)
                }
              }, i.prototype._settlePromises = function() {
                var t = this._bitField,
                  e = 65535 & t;
                if (e > 0) {
                  if (0 != (16842752 & t)) {
                    var n = this._fulfillmentHandler0;
                    this._settlePromise0(this._rejectionHandler0, n, t), this._rejectPromises(e, n)
                  } else {
                    var r = this._rejectionHandler0;
                    this._settlePromise0(this._fulfillmentHandler0, r, t), this._fulfillPromises(e, r)
                  }
                  this._setLength(0)
                }
                this._clearCancellationData()
              }, i.prototype._settledValue = function() {
                var t = this._bitField;
                return 0 != (33554432 & t) ? this._rejectionHandler0 : 0 != (16777216 & t) ? this._fulfillmentHandler0 : void 0
              }, i.defer = i.pending = function() {
                return O.deprecated("Promise.defer", "new Promise"), {
                  promise: new i(x),
                  resolve: a,
                  reject: s
                }
              }, f.notEnumerableProp(i, "_makeSelfResolutionError", c), t("./method")(i, x, T, p, O), t("./bind")(i, x, T, O), t("./cancel")(i, P, p, O), t("./direct_resolve")(i), t("./synchronous_inspection")(i), t("./join")(i, P, T, x, v, d), i.Promise = i, i.version = "3.5.1", t("./map.js")(i, P, p, T, x, O), t("./call_get.js")(i), t("./using.js")(i, p, T, k, x, O), t("./timers.js")(i, x, O), t("./generators.js")(i, p, x, T, r, O), t("./nodeify.js")(i), t("./promisify.js")(i, x), t("./props.js")(i, P, T, p), t("./race.js")(i, x, T, p), t("./reduce.js")(i, P, p, T, x, O), t("./settle.js")(i, P, O), t("./some.js")(i, P, p), t("./filter.js")(i, x), t("./each.js")(i, x), t("./any.js")(i), f.toFastProperties(i), f.toFastProperties(i.prototype), u({
                a: 1
              }), u({
                b: 2
              }), u({
                c: 3
              }), u(1), u(function() {}), u(void 0), u(!1), u(new i(x)), O.setBounds(y.firstLineError, f.lastLineError), i
            }
          }, {
            "./any.js": 1,
            "./async": 2,
            "./bind": 3,
            "./call_get.js": 5,
            "./cancel": 6,
            "./catch_filter": 7,
            "./context": 8,
            "./debuggability": 9,
            "./direct_resolve": 10,
            "./each.js": 11,
            "./errors": 12,
            "./es5": 13,
            "./filter.js": 14,
            "./finally": 15,
            "./generators.js": 16,
            "./join": 17,
            "./map.js": 18,
            "./method": 19,
            "./nodeback": 20,
            "./nodeify.js": 21,
            "./promise_array": 23,
            "./promisify.js": 24,
            "./props.js": 25,
            "./race.js": 27,
            "./reduce.js": 28,
            "./settle.js": 30,
            "./some.js": 31,
            "./synchronous_inspection": 32,
            "./thenables": 33,
            "./timers.js": 34,
            "./using.js": 35,
            "./util": 36
          }],
          23: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i) {
              function a(t) {
                switch (t) {
                  case -2:
                    return [];
                  case -3:
                    return {};
                  case -6:
                    return new Map
                }
              }

              function s(t) {
                var r = this._promise = new e(n);
                t instanceof e && r._propagateFrom(t, 3), r._setOnCancel(this), this._values = t, this._length = 0, this._totalResolved = 0, this._init(void 0, -2)
              }
              var u = t("./util"),
                c = u.isArray;
              return u.inherits(s, i), s.prototype.length = function() {
                return this._length
              }, s.prototype.promise = function() {
                return this._promise
              }, s.prototype._init = function t(n, i) {
                var s = r(this._values, this._promise);
                if (s instanceof e) {
                  s = s._target();
                  var c = s._bitField;
                  if (this._values = s, 0 == (50397184 & c)) return this._promise._setAsyncGuaranteed(), s._then(t, this._reject, void 0, this, i);
                  if (0 == (33554432 & c)) return 0 != (16777216 & c) ? this._reject(s._reason()) : this._cancel();
                  s = s._value()
                }
                if (null === (s = u.asArray(s))) {
                  var l = o("expecting an array or an iterable object but got " + u.classString(s)).reason();
                  return void this._promise._rejectCallback(l, !1)
                }
                if (0 === s.length) return void(-5 === i ? this._resolveEmptyArray() : this._resolve(a(i)));
                this._iterate(s)
              }, s.prototype._iterate = function(t) {
                var n = this.getActualLength(t.length);
                this._length = n, this._values = this.shouldCopyValues() ? new Array(n) : this._values;
                for (var o = this._promise, i = !1, a = null, s = 0; s < n; ++s) {
                  var u = r(t[s], o);
                  u instanceof e ? (u = u._target(), a = u._bitField) : a = null, i ? null !== a && u.suppressUnhandledRejections() : null !== a ? 0 == (50397184 & a) ? (u._proxy(this, s), this._values[s] = u) : i = 0 != (33554432 & a) ? this._promiseFulfilled(u._value(), s) : 0 != (16777216 & a) ? this._promiseRejected(u._reason(), s) : this._promiseCancelled(s) : i = this._promiseFulfilled(u, s)
                }
                i || o._setAsyncGuaranteed()
              }, s.prototype._isResolved = function() {
                return null === this._values
              }, s.prototype._resolve = function(t) {
                this._values = null, this._promise._fulfill(t)
              }, s.prototype._cancel = function() {
                !this._isResolved() && this._promise._isCancellable() && (this._values = null, this._promise._cancel())
              }, s.prototype._reject = function(t) {
                this._values = null, this._promise._rejectCallback(t, !1)
              }, s.prototype._promiseFulfilled = function(t, e) {
                return this._values[e] = t, ++this._totalResolved >= this._length && (this._resolve(this._values), !0)
              }, s.prototype._promiseCancelled = function() {
                return this._cancel(), !0
              }, s.prototype._promiseRejected = function(t) {
                return this._totalResolved++, this._reject(t), !0
              }, s.prototype._resultCancelled = function() {
                if (!this._isResolved()) {
                  var t = this._values;
                  if (this._cancel(), t instanceof e) t.cancel();
                  else
                    for (var n = 0; n < t.length; ++n) t[n] instanceof e && t[n].cancel()
                }
              }, s.prototype.shouldCopyValues = function() {
                return !0
              }, s.prototype.getActualLength = function(t) {
                return t
              }, s
            }
          }, {
            "./util": 36
          }],
          24: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n) {
              function r(t) {
                return !x.test(t)
              }

              function o(t) {
                try {
                  return !0 === t.__isPromisified__
                } catch (t) {
                  return !1
                }
              }

              function i(t, e, n) {
                var r = h.getDataPropertyOrDefault(t, e + n, _);
                return !!r && o(r)
              }

              function a(t, e, n) {
                for (var r = 0; r < t.length; r += 2) {
                  var o = t[r];
                  if (n.test(o))
                    for (var i = o.replace(n, ""), a = 0; a < t.length; a += 2)
                      if (t[a] === i) throw new v("Cannot promisify an API that has normal methods with '%s'-suffix\n\n    See http://goo.gl/MqrFmX\n".replace("%s", e))
                }
              }

              function s(t, e, n, r) {
                for (var s = h.inheritedDataKeys(t), u = [], c = 0; c < s.length; ++c) {
                  var l = s[c],
                    p = t[l],
                    f = r === w || w(l, p, t);
                  "function" != typeof p || o(p) || i(t, l, e) || !r(l, p, t, f) || u.push(l, p)
                }
                return a(u, e, n), u
              }

              function u(t, r, o, i, a, s) {
                function u() {
                  var o = r;
                  r === p && (o = this);
                  var i = new e(n);
                  i._captureStackTrace();
                  var a = "string" == typeof l && this !== c ? this[l] : t,
                    u = f(i, s);
                  try {
                    a.apply(o, d(arguments, u))
                  } catch (t) {
                    i._rejectCallback(m(t), !0, !0)
                  }
                  return i._isFateSealed() || i._setAsyncGuaranteed(), i
                }
                var c = function() {
                    return this
                  }(),
                  l = t;
                return "string" == typeof l && (t = i), h.notEnumerableProp(u, "__isPromisified__", !0), u
              }

              function c(t, e, n, r, o) {
                for (var i = new RegExp(S(e) + "$"), a = s(t, e, i, n), u = 0, c = a.length; u < c; u += 2) {
                  var l = a[u],
                    f = a[u + 1],
                    d = l + e;
                  if (r === E) t[d] = E(l, p, l, f, e, o);
                  else {
                    var m = r(f, function() {
                      return E(l, p, l, f, e, o)
                    });
                    h.notEnumerableProp(m, "__isPromisified__", !0), t[d] = m
                  }
                }
                return h.toFastProperties(t), t
              }

              function l(t, e, n) {
                return E(t, e, void 0, t, null, n)
              }
              var p = {},
                h = t("./util"),
                f = t("./nodeback"),
                d = h.withAppended,
                m = h.maybeWrapAsError,
                y = h.canEvaluate,
                v = t("./errors").TypeError,
                g = "Async",
                _ = {
                  __isPromisified__: !0
                },
                b = ["arity", "length", "name", "arguments", "caller", "callee", "prototype", "__isPromisified__"],
                x = new RegExp("^(?:" + b.join("|") + ")$"),
                w = function(t) {
                  return h.isIdentifier(t) && "_" !== t.charAt(0) && "constructor" !== t
                },
                S = function(t) {
                  return t.replace(/([$])/, "\\$")
                },
                T, P, C, k, O, E = y ? T : u;
              e.promisify = function(t, e) {
                if ("function" != typeof t) throw new v("expecting a function but got " + h.classString(t));
                if (o(t)) return t;
                e = Object(e);
                var n = void 0 === e.context ? p : e.context,
                  i = !!e.multiArgs,
                  a = l(t, n, i);
                return h.copyDescriptors(t, a, r), a
              }, e.promisifyAll = function(t, e) {
                if ("function" != typeof t && "object" != typeof t) throw new v("the target of promisifyAll must be an object or a function\n\n    See http://goo.gl/MqrFmX\n");
                e = Object(e);
                var n = !!e.multiArgs,
                  r = e.suffix;
                "string" != typeof r && (r = "Async");
                var o = e.filter;
                "function" != typeof o && (o = w);
                var i = e.promisifier;
                if ("function" != typeof i && (i = E), !h.isIdentifier(r)) throw new RangeError("suffix must be a valid identifier\n\n    See http://goo.gl/MqrFmX\n");
                for (var a = h.inheritedDataKeys(t), s = 0; s < a.length; ++s) {
                  var u = t[a[s]];
                  "constructor" !== a[s] && h.isClass(u) && (c(u.prototype, r, o, i, n), c(u, r, o, i, n))
                }
                return c(t, r, o, i, n)
              }
            }
          }, {
            "./errors": 12,
            "./nodeback": 20,
            "./util": 36
          }],
          25: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o) {
              function i(t) {
                var e = !1,
                  n;
                if (void 0 !== l && t instanceof l) n = p(t), e = !0;
                else {
                  var r = c.keys(t),
                    o = r.length;
                  n = new Array(2 * o);
                  for (var i = 0; i < o; ++i) {
                    var a = r[i];
                    n[i] = t[a], n[i + o] = a
                  }
                }
                this.constructor$(n), this._isMap = e, this._init$(void 0, e ? -6 : -3)
              }

              function a(t) {
                var n, a = r(t);
                return u(a) ? (n = a instanceof e ? a._then(e.props, void 0, void 0, void 0, void 0) : new i(a).promise(), a instanceof e && n._propagateFrom(a, 2), n) : o("cannot await properties of a non-object\n\n    See http://goo.gl/MqrFmX\n")
              }
              var s = t("./util"),
                u = s.isObject,
                c = t("./es5"),
                l;
              "function" == typeof Map && (l = Map);
              var p = function() {
                  function t(t, r) {
                    this[e] = t, this[e + n] = r, e++
                  }
                  var e = 0,
                    n = 0;
                  return function r(o) {
                    n = o.size, e = 0;
                    var i = new Array(2 * o.size);
                    return o.forEach(t, i), i
                  }
                }(),
                h = function(t) {
                  for (var e = new l, n = t.length / 2 | 0, r = 0; r < n; ++r) {
                    var o = t[n + r],
                      i = t[r];
                    e.set(o, i)
                  }
                  return e
                };
              s.inherits(i, n), i.prototype._init = function() {}, i.prototype._promiseFulfilled = function(t, e) {
                if (this._values[e] = t, ++this._totalResolved >= this._length) {
                  var n;
                  if (this._isMap) n = h(this._values);
                  else {
                    n = {};
                    for (var r = this.length(), o = 0, i = this.length(); o < i; ++o) n[this._values[o + r]] = this._values[o]
                  }
                  return this._resolve(n), !0
                }
                return !1
              }, i.prototype.shouldCopyValues = function() {
                return !1
              }, i.prototype.getActualLength = function(t) {
                return t >> 1
              }, e.prototype.props = function() {
                return a(this)
              }, e.props = function(t) {
                return a(t)
              }
            }
          }, {
            "./es5": 13,
            "./util": 36
          }],
          26: [function(t, e, n) {
            "use strict";

            function r(t, e, n, r, o) {
              for (var i = 0; i < o; ++i) n[i + r] = t[i + e], t[i + e] = void 0
            }

            function o(t) {
              this._capacity = t, this._length = 0, this._front = 0
            }
            o.prototype._willBeOverCapacity = function(t) {
              return this._capacity < t
            }, o.prototype._pushOne = function(t) {
              var e = this.length();
              this._checkCapacity(e + 1), this[this._front + e & this._capacity - 1] = t, this._length = e + 1
            }, o.prototype.push = function(t, e, n) {
              var r = this.length() + 3;
              if (this._willBeOverCapacity(r)) return this._pushOne(t), this._pushOne(e), void this._pushOne(n);
              var o = this._front + r - 3;
              this._checkCapacity(r);
              var i = this._capacity - 1;
              this[o + 0 & i] = t, this[o + 1 & i] = e, this[o + 2 & i] = n, this._length = r
            }, o.prototype.shift = function() {
              var t = this._front,
                e = this[t];
              return this[t] = void 0, this._front = t + 1 & this._capacity - 1, this._length--, e
            }, o.prototype.length = function() {
              return this._length
            }, o.prototype._checkCapacity = function(t) {
              this._capacity < t && this._resizeTo(this._capacity << 1)
            }, o.prototype._resizeTo = function(t) {
              var e = this._capacity;
              this._capacity = t, r(this, 0, this, e, this._front + this._length & e - 1)
            }, e.exports = o
          }, {}],
          27: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o) {
              function i(t, i) {
                var u = r(t);
                if (u instanceof e) return s(u);
                if (null === (t = a.asArray(t))) return o("expecting an array or an iterable object but got " + a.classString(t));
                var c = new e(n);
                void 0 !== i && c._propagateFrom(i, 3);
                for (var l = c._fulfill, p = c._reject, h = 0, f = t.length; h < f; ++h) {
                  var d = t[h];
                  (void 0 !== d || h in t) && e.cast(d)._then(l, p, void 0, c, null)
                }
                return c
              }
              var a = t("./util"),
                s = function(t) {
                  return t.then(function(e) {
                    return i(e, t)
                  })
                };
              e.race = function(t) {
                return i(t, void 0)
              }, e.prototype.race = function() {
                return i(this, void 0)
              }
            }
          }, {
            "./util": 36
          }],
          28: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i, a) {
              function s(t, n, r, o) {
                this.constructor$(t);
                var a = h();
                this._fn = null === a ? n : f.domainBind(a, n), void 0 !== r && (r = e.resolve(r), r._attachCancellationCallback(this)), this._initialValue = r, this._currentCancellable = null, this._eachValues = o === i ? Array(this._length) : 0 === o ? null : void 0, this._promise._captureStackTrace(), this._init$(void 0, -5)
              }

              function u(t, e) {
                this.isFulfilled() ? e._resolve(t) : e._reject(t)
              }

              function c(t, e, n, o) {
                return "function" != typeof e ? r("expecting a function but got " + f.classString(e)) : new s(t, e, n, o).promise()
              }

              function l(t) {
                this.accum = t, this.array._gotAccum(t);
                var n = o(this.value, this.array._promise);
                return n instanceof e ? (this.array._currentCancellable = n, n._then(p, void 0, void 0, this, void 0)) : p.call(this, n)
              }

              function p(t) {
                var n = this.array,
                  r = n._promise,
                  o = d(n._fn);
                r._pushContext();
                var i;
                (i = void 0 !== n._eachValues ? o.call(r._boundValue(), t, this.index, this.length) : o.call(r._boundValue(), this.accum, t, this.index, this.length)) instanceof e && (n._currentCancellable = i);
                var s = r._popContext();
                return a.checkForgottenReturns(i, s, void 0 !== n._eachValues ? "Promise.each" : "Promise.reduce", r), i
              }
              var h = e._getDomain,
                f = t("./util"),
                d = f.tryCatch;
              f.inherits(s, n), s.prototype._gotAccum = function(t) {
                void 0 !== this._eachValues && null !== this._eachValues && t !== i && this._eachValues.push(t)
              }, s.prototype._eachComplete = function(t) {
                return null !== this._eachValues && this._eachValues.push(t), this._eachValues
              }, s.prototype._init = function() {}, s.prototype._resolveEmptyArray = function() {
                this._resolve(void 0 !== this._eachValues ? this._eachValues : this._initialValue)
              }, s.prototype.shouldCopyValues = function() {
                return !1
              }, s.prototype._resolve = function(t) {
                this._promise._resolveCallback(t), this._values = null
              }, s.prototype._resultCancelled = function(t) {
                if (t === this._initialValue) return this._cancel();
                this._isResolved() || (this._resultCancelled$(), this._currentCancellable instanceof e && this._currentCancellable.cancel(), this._initialValue instanceof e && this._initialValue.cancel())
              }, s.prototype._iterate = function(t) {
                this._values = t;
                var n, r, o = t.length;
                if (void 0 !== this._initialValue ? (n = this._initialValue, r = 0) : (n = e.resolve(t[0]), r = 1), this._currentCancellable = n, !n.isRejected())
                  for (; r < o; ++r) {
                    var i = {
                      accum: null,
                      value: t[r],
                      index: r,
                      length: o,
                      array: this
                    };
                    n = n._then(l, void 0, void 0, i, void 0)
                  }
                void 0 !== this._eachValues && (n = n._then(this._eachComplete, void 0, void 0, this, void 0)), n._then(u, u, void 0, n, this)
              }, e.prototype.reduce = function(t, e) {
                return c(this, t, e, null)
              }, e.reduce = function(t, e, n, r) {
                return c(t, e, n, r)
              }
            }
          }, {
            "./util": 36
          }],
          29: [function(t, o, i) {
            "use strict";
            var a = t("./util"),
              s, u = function() {
                throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n")
              },
              c = a.getNativePromise();
            if (a.isNode && "undefined" == typeof MutationObserver) {
              var l = n.setImmediate,
                p = e.nextTick;
              s = a.isRecentNode ? function(t) {
                l.call(n, t)
              } : function(t) {
                p.call(e, t)
              }
            } else if ("function" == typeof c && "function" == typeof c.resolve) {
              var h = c.resolve();
              s = function(t) {
                h.then(t)
              }
            } else s = "undefined" == typeof MutationObserver || "undefined" != typeof window && window.navigator && (window.navigator.standalone || window.cordova) ? void 0 !== r ? function(t) {
              r(t)
            } : "undefined" != typeof setTimeout ? function(t) {
              setTimeout(t, 0)
            } : u : function() {
              var t = document.createElement("div"),
                e = {
                  attributes: !0
                },
                n = !1,
                r = document.createElement("div");
              new MutationObserver(function() {
                t.classList.toggle("foo"), n = !1
              }).observe(r, e);
              var o = function() {
                n || (n = !0, r.classList.toggle("foo"))
              };
              return function n(r) {
                var i = new MutationObserver(function() {
                  i.disconnect(), r()
                });
                i.observe(t, e), o()
              }
            }();
            o.exports = s
          }, {
            "./util": 36
          }],
          30: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r) {
              function o(t) {
                this.constructor$(t)
              }
              var i = e.PromiseInspection;
              t("./util").inherits(o, n), o.prototype._promiseResolved = function(t, e) {
                return this._values[t] = e, ++this._totalResolved >= this._length && (this._resolve(this._values), !0)
              }, o.prototype._promiseFulfilled = function(t, e) {
                var n = new i;
                return n._bitField = 33554432, n._settledValueField = t, this._promiseResolved(e, n)
              }, o.prototype._promiseRejected = function(t, e) {
                var n = new i;
                return n._bitField = 16777216, n._settledValueField = t, this._promiseResolved(e, n)
              }, e.settle = function(t) {
                return r.deprecated(".settle()", ".reflect()"), new o(t).promise()
              }, e.prototype.settle = function() {
                return e.settle(this)
              }
            }
          }, {
            "./util": 36
          }],
          31: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r) {
              function o(t) {
                this.constructor$(t), this._howMany = 0, this._unwrap = !1, this._initialized = !1
              }

              function i(t, e) {
                if ((0 | e) !== e || e < 0) return r("expecting a positive integer\n\n    See http://goo.gl/MqrFmX\n");
                var n = new o(t),
                  i = n.promise();
                return n.setHowMany(e), n.init(), i
              }
              var a = t("./util"),
                s = t("./errors").RangeError,
                u = t("./errors").AggregateError,
                c = a.isArray,
                l = {};
              a.inherits(o, n), o.prototype._init = function() {
                if (this._initialized) {
                  if (0 === this._howMany) return void this._resolve([]);
                  this._init$(void 0, -5);
                  var t = c(this._values);
                  !this._isResolved() && t && this._howMany > this._canPossiblyFulfill() && this._reject(this._getRangeError(this.length()))
                }
              }, o.prototype.init = function() {
                this._initialized = !0, this._init()
              }, o.prototype.setUnwrap = function() {
                this._unwrap = !0
              }, o.prototype.howMany = function() {
                return this._howMany
              }, o.prototype.setHowMany = function(t) {
                this._howMany = t
              }, o.prototype._promiseFulfilled = function(t) {
                return this._addFulfilled(t), this._fulfilled() === this.howMany() && (this._values.length = this.howMany(), 1 === this.howMany() && this._unwrap ? this._resolve(this._values[0]) : this._resolve(this._values), !0)
              }, o.prototype._promiseRejected = function(t) {
                return this._addRejected(t), this._checkOutcome()
              }, o.prototype._promiseCancelled = function() {
                return this._values instanceof e || null == this._values ? this._cancel() : (this._addRejected(l), this._checkOutcome())
              }, o.prototype._checkOutcome = function() {
                if (this.howMany() > this._canPossiblyFulfill()) {
                  for (var t = new u, e = this.length(); e < this._values.length; ++e) this._values[e] !== l && t.push(this._values[e]);
                  return t.length > 0 ? this._reject(t) : this._cancel(), !0
                }
                return !1
              }, o.prototype._fulfilled = function() {
                return this._totalResolved
              }, o.prototype._rejected = function() {
                return this._values.length - this.length()
              }, o.prototype._addRejected = function(t) {
                this._values.push(t)
              }, o.prototype._addFulfilled = function(t) {
                this._values[this._totalResolved++] = t
              }, o.prototype._canPossiblyFulfill = function() {
                return this.length() - this._rejected()
              }, o.prototype._getRangeError = function(t) {
                var e = "Input array must contain at least " + this._howMany + " items but contains only " + t + " items";
                return new s(e)
              }, o.prototype._resolveEmptyArray = function() {
                this._reject(this._getRangeError(0))
              }, e.some = function(t, e) {
                return i(t, e)
              }, e.prototype.some = function(t) {
                return i(this, t)
              }, e._SomePromiseArray = o
            }
          }, {
            "./errors": 12,
            "./util": 36
          }],
          32: [function(t, e, n) {
            "use strict";
            e.exports = function(t) {
              function e(t) {
                void 0 !== t ? (t = t._target(), this._bitField = t._bitField, this._settledValueField = t._isFateSealed() ? t._settledValue() : void 0) : (this._bitField = 0, this._settledValueField = void 0)
              }
              e.prototype._settledValue = function() {
                return this._settledValueField
              };
              var n = e.prototype.value = function() {
                  if (!this.isFulfilled()) throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n    See http://goo.gl/MqrFmX\n");
                  return this._settledValue()
                },
                r = e.prototype.error = e.prototype.reason = function() {
                  if (!this.isRejected()) throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n    See http://goo.gl/MqrFmX\n");
                  return this._settledValue()
                },
                o = e.prototype.isFulfilled = function() {
                  return 0 != (33554432 & this._bitField)
                },
                i = e.prototype.isRejected = function() {
                  return 0 != (16777216 & this._bitField)
                },
                a = e.prototype.isPending = function() {
                  return 0 == (50397184 & this._bitField)
                },
                s = e.prototype.isResolved = function() {
                  return 0 != (50331648 & this._bitField)
                };
              e.prototype.isCancelled = function() {
                return 0 != (8454144 & this._bitField)
              }, t.prototype.__isCancelled = function() {
                return 65536 == (65536 & this._bitField)
              }, t.prototype._isCancelled = function() {
                return this._target().__isCancelled()
              }, t.prototype.isCancelled = function() {
                return 0 != (8454144 & this._target()._bitField)
              }, t.prototype.isPending = function() {
                return a.call(this._target())
              }, t.prototype.isRejected = function() {
                return i.call(this._target())
              }, t.prototype.isFulfilled = function() {
                return o.call(this._target())
              }, t.prototype.isResolved = function() {
                return s.call(this._target())
              }, t.prototype.value = function() {
                return n.call(this._target())
              }, t.prototype.reason = function() {
                var t = this._target();
                return t._unsetRejectionIsUnhandled(), r.call(t)
              }, t.prototype._value = function() {
                return this._settledValue()
              }, t.prototype._reason = function() {
                return this._unsetRejectionIsUnhandled(), this._settledValue()
              }, t.PromiseInspection = e
            }
          }, {}],
          33: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n) {
              function r(t, r) {
                if (l(t)) {
                  if (t instanceof e) return t;
                  var o = i(t);
                  if (o === c) {
                    r && r._pushContext();
                    var u = e.reject(o.e);
                    return r && r._popContext(), u
                  }
                  if ("function" == typeof o) {
                    if (a(t)) {
                      var u = new e(n);
                      return t._then(u._fulfill, u._reject, void 0, u, null), u
                    }
                    return s(t, o, r)
                  }
                }
                return t
              }

              function o(t) {
                return t.then
              }

              function i(t) {
                try {
                  return o(t)
                } catch (t) {
                  return c.e = t, c
                }
              }

              function a(t) {
                try {
                  return p.call(t, "_promise0")
                } catch (t) {
                  return !1
                }
              }

              function s(t, r, o) {
                function i(t) {
                  s && (s._resolveCallback(t), s = null)
                }

                function a(t) {
                  s && (s._rejectCallback(t, p, !0), s = null)
                }
                var s = new e(n),
                  l = s;
                o && o._pushContext(), s._captureStackTrace(), o && o._popContext();
                var p = !0,
                  h = u.tryCatch(r).call(t, i, a);
                return p = !1, s && h === c && (s._rejectCallback(h.e, !0, !0), s = null), l
              }
              var u = t("./util"),
                c = u.errorObj,
                l = u.isObject,
                p = {}.hasOwnProperty;
              return r
            }
          }, {
            "./util": 36
          }],
          34: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r) {
              function o(t) {
                this.handle = t
              }

              function i(t) {
                return clearTimeout(this.handle), t
              }

              function a(t) {
                throw clearTimeout(this.handle), t
              }
              var s = t("./util"),
                u = e.TimeoutError;
              o.prototype._resultCancelled = function() {
                clearTimeout(this.handle)
              };
              var c = function(t) {
                  return l(+this).thenReturn(t)
                },
                l = e.delay = function(t, i) {
                  var a, s;
                  return void 0 !== i ? (a = e.resolve(i)._then(c, null, null, t, void 0), r.cancellation() && i instanceof e && a._setOnCancel(i)) : (a = new e(n), s = setTimeout(function() {
                    a._fulfill()
                  }, +t), r.cancellation() && a._setOnCancel(new o(s)), a._captureStackTrace()), a._setAsyncGuaranteed(), a
                };
              e.prototype.delay = function(t) {
                return l(t, this)
              };
              var p = function(t, e, n) {
                var r;
                r = "string" != typeof e ? e instanceof Error ? e : new u("operation timed out") : new u(e), s.markAsOriginatingFromRejection(r), t._attachExtraTrace(r), t._reject(r), null != n && n.cancel()
              };
              e.prototype.timeout = function(t, e) {
                t = +t;
                var n, s, u = new o(setTimeout(function t() {
                  n.isPending() && p(n, e, s)
                }, t));
                return r.cancellation() ? (s = this.then(), n = s._then(i, a, void 0, u, void 0), n._setOnCancel(u)) : n = this._then(i, a, void 0, u, void 0), n
              }
            }
          }, {
            "./util": 36
          }],
          35: [function(t, e, n) {
            "use strict";
            e.exports = function(e, n, r, o, i, a) {
              function s(t) {
                setTimeout(function() {
                  throw t
                }, 0)
              }

              function u(t) {
                var e = r(t);
                return e !== t && "function" == typeof t._isDisposable && "function" == typeof t._getDisposer && t._isDisposable() && e._setDisposable(t._getDisposer()), e
              }

              function c(t, n) {
                function o() {
                  if (a >= c) return l._fulfill();
                  var i = u(t[a++]);
                  if (i instanceof e && i._isDisposable()) {
                    try {
                      i = r(i._getDisposer().tryDispose(n), t.promise)
                    } catch (t) {
                      return s(t)
                    }
                    if (i instanceof e) return i._then(o, s, null, null, null)
                  }
                  o()
                }
                var a = 0,
                  c = t.length,
                  l = new e(i);
                return o(), l
              }

              function l(t, e, n) {
                this._data = t, this._promise = e, this._context = n
              }

              function p(t, e, n) {
                this.constructor$(t, e, n)
              }

              function h(t) {
                return l.isDisposer(t) ? (this.resources[this.index]._setDisposable(t), t.promise()) : t
              }

              function f(t) {
                this.length = t, this.promise = null, this[t - 1] = null
              }
              var d = t("./util"),
                m = t("./errors").TypeError,
                y = t("./util").inherits,
                v = d.errorObj,
                g = d.tryCatch,
                _ = {};
              l.prototype.data = function() {
                return this._data
              }, l.prototype.promise = function() {
                return this._promise
              }, l.prototype.resource = function() {
                return this.promise().isFulfilled() ? this.promise().value() : _
              }, l.prototype.tryDispose = function(t) {
                var e = this.resource(),
                  n = this._context;
                void 0 !== n && n._pushContext();
                var r = e !== _ ? this.doDispose(e, t) : null;
                return void 0 !== n && n._popContext(), this._promise._unsetDisposable(), this._data = null, r
              }, l.isDisposer = function(t) {
                return null != t && "function" == typeof t.resource && "function" == typeof t.tryDispose
              }, y(p, l), p.prototype.doDispose = function(t, e) {
                return this.data().call(t, t, e)
              }, f.prototype._resultCancelled = function() {
                for (var t = this.length, n = 0; n < t; ++n) {
                  var r = this[n];
                  r instanceof e && r.cancel()
                }
              }, e.using = function() {
                var t = arguments.length;
                if (t < 2) return n("you must pass at least 2 arguments to Promise.using");
                var o = arguments[t - 1];
                if ("function" != typeof o) return n("expecting a function but got " + d.classString(o));
                var i, s = !0;
                2 === t && Array.isArray(arguments[0]) ? (i = arguments[0], t = i.length, s = !1) : (i = arguments, t--);
                for (var u = new f(t), p = 0; p < t; ++p) {
                  var m = i[p];
                  if (l.isDisposer(m)) {
                    var y = m;
                    m = m.promise(), m._setDisposable(y)
                  } else {
                    var _ = r(m);
                    _ instanceof e && (m = _._then(h, null, null, {
                      resources: u,
                      index: p
                    }, void 0))
                  }
                  u[p] = m
                }
                for (var b = new Array(u.length), p = 0; p < b.length; ++p) b[p] = e.resolve(u[p]).reflect();
                var x = e.all(b).then(function(t) {
                    for (var e = 0; e < t.length; ++e) {
                      var n = t[e];
                      if (n.isRejected()) return v.e = n.error(), v;
                      if (!n.isFulfilled()) return void x.cancel();
                      t[e] = n.value()
                    }
                    w._pushContext(), o = g(o);
                    var r = s ? o.apply(void 0, t) : o(t),
                      i = w._popContext();
                    return a.checkForgottenReturns(r, i, "Promise.using", w), r
                  }),
                  w = x.lastly(function() {
                    var t = new e.PromiseInspection(x);
                    return c(u, t)
                  });
                return u.promise = w, w._setOnCancel(u), w
              }, e.prototype._setDisposable = function(t) {
                this._bitField = 131072 | this._bitField, this._disposer = t
              }, e.prototype._isDisposable = function() {
                return (131072 & this._bitField) > 0
              }, e.prototype._getDisposer = function() {
                return this._disposer
              }, e.prototype._unsetDisposable = function() {
                this._bitField = -131073 & this._bitField, this._disposer = void 0
              }, e.prototype.disposer = function(t) {
                if ("function" == typeof t) return new p(t, this, o());
                throw new m
              }
            }
          }, {
            "./errors": 12,
            "./util": 36
          }],
          36: [function(t, r, o) {
            "use strict";

            function i() {
              try {
                var t = A;
                return A = null, t.apply(this, arguments)
              } catch (t) {
                return j.e = t, j
              }
            }

            function a(t) {
              return A = t, i
            }

            function s(t) {
              return null == t || !0 === t || !1 === t || "string" == typeof t || "number" == typeof t
            }

            function u(t) {
              return "function" == typeof t || "object" == typeof t && null !== t
            }

            function c(t) {
              return s(t) ? new Error(g(t)) : t
            }

            function l(t, e) {
              var n = t.length,
                r = new Array(n + 1),
                o;
              for (o = 0; o < n; ++o) r[o] = t[o];
              return r[o] = e, r
            }

            function p(t, e, n) {
              if (!O.isES5) return {}.hasOwnProperty.call(t, e) ? t[e] : void 0;
              var r = Object.getOwnPropertyDescriptor(t, e);
              return null != r ? null == r.get && null == r.set ? r.value : n : void 0
            }

            function h(t, e, n) {
              if (s(t)) return t;
              var r = {
                value: n,
                configurable: !0,
                enumerable: !1,
                writable: !0
              };
              return O.defineProperty(t, e, r), t
            }

            function f(t) {
              throw t
            }

            function d(t) {
              try {
                if ("function" == typeof t) {
                  var e = O.names(t.prototype),
                    n = O.isES5 && e.length > 1,
                    r = e.length > 0 && !(1 === e.length && "constructor" === e[0]),
                    o = D.test(t + "") && O.names(t).length > 0;
                  if (n || r || o) return !0
                }
                return !1
              } catch (t) {
                return !1
              }
            }

            function m(t) {
              function e() {}
              e.prototype = t;
              for (var n = 8; n--;) new e;
              return t
            }

            function y(t) {
              return I.test(t)
            }

            function v(t, e, n) {
              for (var r = new Array(t), o = 0; o < t; ++o) r[o] = e + o + n;
              return r
            }

            function g(t) {
              try {
                return t + ""
              } catch (t) {
                return "[no string representation]"
              }
            }

            function _(t) {
              return t instanceof Error || null !== t && "object" == typeof t && "string" == typeof t.message && "string" == typeof t.name
            }

            function b(t) {
              try {
                h(t, "isOperational", !0)
              } catch (t) {}
            }

            function x(t) {
              return null != t && (t instanceof Error.__BluebirdErrorTypes__.OperationalError || !0 === t.isOperational)
            }

            function w(t) {
              return _(t) && O.propertyIsWritable(t, "stack")
            }

            function S(t) {
              return {}.toString.call(t)
            }

            function T(t, e, n) {
              for (var r = O.names(t), o = 0; o < r.length; ++o) {
                var i = r[o];
                if (n(i)) try {
                  O.defineProperty(e, i, O.getDescriptor(t, i))
                } catch (t) {}
              }
            }

            function P(t) {
              return N ? e.env[t] : void 0
            }

            function C() {
              if ("function" == typeof Promise) try {
                var t = new Promise(function() {});
                if ("[object Promise]" === {}.toString.call(t)) return Promise
              } catch (t) {}
            }

            function k(t, e) {
              return t.bind(e)
            }
            var O = t("./es5"),
              E = "undefined" == typeof navigator,
              j = {
                e: {}
              },
              A, F = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== n ? n : void 0 !== this ? this : null,
              M = function(t, e) {
                function n() {
                  this.constructor = t, this.constructor$ = e;
                  for (var n in e.prototype) r.call(e.prototype, n) && "$" !== n.charAt(n.length - 1) && (this[n + "$"] = e.prototype[n])
                }
                var r = {}.hasOwnProperty;
                return n.prototype = e.prototype, t.prototype = new n, t.prototype
              },
              R = function() {
                var t = [Array.prototype, Object.prototype, Function.prototype],
                  e = function(e) {
                    for (var n = 0; n < t.length; ++n)
                      if (t[n] === e) return !0;
                    return !1
                  };
                if (O.isES5) {
                  var n = Object.getOwnPropertyNames;
                  return function(t) {
                    for (var r = [], o = Object.create(null); null != t && !e(t);) {
                      var i;
                      try {
                        i = n(t)
                      } catch (t) {
                        return r
                      }
                      for (var a = 0; a < i.length; ++a) {
                        var s = i[a];
                        if (!o[s]) {
                          o[s] = !0;
                          var u = Object.getOwnPropertyDescriptor(t, s);
                          null != u && null == u.get && null == u.set && r.push(s)
                        }
                      }
                      t = O.getPrototypeOf(t)
                    }
                    return r
                  }
                }
                var r = {}.hasOwnProperty;
                return function(n) {
                  if (e(n)) return [];
                  var o = [];
                  t: for (var i in n)
                    if (r.call(n, i)) o.push(i);
                    else {
                      for (var a = 0; a < t.length; ++a)
                        if (r.call(t[a], i)) continue t;
                      o.push(i)
                    }
                  return o
                }
              }(),
              D = /this\s*\.\s*\S+\s*=/,
              I = /^[a-z$_][a-z$_0-9]*$/i,
              L = function() {
                return "stack" in new Error ? function(t) {
                  return w(t) ? t : new Error(g(t))
                } : function(t) {
                  if (w(t)) return t;
                  try {
                    throw new Error(g(t))
                  } catch (t) {
                    return t
                  }
                }
              }(),
              z = function(t) {
                return O.isArray(t) ? t : null
              };
            if ("undefined" != typeof Symbol && Symbol.iterator) {
              var U = "function" == typeof Array.from ? function(t) {
                return Array.from(t)
              } : function(t) {
                for (var e = [], n = t[Symbol.iterator](), r; !(r = n.next()).done;) e.push(r.value);
                return e
              };
              z = function(t) {
                return O.isArray(t) ? t : null != t && "function" == typeof t[Symbol.iterator] ? U(t) : null
              }
            }
            var G = void 0 !== e && "[object process]" === S(e).toLowerCase(),
              N = void 0 !== e && void 0 !== e.env,
              B = {
                isClass: d,
                isIdentifier: y,
                inheritedDataKeys: R,
                getDataPropertyOrDefault: p,
                thrower: f,
                isArray: O.isArray,
                asArray: z,
                notEnumerableProp: h,
                isPrimitive: s,
                isObject: u,
                isError: _,
                canEvaluate: E,
                errorObj: j,
                tryCatch: a,
                inherits: M,
                withAppended: l,
                maybeWrapAsError: c,
                toFastProperties: m,
                filledRange: v,
                toString: g,
                canAttachTrace: w,
                ensureErrorObject: L,
                originatesFromRejection: x,
                markAsOriginatingFromRejection: b,
                classString: S,
                copyDescriptors: T,
                hasDevTools: "undefined" != typeof chrome && chrome && "function" == typeof chrome.loadTimes,
                isNode: G,
                hasEnvVariables: N,
                env: P,
                global: F,
                getNativePromise: C,
                domainBind: k
              };
            B.isRecentNode = B.isNode && function() {
              var t = e.versions.node.split(".").map(Number);
              return 0 === t[0] && t[1] > 10 || t[0] > 0
            }(), B.isNode && B.toFastProperties(e);
            try {
              throw new Error
            } catch (t) {
              B.lastLineError = t
            }
            r.exports = B
          }, {
            "./es5": 13
          }]
        }, {}, [4])(4)
      }), "undefined" != typeof window && null !== window ? window.P = window.Promise : "undefined" != typeof self && null !== self && (self.P = self.Promise)
    }).call(e, n(77), n(30), n(391).setImmediate)
  }, function(t, e, n) {
    function r(t, e) {
      this._id = t, this._clearFn = e
    }
    var o = Function.prototype.apply;
    e.setTimeout = function() {
      return new r(o.call(setTimeout, window, arguments), clearTimeout)
    }, e.setInterval = function() {
      return new r(o.call(setInterval, window, arguments), clearInterval)
    }, e.clearTimeout = e.clearInterval = function(t) {
      t && t.close()
    }, r.prototype.unref = r.prototype.ref = function() {}, r.prototype.close = function() {
      this._clearFn.call(window, 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 e() {
        t._onTimeout && t._onTimeout()
      }, e))
    }, n(392), e.setImmediate = setImmediate, e.clearImmediate = clearImmediate
  }, function(t, e, n) {
    (function(t, e) {
      ! function(t, n) {
        "use strict";

        function r(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 r = {
            callback: t,
            args: e
          };
          return d[f] = r, v(f), f++
        }

        function o(t) {
          delete d[t]
        }

        function i(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)
          }
        }

        function a(t) {
          if (m) setTimeout(a, 0, t);
          else {
            var e = d[t];
            if (e) {
              m = !0;
              try {
                i(e)
              } finally {
                o(t), m = !1
              }
            }
          }
        }

        function s() {
          v = function(t) {
            e.nextTick(function() {
              a(t)
            })
          }
        }

        function u() {
          if (t.postMessage && !t.importScripts) {
            var e = !0,
              n = t.onmessage;
            return t.onmessage = function() {
              e = !1
            }, t.postMessage("", "*"), t.onmessage = n, e
          }
        }

        function c() {
          var e = "setImmediate$" + Math.random() + "$",
            n = function(n) {
              n.source === t && "string" == typeof n.data && 0 === n.data.indexOf(e) && a(+n.data.slice(e.length))
            };
          t.addEventListener ? t.addEventListener("message", n, !1) : t.attachEvent("onmessage", n), v = function(n) {
            t.postMessage(e + n, "*")
          }
        }

        function l() {
          var t = new MessageChannel;
          t.port1.onmessage = function(t) {
            a(t.data)
          }, v = function(e) {
            t.port2.postMessage(e)
          }
        }

        function p() {
          var t = y.documentElement;
          v = function(e) {
            var n = y.createElement("script");
            n.onreadystatechange = function() {
              a(e), n.onreadystatechange = null, t.removeChild(n), n = null
            }, t.appendChild(n)
          }
        }

        function h() {
          v = function(t) {
            setTimeout(a, 0, t)
          }
        }
        if (!t.setImmediate) {
          var f = 1,
            d = {},
            m = !1,
            y = t.document,
            v, g = Object.getPrototypeOf && Object.getPrototypeOf(t);
          g = g && g.setTimeout ? g : t, "[object process]" === {}.toString.call(t.process) ? s() : u() ? c() : t.MessageChannel ? l() : y && "onreadystatechange" in y.createElement("script") ? p() : h(), g.setImmediate = r, g.clearImmediate = o
        }
      }("undefined" == typeof self ? void 0 === t ? this : t : self)
    }).call(e, n(30), n(77))
  }, function(t, e, n) {
    t.exports = n(394)
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      var e = new a(t),
        n = i(a.prototype.request, e);
      return o.extend(n, a.prototype, e), o.extend(n, e), n
    }
    var o = n(12),
      i = n(153),
      a = n(395),
      s = n(109),
      u = r(s);
    u.Axios = a, u.create = function t(e) {
      return r(o.merge(s, e))
    }, u.Cancel = n(158), u.CancelToken = n(409), u.isCancel = n(157), u.all = function t(e) {
      return Promise.all(e)
    }, u.spread = n(410), t.exports = u, t.exports.default = u
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      this.defaults = t, this.interceptors = {
        request: new a,
        response: new a
      }
    }
    var o = n(109),
      i = n(12),
      a = n(404),
      s = n(405);
    r.prototype.request = function t(e) {
      "string" == typeof e && (e = i.merge({
        url: arguments[0]
      }, arguments[1])), e = i.merge(o, this.defaults, {
        method: "get"
      }, e), e.method = e.method.toLowerCase();
      var n = [s, void 0],
        r = Promise.resolve(e);
      for (this.interceptors.request.forEach(function t(e) {
        n.unshift(e.fulfilled, e.rejected)
      }), this.interceptors.response.forEach(function t(e) {
        n.push(e.fulfilled, e.rejected)
      }); n.length;) r = r.then(n.shift(), n.shift());
      return r
    }, i.forEach(["delete", "get", "head", "options"], function t(e) {
      r.prototype[e] = function(t, n) {
        return this.request(i.merge(n || {}, {
          method: e,
          url: t
        }))
      }
    }), i.forEach(["post", "put", "patch"], function t(e) {
      r.prototype[e] = function(t, n, r) {
        return this.request(i.merge(r || {}, {
          method: e,
          url: t,
          data: n
        }))
      }
    }), t.exports = r
  }, function(t, e, n) {
    "use strict";
    var r = n(12);
    t.exports = function t(e, n) {
      r.forEach(e, function t(r, o) {
        o !== n && o.toUpperCase() === n.toUpperCase() && (e[n] = r, delete e[o])
      })
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(156);
    t.exports = function t(e, n, o) {
      var i = o.config.validateStatus;
      o.status && i && !i(o.status) ? n(r("Request failed with status code " + o.status, o.config, null, o.request, o)) : e(o)
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n, r, o, i) {
      return e.config = n, r && (e.code = r), e.request = o, e.response = i, e
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      return encodeURIComponent(t).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]")
    }
    var o = n(12);
    t.exports = function t(e, n, i) {
      if (!n) return e;
      var a;
      if (i) a = i(n);
      else if (o.isURLSearchParams(n)) a = n.toString();
      else {
        var s = [];
        o.forEach(n, function t(e, n) {
          null !== e && void 0 !== e && (o.isArray(e) && (n += "[]"), o.isArray(e) || (e = [e]), o.forEach(e, function t(e) {
            o.isDate(e) ? e = e.toISOString() : o.isObject(e) && (e = JSON.stringify(e)), s.push(r(n) + "=" + r(e))
          }))
        }), a = s.join("&")
      }
      return a && (e += (-1 === e.indexOf("?") ? "?" : "&") + a), e
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(12),
      o = ["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"];
    t.exports = function t(e) {
      var n = {},
        i, a, s;
      return e ? (r.forEach(e.split("\n"), function t(e) {
        if (s = e.indexOf(":"), i = r.trim(e.substr(0, s)).toLowerCase(), a = r.trim(e.substr(s + 1)), i) {
          if (n[i] && o.indexOf(i) >= 0) return;
          n[i] = "set-cookie" === i ? (n[i] ? n[i] : []).concat([a]) : n[i] ? n[i] + ", " + a : a
        }
      }), n) : n
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(12);
    t.exports = r.isStandardBrowserEnv() ? function t() {
      function e(t) {
        var e = t;
        return n && (o.setAttribute("href", e), e = o.href), o.setAttribute("href", e), {
          href: o.href,
          protocol: o.protocol ? o.protocol.replace(/:$/, "") : "",
          host: o.host,
          search: o.search ? o.search.replace(/^\?/, "") : "",
          hash: o.hash ? o.hash.replace(/^#/, "") : "",
          hostname: o.hostname,
          port: o.port,
          pathname: "/" === o.pathname.charAt(0) ? o.pathname : "/" + o.pathname
        }
      }
      var n = /(msie|trident)/i.test(navigator.userAgent),
        o = document.createElement("a"),
        i;
      return i = e(window.location.href),
        function t(n) {
          var o = r.isString(n) ? e(n) : n;
          return o.protocol === i.protocol && o.host === i.host
        }
    }() : function t() {
      return function t() {
        return !0
      }
    }()
  }, function(t, e, n) {
    "use strict";

    function r() {
      this.message = "String contains an invalid character"
    }

    function o(t) {
      for (var e = String(t), n = "", o, a, s = 0, u = i; e.charAt(0 | s) || (u = "=", s % 1); n += u.charAt(63 & o >> 8 - s % 1 * 8)) {
        if ((a = e.charCodeAt(s += .75)) > 255) throw new r;
        o = o << 8 | a
      }
      return n
    }
    var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    r.prototype = new Error, r.prototype.code = 5, r.prototype.name = "InvalidCharacterError", t.exports = o
  }, function(t, e, n) {
    "use strict";
    var r = n(12);
    t.exports = r.isStandardBrowserEnv() ? function t() {
      return {
        write: function t(e, n, o, i, a, s) {
          var u = [];
          u.push(e + "=" + encodeURIComponent(n)), r.isNumber(o) && u.push("expires=" + new Date(o).toGMTString()), r.isString(i) && u.push("path=" + i), r.isString(a) && u.push("domain=" + a), !0 === s && u.push("secure"), document.cookie = u.join("; ")
        },
        read: function t(e) {
          var n = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)"));
          return n ? decodeURIComponent(n[3]) : null
        },
        remove: function t(e) {
          this.write(e, "", Date.now() - 864e5)
        }
      }
    }() : function t() {
      return {
        write: function t() {},
        read: function t() {
          return null
        },
        remove: function t() {}
      }
    }()
  }, function(t, e, n) {
    "use strict";

    function r() {
      this.handlers = []
    }
    var o = n(12);
    r.prototype.use = function t(e, n) {
      return this.handlers.push({
        fulfilled: e,
        rejected: n
      }), this.handlers.length - 1
    }, r.prototype.eject = function t(e) {
      this.handlers[e] && (this.handlers[e] = null)
    }, r.prototype.forEach = function t(e) {
      o.forEach(this.handlers, function t(n) {
        null !== n && e(n)
      })
    }, t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      t.cancelToken && t.cancelToken.throwIfRequested()
    }
    var o = n(12),
      i = n(406),
      a = n(157),
      s = n(109),
      u = n(407),
      c = n(408);
    t.exports = function t(e) {
      return r(e), e.baseURL && !u(e.url) && (e.url = c(e.baseURL, e.url)), e.headers = e.headers || {}, e.data = i(e.data, e.headers, e.transformRequest), e.headers = o.merge(e.headers.common || {}, e.headers[e.method] || {}, e.headers || {}), o.forEach(["delete", "get", "head", "post", "put", "patch", "common"], function t(n) {
        delete e.headers[n]
      }), (e.adapter || s.adapter)(e).then(function t(n) {
        return r(e), n.data = i(n.data, n.headers, e.transformResponse), n
      }, function t(n) {
        return a(n) || (r(e), n && n.response && (n.response.data = i(n.response.data, n.response.headers, e.transformResponse))), Promise.reject(n)
      })
    }
  }, function(t, e, n) {
    "use strict";
    var r = n(12);
    t.exports = function t(e, n, o) {
      return r.forEach(o, function t(r) {
        e = r(e, n)
      }), e
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e) {
      return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n) {
      return n ? e.replace(/\/+$/, "") + "/" + n.replace(/^\/+/, "") : e
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      if ("function" != typeof t) throw new TypeError("executor must be a function.");
      var e;
      this.promise = new Promise(function t(n) {
        e = n
      });
      var n = this;
      t(function t(r) {
        n.reason || (n.reason = new o(r), e(n.reason))
      })
    }
    var o = n(158);
    r.prototype.throwIfRequested = function t() {
      if (this.reason) throw this.reason
    }, r.source = function t() {
      var e;
      return {
        token: new r(function t(n) {
          e = n
        }),
        cancel: e
      }
    }, t.exports = r
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e) {
      return function t(n) {
        return e.apply(null, n)
      }
    }
  }, function(t, e, n) {
    (function(e) {
      (function() {
        var n, r, o, i, a, s;
        "undefined" != typeof performance && null !== performance && performance.now ? t.exports = function() {
          return performance.now()
        } : void 0 !== e && null !== e && e.hrtime ? (t.exports = function() {
          return (n() - a) / 1e6
        }, r = e.hrtime, n = function() {
          var t;
          return t = r(), 1e9 * t[0] + t[1]
        }, i = n(), s = 1e9 * e.uptime(), a = i - s) : Date.now ? (t.exports = function() {
          return Date.now() - o
        }, o = Date.now()) : (t.exports = function() {
          return (new Date).getTime() - o
        }, o = (new Date).getTime())
      }).call(this)
    }).call(e, n(77))
  }, function(t, e, n) {
    "use strict";

    function r() {}

    function o(t, e, n) {
      this.fn = t, this.context = e, this.once = n || !1
    }

    function i(t, e, n, r, i) {
      if ("function" != typeof n) throw new TypeError("The listener must be a function");
      var a = new o(n, r || t, i),
        s = c ? c + e : e;
      return t._events[s] ? t._events[s].fn ? t._events[s] = [t._events[s], a] : t._events[s].push(a) : (t._events[s] = a, t._eventsCount++), t
    }

    function a(t, e) {
      0 == --t._eventsCount ? t._events = new r : delete t._events[e]
    }

    function s() {
      this._events = new r, this._eventsCount = 0
    }
    var u = Object.prototype.hasOwnProperty,
      c = "~";
    Object.create && (r.prototype = Object.create(null), (new r).__proto__ || (c = !1)), s.prototype.eventNames = function t() {
      var e = [],
        n, r;
      if (0 === this._eventsCount) return e;
      for (r in n = this._events) u.call(n, r) && e.push(c ? r.slice(1) : r);
      return Object.getOwnPropertySymbols ? e.concat(Object.getOwnPropertySymbols(n)) : e
    }, s.prototype.listeners = function t(e) {
      var n = c ? c + e : e,
        r = this._events[n];
      if (!r) return [];
      if (r.fn) return [r.fn];
      for (var o = 0, i = r.length, a = new Array(i); o < i; o++) a[o] = r[o].fn;
      return a
    }, s.prototype.listenerCount = function t(e) {
      var n = c ? c + e : e,
        r = this._events[n];
      return r ? r.fn ? 1 : r.length : 0
    }, s.prototype.emit = function t(e, n, r, o, i, a) {
      var s = c ? c + e : e;
      if (!this._events[s]) return !1;
      var u = this._events[s],
        l = arguments.length,
        p, h;
      if (u.fn) {
        switch (u.once && this.removeListener(e, u.fn, void 0, !0), l) {
          case 1:
            return u.fn.call(u.context), !0;
          case 2:
            return u.fn.call(u.context, n), !0;
          case 3:
            return u.fn.call(u.context, n, r), !0;
          case 4:
            return u.fn.call(u.context, n, r, o), !0;
          case 5:
            return u.fn.call(u.context, n, r, o, i), !0;
          case 6:
            return u.fn.call(u.context, n, r, o, i, a), !0
        }
        for (h = 1, p = new Array(l - 1); h < l; h++) p[h - 1] = arguments[h];
        u.fn.apply(u.context, p)
      } else {
        var f = u.length,
          d;
        for (h = 0; h < f; h++) switch (u[h].once && this.removeListener(e, u[h].fn, void 0, !0), l) {
          case 1:
            u[h].fn.call(u[h].context);
            break;
          case 2:
            u[h].fn.call(u[h].context, n);
            break;
          case 3:
            u[h].fn.call(u[h].context, n, r);
            break;
          case 4:
            u[h].fn.call(u[h].context, n, r, o);
            break;
          default:
            if (!p)
              for (d = 1, p = new Array(l - 1); d < l; d++) p[d - 1] = arguments[d];
            u[h].fn.apply(u[h].context, p)
        }
      }
      return !0
    }, s.prototype.on = function t(e, n, r) {
      return i(this, e, n, r, !1)
    }, s.prototype.once = function t(e, n, r) {
      return i(this, e, n, r, !0)
    }, s.prototype.removeListener = function t(e, n, r, o) {
      var i = c ? c + e : e;
      if (!this._events[i]) return this;
      if (!n) return a(this, i), this;
      var s = this._events[i];
      if (s.fn) s.fn !== n || o && !s.once || r && s.context !== r || a(this, i);
      else {
        for (var u = 0, l = [], p = s.length; u < p; u++)(s[u].fn !== n || o && !s[u].once || r && s[u].context !== r) && l.push(s[u]);
        l.length ? this._events[i] = 1 === l.length ? l[0] : l : a(this, i)
      }
      return this
    }, s.prototype.removeAllListeners = function t(e) {
      var n;
      return e ? (n = c ? c + e : e, this._events[n] && a(this, n)) : (this._events = new r, this._eventsCount = 0), this
    }, s.prototype.off = s.prototype.removeListener, s.prototype.addListener = s.prototype.on, s.prefixed = c, s.EventEmitter = s, t.exports = s
  }, function(t, e, n) {
    function r(t) {
      return function(e, n, r) {
        return r && "number" != typeof r && i(e, n, r) && (n = r = void 0), e = a(e), void 0 === n ? (n = e, e = 0) : n = a(n), r = void 0 === r ? e < n ? 1 : -1 : a(r), o(e, n, r, t)
      }
    }
    var o = n(414),
      i = n(148),
      a = n(150);
    t.exports = r
  }, function(t, e) {
    function n(t, e, n, i) {
      for (var a = -1, s = o(r((e - t) / (n || 1)), 0), u = Array(s); s--;) u[i ? s : ++a] = t, t += n;
      return u
    }
    var r = Math.ceil,
      o = Math.max;
    t.exports = n
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      for (var e = new Array(t), n = 0; n < t; ++n) e[n] = n;
      return e
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      var e = ["'use strict'", "var CACHED={}"],
        n = [],
        r = t.funcName + "_cwise_thunk";
      e.push(["return function ", r, "(", t.shimArgs.join(","), "){"].join(""));
      for (var i = [], a = [], s = [
        ["array", t.arrayArgs[0], ".shape.slice(", Math.max(0, t.arrayBlockIndices[0]), t.arrayBlockIndices[0] < 0 ? "," + t.arrayBlockIndices[0] + ")" : ")"].join("")
      ], u = [], c = [], l = 0; l < t.arrayArgs.length; ++l) {
        var p = t.arrayArgs[l];
        n.push(["t", p, "=array", p, ".dtype,", "r", p, "=array", p, ".order"].join("")), i.push("t" + p), i.push("r" + p), a.push("t" + p), a.push("r" + p + ".join()"), s.push("array" + p + ".data"), s.push("array" + p + ".stride"), s.push("array" + p + ".offset|0"), l > 0 && (u.push("array" + t.arrayArgs[0] + ".shape.length===array" + p + ".shape.length+" + (Math.abs(t.arrayBlockIndices[0]) - Math.abs(t.arrayBlockIndices[l]))), c.push("array" + t.arrayArgs[0] + ".shape[shapeIndex+" + Math.max(0, t.arrayBlockIndices[0]) + "]===array" + p + ".shape[shapeIndex+" + Math.max(0, t.arrayBlockIndices[l]) + "]"))
      }
      t.arrayArgs.length > 1 && (e.push("if (!(" + u.join(" && ") + ")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"), e.push("for(var shapeIndex=array" + t.arrayArgs[0] + ".shape.length-" + Math.abs(t.arrayBlockIndices[0]) + "; shapeIndex--\x3e0;) {"), e.push("if (!(" + c.join(" && ") + ")) throw new Error('cwise: Arrays do not all have the same shape!')"), e.push("}"));
      for (var l = 0; l < t.scalarArgs.length; ++l) s.push("scalar" + t.scalarArgs[l]);
      return n.push(["type=[", a.join(","), "].join()"].join("")), n.push("proc=CACHED[type]"), e.push("var " + n.join(",")), e.push(["if(!proc){", "CACHED[type]=proc=compile([", i.join(","), "])}", "return proc(", s.join(","), ")}"].join("")), t.debug && console.log("-----Generated thunk:\n" + e.join("\n") + "\n----------"), new Function("compile", e.join("\n"))(o.bind(void 0, t))
    }
    var o = n(417);
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      var r = t.length,
        o = e.arrayArgs.length,
        i = e.indexArgs.length > 0,
        a = [],
        s = [],
        u = 0,
        c = 0,
        l, p;
      for (l = 0; l < r; ++l) s.push(["i", l, "=0"].join(""));
      for (p = 0; p < o; ++p)
        for (l = 0; l < r; ++l) c = u, u = t[l], 0 === l ? s.push(["d", p, "s", l, "=t", p, "p", u].join("")) : s.push(["d", p, "s", l, "=(t", p, "p", u, "-s", c, "*t", p, "p", c, ")"].join(""));
      for (s.length > 0 && a.push("var " + s.join(",")), l = r - 1; l >= 0; --l) u = t[l], a.push(["for(i", l, "=0;i", l, "<s", u, ";++i", l, "){"].join(""));
      for (a.push(n), l = 0; l < r; ++l) {
        for (c = u, u = t[l], p = 0; p < o; ++p) a.push(["p", p, "+=d", p, "s", l].join(""));
        i && (l > 0 && a.push(["index[", c, "]-=s", c].join("")), a.push(["++index[", u, "]"].join(""))), a.push("}")
      }
      return a.join("\n")
    }

    function o(t, e, n, o) {
      for (var i = e.length, a = n.arrayArgs.length, s = n.blockSize, u = n.indexArgs.length > 0, c = [], l = 0; l < a; ++l) c.push(["var offset", l, "=p", l].join(""));
      for (var l = t; l < i; ++l) c.push(["for(var j" + l + "=SS[", e[l], "]|0;j", l, ">0;){"].join("")), c.push(["if(j", l, "<", s, "){"].join("")), c.push(["s", e[l], "=j", l].join("")), c.push(["j", l, "=0"].join("")), c.push(["}else{s", e[l], "=", s].join("")), c.push(["j", l, "-=", s, "}"].join("")), u && c.push(["index[", e[l], "]=j", l].join(""));
      for (var l = 0; l < a; ++l) {
        for (var p = ["offset" + l], h = t; h < i; ++h) p.push(["j", h, "*t", l, "p", e[h]].join(""));
        c.push(["p", l, "=(", p.join("+"), ")"].join(""))
      }
      c.push(r(e, n, o));
      for (var l = t; l < i; ++l) c.push("}");
      return c.join("\n")
    }

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

    function a(t, e, n) {
      for (var r = t.body, o = [], i = [], a = 0; a < t.args.length; ++a) {
        var s = t.args[a];
        if (!(s.count <= 0)) {
          var u = new RegExp(s.name, "g"),
            c = "",
            l = e.arrayArgs.indexOf(a);
          switch (e.argTypes[a]) {
            case "offset":
              var p = e.offsetArgIndex.indexOf(a);
              l = e.offsetArgs[p].array, c = "+q" + p;
            case "array":
              c = "p" + l + c;
              var h = "l" + a,
                f = "a" + l;
              if (0 === e.arrayBlockIndices[l]) 1 === s.count ? "generic" === n[l] ? s.lvalue ? (o.push(["var ", h, "=", f, ".get(", c, ")"].join("")), r = r.replace(u, h), i.push([f, ".set(", c, ",", h, ")"].join(""))) : r = r.replace(u, [f, ".get(", c, ")"].join("")) : r = r.replace(u, [f, "[", c, "]"].join("")) : "generic" === n[l] ? (o.push(["var ", h, "=", f, ".get(", c, ")"].join("")), r = r.replace(u, h), s.lvalue && i.push([f, ".set(", c, ",", h, ")"].join(""))) : (o.push(["var ", h, "=", f, "[", c, "]"].join("")), r = r.replace(u, h), s.lvalue && i.push([f, "[", c, "]=", h].join("")));
              else {
                for (var d = [s.name], m = [c], y = 0; y < Math.abs(e.arrayBlockIndices[l]); y++) d.push("\\s*\\[([^\\]]+)\\]"), m.push("$" + (y + 1) + "*t" + l + "b" + y);
                if (u = new RegExp(d.join(""), "g"), c = m.join("+"), "generic" === n[l]) throw new Error("cwise: Generic arrays not supported in combination with blocks!");
                r = r.replace(u, [f, "[", c, "]"].join(""))
              }
              break;
            case "scalar":
              r = r.replace(u, "Y" + e.scalarArgs.indexOf(a));
              break;
            case "index":
              r = r.replace(u, "index");
              break;
            case "shape":
              r = r.replace(u, "shape")
          }
        }
      }
      return [o.join("\n"), r, i.join("\n")].join("\n").trim()
    }

    function s(t) {
      for (var e = new Array(t.length), n = !0, r = 0; r < t.length; ++r) {
        var o = t[r],
          i = o.match(/\d+/);
        i = i ? i[0] : "", 0 === o.charAt(0) ? e[r] = "u" + o.charAt(1) + i : e[r] = o.charAt(0) + i, r > 0 && (n = n && e[r] === e[r - 1])
      }
      return n ? e[0] : e.join("")
    }

    function u(t, e) {
      for (var n = e[1].length - Math.abs(t.arrayBlockIndices[0]) | 0, u = new Array(t.arrayArgs.length), l = new Array(t.arrayArgs.length), p = 0; p < t.arrayArgs.length; ++p) l[p] = e[2 * p], u[p] = e[2 * p + 1];
      for (var h = [], f = [], d = [], m = [], y = [], p = 0; p < t.arrayArgs.length; ++p) {
        t.arrayBlockIndices[p] < 0 ? (d.push(0), m.push(n), h.push(n), f.push(n + t.arrayBlockIndices[p])) : (d.push(t.arrayBlockIndices[p]), m.push(t.arrayBlockIndices[p] + n), h.push(0), f.push(t.arrayBlockIndices[p]));
        for (var v = [], g = 0; g < u[p].length; g++) d[p] <= u[p][g] && u[p][g] < m[p] && v.push(u[p][g] - d[p]);
        y.push(v)
      }
      for (var _ = ["SS"], b = ["'use strict'"], x = [], g = 0; g < n; ++g) x.push(["s", g, "=SS[", g, "]"].join(""));
      for (var p = 0; p < t.arrayArgs.length; ++p) {
        _.push("a" + p), _.push("t" + p), _.push("p" + p);
        for (var g = 0; g < n; ++g) x.push(["t", p, "p", g, "=t", p, "[", d[p] + g, "]"].join(""));
        for (var g = 0; g < Math.abs(t.arrayBlockIndices[p]); ++g) x.push(["t", p, "b", g, "=t", p, "[", h[p] + g, "]"].join(""))
      }
      for (var p = 0; p < t.scalarArgs.length; ++p) _.push("Y" + p);
      if (t.shapeArgs.length > 0 && x.push("shape=SS.slice(0)"), t.indexArgs.length > 0) {
        for (var w = new Array(n), p = 0; p < n; ++p) w[p] = "0";
        x.push(["index=[", w.join(","), "]"].join(""))
      }
      for (var p = 0; p < t.offsetArgs.length; ++p) {
        for (var S = t.offsetArgs[p], T = [], g = 0; g < S.offset.length; ++g) 0 !== S.offset[g] && (1 === S.offset[g] ? T.push(["t", S.array, "p", g].join("")) : T.push([S.offset[g], "*t", S.array, "p", g].join("")));
        0 === T.length ? x.push("q" + p + "=0") : x.push(["q", p, "=", T.join("+")].join(""))
      }
      var P = c([].concat(t.pre.thisVars).concat(t.body.thisVars).concat(t.post.thisVars));
      x = x.concat(P), x.length > 0 && b.push("var " + x.join(","));
      for (var p = 0; p < t.arrayArgs.length; ++p) b.push("p" + p + "|=0");
      t.pre.body.length > 3 && b.push(a(t.pre, t, l));
      var C = a(t.body, t, l),
        k = i(y);
      k < n ? b.push(o(k, y[0], t, C)) : b.push(r(y[0], t, C)), t.post.body.length > 3 && b.push(a(t.post, t, l)), t.debug && console.log("-----Generated cwise routine for ", e, ":\n" + b.join("\n") + "\n----------");
      var O = [t.funcName || "unnamed", "_cwise_loop_", u[0].join("s"), "m", k, s(l)].join("");
      return new Function(["function ", O, "(", _.join(","), "){", b.join("\n"), "} return ", O].join(""))()
    }
    var c = n(160);
    t.exports = u
  }, function(t, e, n) {
    "use strict";
    (function(e) {
      function r(t, e, n) {
        this.name = t, this.lvalue = e, this.rvalue = n, this.count = 0
      }

      function o(t, e, n, r) {
        this.body = t, this.args = e, this.thisVars = n, this.localVars = r
      }

      function i(t) {
        if ("eval" === t) throw new Error("cwise-parser: eval() not allowed");
        return "undefined" != typeof window ? t in window : void 0 !== e ? t in e : "undefined" != typeof self && t in self
      }

      function a(t) {
        for (var e = t.body[0].expression.callee.params, n = new Array(e.length), r = 0; r < e.length; ++r) n[r] = e[r].name;
        return n
      }

      function s(t) {
        function e(t) {
          var e = y + t.replace(/\_/g, "__");
          return w.push(e), e
        }

        function n(t) {
          var e = "this_" + t.replace(/\_/g, "__");
          return S.push(e), e
        }

        function s(t, e) {
          for (var n = t.range[0], r = t.range[1], o = n + 1; o < r; ++o) b[o] = "";
          b[n] = e
        }

        function p(t) {
          return "'" + t.replace(/\_/g, "\\_").replace(/\'/g, "'") + "'"
        }

        function h(t) {
          return b.slice(t.range[0], t.range[1]).join("")
        }

        function f(t) {
          return "AssignmentExpression" === t.parent.type && t.parent.left === t ? "=" === t.parent.operator ? P : P | C : "UpdateExpression" === t.parent.type ? P | C : C
        }
        for (var d = ["(", t, ")()"].join(""), m = u.parse(d, {
          range: !0
        }), y = "_inline_" + l++ + "_", v = a(m), g = new Array(v.length), _ = 0; _ < v.length; ++_) g[_] = new r([y, "arg", _, "_"].join(""), !1, !1);
        for (var b = new Array(d.length), _ = 0, x = d.length; _ < x; ++_) b[_] = d.charAt(_);
        var w = [],
          S = [],
          T = !1,
          P = 1,
          C = 2;
        return function t(r, o) {
          if (r.parent = o, "MemberExpression" === r.type) r.computed ? (t(r.object, r), t(r.property, r)) : "ThisExpression" === r.object.type ? s(r, n(r.property.name)) : t(r.object, r);
          else {
            if ("ThisExpression" === r.type) throw new Error("cwise-parser: Computed this is not allowed");
            if ("Identifier" === r.type) {
              var a = r.name,
                u = v.indexOf(a);
              if (u >= 0) {
                var c = g[u],
                  l = f(r);
                l & P && (c.lvalue = !0), l & C && (c.rvalue = !0), ++c.count, s(r, c.name)
              } else i(a) || s(r, e(a))
            } else if ("Literal" === r.type) "string" == typeof r.value && s(r, p(r.value));
            else {
              if ("WithStatement" === r.type) throw new Error("cwise-parser: with() statements not allowed");
              for (var h = Object.keys(r), d = 0, m = h.length; d < m; ++d)
                if ("parent" !== h[d]) {
                  var y = r[h[d]];
                  if (y)
                    if (y instanceof Array)
                      for (var _ = 0; _ < y.length; ++_) y[_] && "string" == typeof y[_].type && t(y[_], r);
                    else "string" == typeof y.type && t(y, r)
                }
            }
          }
        }(m.body[0].expression.callee.body, void 0), c(w), c(S), new o(h(m.body[0].expression.callee.body), g, S, w)
      }
      var u = n(419),
        c = n(160),
        l = 0;
      t.exports = s
    }).call(e, n(30))
  }, function(t, e, n) {
    var r, o, i;
    ! function(n, a) {
      "use strict";
      o = [e], r = a, void 0 !== (i = "function" == typeof r ? r.apply(e, o) : r) && (t.exports = i)
    }(this, function(t) {
      "use strict";

      function e(t, e) {
        if (!t) throw new Error("ASSERT: " + e)
      }

      function n(t) {
        return t >= 48 && t <= 57
      }

      function r(t) {
        return "0123456789abcdefABCDEF".indexOf(t) >= 0
      }

      function o(t) {
        return "01234567".indexOf(t) >= 0
      }

      function i(t) {
        return 32 === t || 9 === t || 11 === t || 12 === t || 160 === t || t >= 5760 && [5760, 6158, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279].indexOf(t) >= 0
      }

      function a(t) {
        return 10 === t || 13 === t || 8232 === t || 8233 === t
      }

      function s(t) {
        return 36 === t || 95 === t || t >= 65 && t <= 90 || t >= 97 && t <= 122 || 92 === t || t >= 128 && ie.NonAsciiIdentifierStart.test(String.fromCharCode(t))
      }

      function u(t) {
        return 36 === t || 95 === t || t >= 65 && t <= 90 || t >= 97 && t <= 122 || t >= 48 && t <= 57 || 92 === t || t >= 128 && ie.NonAsciiIdentifierPart.test(String.fromCharCode(t))
      }

      function c(t) {
        switch (t) {
          case "class":
          case "enum":
          case "export":
          case "extends":
          case "import":
          case "super":
            return !0;
          default:
            return !1
        }
      }

      function l(t) {
        switch (t) {
          case "implements":
          case "interface":
          case "package":
          case "private":
          case "protected":
          case "public":
          case "static":
          case "yield":
          case "let":
            return !0;
          default:
            return !1
        }
      }

      function p(t) {
        return "eval" === t || "arguments" === t
      }

      function h(t) {
        if (ue && l(t)) return !0;
        switch (t.length) {
          case 2:
            return "if" === t || "in" === t || "do" === t;
          case 3:
            return "var" === t || "for" === t || "new" === t || "try" === t || "let" === t;
          case 4:
            return "this" === t || "else" === t || "case" === t || "void" === t || "with" === t || "enum" === t;
          case 5:
            return "while" === t || "break" === t || "catch" === t || "throw" === t || "const" === t || "yield" === t || "class" === t || "super" === t;
          case 6:
            return "return" === t || "typeof" === t || "delete" === t || "switch" === t || "export" === t || "import" === t;
          case 7:
            return "default" === t || "finally" === t || "extends" === t;
          case 8:
            return "function" === t || "continue" === t || "debugger" === t;
          case 10:
            return "instanceof" === t;
          default:
            return !1
        }
      }

      function f(t, n, r, o, i) {
        var a, s;
        e("number" == typeof r, "Comment must have valid position"), me.lastCommentStart >= r || (me.lastCommentStart = r, a = {
          type: t,
          value: n
        }, ye.range && (a.range = [r, o]), ye.loc && (a.loc = i), ye.comments.push(a), ye.attachComment && (ye.leadingComments.push(a), ye.trailingComments.push(a)))
      }

      function d(t) {
        var e, n, r, o;
        for (e = ce - t, n = {
          start: {
            line: le,
            column: ce - pe - t
          }
        }; ce < he;)
          if (r = se.charCodeAt(ce), ++ce, a(r)) return ye.comments && (o = se.slice(e + t, ce - 1), n.end = {
            line: le,
            column: ce - pe - 1
          }, f("Line", o, e, ce - 1, n)), 13 === r && 10 === se.charCodeAt(ce) && ++ce, ++le, void(pe = ce);
        ye.comments && (o = se.slice(e + t, ce), n.end = {
          line: le,
          column: ce - pe
        }, f("Line", o, e, ce, n))
      }

      function m() {
        var t, e, n, r;
        for (ye.comments && (t = ce - 2, e = {
          start: {
            line: le,
            column: ce - pe - 2
          }
        }); ce < he;)
          if (n = se.charCodeAt(ce), a(n)) 13 === n && 10 === se.charCodeAt(ce + 1) && ++ce, ++le, ++ce, pe = ce, ce >= he && N({}, oe.UnexpectedToken, "ILLEGAL");
          else if (42 === n) {
            if (47 === se.charCodeAt(ce + 1)) return ++ce, ++ce, void(ye.comments && (r = se.slice(t + 2, ce - 2), e.end = {
              line: le,
              column: ce - pe
            }, f("Block", r, t, ce, e)));
            ++ce
          } else ++ce;
        N({}, oe.UnexpectedToken, "ILLEGAL")
      }

      function y() {
        var t, e;
        for (e = 0 === ce; ce < he;)
          if (t = se.charCodeAt(ce), i(t)) ++ce;
          else if (a(t)) ++ce, 13 === t && 10 === se.charCodeAt(ce) && ++ce, ++le, pe = ce, e = !0;
          else if (47 === t)
            if (47 === (t = se.charCodeAt(ce + 1))) ++ce, ++ce, d(2), e = !0;
            else {
              if (42 !== t) break;
              ++ce, ++ce, m()
            } else if (e && 45 === t) {
            if (45 !== se.charCodeAt(ce + 1) || 62 !== se.charCodeAt(ce + 2)) break;
            ce += 3, d(3)
          } else {
            if (60 !== t) break;
            if ("!--" !== se.slice(ce + 1, ce + 4)) break;
            ++ce, ++ce, ++ce, ++ce, d(4)
          }
      }

      function v(t) {
        var e, n, o, i = 0;
        for (n = "u" === t ? 4 : 2, e = 0; e < n; ++e) {
          if (!(ce < he && r(se[ce]))) return "";
          o = se[ce++], i = 16 * i + "0123456789abcdef".indexOf(o.toLowerCase())
        }
        return String.fromCharCode(i)
      }

      function g() {
        var t, e;
        for (t = se.charCodeAt(ce++), e = String.fromCharCode(t), 92 === t && (117 !== se.charCodeAt(ce) && N({}, oe.UnexpectedToken, "ILLEGAL"), ++ce, t = v("u"), t && "\\" !== t && s(t.charCodeAt(0)) || N({}, oe.UnexpectedToken, "ILLEGAL"), e = t); ce < he && (t = se.charCodeAt(ce), u(t));) ++ce, e += String.fromCharCode(t), 92 === t && (e = e.substr(0, e.length - 1), 117 !== se.charCodeAt(ce) && N({}, oe.UnexpectedToken, "ILLEGAL"), ++ce, t = v("u"), t && "\\" !== t && u(t.charCodeAt(0)) || N({}, oe.UnexpectedToken, "ILLEGAL"), e += t);
        return e
      }

      function _() {
        var t, e;
        for (t = ce++; ce < he;) {
          if (92 === (e = se.charCodeAt(ce))) return ce = t, g();
          if (!u(e)) break;
          ++ce
        }
        return se.slice(t, ce)
      }

      function b() {
        var t, e, n;
        return t = ce, e = 92 === se.charCodeAt(ce) ? g() : _(), n = 1 === e.length ? Zt.Identifier : h(e) ? Zt.Keyword : "null" === e ? Zt.NullLiteral : "true" === e || "false" === e ? Zt.BooleanLiteral : Zt.Identifier, {
          type: n,
          value: e,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }
      }

      function x() {
        var t = ce,
          e = se.charCodeAt(ce),
          n, r = se[ce],
          o, i, a;
        switch (e) {
          case 46:
          case 40:
          case 41:
          case 59:
          case 44:
          case 123:
          case 125:
          case 91:
          case 93:
          case 58:
          case 63:
          case 126:
            return ++ce, ye.tokenize && (40 === e ? ye.openParenToken = ye.tokens.length : 123 === e && (ye.openCurlyToken = ye.tokens.length)), {
              type: Zt.Punctuator,
              value: String.fromCharCode(e),
              lineNumber: le,
              lineStart: pe,
              start: t,
              end: ce
            };
          default:
            if (61 === (n = se.charCodeAt(ce + 1))) switch (e) {
              case 43:
              case 45:
              case 47:
              case 60:
              case 62:
              case 94:
              case 124:
              case 37:
              case 38:
              case 42:
                return ce += 2, {
                  type: Zt.Punctuator,
                  value: String.fromCharCode(e) + String.fromCharCode(n),
                  lineNumber: le,
                  lineStart: pe,
                  start: t,
                  end: ce
                };
              case 33:
              case 61:
                return ce += 2, 61 === se.charCodeAt(ce) && ++ce, {
                  type: Zt.Punctuator,
                  value: se.slice(t, ce),
                  lineNumber: le,
                  lineStart: pe,
                  start: t,
                  end: ce
                }
            }
        }
        return ">>>=" === (a = se.substr(ce, 4)) ? (ce += 4, {
          type: Zt.Punctuator,
          value: a,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }) : ">>>" === (i = a.substr(0, 3)) || "<<=" === i || ">>=" === i ? (ce += 3, {
          type: Zt.Punctuator,
          value: i,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }) : (o = i.substr(0, 2), r === o[1] && "+-<>&|".indexOf(r) >= 0 || "=>" === o ? (ce += 2, {
          type: Zt.Punctuator,
          value: o,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }) : "<>=!+-*%&|^/".indexOf(r) >= 0 ? (++ce, {
          type: Zt.Punctuator,
          value: r,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }) : void N({}, oe.UnexpectedToken, "ILLEGAL"))
      }

      function w(t) {
        for (var e = ""; ce < he && r(se[ce]);) e += se[ce++];
        return 0 === e.length && N({}, oe.UnexpectedToken, "ILLEGAL"), s(se.charCodeAt(ce)) && N({}, oe.UnexpectedToken, "ILLEGAL"), {
          type: Zt.NumericLiteral,
          value: parseInt("0x" + e, 16),
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }
      }

      function S(t) {
        for (var e = "0" + se[ce++]; ce < he && o(se[ce]);) e += se[ce++];
        return (s(se.charCodeAt(ce)) || n(se.charCodeAt(ce))) && N({}, oe.UnexpectedToken, "ILLEGAL"), {
          type: Zt.NumericLiteral,
          value: parseInt(e, 8),
          octal: !0,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        }
      }

      function T() {
        var t, e;
        for (t = ce + 1; t < he; ++t) {
          if ("8" === (e = se[t]) || "9" === e) return !1;
          if (!o(e)) return !0
        }
        return !0
      }

      function P() {
        var t, r, i;
        if (i = se[ce], e(n(i.charCodeAt(0)) || "." === i, "Numeric literal must start with a decimal digit or a decimal point"), r = ce, t = "", "." !== i) {
          if (t = se[ce++], i = se[ce], "0" === t) {
            if ("x" === i || "X" === i) return ++ce, w(r);
            if (o(i) && T()) return S(r)
          }
          for (; n(se.charCodeAt(ce));) t += se[ce++];
          i = se[ce]
        }
        if ("." === i) {
          for (t += se[ce++]; n(se.charCodeAt(ce));) t += se[ce++];
          i = se[ce]
        }
        if ("e" === i || "E" === i)
          if (t += se[ce++], i = se[ce], "+" !== i && "-" !== i || (t += se[ce++]), n(se.charCodeAt(ce)))
            for (; n(se.charCodeAt(ce));) t += se[ce++];
          else N({}, oe.UnexpectedToken, "ILLEGAL");
        return s(se.charCodeAt(ce)) && N({}, oe.UnexpectedToken, "ILLEGAL"), {
          type: Zt.NumericLiteral,
          value: parseFloat(t),
          lineNumber: le,
          lineStart: pe,
          start: r,
          end: ce
        }
      }

      function C() {
        var t = "",
          n, r, i, s, u, c, l = !1,
          p, h;
        for (p = le, h = pe, n = se[ce], e("'" === n || '"' === n, "String literal must starts with a quote"), r = ce, ++ce; ce < he;) {
          if ((i = se[ce++]) === n) {
            n = "";
            break
          }
          if ("\\" === i)
            if ((i = se[ce++]) && a(i.charCodeAt(0))) ++le, "\r" === i && "\n" === se[ce] && ++ce, pe = ce;
            else switch (i) {
              case "u":
              case "x":
                c = ce, u = v(i), u ? t += u : (ce = c, t += i);
                break;
              case "n":
                t += "\n";
                break;
              case "r":
                t += "\r";
                break;
              case "t":
                t += "\t";
                break;
              case "b":
                t += "\b";
                break;
              case "f":
                t += "\f";
                break;
              case "v":
                t += "\v";
                break;
              default:
                o(i) ? (s = "01234567".indexOf(i), 0 !== s && (l = !0), ce < he && o(se[ce]) && (l = !0, s = 8 * s + "01234567".indexOf(se[ce++]), "0123".indexOf(i) >= 0 && ce < he && o(se[ce]) && (s = 8 * s + "01234567".indexOf(se[ce++]))), t += String.fromCharCode(s)) : t += i
            } else {
            if (a(i.charCodeAt(0))) break;
            t += i
          }
        }
        return "" !== n && N({}, oe.UnexpectedToken, "ILLEGAL"), {
          type: Zt.StringLiteral,
          value: t,
          octal: l,
          startLineNumber: p,
          startLineStart: h,
          lineNumber: le,
          lineStart: pe,
          start: r,
          end: ce
        }
      }

      function k(t, e) {
        var n;
        try {
          n = new RegExp(t, e)
        } catch (t) {
          N({}, oe.InvalidRegExp)
        }
        return n
      }

      function O() {
        var t, n, r, o, i;
        for (t = se[ce], e("/" === t, "Regular expression literal must start with a slash"), n = se[ce++], r = !1, o = !1; ce < he;)
          if (t = se[ce++], n += t, "\\" === t) t = se[ce++], a(t.charCodeAt(0)) && N({}, oe.UnterminatedRegExp), n += t;
          else if (a(t.charCodeAt(0))) N({}, oe.UnterminatedRegExp);
          else if (r) "]" === t && (r = !1);
          else {
            if ("/" === t) {
              o = !0;
              break
            }
            "[" === t && (r = !0)
          }
        return o || N({}, oe.UnterminatedRegExp), i = n.substr(1, n.length - 2), {
          value: i,
          literal: n
        }
      }

      function E() {
        var t, e, n, r;
        for (e = "", n = ""; ce < he && (t = se[ce], u(t.charCodeAt(0)));)
          if (++ce, "\\" === t && ce < he)
            if ("u" === (t = se[ce])) {
              if (++ce, r = ce, t = v("u"))
                for (n += t, e += "\\u"; r < ce; ++r) e += se[r];
              else ce = r, n += "u", e += "\\u";
              B({}, oe.UnexpectedToken, "ILLEGAL")
            } else e += "\\", B({}, oe.UnexpectedToken, "ILLEGAL");
          else n += t, e += t;
        return {
          value: n,
          literal: e
        }
      }

      function j() {
        var t, e, n, r, o;
        return de = null, y(), t = ce, e = O(), n = E(), o = k(e.value, n.value), ye.tokenize ? {
          type: Zt.RegularExpression,
          value: o,
          lineNumber: le,
          lineStart: pe,
          start: t,
          end: ce
        } : {
          literal: e.literal + n.literal,
          value: o,
          start: t,
          end: ce
        }
      }

      function A() {
        var t, e, n, r;
        return y(), t = ce, e = {
          start: {
            line: le,
            column: ce - pe
          }
        }, n = j(), e.end = {
          line: le,
          column: ce - pe
        }, ye.tokenize || (ye.tokens.length > 0 && (r = ye.tokens[ye.tokens.length - 1], r.range[0] === t && "Punctuator" === r.type && ("/" !== r.value && "/=" !== r.value || ye.tokens.pop())), ye.tokens.push({
          type: "RegularExpression",
          value: n.literal,
          range: [t, ce],
          loc: e
        })), n
      }

      function F(t) {
        return t.type === Zt.Identifier || t.type === Zt.Keyword || t.type === Zt.BooleanLiteral || t.type === Zt.NullLiteral
      }

      function M() {
        var t, e;
        if (!(t = ye.tokens[ye.tokens.length - 1])) return A();
        if ("Punctuator" === t.type) {
          if ("]" === t.value) return x();
          if (")" === t.value) return e = ye.tokens[ye.openParenToken - 1], !e || "Keyword" !== e.type || "if" !== e.value && "while" !== e.value && "for" !== e.value && "with" !== e.value ? x() : A();
          if ("}" === t.value) {
            if (ye.tokens[ye.openCurlyToken - 3] && "Keyword" === ye.tokens[ye.openCurlyToken - 3].type) {
              if (!(e = ye.tokens[ye.openCurlyToken - 4])) return x()
            } else {
              if (!ye.tokens[ye.openCurlyToken - 4] || "Keyword" !== ye.tokens[ye.openCurlyToken - 4].type) return x();
              if (!(e = ye.tokens[ye.openCurlyToken - 5])) return A()
            }
            return ee.indexOf(e.value) >= 0 ? x() : A()
          }
          return A()
        }
        return "Keyword" === t.type && "this" !== t.value ? A() : x()
      }

      function R() {
        var t;
        return y(), ce >= he ? {
          type: Zt.EOF,
          lineNumber: le,
          lineStart: pe,
          start: ce,
          end: ce
        } : (t = se.charCodeAt(ce), s(t) ? b() : 40 === t || 41 === t || 59 === t ? x() : 39 === t || 34 === t ? C() : 46 === t ? n(se.charCodeAt(ce + 1)) ? P() : x() : n(t) ? P() : ye.tokenize && 47 === t ? M() : x())
      }

      function D() {
        var t, e, n, r;
        return y(), t = {
          start: {
            line: le,
            column: ce - pe
          }
        }, e = R(), t.end = {
          line: le,
          column: ce - pe
        }, e.type !== Zt.EOF && (r = se.slice(e.start, e.end), ye.tokens.push({
          type: te[e.type],
          value: r,
          range: [e.start, e.end],
          loc: t
        })), e
      }

      function I() {
        var t;
        return t = de, ce = t.end, le = t.lineNumber, pe = t.lineStart, de = void 0 !== ye.tokens ? D() : R(), ce = t.end, le = t.lineNumber, pe = t.lineStart, t
      }

      function L() {
        var t, e, n;
        t = ce, e = le, n = pe, de = void 0 !== ye.tokens ? D() : R(), ce = t, le = e, pe = n
      }

      function z(t, e) {
        this.line = t, this.column = e
      }

      function U(t, e, n, r) {
        this.start = new z(t, e), this.end = new z(n, r)
      }

      function G() {
        var t, e, n, r;
        return t = ce, e = le, n = pe, y(), r = le !== e, ce = t, le = e, pe = n, r
      }

      function N(t, n) {
        var r, o = Array.prototype.slice.call(arguments, 2),
          i = n.replace(/%(\d)/g, function(t, n) {
            return e(n < o.length, "Message reference must be in range"), o[n]
          });
        throw "number" == typeof t.lineNumber ? (r = new Error("Line " + t.lineNumber + ": " + i), r.index = t.start, r.lineNumber = t.lineNumber, r.column = t.start - pe + 1) : (r = new Error("Line " + le + ": " + i), r.index = ce, r.lineNumber = le, r.column = ce - pe + 1), r.description = i, r
      }

      function B() {
        try {
          N.apply(null, arguments)
        } catch (t) {
          if (!ye.errors) throw t;
          ye.errors.push(t)
        }
      }

      function q(t) {
        if (t.type === Zt.EOF && N(t, oe.UnexpectedEOS), t.type === Zt.NumericLiteral && N(t, oe.UnexpectedNumber), t.type === Zt.StringLiteral && N(t, oe.UnexpectedString), t.type === Zt.Identifier && N(t, oe.UnexpectedIdentifier), t.type === Zt.Keyword) {
          if (c(t.value)) N(t, oe.UnexpectedReserved);
          else if (ue && l(t.value)) return void B(t, oe.StrictReservedWord);
          N(t, oe.UnexpectedToken, t.value)
        }
        N(t, oe.UnexpectedToken, t.value)
      }

      function V(t) {
        var e = I();
        e.type === Zt.Punctuator && e.value === t || q(e)
      }

      function H(t) {
        var e = I();
        e.type === Zt.Keyword && e.value === t || q(e)
      }

      function W(t) {
        return de.type === Zt.Punctuator && de.value === t
      }

      function X(t) {
        return de.type === Zt.Keyword && de.value === t
      }

      function Y() {
        var t;
        return de.type === Zt.Punctuator && ("=" === (t = de.value) || "*=" === t || "/=" === t || "%=" === t || "+=" === t || "-=" === t || "<<=" === t || ">>=" === t || ">>>=" === t || "&=" === t || "^=" === t || "|=" === t)
      }

      function $() {
        var t, e = ce,
          n = le,
          r = pe,
          o = de;
        return 59 === se.charCodeAt(ce) || W(";") ? void I() : (t = le, y(), le !== t ? (ce = e, le = n, pe = r, void(de = o)) : void(de.type === Zt.EOF || W("}") || q(de)))
      }

      function K(t) {
        return t.type === ne.Identifier || t.type === ne.MemberExpression
      }

      function J() {
        var t = [],
          e;
        for (e = de, V("["); !W("]");) W(",") ? (I(), t.push(null)) : (t.push(yt()), W("]") || V(","));
        return I(), fe.markEnd(fe.createArrayExpression(t), e)
      }

      function Q(t, e) {
        var n, r, o;
        return n = ue, o = de, r = qt(), e && ue && p(t[0].name) && B(e, oe.StrictParamName), ue = n, fe.markEnd(fe.createFunctionExpression(null, t, [], r), o)
      }

      function Z() {
        var t, e;
        return e = de, t = I(), t.type === Zt.StringLiteral || t.type === Zt.NumericLiteral ? (ue && t.octal && B(t, oe.StrictOctalLiteral), fe.markEnd(fe.createLiteral(t), e)) : fe.markEnd(fe.createIdentifier(t.value), e)
      }

      function tt() {
        var t, e, n, r, o, i;
        return t = de, i = de, t.type === Zt.Identifier ? (n = Z(), "get" !== t.value || W(":") ? "set" !== t.value || W(":") ? (V(":"), r = yt(), fe.markEnd(fe.createProperty("init", n, r), i)) : (e = Z(), V("("), t = de, t.type !== Zt.Identifier ? (V(")"), B(t, oe.UnexpectedToken, t.value), r = Q([])) : (o = [bt()], V(")"), r = Q(o, t)), fe.markEnd(fe.createProperty("set", e, r), i)) : (e = Z(), V("("), V(")"), r = Q([]), fe.markEnd(fe.createProperty("get", e, r), i))) : t.type !== Zt.EOF && t.type !== Zt.Punctuator ? (e = Z(), V(":"), r = yt(), fe.markEnd(fe.createProperty("init", e, r), i)) : void q(t)
      }

      function et() {
        var t = [],
          e, n, r, o, i = {},
          a = String,
          s;
        for (s = de, V("{"); !W("}");) e = tt(), n = e.key.type === ne.Identifier ? e.key.name : a(e.key.value), o = "init" === e.kind ? re.Data : "get" === e.kind ? re.Get : re.Set, r = "$" + n, Object.prototype.hasOwnProperty.call(i, r) ? (i[r] === re.Data ? ue && o === re.Data ? B({}, oe.StrictDuplicateProperty) : o !== re.Data && B({}, oe.AccessorDataProperty) : o === re.Data ? B({}, oe.AccessorDataProperty) : i[r] & o && B({}, oe.AccessorGetSet), i[r] |= o) : i[r] = o, t.push(e), W("}") || V(",");
        return V("}"), fe.markEnd(fe.createObjectExpression(t), s)
      }

      function nt() {
        var t;
        return V("("), t = vt(), V(")"), t
      }

      function rt() {
        var t, e, n, r;
        if (W("(")) return nt();
        if (W("[")) return J();
        if (W("{")) return et();
        if (t = de.type, r = de, t === Zt.Identifier) n = fe.createIdentifier(I().value);
        else if (t === Zt.StringLiteral || t === Zt.NumericLiteral) ue && de.octal && B(de, oe.StrictOctalLiteral), n = fe.createLiteral(I());
        else if (t === Zt.Keyword) {
          if (X("function")) return Wt();
          X("this") ? (I(), n = fe.createThisExpression()) : q(I())
        } else t === Zt.BooleanLiteral ? (e = I(), e.value = "true" === e.value, n = fe.createLiteral(e)) : t === Zt.NullLiteral ? (e = I(), e.value = null, n = fe.createLiteral(e)) : W("/") || W("/=") ? (n = void 0 !== ye.tokens ? fe.createLiteral(A()) : fe.createLiteral(j()), L()) : q(I());
        return fe.markEnd(n, r)
      }

      function ot() {
        var t = [];
        if (V("("), !W(")"))
          for (; ce < he && (t.push(yt()), !W(")"));) V(",");
        return V(")"), t
      }

      function it() {
        var t, e;
        return e = de, t = I(), F(t) || q(t), fe.markEnd(fe.createIdentifier(t.value), e)
      }

      function at() {
        return V("."), it()
      }

      function st() {
        var t;
        return V("["), t = vt(), V("]"), t
      }

      function ut() {
        var t, e, n;
        return n = de, H("new"), t = lt(), e = W("(") ? ot() : [], fe.markEnd(fe.createNewExpression(t, e), n)
      }

      function ct() {
        var t, e, n, r, o = me.allowIn;
        for (r = de, me.allowIn = !0, t = X("new") ? ut() : rt();;) {
          if (W(".")) n = at(), t = fe.createMemberExpression(".", t, n);
          else if (W("(")) e = ot(), t = fe.createCallExpression(t, e);
          else {
            if (!W("[")) break;
            n = st(), t = fe.createMemberExpression("[", t, n)
          }
          fe.markEnd(t, r)
        }
        return me.allowIn = o, t
      }

      function lt() {
        var t, n, r;
        for (e(me.allowIn, "callee of new expression always allow in keyword."), r = de, t = X("new") ? ut() : rt(); W(".") || W("[");) W("[") ? (n = st(), t = fe.createMemberExpression("[", t, n)) : (n = at(), t = fe.createMemberExpression(".", t, n)), fe.markEnd(t, r);
        return t
      }

      function pt() {
        var t, e, n = de;
        return t = ct(), de.type === Zt.Punctuator && (!W("++") && !W("--") || G() || (ue && t.type === ne.Identifier && p(t.name) && B({}, oe.StrictLHSPostfix), K(t) || B({}, oe.InvalidLHSInAssignment), e = I(), t = fe.markEnd(fe.createPostfixExpression(e.value, t), n))), t
      }

      function ht() {
        var t, e, n;
        return de.type !== Zt.Punctuator && de.type !== Zt.Keyword ? e = pt() : W("++") || W("--") ? (n = de, t = I(), e = ht(), ue && e.type === ne.Identifier && p(e.name) && B({}, oe.StrictLHSPrefix), K(e) || B({}, oe.InvalidLHSInAssignment), e = fe.createUnaryExpression(t.value, e), e = fe.markEnd(e, n)) : W("+") || W("-") || W("~") || W("!") ? (n = de, t = I(), e = ht(), e = fe.createUnaryExpression(t.value, e), e = fe.markEnd(e, n)) : X("delete") || X("void") || X("typeof") ? (n = de, t = I(), e = ht(), e = fe.createUnaryExpression(t.value, e), e = fe.markEnd(e, n), ue && "delete" === e.operator && e.argument.type === ne.Identifier && B({}, oe.StrictDelete)) : e = pt(), e
      }

      function ft(t, e) {
        var n = 0;
        if (t.type !== Zt.Punctuator && t.type !== Zt.Keyword) return 0;
        switch (t.value) {
          case "||":
            n = 1;
            break;
          case "&&":
            n = 2;
            break;
          case "|":
            n = 3;
            break;
          case "^":
            n = 4;
            break;
          case "&":
            n = 5;
            break;
          case "==":
          case "!=":
          case "===":
          case "!==":
            n = 6;
            break;
          case "<":
          case ">":
          case "<=":
          case ">=":
          case "instanceof":
            n = 7;
            break;
          case "in":
            n = e ? 7 : 0;
            break;
          case "<<":
          case ">>":
          case ">>>":
            n = 8;
            break;
          case "+":
          case "-":
            n = 9;
            break;
          case "*":
          case "/":
          case "%":
            n = 11
        }
        return n
      }

      function dt() {
        var t, e, n, r, o, i, a, s, u, c;
        if (t = de, u = ht(), r = de, 0 === (o = ft(r, me.allowIn))) return u;
        for (r.prec = o, I(), e = [t, de], a = ht(), i = [u, r, a];
             (o = ft(de, me.allowIn)) > 0;) {
          for (; i.length > 2 && o <= i[i.length - 2].prec;) a = i.pop(), s = i.pop().value, u = i.pop(), n = fe.createBinaryExpression(s, u, a), e.pop(), t = e[e.length - 1], fe.markEnd(n, t), i.push(n);
          r = I(), r.prec = o, i.push(r), e.push(de), n = ht(), i.push(n)
        }
        for (c = i.length - 1, n = i[c], e.pop(); c > 1;) n = fe.createBinaryExpression(i[c - 1].value, i[c - 2], n), c -= 2, t = e.pop(), fe.markEnd(n, t);
        return n
      }

      function mt() {
        var t, e, n, r, o;
        return o = de, t = dt(), W("?") && (I(), e = me.allowIn, me.allowIn = !0, n = yt(), me.allowIn = e, V(":"), r = yt(), t = fe.createConditionalExpression(t, n, r), fe.markEnd(t, o)), t
      }

      function yt() {
        var t, e, n, r, o;
        return t = de, o = de, r = e = mt(), Y() && (K(e) || B({}, oe.InvalidLHSInAssignment), ue && e.type === ne.Identifier && p(e.name) && B(t, oe.StrictLHSAssignment), t = I(), n = yt(), r = fe.markEnd(fe.createAssignmentExpression(t.value, e, n), o)), r
      }

      function vt() {
        var t, e = de;
        if (t = yt(), W(",")) {
          for (t = fe.createSequenceExpression([t]); ce < he && W(",");) I(), t.expressions.push(yt());
          fe.markEnd(t, e)
        }
        return t
      }

      function gt() {
        for (var t = [], e; ce < he && !W("}") && void 0 !== (e = Xt());) t.push(e);
        return t
      }

      function _t() {
        var t, e;
        return e = de, V("{"), t = gt(), V("}"), fe.markEnd(fe.createBlockStatement(t), e)
      }

      function bt() {
        var t, e;
        return e = de, t = I(), t.type !== Zt.Identifier && q(t), fe.markEnd(fe.createIdentifier(t.value), e)
      }

      function xt(t) {
        var e = null,
          n, r;
        return r = de, n = bt(), ue && p(n.name) && B({}, oe.StrictVarName), "const" === t ? (V("="), e = yt()) : W("=") && (I(), e = yt()), fe.markEnd(fe.createVariableDeclarator(n, e), r)
      }

      function wt(t) {
        var e = [];
        do {
          if (e.push(xt(t)), !W(",")) break;
          I()
        } while (ce < he);
        return e
      }

      function St() {
        var t;
        return H("var"), t = wt(), $(), fe.createVariableDeclaration(t, "var")
      }

      function Tt(t) {
        var e, n;
        return n = de, H(t), e = wt(t), $(), fe.markEnd(fe.createVariableDeclaration(e, t), n)
      }

      function Pt() {
        return V(";"), fe.createEmptyStatement()
      }

      function Ct() {
        var t = vt();
        return $(), fe.createExpressionStatement(t)
      }

      function kt() {
        var t, e, n;
        return H("if"), V("("), t = vt(), V(")"), e = Bt(), X("else") ? (I(), n = Bt()) : n = null, fe.createIfStatement(t, e, n)
      }

      function Ot() {
        var t, e, n;
        return H("do"), n = me.inIteration, me.inIteration = !0, t = Bt(), me.inIteration = n, H("while"), V("("), e = vt(), V(")"), W(";") && I(), fe.createDoWhileStatement(t, e)
      }

      function Et() {
        var t, e, n;
        return H("while"), V("("), t = vt(), V(")"), n = me.inIteration, me.inIteration = !0, e = Bt(), me.inIteration = n, fe.createWhileStatement(t, e)
      }

      function jt() {
        var t, e, n;
        return n = de, t = I(), e = wt(), fe.markEnd(fe.createVariableDeclaration(e, t.value), n)
      }

      function At() {
        var t, e, n, r, o, i, a, s = me.allowIn;
        return t = e = n = null, H("for"), V("("), W(";") ? I() : (X("var") || X("let") ? (me.allowIn = !1, t = jt(), me.allowIn = s, 1 === t.declarations.length && X("in") && (I(), r = t, o = vt(), t = null)) : (me.allowIn = !1, t = vt(), me.allowIn = s, X("in") && (K(t) || B({}, oe.InvalidLHSInForIn), I(), r = t, o = vt(), t = null)), void 0 === r && V(";")), void 0 === r && (W(";") || (e = vt()), V(";"), W(")") || (n = vt())), V(")"), a = me.inIteration, me.inIteration = !0, i = Bt(), me.inIteration = a, void 0 === r ? fe.createForStatement(t, e, n, i) : fe.createForInStatement(r, o, i)
      }

      function Ft() {
        var t = null,
          e;
        return H("continue"), 59 === se.charCodeAt(ce) ? (I(), me.inIteration || N({}, oe.IllegalContinue), fe.createContinueStatement(null)) : G() ? (me.inIteration || N({}, oe.IllegalContinue), fe.createContinueStatement(null)) : (de.type === Zt.Identifier && (t = bt(), e = "$" + t.name, Object.prototype.hasOwnProperty.call(me.labelSet, e) || N({}, oe.UnknownLabel, t.name)), $(), null !== t || me.inIteration || N({}, oe.IllegalContinue), fe.createContinueStatement(t))
      }

      function Mt() {
        var t = null,
          e;
        return H("break"), 59 === se.charCodeAt(ce) ? (I(), me.inIteration || me.inSwitch || N({}, oe.IllegalBreak), fe.createBreakStatement(null)) : G() ? (me.inIteration || me.inSwitch || N({}, oe.IllegalBreak), fe.createBreakStatement(null)) : (de.type === Zt.Identifier && (t = bt(), e = "$" + t.name, Object.prototype.hasOwnProperty.call(me.labelSet, e) || N({}, oe.UnknownLabel, t.name)), $(), null !== t || me.inIteration || me.inSwitch || N({}, oe.IllegalBreak), fe.createBreakStatement(t))
      }

      function Rt() {
        var t = null;
        return H("return"), me.inFunctionBody || B({}, oe.IllegalReturn), 32 === se.charCodeAt(ce) && s(se.charCodeAt(ce + 1)) ? (t = vt(), $(), fe.createReturnStatement(t)) : G() ? fe.createReturnStatement(null) : (W(";") || W("}") || de.type === Zt.EOF || (t = vt()), $(), fe.createReturnStatement(t))
      }

      function Dt() {
        var t, e;
        return ue && (y(), B({}, oe.StrictModeWith)), H("with"), V("("), t = vt(), V(")"), e = Bt(), fe.createWithStatement(t, e)
      }

      function It() {
        var t, e = [],
          n, r;
        for (r = de, X("default") ? (I(), t = null) : (H("case"), t = vt()), V(":"); ce < he && !(W("}") || X("default") || X("case"));) n = Bt(), e.push(n);
        return fe.markEnd(fe.createSwitchCase(t, e), r)
      }

      function Lt() {
        var t, e, n, r, o;
        if (H("switch"), V("("), t = vt(), V(")"), V("{"), e = [], W("}")) return I(), fe.createSwitchStatement(t, e);
        for (r = me.inSwitch, me.inSwitch = !0, o = !1; ce < he && !W("}");) n = It(), null === n.test && (o && N({}, oe.MultipleDefaultsInSwitch), o = !0), e.push(n);
        return me.inSwitch = r, V("}"), fe.createSwitchStatement(t, e)
      }

      function zt() {
        var t;
        return H("throw"), G() && N({}, oe.NewlineAfterThrow), t = vt(), $(), fe.createThrowStatement(t)
      }

      function Ut() {
        var t, e, n;
        return n = de, H("catch"), V("("), W(")") && q(de), t = bt(), ue && p(t.name) && B({}, oe.StrictCatchVariable), V(")"), e = _t(), fe.markEnd(fe.createCatchClause(t, e), n)
      }

      function Gt() {
        var t, e = [],
          n = null;
        return H("try"), t = _t(), X("catch") && e.push(Ut()), X("finally") && (I(), n = _t()), 0 !== e.length || n || N({}, oe.NoCatchOrFinally), fe.createTryStatement(t, [], e, n)
      }

      function Nt() {
        return H("debugger"), $(), fe.createDebuggerStatement()
      }

      function Bt() {
        var t = de.type,
          e, n, r, o;
        if (t === Zt.EOF && q(de), t === Zt.Punctuator && "{" === de.value) return _t();
        if (o = de, t === Zt.Punctuator) switch (de.value) {
          case ";":
            return fe.markEnd(Pt(), o);
          case "(":
            return fe.markEnd(Ct(), o)
        }
        if (t === Zt.Keyword) switch (de.value) {
          case "break":
            return fe.markEnd(Mt(), o);
          case "continue":
            return fe.markEnd(Ft(), o);
          case "debugger":
            return fe.markEnd(Nt(), o);
          case "do":
            return fe.markEnd(Ot(), o);
          case "for":
            return fe.markEnd(At(), o);
          case "function":
            return fe.markEnd(Ht(), o);
          case "if":
            return fe.markEnd(kt(), o);
          case "return":
            return fe.markEnd(Rt(), o);
          case "switch":
            return fe.markEnd(Lt(), o);
          case "throw":
            return fe.markEnd(zt(), o);
          case "try":
            return fe.markEnd(Gt(), o);
          case "var":
            return fe.markEnd(St(), o);
          case "while":
            return fe.markEnd(Et(), o);
          case "with":
            return fe.markEnd(Dt(), o)
        }
        return e = vt(), e.type === ne.Identifier && W(":") ? (I(), r = "$" + e.name, Object.prototype.hasOwnProperty.call(me.labelSet, r) && N({}, oe.Redeclaration, "Label", e.name), me.labelSet[r] = !0, n = Bt(), delete me.labelSet[r], fe.markEnd(fe.createLabeledStatement(e, n), o)) : ($(), fe.markEnd(fe.createExpressionStatement(e), o))
      }

      function qt() {
        var t, e = [],
          n, r, o, i, a, s, u, c;
        for (c = de, V("{"); ce < he && de.type === Zt.StringLiteral && (n = de, t = Xt(), e.push(t), t.expression.type === ne.Literal);) r = se.slice(n.start + 1, n.end - 1), "use strict" === r ? (ue = !0, o && B(o, oe.StrictOctalLiteral)) : !o && n.octal && (o = n);
        for (i = me.labelSet, a = me.inIteration, s = me.inSwitch, u = me.inFunctionBody, me.labelSet = {}, me.inIteration = !1, me.inSwitch = !1, me.inFunctionBody = !0; ce < he && !W("}") && void 0 !== (t = Xt());) e.push(t);
        return V("}"), me.labelSet = i, me.inIteration = a, me.inSwitch = s, me.inFunctionBody = u, fe.markEnd(fe.createBlockStatement(e), c)
      }

      function Vt(t) {
        var e, n = [],
          r, o, i, a, s;
        if (V("("), !W(")"))
          for (i = {}; ce < he && (r = de, e = bt(), a = "$" + r.value, ue ? (p(r.value) && (o = r, s = oe.StrictParamName), Object.prototype.hasOwnProperty.call(i, a) && (o = r, s = oe.StrictParamDupe)) : t || (p(r.value) ? (t = r, s = oe.StrictParamName) : l(r.value) ? (t = r, s = oe.StrictReservedWord) : Object.prototype.hasOwnProperty.call(i, a) && (t = r, s = oe.StrictParamDupe)), n.push(e), i[a] = !0, !W(")"));) V(",");
        return V(")"), {
          params: n,
          stricted: o,
          firstRestricted: t,
          message: s
        }
      }

      function Ht() {
        var t, e = [],
          n, r, o, i, a, s, u, c;
        return c = de, H("function"), r = de, t = bt(), ue ? p(r.value) && B(r, oe.StrictFunctionName) : p(r.value) ? (a = r, s = oe.StrictFunctionName) : l(r.value) && (a = r, s = oe.StrictReservedWord), i = Vt(a), e = i.params, o = i.stricted, a = i.firstRestricted, i.message && (s = i.message), u = ue, n = qt(), ue && a && N(a, s), ue && o && B(o, s), ue = u, fe.markEnd(fe.createFunctionDeclaration(t, e, [], n), c)
      }

      function Wt() {
        var t, e = null,
          n, r, o, i, a = [],
          s, u, c;
        return c = de, H("function"), W("(") || (t = de, e = bt(), ue ? p(t.value) && B(t, oe.StrictFunctionName) : p(t.value) ? (r = t, o = oe.StrictFunctionName) : l(t.value) && (r = t, o = oe.StrictReservedWord)), i = Vt(r), a = i.params, n = i.stricted, r = i.firstRestricted, i.message && (o = i.message), u = ue, s = qt(), ue && r && N(r, o), ue && n && B(n, o), ue = u, fe.markEnd(fe.createFunctionExpression(e, a, [], s), c)
      }

      function Xt() {
        if (de.type === Zt.Keyword) switch (de.value) {
          case "const":
          case "let":
            return Tt(de.value);
          case "function":
            return Ht();
          default:
            return Bt()
        }
        if (de.type !== Zt.EOF) return Bt()
      }

      function Yt() {
        for (var t, e = [], n, r, o; ce < he && (n = de, n.type === Zt.StringLiteral) && (t = Xt(), e.push(t), t.expression.type === ne.Literal);) r = se.slice(n.start + 1, n.end - 1), "use strict" === r ? (ue = !0, o && B(o, oe.StrictOctalLiteral)) : !o && n.octal && (o = n);
        for (; ce < he && void 0 !== (t = Xt());) e.push(t);
        return e
      }

      function $t() {
        var t, e;
        return y(), L(), e = de, ue = !1, t = Yt(), fe.markEnd(fe.createProgram(t), e)
      }

      function Kt() {
        var t, e, n, r = [];
        for (t = 0; t < ye.tokens.length; ++t) e = ye.tokens[t], n = {
          type: e.type,
          value: e.value
        }, ye.range && (n.range = e.range), ye.loc && (n.loc = e.loc), r.push(n);
        ye.tokens = r
      }

      function Jt(t, e) {
        var n, r, o;
        n = String, "string" == typeof t || t instanceof String || (t = n(t)), fe = ae, se = t, ce = 0, le = se.length > 0 ? 1 : 0, pe = 0, he = se.length, de = null, me = {
          allowIn: !0,
          labelSet: {},
          inFunctionBody: !1,
          inIteration: !1,
          inSwitch: !1,
          lastCommentStart: -1
        }, ye = {}, e = e || {}, e.tokens = !0, ye.tokens = [], ye.tokenize = !0, ye.openParenToken = -1, ye.openCurlyToken = -1, ye.range = "boolean" == typeof e.range && e.range, ye.loc = "boolean" == typeof e.loc && e.loc, "boolean" == typeof e.comment && e.comment && (ye.comments = []), "boolean" == typeof e.tolerant && e.tolerant && (ye.errors = []);
        try {
          if (L(), de.type === Zt.EOF) return ye.tokens;
          for (r = I(); de.type !== Zt.EOF;) try {
            r = I()
          } catch (t) {
            if (r = de, ye.errors) {
              ye.errors.push(t);
              break
            }
            throw t
          }
          Kt(), o = ye.tokens, void 0 !== ye.comments && (o.comments = ye.comments), void 0 !== ye.errors && (o.errors = ye.errors)
        } catch (t) {
          throw t
        } finally {
          ye = {}
        }
        return o
      }

      function Qt(t, e) {
        var n, r;
        r = String, "string" == typeof t || t instanceof String || (t = r(t)), fe = ae, se = t, ce = 0, le = se.length > 0 ? 1 : 0, pe = 0, he = se.length, de = null, me = {
          allowIn: !0,
          labelSet: {},
          inFunctionBody: !1,
          inIteration: !1,
          inSwitch: !1,
          lastCommentStart: -1
        }, ye = {}, void 0 !== e && (ye.range = "boolean" == typeof e.range && e.range, ye.loc = "boolean" == typeof e.loc && e.loc, ye.attachComment = "boolean" == typeof e.attachComment && e.attachComment, ye.loc && null !== e.source && void 0 !== e.source && (ye.source = r(e.source)), "boolean" == typeof e.tokens && e.tokens && (ye.tokens = []), "boolean" == typeof e.comment && e.comment && (ye.comments = []), "boolean" == typeof e.tolerant && e.tolerant && (ye.errors = []), ye.attachComment && (ye.range = !0, ye.comments = [], ye.bottomRightStack = [], ye.trailingComments = [], ye.leadingComments = []));
        try {
          n = $t(), void 0 !== ye.comments && (n.comments = ye.comments), void 0 !== ye.tokens && (Kt(), n.tokens = ye.tokens), void 0 !== ye.errors && (n.errors = ye.errors)
        } catch (t) {
          throw t
        } finally {
          ye = {}
        }
        return n
      }
      var Zt, te, ee, ne, re, oe, ie, ae, se, ue, ce, le, pe, he, fe, de, me, ye;
      Zt = {
        BooleanLiteral: 1,
        EOF: 2,
        Identifier: 3,
        Keyword: 4,
        NullLiteral: 5,
        NumericLiteral: 6,
        Punctuator: 7,
        StringLiteral: 8,
        RegularExpression: 9
      }, te = {}, te[Zt.BooleanLiteral] = "Boolean", te[Zt.EOF] = "<end>", te[Zt.Identifier] = "Identifier", te[Zt.Keyword] = "Keyword", te[Zt.NullLiteral] = "Null", te[Zt.NumericLiteral] = "Numeric", te[Zt.Punctuator] = "Punctuator", te[Zt.StringLiteral] = "String", te[Zt.RegularExpression] = "RegularExpression", ee = ["(", "{", "[", "in", "typeof", "instanceof", "new", "return", "case", "delete", "throw", "void", "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "&=", "|=", "^=", ",", "+", "-", "*", "/", "%", "++", "--", "<<", ">>", ">>>", "&", "|", "^", "!", "~", "&&", "||", "?", ":", "===", "==", ">=", "<=", "<", ">", "!=", "!=="], ne = {
        AssignmentExpression: "AssignmentExpression",
        ArrayExpression: "ArrayExpression",
        BlockStatement: "BlockStatement",
        BinaryExpression: "BinaryExpression",
        BreakStatement: "BreakStatement",
        CallExpression: "CallExpression",
        CatchClause: "CatchClause",
        ConditionalExpression: "ConditionalExpression",
        ContinueStatement: "ContinueStatement",
        DoWhileStatement: "DoWhileStatement",
        DebuggerStatement: "DebuggerStatement",
        EmptyStatement: "EmptyStatement",
        ExpressionStatement: "ExpressionStatement",
        ForStatement: "ForStatement",
        ForInStatement: "ForInStatement",
        FunctionDeclaration: "FunctionDeclaration",
        FunctionExpression: "FunctionExpression",
        Identifier: "Identifier",
        IfStatement: "IfStatement",
        Literal: "Literal",
        LabeledStatement: "LabeledStatement",
        LogicalExpression: "LogicalExpression",
        MemberExpression: "MemberExpression",
        NewExpression: "NewExpression",
        ObjectExpression: "ObjectExpression",
        Program: "Program",
        Property: "Property",
        ReturnStatement: "ReturnStatement",
        SequenceExpression: "SequenceExpression",
        SwitchStatement: "SwitchStatement",
        SwitchCase: "SwitchCase",
        ThisExpression: "ThisExpression",
        ThrowStatement: "ThrowStatement",
        TryStatement: "TryStatement",
        UnaryExpression: "UnaryExpression",
        UpdateExpression: "UpdateExpression",
        VariableDeclaration: "VariableDeclaration",
        VariableDeclarator: "VariableDeclarator",
        WhileStatement: "WhileStatement",
        WithStatement: "WithStatement"
      }, re = {
        Data: 1,
        Get: 2,
        Set: 4
      }, oe = {
        UnexpectedToken: "Unexpected token %0",
        UnexpectedNumber: "Unexpected number",
        UnexpectedString: "Unexpected string",
        UnexpectedIdentifier: "Unexpected identifier",
        UnexpectedReserved: "Unexpected reserved word",
        UnexpectedEOS: "Unexpected end of input",
        NewlineAfterThrow: "Illegal newline after throw",
        InvalidRegExp: "Invalid regular expression",
        UnterminatedRegExp: "Invalid regular expression: missing /",
        InvalidLHSInAssignment: "Invalid left-hand side in assignment",
        InvalidLHSInForIn: "Invalid left-hand side in for-in",
        MultipleDefaultsInSwitch: "More than one default clause in switch statement",
        NoCatchOrFinally: "Missing catch or finally after try",
        UnknownLabel: "Undefined label '%0'",
        Redeclaration: "%0 '%1' has already been declared",
        IllegalContinue: "Illegal continue statement",
        IllegalBreak: "Illegal break statement",
        IllegalReturn: "Illegal return statement",
        StrictModeWith: "Strict mode code may not include a with statement",
        StrictCatchVariable: "Catch variable may not be eval or arguments in strict mode",
        StrictVarName: "Variable name may not be eval or arguments in strict mode",
        StrictParamName: "Parameter name eval or arguments is not allowed in strict mode",
        StrictParamDupe: "Strict mode function may not have duplicate parameter names",
        StrictFunctionName: "Function name may not be eval or arguments in strict mode",
        StrictOctalLiteral: "Octal literals are not allowed in strict mode.",
        StrictDelete: "Delete of an unqualified identifier in strict mode.",
        StrictDuplicateProperty: "Duplicate data property in object literal not allowed in strict mode",
        AccessorDataProperty: "Object literal may not have data and accessor property with the same name",
        AccessorGetSet: "Object literal may not have multiple get/set accessors with the same name",
        StrictLHSAssignment: "Assignment to eval or arguments is not allowed in strict mode",
        StrictLHSPostfix: "Postfix increment/decrement may not have eval or arguments operand in strict mode",
        StrictLHSPrefix: "Prefix increment/decrement may not have eval or arguments operand in strict mode",
        StrictReservedWord: "Use of future reserved word in strict mode"
      }, ie = {
        NonAsciiIdentifierStart: new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ]"),
        NonAsciiIdentifierPart: new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ０-９Ａ-Ｚ＿ａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ]")
      }, ae = {
        name: "SyntaxTree",
        processComment: function(t) {
          var e, n;
          if (!(t.type === ne.Program && t.body.length > 0)) {
            for (ye.trailingComments.length > 0 ? ye.trailingComments[0].range[0] >= t.range[1] ? (n = ye.trailingComments, ye.trailingComments = []) : ye.trailingComments.length = 0 : ye.bottomRightStack.length > 0 && ye.bottomRightStack[ye.bottomRightStack.length - 1].trailingComments && ye.bottomRightStack[ye.bottomRightStack.length - 1].trailingComments[0].range[0] >= t.range[1] && (n = ye.bottomRightStack[ye.bottomRightStack.length - 1].trailingComments, delete ye.bottomRightStack[ye.bottomRightStack.length - 1].trailingComments); ye.bottomRightStack.length > 0 && ye.bottomRightStack[ye.bottomRightStack.length - 1].range[0] >= t.range[0];) e = ye.bottomRightStack.pop();
            e ? e.leadingComments && e.leadingComments[e.leadingComments.length - 1].range[1] <= t.range[0] && (t.leadingComments = e.leadingComments, delete e.leadingComments) : ye.leadingComments.length > 0 && ye.leadingComments[ye.leadingComments.length - 1].range[1] <= t.range[0] && (t.leadingComments = ye.leadingComments, ye.leadingComments = []), n && (t.trailingComments = n), ye.bottomRightStack.push(t)
          }
        },
        markEnd: function(t, e) {
          return ye.range && (t.range = [e.start, ce]), ye.loc && (t.loc = new U(void 0 === e.startLineNumber ? e.lineNumber : e.startLineNumber, e.start - (void 0 === e.startLineStart ? e.lineStart : e.startLineStart), le, ce - pe), this.postProcess(t)), ye.attachComment && this.processComment(t), t
        },
        postProcess: function(t) {
          return ye.source && (t.loc.source = ye.source), t
        },
        createArrayExpression: function(t) {
          return {
            type: ne.ArrayExpression,
            elements: t
          }
        },
        createAssignmentExpression: function(t, e, n) {
          return {
            type: ne.AssignmentExpression,
            operator: t,
            left: e,
            right: n
          }
        },
        createBinaryExpression: function(t, e, n) {
          return {
            type: "||" === t || "&&" === t ? ne.LogicalExpression : ne.BinaryExpression,
            operator: t,
            left: e,
            right: n
          }
        },
        createBlockStatement: function(t) {
          return {
            type: ne.BlockStatement,
            body: t
          }
        },
        createBreakStatement: function(t) {
          return {
            type: ne.BreakStatement,
            label: t
          }
        },
        createCallExpression: function(t, e) {
          return {
            type: ne.CallExpression,
            callee: t,
            arguments: e
          }
        },
        createCatchClause: function(t, e) {
          return {
            type: ne.CatchClause,
            param: t,
            body: e
          }
        },
        createConditionalExpression: function(t, e, n) {
          return {
            type: ne.ConditionalExpression,
            test: t,
            consequent: e,
            alternate: n
          }
        },
        createContinueStatement: function(t) {
          return {
            type: ne.ContinueStatement,
            label: t
          }
        },
        createDebuggerStatement: function() {
          return {
            type: ne.DebuggerStatement
          }
        },
        createDoWhileStatement: function(t, e) {
          return {
            type: ne.DoWhileStatement,
            body: t,
            test: e
          }
        },
        createEmptyStatement: function() {
          return {
            type: ne.EmptyStatement
          }
        },
        createExpressionStatement: function(t) {
          return {
            type: ne.ExpressionStatement,
            expression: t
          }
        },
        createForStatement: function(t, e, n, r) {
          return {
            type: ne.ForStatement,
            init: t,
            test: e,
            update: n,
            body: r
          }
        },
        createForInStatement: function(t, e, n) {
          return {
            type: ne.ForInStatement,
            left: t,
            right: e,
            body: n,
            each: !1
          }
        },
        createFunctionDeclaration: function(t, e, n, r) {
          return {
            type: ne.FunctionDeclaration,
            id: t,
            params: e,
            defaults: n,
            body: r,
            rest: null,
            generator: !1,
            expression: !1
          }
        },
        createFunctionExpression: function(t, e, n, r) {
          return {
            type: ne.FunctionExpression,
            id: t,
            params: e,
            defaults: n,
            body: r,
            rest: null,
            generator: !1,
            expression: !1
          }
        },
        createIdentifier: function(t) {
          return {
            type: ne.Identifier,
            name: t
          }
        },
        createIfStatement: function(t, e, n) {
          return {
            type: ne.IfStatement,
            test: t,
            consequent: e,
            alternate: n
          }
        },
        createLabeledStatement: function(t, e) {
          return {
            type: ne.LabeledStatement,
            label: t,
            body: e
          }
        },
        createLiteral: function(t) {
          return {
            type: ne.Literal,
            value: t.value,
            raw: se.slice(t.start, t.end)
          }
        },
        createMemberExpression: function(t, e, n) {
          return {
            type: ne.MemberExpression,
            computed: "[" === t,
            object: e,
            property: n
          }
        },
        createNewExpression: function(t, e) {
          return {
            type: ne.NewExpression,
            callee: t,
            arguments: e
          }
        },
        createObjectExpression: function(t) {
          return {
            type: ne.ObjectExpression,
            properties: t
          }
        },
        createPostfixExpression: function(t, e) {
          return {
            type: ne.UpdateExpression,
            operator: t,
            argument: e,
            prefix: !1
          }
        },
        createProgram: function(t) {
          return {
            type: ne.Program,
            body: t
          }
        },
        createProperty: function(t, e, n) {
          return {
            type: ne.Property,
            key: e,
            value: n,
            kind: t
          }
        },
        createReturnStatement: function(t) {
          return {
            type: ne.ReturnStatement,
            argument: t
          }
        },
        createSequenceExpression: function(t) {
          return {
            type: ne.SequenceExpression,
            expressions: t
          }
        },
        createSwitchCase: function(t, e) {
          return {
            type: ne.SwitchCase,
            test: t,
            consequent: e
          }
        },
        createSwitchStatement: function(t, e) {
          return {
            type: ne.SwitchStatement,
            discriminant: t,
            cases: e
          }
        },
        createThisExpression: function() {
          return {
            type: ne.ThisExpression
          }
        },
        createThrowStatement: function(t) {
          return {
            type: ne.ThrowStatement,
            argument: t
          }
        },
        createTryStatement: function(t, e, n, r) {
          return {
            type: ne.TryStatement,
            block: t,
            guardedHandlers: e,
            handlers: n,
            finalizer: r
          }
        },
        createUnaryExpression: function(t, e) {
          return "++" === t || "--" === t ? {
            type: ne.UpdateExpression,
            operator: t,
            argument: e,
            prefix: !0
          } : {
            type: ne.UnaryExpression,
            operator: t,
            argument: e,
            prefix: !0
          }
        },
        createVariableDeclaration: function(t, e) {
          return {
            type: ne.VariableDeclaration,
            declarations: t,
            kind: e
          }
        },
        createVariableDeclarator: function(t, e) {
          return {
            type: ne.VariableDeclarator,
            id: t,
            init: e
          }
        },
        createWhileStatement: function(t, e) {
          return {
            type: ne.WhileStatement,
            test: t,
            body: e
          }
        },
        createWithStatement: function(t, e) {
          return {
            type: ne.WithStatement,
            object: t,
            body: e
          }
        }
      }, t.version = "1.2.5", t.tokenize = Jt, t.parse = Qt, t.Syntax = function() {
        var t, e = {};
        "function" == typeof Object.create && (e = Object.create(null));
        for (t in ne) ne.hasOwnProperty(t) && (e[t] = ne[t]);
        return "function" == typeof Object.freeze && Object.freeze(e), e
      }()
    })
  }, function(t, e, n) {
    function r(t, e, n) {
      return t && t.length ? (e = n || void 0 === e ? 1 : i(e), o(t, 0, e < 0 ? 0 : e)) : []
    }
    var o = n(421),
      i = n(149);
    t.exports = r
  }, function(t, e) {
    function n(t, e, n) {
      var r = -1,
        o = t.length;
      e < 0 && (e = -e > o ? 0 : o + e), n = n > o ? o : n, n < 0 && (n += o), o = e > n ? 0 : n - e >>> 0, e >>>= 0;
      for (var i = Array(o); ++r < o;) i[r] = t[r + e];
      return i
    }
    t.exports = n
  }, function(t, e) {
    function n(t, e) {
      for (var n, r = -1, o = t.length; ++r < o;) {
        var i = e(t[r]);
        void 0 !== i && (n = void 0 === n ? i : n + i)
      }
      return n
    }
    t.exports = n
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      return "r" === t ? [1, 0] : [0, 1]
    }

    function o(t, e) {
      return "native" === e[1] ? [t, "d0=", t, ".length,", t, "d1=", t, "[0].length,"].join("") : [t, "d0=", t, ".shape[0],", t, "d1=", t, ".shape[1],", t, "s0=", t, ".stride[0],", t, "s1=", t, ".stride[1],", t, "o=", t, ".offset,", t, "d=", t, ".data,"].join("")
    }

    function i(t, e, n, r, o, i) {
      var a = [];
      return "native" === n[1] ? t[0] && (r ? a.push("var ", e, "p=", e, "[", r, "];") : a.push("var ", e, "p=", e, "[0];")) : r && o ? i ? a.push("var ", e, "t0=", e, "s", t[0], ",", e, "t1=", e, "s", t[1], "-", e, "s", t[0], "*", i, ",", e, "p=", e, "o+", r, "*", e, "s0+", o, "*", e, "s1;") : a.push("var ", e, "t0=", e, "s", t[0], ",", e, "p=", e, "o+", r, "*", e, "s0+", o, "*", e, "s1;") : r ? a.push("var ", e, "t0=", e, "s", t[0], ",", e, "p=", e, "o+", r, "*", e, "s0;") : o ? a.push("var ", e, "t0=", e, "s", t[0], ",", e, "p=", e, "o+", o, "*", e, "s1;") : a.push("var ", e, "t0=", e, "s", t[0], ",", e, "t1=", e, "s", t[1], "-", e, "s", t[0], "*", e, "d", t[0], ",", e, "p=", e, "o;"), a
    }

    function a(t, e, n, r, o) {
      var i = [];
      return "native" === n[1] ? t[0] && 1 === r && i.push(e, "p=", e, "[", o, "+1]") : i.push(e, "p+=", e, "t", r, ";"), i
    }

    function s(t, e, n, r, o, i) {
      var a = [];
      return "native" === n[1] ? t[0] ? a.push(e, "p[", o, "]=", i, ";") : a.push(e, "[", r, "][", o, "]=", i, ";") : "generic" === n[1] ? a.push(e, "d.set(", e, "p,", i, ");") : a.push(e, "d[", e, "p]=", i, ";"), a
    }

    function u(t, e, n, r, o) {
      var i = [];
      return "native" === n[1] ? t[0] ? i.push(e, "p[", o, "]") : i.push(e, "[", r, "][", o, "]") : "generic" === n[1] ? i.push(e, "d.get(", e, "p)") : i.push(e, "d[", e, "p]"), i.join("")
    }

    function c(t, e, n, r, o) {
      var c = [],
        l = "r" === t[0] ? [1, 0] : [0, 1],
        p = [1, 0],
        h = [0, 1],
        f = ["i", "j"];
      return c.push.apply(c, i(l, "o", t)), l[1] ? (c.push("for(j=0;j<od1;++j){"), c.push("for(i=0;i<od0;++i){")) : (c.push("for(i=0;i<od0;++i){"), c.push("for(j=0;j<od1;++j){")), c.push.apply(c, i(p, "a", e, "i")), c.push.apply(c, i(h, "b", n, void 0, "j")), c.push("var r=0.0;", "for(k=0;k<ad1;++k){", "r+=", u(p, "a", e, "i", "k"), "*", u(h, "b", n, "k", "j"), ";"), c.push.apply(c, a(p, "a", e, 0, "k")), c.push.apply(c, a(h, "b", n, 0, "k")), c.push("}"), r && c.push("r*=A;"), o && c.push("r+=B*", u(l, "o", t, "i", "j"), ";"), c.push.apply(c, s(l, "o", t, "i", "j", "r")), c.push.apply(c, a(l, "o", t, 0, f[1])), c.push("}"), c.push.apply(c, a(l, "o", t, 1, f[0])), c.push("}"), c
    }

    function l(t, e) {
      var n = [],
        r = "r" === t[0] ? [1, 0] : [0, 1],
        o;
      return e && n.push("if(B!==1.0){"), n.push.apply(n, i(r, "o", t)), r[0] ? (n.push("for(i=0;i<od0;++i){for(j=0;j<od1;++j){"), o = ["i", "j"]) : (n.push("for(j=0;j<od1;++j){for(i=0;i<od0;++i){"), o = ["j", "i"]), e ? n.push.apply(n, s(r, "o", t, "i", "j", "B*" + u(r, "o", t, "i", "j"))) : n.push.apply(n, s(r, "o", t, "i", "j", "0")), n.push.apply(n, a(r, "o", t, 0, o[1])), n.push("}"), n.push.apply(n, a(r, "o", t, 1, o[0])), n.push("}"), e && n.push("}"), n
    }

    function p(t, e, n, r, o) {
      var c = [],
        p = ["od0", "od1", "ad1"],
        h = [1, 0],
        d = [1, 0],
        m = [0, 1];
      c.push.apply(c, l(t, o));
      for (var y = 0; y < 3; ++y) c.push("for(var i", y, "=", p[y], ";i", y, ">0;){", "var w", y, "=", f, ";", "if(i", y, "<", f, "){", "w", y, "=i", y, ";", "i", y, "=0;", "}else{", "i", y, "-=", f, ";", "}");
      c.push.apply(c, i(h, "o", t, "i0", "i1", "w1")), c.push("for(i=0;i<w0;++i){for(j=0;j<w1;++j){var r=0.0;"), c.push.apply(c, i(d, "a", e, "(i0+i)", "i2")), c.push.apply(c, i(m, "b", n, "i2", "(i1+j)")), c.push("for(k=0;k<w2;++k){"), c.push("r+=", u(d, "a", e, "(i0+i)", "(i2+k)"), "*", u(m, "b", n, "(i2+k)", "(i1+j)"), ";"), c.push.apply(c, a(d, "a", e, 0, "(i2+k)")), c.push.apply(c, a(m, "b", n, 0, "(i2+k)")), c.push("}");
      var v = "r";
      return r && (v = "A*r"), c.push.apply(c, s(h, "o", t, "(i0+i)", "(i1+j)", v + "+" + u(h, "o", t, "(i0+i)", "(i1+j)"))), c.push.apply(c, a(h, "o", t, 0, "(i1+j)")), c.push("}"), c.push.apply(c, a(h, "o", t, 1, "(i0+i)")), c.push("}}}}"), c
    }

    function h(t, e, n, r, i) {
      var a = ["gemm", t[0], t[1], "a", e[0], e[1], "b", n[0], n[1], r ? "alpha" : "", i ? "beta" : ""].join(""),
        s = ["function ", a, "(o,a,b,A,B){", "var ", o("o", t), o("a", e), o("b", n), "i,j,k;"];
      return "r" === e[0] && "c" === n[0] ? s.push.apply(s, c(t, e, n, r, i)) : s.push.apply(s, p(t, e, n, r, i)), s.push("}return ", a), new Function(s.join(""))()
    }
    t.exports = h;
    var f = 32
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n, r, i) {
      for (var a = o.dot, s = e.shape[0] - 1; s >= 0; s--) i.set(s, i.get(s) * r + t * a(e.pick(s, null), n));
      return !0
    }
    var o = n(78);
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n) {
      var r, o, i = e.data,
        a = n.data,
        s = e.stride[0],
        u = n.stride[0],
        c = e.offset,
        l = n.offset;
      for (r = e.shape[0] - 1; r >= 0; r--, c += s, l += u) o = i[c], i[c] = a[l], a[l] = o
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n) {
      var r, o = n.data,
        i = n.stride[0],
        a = n.offset;
      for (r = n.shape[0] - 1; r >= 0; r--, a += i) o[a] *= e
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n) {
      var r, o = e.data,
        i = n.data,
        a = e.stride[0],
        s = n.stride[0],
        u = e.offset,
        c = n.offset;
      for (r = e.shape[0] - 1; r >= 0; r--, u += a, c += s) i[c] = o[u]
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n, r) {
      var o, i = n.data,
        a = r.data,
        s = n.stride[0],
        u = r.stride[0],
        c = n.offset,
        l = r.offset;
      for (o = n.shape[0] - 1; o >= 0; o--, c += s, l += u) a[l] += e * i[c]
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n) {
      var r, o, i = e.data,
        a = e.stride[0],
        s = e.offset,
        u = 0;
      if (e === n)
        for (r = e.shape[0] - 1; r >= 0; r--, s += a) o = i[s], u += o * o;
      else {
        var c = n.data,
          l = n.stride[0],
          p = n.offset;
        for (r = e.shape[0] - 1; r >= 0; r--, s += a, p += l) u += c[p] * i[s]
      }
      return u
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e, n, r) {
      var o, i = n.data,
        a = r.data,
        s = n.stride[0],
        u = r.stride[0],
        c = n.offset,
        l = r.offset;
      for (o = n.shape[0] - 1; o >= 0; o--, c += s, l += u) a[l] = e * i[c]
    }
  }, function(t, e, n) {
    "use strict";
    var r = function t(e, n) {
      if (0 === e && 0 === n) return 0;
      var r = Math.abs(e),
        o = Math.abs(n),
        i = Math.min(r, o),
        a = Math.max(r, o);
      return i /= a, a * Math.sqrt(1 + i * i)
    };
    t.exports = function t(e) {
      var n, o, i = e.data,
        a = e.stride[0],
        s = e.offset,
        u = 0;
      for (n = e.shape[0] - 1; n >= 0; n--, s += a) o = i[s], u = r(u, o);
      return u
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e) {
      var n, r = e.data,
        o = e.stride[0],
        i = e.offset,
        a = 0;
      for (n = e.shape[0] - 1; n >= 0; n--, i += o) a += Math.abs(r[i]);
      return a
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = function t(e) {
      var n, r, o, i = -1 / 0,
        a = e.data,
        s = e.stride[0],
        u = e.offset,
        c = e.shape[0];
      for (n = 0; n < c; n++, u += s)(r = Math.abs(a[u])) > i && (i = r, o = n);
      return o
    }
  }, function(t, e, n) {
    "use strict";
    Math.sign = Math.sign || function(t) {
      return t = +t, 0 === t || isNaN(t) ? t : t > 0 ? 1 : -1
    }, t.exports = function t(e, n, r) {
      var o = 0,
        i = 0,
        a = 0,
        s = 0,
        u = 0;
      if (0 === n ? (o = Math.sign(e), i = 0, a = Math.abs(e)) : 0 === e ? (o = 0, i = Math.sign(n), a = Math.abs(n)) : Math.abs(e) > Math.abs(n) ? (s = n / e, u = Math.sign(e) * Math.sqrt(1 + s * s), o = 1 / u, i = s * o, a = e * u) : (s = e / n, u = Math.sign(e) * Math.sqrt(1 + s * s), i = 1 / u, o = s * i, a = n * u), !(void 0 !== r && r.length > 2)) return [o, i, a];
      r[0] = o, r[1] = i, r[2] = a
    }
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n, r, o, i, a) {
      for (var s = 0, u = 0, c = 0, l = 0, p = 0, h = t.shape[0], f = t.shape[1], d = Math.min(e, h - 1), m = Math.min(n, f - 1), y = void 0 === i ? 1 : i, v = void 0 === a ? 0 : a; s <= d;) {
        l = 0;
        var g = Math.min(s + m, f - 1);
        for (c = 0; c <= g; c++) l += t.get(s, c) * r.get(c);
        o.set(s, l * y + v * o.get(s)), s++
      }
      if (s < h)
        for (u = 0; s + m < f;) {
          for (l = 0, c = 0; c <= d + m; c++) p = u + c + 1, l += t.get(s, p) * r.get(p);
          if (o.set(s, l * y + v * o.get(s)), s++, u++, s === h) break
        }
      if (s < h)
        for (u++; s - d < f;) {
          for (l = 0, c = u; c < f; c++) l += t.get(s, c) * r.get(c);
          if (o.set(s, l * y + v * o.get(s)), s++, u++, s === h) break
        }
      return !0
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n, r, i, a) {
      var s = t.shape[0],
        u = r || !0,
        c = void 0 === i ? 1 : i,
        l = void 0 === a ? 0 : a,
        p = 0,
        h = 0,
        f = 0,
        d = 0;
      if (0 === l)
        for (p = 0; p < n.shape[0]; ++p) n.set(p, 0);
      else 1 !== l && o.scal(l, n);
      if (0 === c) return !0;
      if (1 === c)
        if (u)
          for (h = 0; h < s; ++h) {
            for (f = e.get(h), d = 0, n.set(h, n.get(h) + f * t.get(h, h)), p = h + 1; p < s; ++p) n.set(p, n.get(p) + f * t.get(p, h)), d += t.get(p, h) * e.get(p);
            n.set(h, n.get(h) + d)
          } else
          for (h = 0; h < s; ++h) {
            for (f = e.get(h), d = 0, p = 0; p <= h - 1; ++p) n.set(p, n.get(p) + f * t.get(p, h)), d += t.get(p, h) * e.get(p);
            n.set(h, n.get(h) + f * t.get(h, h) + d)
          } else if (u)
        for (h = 0; h < s; ++h) {
          for (f = c * e.get(h), d = 0, n.set(h, n.get(h) + f * t.get(h, h)), p = h + 1; p < s; ++p) n.set(p, n.get(p) + f * t.get(p, h)), d += t.get(p, h) * e.get(p);
          n.set(h, n.get(h) + c * d)
        } else
        for (h = 0; h < s; ++h) {
          for (f = c * e.get(h), d = 0, p = 0; p <= h - 1; ++p) n.set(p, n.get(p) + f * t.get(p, h)), d += t.get(p, h) * e.get(p);
          n.set(h, n.get(h) + f * t.get(h, h) + c * d)
        }
      return !0
    }
    var o = n(78);
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("SBMV (symmetric banded matrix vector multiply) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    (function(t) {
      function e() {
        console.error("SPMV (symmetric packed matrix vector multiply) not yet implemented")
      }
      t.exporst = e
    }).call(e, n(66)(t))
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      var r = o.dot,
        i = t.shape[1],
        a = 0;
      if (n)
        for (a = i - 1; a >= 0; a--) e.set(a, r(t.pick(a, null).hi(a + 1), e.hi(a + 1)));
      else
        for (a = 0; a < i; a++) e.set(a, r(t.pick(a, null).lo(a), e.lo(a)));
      return !0
    }
    var o = n(78);
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("TBMV (triangular banded matrix vector multiply) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      var r = o.dot,
        i = t.shape[1],
        a = 0;
      if (n)
        for (e.set(0, e.get(0) / t.get(0, 0)), a = 1; a < i; a++) e.set(a, (e.get(a) - r(t.pick(a, null).hi(a), e.hi(a))) / t.get(a, a));
      else
        for (e.set(i - 1, e.get(i - 1) / t.get(i - 1, i - 1)), a = i - 2; a >= 0; a--) e.set(a, (e.get(a) - r(t.pick(a, null).lo(a + 1), e.lo(a + 1))) / t.get(a, a));
      return !0
    }
    var o = n(78);
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    (function(t) {
      function e() {
        console.error("TBSV (triangular banded matrix solver) not yet implemented")
      }
      t.exporst = e
    }).call(e, n(66)(t))
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("TPSV (triangular packed matrix solver) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("GER (rank 1 operation A := alpha*x*y' + A) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("SYR (symmetric rank 1 operation A := alpha*x*y' + A) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("SPR (symmetric packed rank 1 operation A := alpha*x*y' + A) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("SYR (symmetric rank 2 operation A := alpha*x*y' + alpha*y*x' + A) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      console.error("SPR (symmetric packed rank 2 operation A := alpha*x*y' + alpha*y*x' + A) not yet implemented")
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r() {
      var t, e, n, r;
      if (2 === arguments.length ? (e = arguments[0], r = arguments[1]) : 3 === arguments.length && (n = arguments[0], e = arguments[1], r = arguments[2]), !Array.isArray(r)) throw new Error("second argument of tile must be an array of repetition counts for each dimension");
      var a = e.shape.slice(0),
        s = a.slice(0),
        u = Math.max(s.length, r.length);
      for (t = 0; t < u; t++)
        if (a[t] = void 0 === a[t] ? 1 : a[t], r[t] = void 0 === r[t] ? 1 : r[t], s[t] = (void 0 === s[t] ? 1 : s[t]) * r[t], 0 === s[t]) throw new Error("Number of tiles must be greater than zero");
      n || (n = o.zeros(s, e.dtype));
      var c = 1;
      for (t = 0; t < r.length; t++) c *= r[t];
      var l = new Array(r.length);
      for (t = 0; t < r.length; t++) l[t] = 0;
      var p = s.slice(0);
      for (f = 0; f < s.length; f++) p[f] = f < e.dimension ? null : 0;
      for (t = 0; t < c; t++) {
        for (f = e.dimension; f < s.length; f++) p[f] = l[f];
        var h = n.pick.apply(n, p);
        if (h = h.lo.apply(h, l), h = h.hi.apply(h, e.shape), i.assign(h, e), t === c - 1) break;
        for (var f = u - 1; f >= 0 && (l[f] += a[f], l[f] === s[f]);) l[f] = 0, f--
      }
      return n
    }
    var o = n(165),
      i = n(1);
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    (function(t, r) {
      function o(t) {
        if (t) {
          var e = t.length || t.byteLength,
            n = g.log2(e);
          w[n].push(t)
        }
      }

      function i(t) {
        o(t.buffer)
      }

      function a(t) {
        var t = g.nextPow2(t),
          e = g.log2(t),
          n = w[e];
        return n.length > 0 ? n.pop() : new ArrayBuffer(t)
      }

      function s(t) {
        return new Uint8Array(a(t), 0, t)
      }

      function u(t) {
        return new Uint16Array(a(2 * t), 0, t)
      }

      function c(t) {
        return new Uint32Array(a(4 * t), 0, t)
      }

      function l(t) {
        return new Int8Array(a(t), 0, t)
      }

      function p(t) {
        return new Int16Array(a(2 * t), 0, t)
      }

      function h(t) {
        return new Int32Array(a(4 * t), 0, t)
      }

      function f(t) {
        return new Float32Array(a(4 * t), 0, t)
      }

      function d(t) {
        return new Float64Array(a(8 * t), 0, t)
      }

      function m(t) {
        return b ? new Uint8ClampedArray(a(t), 0, t) : s(t)
      }

      function y(t) {
        return new DataView(a(t), 0, t)
      }

      function v(t) {
        t = g.nextPow2(t);
        var e = g.log2(t),
          n = S[e];
        return n.length > 0 ? n.pop() : new r(t)
      }
      var g = n(455),
        _ = n(166);
      t.__TYPEDARRAY_POOL || (t.__TYPEDARRAY_POOL = {
        UINT8: _([32, 0]),
        UINT16: _([32, 0]),
        UINT32: _([32, 0]),
        INT8: _([32, 0]),
        INT16: _([32, 0]),
        INT32: _([32, 0]),
        FLOAT: _([32, 0]),
        DOUBLE: _([32, 0]),
        DATA: _([32, 0]),
        UINT8C: _([32, 0]),
        BUFFER: _([32, 0])
      });
      var b = "undefined" != typeof Uint8ClampedArray,
        x = t.__TYPEDARRAY_POOL;
      x.UINT8C || (x.UINT8C = _([32, 0])), x.BUFFER || (x.BUFFER = _([32, 0]));
      var w = x.DATA,
        S = x.BUFFER;
      e.free = function t(e) {
        if (r.isBuffer(e)) S[g.log2(e.length)].push(e);
        else {
          if ("[object ArrayBuffer]" !== Object.prototype.toString.call(e) && (e = e.buffer), !e) return;
          var n = e.length || e.byteLength,
            o = 0 | g.log2(n);
          w[o].push(e)
        }
      }, e.freeUint8 = e.freeUint16 = e.freeUint32 = e.freeInt8 = e.freeInt16 = e.freeInt32 = e.freeFloat32 = e.freeFloat = e.freeFloat64 = e.freeDouble = e.freeUint8Clamped = e.freeDataView = i, e.freeArrayBuffer = o, e.freeBuffer = function t(e) {
        S[g.log2(e.length)].push(e)
      }, e.malloc = function t(e, n) {
        if (void 0 === n || "arraybuffer" === n) return a(e);
        switch (n) {
          case "uint8":
            return s(e);
          case "uint16":
            return u(e);
          case "uint32":
            return c(e);
          case "int8":
            return l(e);
          case "int16":
            return p(e);
          case "int32":
            return h(e);
          case "float":
          case "float32":
            return f(e);
          case "double":
          case "float64":
            return d(e);
          case "uint8_clamped":
            return m(e);
          case "buffer":
            return v(e);
          case "data":
          case "dataview":
            return y(e);
          default:
            return null
        }
        return null
      }, e.mallocArrayBuffer = a, e.mallocUint8 = s, e.mallocUint16 = u, e.mallocUint32 = c, e.mallocInt8 = l, e.mallocInt16 = p, e.mallocInt32 = h, e.mallocFloat32 = e.mallocFloat = f, e.mallocFloat64 = e.mallocDouble = d, e.mallocUint8Clamped = m, e.mallocDataView = y, e.mallocBuffer = v, e.clearCache = function t() {
        for (var e = 0; e < 32; ++e) x.UINT8[e].length = 0, x.UINT16[e].length = 0, x.UINT32[e].length = 0, x.INT8[e].length = 0, x.INT16[e].length = 0, x.INT32[e].length = 0, x.FLOAT[e].length = 0, x.DOUBLE[e].length = 0, x.UINT8C[e].length = 0, w[e].length = 0, S[e].length = 0
      }
    }).call(e, n(30), n(451).Buffer)
  }, function(t, e, n) {
    "use strict";
    (function(t) {
      function r() {
        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
        }
      }

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

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

      function a(t, e, n) {
        if (!(a.TYPED_ARRAY_SUPPORT || this instanceof a)) return new a(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 s(this, t, e, n)
      }

      function s(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 ? f(t, e, n, r) : "string" == typeof e ? p(t, e, n) : d(t, e)
      }

      function u(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 c(t, e, n, r) {
        return u(e), e <= 0 ? i(t, e) : void 0 !== n ? "string" == typeof r ? i(t, e).fill(n, r) : i(t, e).fill(n) : i(t, e)
      }

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

      function p(t, e, n) {
        if ("string" == typeof n && "" !== n || (n = "utf8"), !a.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding');
        var r = 0 | v(e, n);
        t = i(t, r);
        var o = t.write(e, n);
        return o !== r && (t = t.slice(0, o)), t
      }

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

      function f(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");
        return e = void 0 === n && void 0 === r ? new Uint8Array(e) : void 0 === r ? new Uint8Array(e, n) : new Uint8Array(e, n, r), a.TYPED_ARRAY_SUPPORT ? (t = e, t.__proto__ = a.prototype) : t = h(t, e), t
      }

      function d(t, e) {
        if (a.isBuffer(e)) {
          var n = 0 | m(e.length);
          return t = i(t, n), 0 === t.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 || K(e.length) ? i(t, 0) : h(t, e);
          if ("Buffer" === e.type && Z(e.data)) return h(t, e.data)
        }
        throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
      }

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

      function y(t) {
        return +t != t && (t = 0), a.alloc(+t)
      }

      function v(t, e) {
        if (a.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 H(t).length;
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
            return 2 * n;
          case "hex":
            return n >>> 1;
          case "base64":
            return Y(t).length;
          default:
            if (r) return H(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, n <= e) return "";
        for (t || (t = "utf8");;) switch (t) {
          case "hex":
            return M(this, e, n);
          case "utf8":
          case "utf-8":
            return E(this, e, n);
          case "ascii":
            return A(this, e, n);
          case "latin1":
          case "binary":
            return F(this, e, n);
          case "base64":
            return O(this, e, n);
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
            return R(this, e, n);
          default:
            if (r) throw new TypeError("Unknown encoding: " + t);
            t = (t + "").toLowerCase(), r = !0
        }
      }

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

      function b(t, e, n, r, o) {
        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 = o ? 0 : t.length - 1), n < 0 && (n = t.length + n), n >= t.length) {
          if (o) return -1;
          n = t.length - 1
        } else if (n < 0) {
          if (!o) return -1;
          n = 0
        }
        if ("string" == typeof e && (e = a.from(e, r)), a.isBuffer(e)) return 0 === e.length ? -1 : x(t, e, n, r, o);
        if ("number" == typeof e) return e &= 255, a.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? o ? Uint8Array.prototype.indexOf.call(t, e, n) : Uint8Array.prototype.lastIndexOf.call(t, e, n) : x(t, [e], n, r, o);
        throw new TypeError("val must be string, number or Buffer")
      }

      function x(t, e, n, r, o) {
        function i(t, e) {
          return 1 === a ? t[e] : t.readUInt16BE(e * a)
        }
        var a = 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;
          a = 2, s /= 2, u /= 2, n /= 2
        }
        var c;
        if (o) {
          var l = -1;
          for (c = n; c < s; c++)
            if (i(t, c) === i(e, -1 === l ? 0 : c - l)) {
              if (-1 === l && (l = c), c - l + 1 === u) return l * a
            } else -1 !== l && (c -= c - l), l = -1
        } else
          for (n + u > s && (n = s - u), c = n; c >= 0; c--) {
            for (var p = !0, h = 0; h < u; h++)
              if (i(t, c + h) !== i(e, h)) {
                p = !1;
                break
              }
            if (p) return c
          }
        return -1
      }

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

      function S(t, e, n, r) {
        return $(H(e, t.length - n), t, n, r)
      }

      function T(t, e, n, r) {
        return $(W(e), t, n, r)
      }

      function P(t, e, n, r) {
        return T(t, e, n, r)
      }

      function C(t, e, n, r) {
        return $(Y(e), t, n, r)
      }

      function k(t, e, n, r) {
        return $(X(e, t.length - n), t, n, r)
      }

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

      function E(t, e, n) {
        n = Math.min(t.length, n);
        for (var r = [], o = e; o < n;) {
          var i = t[o],
            a = null,
            s = i > 239 ? 4 : i > 223 ? 3 : i > 191 ? 2 : 1;
          if (o + s <= n) {
            var u, c, l, p;
            switch (s) {
              case 1:
                i < 128 && (a = i);
                break;
              case 2:
                u = t[o + 1], 128 == (192 & u) && (p = (31 & i) << 6 | 63 & u) > 127 && (a = p);
                break;
              case 3:
                u = t[o + 1], c = t[o + 2], 128 == (192 & u) && 128 == (192 & c) && (p = (15 & i) << 12 | (63 & u) << 6 | 63 & c) > 2047 && (p < 55296 || p > 57343) && (a = p);
                break;
              case 4:
                u = t[o + 1], c = t[o + 2], l = t[o + 3], 128 == (192 & u) && 128 == (192 & c) && 128 == (192 & l) && (p = (15 & i) << 18 | (63 & u) << 12 | (63 & c) << 6 | 63 & l) > 65535 && p < 1114112 && (a = p)
            }
          }
          null === a ? (a = 65533, s = 1) : a > 65535 && (a -= 65536, r.push(a >>> 10 & 1023 | 55296), a = 56320 | 1023 & a), r.push(a), o += s
        }
        return j(r)
      }

      function j(t) {
        var e = t.length;
        if (e <= tt) return String.fromCharCode.apply(String, t);
        for (var n = "", r = 0; r < e;) n += String.fromCharCode.apply(String, t.slice(r, r += tt));
        return n
      }

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

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

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

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

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

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

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

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

      function G(t, e, n, r, o) {
        return o || U(t, e, n, 4, 3.4028234663852886e38, -3.4028234663852886e38), Q.write(t, e, n, r, 23, 4), n + 4
      }

      function N(t, e, n, r, o) {
        return o || U(t, e, n, 8, 1.7976931348623157e308, -1.7976931348623157e308), Q.write(t, e, n, r, 52, 8), n + 8
      }

      function B(t) {
        if (t = q(t).replace(et, ""), t.length < 2) return "";
        for (; t.length % 4 != 0;) t += "=";
        return t
      }

      function q(t) {
        return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
      }

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

      function H(t, e) {
        e = e || 1 / 0;
        for (var n, r = t.length, o = null, i = [], a = 0; a < r; ++a) {
          if ((n = t.charCodeAt(a)) > 55295 && n < 57344) {
            if (!o) {
              if (n > 56319) {
                (e -= 3) > -1 && i.push(239, 191, 189);
                continue
              }
              if (a + 1 === r) {
                (e -= 3) > -1 && i.push(239, 191, 189);
                continue
              }
              o = n;
              continue
            }
            if (n < 56320) {
              (e -= 3) > -1 && i.push(239, 191, 189), o = n;
              continue
            }
            n = 65536 + (o - 55296 << 10 | n - 56320)
          } else o && (e -= 3) > -1 && i.push(239, 191, 189);
          if (o = null, n < 128) {
            if ((e -= 1) < 0) break;
            i.push(n)
          } else if (n < 2048) {
            if ((e -= 2) < 0) break;
            i.push(n >> 6 | 192, 63 & n | 128)
          } else if (n < 65536) {
            if ((e -= 3) < 0) break;
            i.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;
            i.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128)
          }
        }
        return i
      }

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

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

      function Y(t) {
        return J.toByteArray(B(t))
      }

      function $(t, e, n, r) {
        for (var o = 0; o < r && !(o + n >= e.length || o >= t.length); ++o) e[o + n] = t[o];
        return o
      }

      function K(t) {
        return t !== t
      }
      var J = n(452),
        Q = n(453),
        Z = n(454);
      e.Buffer = a, e.SlowBuffer = y, e.INSPECT_MAX_BYTES = 50, a.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : r(), e.kMaxLength = o(), a.poolSize = 8192, a._augment = function(t) {
        return t.__proto__ = a.prototype, t
      }, a.from = function(t, e, n) {
        return s(null, t, e, n)
      }, a.TYPED_ARRAY_SUPPORT && (a.prototype.__proto__ = Uint8Array.prototype, a.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && a[Symbol.species] === a && Object.defineProperty(a, Symbol.species, {
        value: null,
        configurable: !0
      })), a.alloc = function(t, e, n) {
        return c(null, t, e, n)
      }, a.allocUnsafe = function(t) {
        return l(null, t)
      }, a.allocUnsafeSlow = function(t) {
        return l(null, t)
      }, a.isBuffer = function t(e) {
        return !(null == e || !e._isBuffer)
      }, a.compare = function t(e, n) {
        if (!a.isBuffer(e) || !a.isBuffer(n)) throw new TypeError("Arguments must be Buffers");
        if (e === n) return 0;
        for (var r = e.length, o = n.length, i = 0, s = Math.min(r, o); i < s; ++i)
          if (e[i] !== n[i]) {
            r = e[i], o = n[i];
            break
          }
        return r < o ? -1 : o < r ? 1 : 0
      }, a.isEncoding = function t(e) {
        switch (String(e).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
        }
      }, a.concat = function t(e, n) {
        if (!Z(e)) throw new TypeError('"list" argument must be an Array of Buffers');
        if (0 === e.length) return a.alloc(0);
        var r;
        if (void 0 === n)
          for (n = 0, r = 0; r < e.length; ++r) n += e[r].length;
        var o = a.allocUnsafe(n),
          i = 0;
        for (r = 0; r < e.length; ++r) {
          var s = e[r];
          if (!a.isBuffer(s)) throw new TypeError('"list" argument must be an Array of Buffers');
          s.copy(o, i), i += s.length
        }
        return o
      }, a.byteLength = v, a.prototype._isBuffer = !0, a.prototype.swap16 = function t() {
        var e = this.length;
        if (e % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits");
        for (var n = 0; n < e; n += 2) _(this, n, n + 1);
        return this
      }, a.prototype.swap32 = function t() {
        var e = this.length;
        if (e % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits");
        for (var n = 0; n < e; n += 4) _(this, n, n + 3), _(this, n + 1, n + 2);
        return this
      }, a.prototype.swap64 = function t() {
        var e = this.length;
        if (e % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits");
        for (var n = 0; n < e; n += 8) _(this, n, n + 7), _(this, n + 1, n + 6), _(this, n + 2, n + 5), _(this, n + 3, n + 4);
        return this
      }, a.prototype.toString = function t() {
        var e = 0 | this.length;
        return 0 === e ? "" : 0 === arguments.length ? E(this, 0, e) : g.apply(this, arguments)
      }, a.prototype.equals = function t(e) {
        if (!a.isBuffer(e)) throw new TypeError("Argument must be a Buffer");
        return this === e || 0 === a.compare(this, e)
      }, a.prototype.inspect = function t() {
        var n = "",
          r = e.INSPECT_MAX_BYTES;
        return this.length > 0 && (n = this.toString("hex", 0, r).match(/.{2}/g).join(" "), this.length > r && (n += " ... ")), "<Buffer " + n + ">"
      }, a.prototype.compare = function t(e, n, r, o, i) {
        if (!a.isBuffer(e)) throw new TypeError("Argument must be a Buffer");
        if (void 0 === n && (n = 0), void 0 === r && (r = e ? e.length : 0), void 0 === o && (o = 0), void 0 === i && (i = this.length), n < 0 || r > e.length || o < 0 || i > this.length) throw new RangeError("out of range index");
        if (o >= i && n >= r) return 0;
        if (o >= i) return -1;
        if (n >= r) return 1;
        if (n >>>= 0, r >>>= 0, o >>>= 0, i >>>= 0, this === e) return 0;
        for (var s = i - o, u = r - n, c = Math.min(s, u), l = this.slice(o, i), p = e.slice(n, r), h = 0; h < c; ++h)
          if (l[h] !== p[h]) {
            s = l[h], u = p[h];
            break
          }
        return s < u ? -1 : u < s ? 1 : 0
      }, a.prototype.includes = function t(e, n, r) {
        return -1 !== this.indexOf(e, n, r)
      }, a.prototype.indexOf = function t(e, n, r) {
        return b(this, e, n, r, !0)
      }, a.prototype.lastIndexOf = function t(e, n, r) {
        return b(this, e, n, r, !1)
      }, a.prototype.write = function t(e, n, r, o) {
        if (void 0 === n) o = "utf8", r = this.length, n = 0;
        else if (void 0 === r && "string" == typeof n) o = n, r = this.length, n = 0;
        else {
          if (!isFinite(n)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
          n |= 0, isFinite(r) ? (r |= 0, void 0 === o && (o = "utf8")) : (o = r, r = void 0)
        }
        var i = this.length - n;
        if ((void 0 === r || r > i) && (r = i), e.length > 0 && (r < 0 || n < 0) || n > this.length) throw new RangeError("Attempt to write outside buffer bounds");
        o || (o = "utf8");
        for (var a = !1;;) switch (o) {
          case "hex":
            return w(this, e, n, r);
          case "utf8":
          case "utf-8":
            return S(this, e, n, r);
          case "ascii":
            return T(this, e, n, r);
          case "latin1":
          case "binary":
            return P(this, e, n, r);
          case "base64":
            return C(this, e, n, r);
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
            return k(this, e, n, r);
          default:
            if (a) throw new TypeError("Unknown encoding: " + o);
            o = ("" + o).toLowerCase(), a = !0
        }
      }, a.prototype.toJSON = function t() {
        return {
          type: "Buffer",
          data: Array.prototype.slice.call(this._arr || this, 0)
        }
      };
      var tt = 4096;
      a.prototype.slice = function t(e, n) {
        var r = this.length;
        e = ~~e, n = void 0 === n ? r : ~~n, e < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), n < 0 ? (n += r) < 0 && (n = 0) : n > r && (n = r), n < e && (n = e);
        var o;
        if (a.TYPED_ARRAY_SUPPORT) o = this.subarray(e, n), o.__proto__ = a.prototype;
        else {
          var i = n - e;
          o = new a(i, void 0);
          for (var s = 0; s < i; ++s) o[s] = this[s + e]
        }
        return o
      }, a.prototype.readUIntLE = function t(e, n, r) {
        e |= 0, n |= 0, r || D(e, n, this.length);
        for (var o = this[e], i = 1, a = 0; ++a < n && (i *= 256);) o += this[e + a] * i;
        return o
      }, a.prototype.readUIntBE = function t(e, n, r) {
        e |= 0, n |= 0, r || D(e, n, this.length);
        for (var o = this[e + --n], i = 1; n > 0 && (i *= 256);) o += this[e + --n] * i;
        return o
      }, a.prototype.readUInt8 = function t(e, n) {
        return n || D(e, 1, this.length), this[e]
      }, a.prototype.readUInt16LE = function t(e, n) {
        return n || D(e, 2, this.length), this[e] | this[e + 1] << 8
      }, a.prototype.readUInt16BE = function t(e, n) {
        return n || D(e, 2, this.length), this[e] << 8 | this[e + 1]
      }, a.prototype.readUInt32LE = function t(e, n) {
        return n || D(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3]
      }, a.prototype.readUInt32BE = function t(e, n) {
        return n || D(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3])
      }, a.prototype.readIntLE = function t(e, n, r) {
        e |= 0, n |= 0, r || D(e, n, this.length);
        for (var o = this[e], i = 1, a = 0; ++a < n && (i *= 256);) o += this[e + a] * i;
        return i *= 128, o >= i && (o -= Math.pow(2, 8 * n)), o
      }, a.prototype.readIntBE = function t(e, n, r) {
        e |= 0, n |= 0, r || D(e, n, this.length);
        for (var o = n, i = 1, a = this[e + --o]; o > 0 && (i *= 256);) a += this[e + --o] * i;
        return i *= 128, a >= i && (a -= Math.pow(2, 8 * n)), a
      }, a.prototype.readInt8 = function t(e, n) {
        return n || D(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e]
      }, a.prototype.readInt16LE = function t(e, n) {
        n || D(e, 2, this.length);
        var r = this[e] | this[e + 1] << 8;
        return 32768 & r ? 4294901760 | r : r
      }, a.prototype.readInt16BE = function t(e, n) {
        n || D(e, 2, this.length);
        var r = this[e + 1] | this[e] << 8;
        return 32768 & r ? 4294901760 | r : r
      }, a.prototype.readInt32LE = function t(e, n) {
        return n || D(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24
      }, a.prototype.readInt32BE = function t(e, n) {
        return n || D(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]
      }, a.prototype.readFloatLE = function t(e, n) {
        return n || D(e, 4, this.length), Q.read(this, e, !0, 23, 4)
      }, a.prototype.readFloatBE = function t(e, n) {
        return n || D(e, 4, this.length), Q.read(this, e, !1, 23, 4)
      }, a.prototype.readDoubleLE = function t(e, n) {
        return n || D(e, 8, this.length), Q.read(this, e, !0, 52, 8)
      }, a.prototype.readDoubleBE = function t(e, n) {
        return n || D(e, 8, this.length), Q.read(this, e, !1, 52, 8)
      }, a.prototype.writeUIntLE = function t(e, n, r, o) {
        if (e = +e, n |= 0, r |= 0, !o) {
          I(this, e, n, r, Math.pow(2, 8 * r) - 1, 0)
        }
        var i = 1,
          a = 0;
        for (this[n] = 255 & e; ++a < r && (i *= 256);) this[n + a] = e / i & 255;
        return n + r
      }, a.prototype.writeUIntBE = function t(e, n, r, o) {
        if (e = +e, n |= 0, r |= 0, !o) {
          I(this, e, n, r, Math.pow(2, 8 * r) - 1, 0)
        }
        var i = r - 1,
          a = 1;
        for (this[n + i] = 255 & e; --i >= 0 && (a *= 256);) this[n + i] = e / a & 255;
        return n + r
      }, a.prototype.writeUInt8 = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 1, 255, 0), a.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[n] = 255 & e, n + 1
      }, a.prototype.writeUInt16LE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 2, 65535, 0), a.TYPED_ARRAY_SUPPORT ? (this[n] = 255 & e, this[n + 1] = e >>> 8) : L(this, e, n, !0), n + 2
      }, a.prototype.writeUInt16BE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 2, 65535, 0), a.TYPED_ARRAY_SUPPORT ? (this[n] = e >>> 8, this[n + 1] = 255 & e) : L(this, e, n, !1), n + 2
      }, a.prototype.writeUInt32LE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 4, 4294967295, 0), a.TYPED_ARRAY_SUPPORT ? (this[n + 3] = e >>> 24, this[n + 2] = e >>> 16, this[n + 1] = e >>> 8, this[n] = 255 & e) : z(this, e, n, !0), n + 4
      }, a.prototype.writeUInt32BE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 4, 4294967295, 0), a.TYPED_ARRAY_SUPPORT ? (this[n] = e >>> 24, this[n + 1] = e >>> 16, this[n + 2] = e >>> 8, this[n + 3] = 255 & e) : z(this, e, n, !1), n + 4
      }, a.prototype.writeIntLE = function t(e, n, r, o) {
        if (e = +e, n |= 0, !o) {
          var i = Math.pow(2, 8 * r - 1);
          I(this, e, n, r, i - 1, -i)
        }
        var a = 0,
          s = 1,
          u = 0;
        for (this[n] = 255 & e; ++a < r && (s *= 256);) e < 0 && 0 === u && 0 !== this[n + a - 1] && (u = 1), this[n + a] = (e / s >> 0) - u & 255;
        return n + r
      }, a.prototype.writeIntBE = function t(e, n, r, o) {
        if (e = +e, n |= 0, !o) {
          var i = Math.pow(2, 8 * r - 1);
          I(this, e, n, r, i - 1, -i)
        }
        var a = r - 1,
          s = 1,
          u = 0;
        for (this[n + a] = 255 & e; --a >= 0 && (s *= 256);) e < 0 && 0 === u && 0 !== this[n + a + 1] && (u = 1), this[n + a] = (e / s >> 0) - u & 255;
        return n + r
      }, a.prototype.writeInt8 = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 1, 127, -128), a.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[n] = 255 & e, n + 1
      }, a.prototype.writeInt16LE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 2, 32767, -32768), a.TYPED_ARRAY_SUPPORT ? (this[n] = 255 & e, this[n + 1] = e >>> 8) : L(this, e, n, !0), n + 2
      }, a.prototype.writeInt16BE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 2, 32767, -32768), a.TYPED_ARRAY_SUPPORT ? (this[n] = e >>> 8, this[n + 1] = 255 & e) : L(this, e, n, !1), n + 2
      }, a.prototype.writeInt32LE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 4, 2147483647, -2147483648), a.TYPED_ARRAY_SUPPORT ? (this[n] = 255 & e, this[n + 1] = e >>> 8, this[n + 2] = e >>> 16, this[n + 3] = e >>> 24) : z(this, e, n, !0), n + 4
      }, a.prototype.writeInt32BE = function t(e, n, r) {
        return e = +e, n |= 0, r || I(this, e, n, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), a.TYPED_ARRAY_SUPPORT ? (this[n] = e >>> 24, this[n + 1] = e >>> 16, this[n + 2] = e >>> 8, this[n + 3] = 255 & e) : z(this, e, n, !1), n + 4
      }, a.prototype.writeFloatLE = function t(e, n, r) {
        return G(this, e, n, !0, r)
      }, a.prototype.writeFloatBE = function t(e, n, r) {
        return G(this, e, n, !1, r)
      }, a.prototype.writeDoubleLE = function t(e, n, r) {
        return N(this, e, n, !0, r)
      }, a.prototype.writeDoubleBE = function t(e, n, r) {
        return N(this, e, n, !1, r)
      }, a.prototype.copy = function t(e, n, r, o) {
        if (r || (r = 0), o || 0 === o || (o = this.length), n >= e.length && (n = e.length), n || (n = 0), o > 0 && o < r && (o = r), o === r) return 0;
        if (0 === e.length || 0 === this.length) return 0;
        if (n < 0) throw new RangeError("targetStart out of bounds");
        if (r < 0 || r >= this.length) throw new RangeError("sourceStart out of bounds");
        if (o < 0) throw new RangeError("sourceEnd out of bounds");
        o > this.length && (o = this.length), e.length - n < o - r && (o = e.length - n + r);
        var i = o - r,
          s;
        if (this === e && r < n && n < o)
          for (s = i - 1; s >= 0; --s) e[s + n] = this[s + r];
        else if (i < 1e3 || !a.TYPED_ARRAY_SUPPORT)
          for (s = 0; s < i; ++s) e[s + n] = this[s + r];
        else Uint8Array.prototype.set.call(e, this.subarray(r, r + i), n);
        return i
      }, a.prototype.fill = function t(e, n, r, o) {
        if ("string" == typeof e) {
          if ("string" == typeof n ? (o = n, n = 0, r = this.length) : "string" == typeof r && (o = r, r = this.length), 1 === e.length) {
            var i = e.charCodeAt(0);
            i < 256 && (e = i)
          }
          if (void 0 !== o && "string" != typeof o) throw new TypeError("encoding must be a string");
          if ("string" == typeof o && !a.isEncoding(o)) throw new TypeError("Unknown encoding: " + o)
        } else "number" == typeof e && (e &= 255);
        if (n < 0 || this.length < n || this.length < r) throw new RangeError("Out of range index");
        if (r <= n) return this;
        n >>>= 0, r = void 0 === r ? this.length : r >>> 0, e || (e = 0);
        var s;
        if ("number" == typeof e)
          for (s = n; s < r; ++s) this[s] = e;
        else {
          var u = a.isBuffer(e) ? e : H(new a(e, o).toString()),
            c = u.length;
          for (s = 0; s < r - n; ++s) this[s + n] = u[s % c]
        }
        return this
      };
      var et = /[^+\/0-9A-Za-z-_]/g
    }).call(e, n(30))
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      var e = t.length;
      if (e % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
      return "=" === t[e - 2] ? 2 : "=" === t[e - 1] ? 1 : 0
    }

    function o(t) {
      return 3 * t.length / 4 - r(t)
    }

    function i(t) {
      var e, n, o, i, a, s = t.length;
      i = r(t), a = new p(3 * s / 4 - i), n = i > 0 ? s - 4 : s;
      var u = 0;
      for (e = 0; e < n; e += 4) o = l[t.charCodeAt(e)] << 18 | l[t.charCodeAt(e + 1)] << 12 | l[t.charCodeAt(e + 2)] << 6 | l[t.charCodeAt(e + 3)], a[u++] = o >> 16 & 255, a[u++] = o >> 8 & 255, a[u++] = 255 & o;
      return 2 === i ? (o = l[t.charCodeAt(e)] << 2 | l[t.charCodeAt(e + 1)] >> 4, a[u++] = 255 & o) : 1 === i && (o = l[t.charCodeAt(e)] << 10 | l[t.charCodeAt(e + 1)] << 4 | l[t.charCodeAt(e + 2)] >> 2, a[u++] = o >> 8 & 255, a[u++] = 255 & o), a
    }

    function a(t) {
      return c[t >> 18 & 63] + c[t >> 12 & 63] + c[t >> 6 & 63] + c[63 & t]
    }

    function s(t, e, n) {
      for (var r, o = [], i = e; i < n; i += 3) r = (t[i] << 16) + (t[i + 1] << 8) + t[i + 2], o.push(a(r));
      return o.join("")
    }

    function u(t) {
      for (var e, n = t.length, r = n % 3, o = "", i = [], a = 16383, u = 0, l = n - r; u < l; u += 16383) i.push(s(t, u, u + 16383 > l ? l : u + 16383));
      return 1 === r ? (e = t[n - 1], o += c[e >> 2], o += c[e << 4 & 63], o += "==") : 2 === r && (e = (t[n - 2] << 8) + t[n - 1], o += c[e >> 10], o += c[e >> 4 & 63], o += c[e << 2 & 63], o += "="), i.push(o), i.join("")
    }
    e.byteLength = o, e.toByteArray = i, e.fromByteArray = u;
    for (var c = [], l = [], p = "undefined" != typeof Uint8Array ? Uint8Array : Array, h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", f = 0, d = h.length; f < d; ++f) c[f] = h[f], l[h.charCodeAt(f)] = f;
    l["-".charCodeAt(0)] = 62, l["_".charCodeAt(0)] = 63
  }, function(t, e) {
    e.read = function(t, e, n, r, o) {
      var i, a, s = 8 * o - r - 1,
        u = (1 << s) - 1,
        c = u >> 1,
        l = -7,
        p = n ? o - 1 : 0,
        h = n ? -1 : 1,
        f = t[e + p];
      for (p += h, i = f & (1 << -l) - 1, f >>= -l, l += s; l > 0; i = 256 * i + t[e + p], p += h, l -= 8);
      for (a = i & (1 << -l) - 1, i >>= -l, l += r; l > 0; a = 256 * a + t[e + p], p += h, l -= 8);
      if (0 === i) i = 1 - c;
      else {
        if (i === u) return a ? NaN : 1 / 0 * (f ? -1 : 1);
        a += Math.pow(2, r), i -= c
      }
      return (f ? -1 : 1) * a * Math.pow(2, i - r)
    }, e.write = function(t, e, n, r, o, i) {
      var a, s, u, c = 8 * i - o - 1,
        l = (1 << c) - 1,
        p = l >> 1,
        h = 23 === o ? Math.pow(2, -24) - Math.pow(2, -77) : 0,
        f = r ? 0 : i - 1,
        d = r ? 1 : -1,
        m = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
      for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0, a = l) : (a = Math.floor(Math.log(e) / Math.LN2), e * (u = Math.pow(2, -a)) < 1 && (a--, u *= 2), e += a + p >= 1 ? h / u : h * Math.pow(2, 1 - p), e * u >= 2 && (a++, u /= 2), a + p >= l ? (s = 0, a = l) : a + p >= 1 ? (s = (e * u - 1) * Math.pow(2, o), a += p) : (s = e * Math.pow(2, p - 1) * Math.pow(2, o), a = 0)); o >= 8; t[n + f] = 255 & s, f += d, s /= 256, o -= 8);
      for (a = a << o | s, c += o; c > 0; t[n + f] = 255 & a, f += d, a /= 256, c -= 8);
      t[n + f - d] |= 128 * m
    }
  }, function(t, e) {
    var n = {}.toString;
    t.exports = Array.isArray || function(t) {
      return "[object Array]" == n.call(t)
    }
  }, function(t, e, n) {
    "use strict";
    "use restrict";

    function r(t) {
      var e = 32;
      return t &= -t, t && e--, 65535 & t && (e -= 16), 16711935 & t && (e -= 8), 252645135 & t && (e -= 4), 858993459 & t && (e -= 2), 1431655765 & t && (e -= 1), e
    }
    var o = 32;
    e.INT_BITS = 32, e.INT_MAX = 2147483647, e.INT_MIN = -1 << 31, e.sign = function(t) {
      return (t > 0) - (t < 0)
    }, e.abs = function(t) {
      var e = t >> 31;
      return (t ^ e) - e
    }, e.min = function(t, e) {
      return e ^ (t ^ e) & -(t < e)
    }, e.max = function(t, e) {
      return t ^ (t ^ e) & -(t < e)
    }, e.isPow2 = function(t) {
      return !(t & t - 1 || !t)
    }, e.log2 = function(t) {
      var e, n;
      return e = (t > 65535) << 4, t >>>= e, n = (t > 255) << 3, t >>>= n, e |= n, n = (t > 15) << 2, t >>>= n, e |= n, n = (t > 3) << 1, t >>>= n, (e |= n) | t >> 1
    }, e.log10 = function(t) {
      return t >= 1e9 ? 9 : t >= 1e8 ? 8 : t >= 1e7 ? 7 : t >= 1e6 ? 6 : t >= 1e5 ? 5 : t >= 1e4 ? 4 : t >= 1e3 ? 3 : t >= 100 ? 2 : t >= 10 ? 1 : 0
    }, e.popCount = function(t) {
      return t -= t >>> 1 & 1431655765, 16843009 * ((t = (858993459 & t) + (t >>> 2 & 858993459)) + (t >>> 4) & 252645135) >>> 24
    }, e.countTrailingZeros = r, e.nextPow2 = function(t) {
      return t += 0 === t, --t, t |= t >>> 1, t |= t >>> 2, t |= t >>> 4, t |= t >>> 8, (t |= t >>> 16) + 1
    }, e.prevPow2 = function(t) {
      return t |= t >>> 1, t |= t >>> 2, t |= t >>> 4, t |= t >>> 8, (t |= t >>> 16) - (t >>> 1)
    }, e.parity = function(t) {
      return t ^= t >>> 16, t ^= t >>> 8, t ^= t >>> 4, 27030 >>> (t &= 15) & 1
    };
    var i = new Array(256);
    ! function(t) {
      for (var e = 0; e < 256; ++e) {
        var n = e,
          r = e,
          o = 7;
        for (n >>>= 1; n; n >>>= 1) r <<= 1, r |= 1 & n, --o;
        t[e] = r << o & 255
      }
    }(i), e.reverse = function(t) {
      return i[255 & t] << 24 | i[t >>> 8 & 255] << 16 | i[t >>> 16 & 255] << 8 | i[t >>> 24 & 255]
    }, e.interleave2 = function(t, e) {
      return t &= 65535, t = 16711935 & (t | t << 8), t = 252645135 & (t | t << 4), t = 858993459 & (t | t << 2), t = 1431655765 & (t | t << 1), e &= 65535, e = 16711935 & (e | e << 8), e = 252645135 & (e | e << 4), e = 858993459 & (e | e << 2), e = 1431655765 & (e | e << 1), t | e << 1
    }, e.deinterleave2 = function(t, e) {
      return t = t >>> e & 1431655765, t = 858993459 & (t | t >>> 1), t = 252645135 & (t | t >>> 2), t = 16711935 & (t | t >>> 4), (t = 65535 & (t | t >>> 16)) << 16 >> 16
    }, e.interleave3 = function(t, e, n) {
      return t &= 1023, t = 4278190335 & (t | t << 16), t = 251719695 & (t | t << 8), t = 3272356035 & (t | t << 4), t = 1227133513 & (t | t << 2), e &= 1023, e = 4278190335 & (e | e << 16), e = 251719695 & (e | e << 8), e = 3272356035 & (e | e << 4), e = 1227133513 & (e | e << 2), t |= e << 1, n &= 1023, n = 4278190335 & (n | n << 16), n = 251719695 & (n | n << 8), n = 3272356035 & (n | n << 4), n = 1227133513 & (n | n << 2), t | n << 2
    }, e.deinterleave3 = function(t, e) {
      return t = t >>> e & 1227133513, t = 3272356035 & (t | t >>> 2), t = 251719695 & (t | t >>> 4), t = 4278190335 & (t | t >>> 8), (t = 1023 & (t | t >>> 16)) << 22 >> 22
    }, e.nextCombination = function(t) {
      var e = t | t - 1;
      return e + 1 | (~e & -~e) - 1 >>> r(t) + 1
    }
  }, function(t, e, n) {
    "use strict";

    function r() {
      var t, e, n, r, u, c, l, p, h, f;
      if (r = o({}, s), 0 === arguments.length) throw new Error("Array of ndarrays to concatenate must not be empty");
      if (Array.isArray(arguments[0]) ? (n = arguments[0], o(r, arguments[1] || {})) : 2 === arguments.length && (n = arguments[1], t = arguments[0], o(r, arguments[2] || {})), 0 === n.length) throw new Error("Array of ndarrays to concatenate must not be empty");
      for (u = 0; u < n.length; u++)
        if (l) {
          if (n[u].dimension !== l.length) throw new Error("all arrays must have the same dimensionality");
          for (c = 1; c < n[u].shape.length; c++)
            if (n[u].shape[c] !== l[c]) throw new Error("last n-1 dimensions of concatenated rows must have the same size");
          l[0] += n[u].shape[0]
        } else l = n[u].shape.slice(0);
      if (t) {
        if (l[0] !== t.shape[0]) throw new Error("first dimension of output array must match the total number of concatenated rows")
      } else t = a.zeros(l, r.dtype);
      for (c = 0, p = 0; c < n.length; c++) e = n[c], h = e.shape[0], f = t.lo(p).hi(h), i.assign(f, e), p += h;
      return t
    }
    t.exports = r;
    var o = n(457),
      i = n(1),
      a = n(165),
      s = {
        dtype: "double"
      }
  }, function(t, e) {
    function n(t, e) {
      if (!e || "object" != typeof e) return t;
      for (var n = Object.keys(e), r = n.length; r--;) t[n[r]] = e[n[r]];
      return t
    }
    t.exports = n
  }, function(t, e, n) {
    "use strict";
    t.exports = n(459)
  }, function(t, e, n) {
    "use strict";

    function r() {
      o.Reader._configure(o.BufferReader), o.util._configure()
    }
    var o = e;
    o.build = "minimal", o.Writer = n(167), o.BufferWriter = n(468), o.Reader = n(168), o.BufferReader = n(469), o.util = n(33), o.rpc = n(470), o.roots = n(472), o.configure = r, o.Writer._configure(o.BufferWriter), r()
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      for (var n = new Array(arguments.length - 1), r = 0, o = 2, i = !0; o < arguments.length;) n[r++] = arguments[o++];
      return new Promise(function o(a, s) {
        n[r] = function t(e) {
          if (i)
            if (i = !1, e) s(e);
            else {
              for (var n = new Array(arguments.length - 1), r = 0; r < n.length;) n[r++] = arguments[r];
              a.apply(null, n)
            }
        };
        try {
          t.apply(e || null, n)
        } catch (t) {
          i && (i = !1, s(t))
        }
      })
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    var r = e;
    r.length = function t(e) {
      var n = e.length;
      if (!n) return 0;
      for (var r = 0; --n % 4 > 1 && "=" === e.charAt(n);) ++r;
      return Math.ceil(3 * e.length) / 4 - r
    };
    for (var o = new Array(64), i = new Array(123), a = 0; a < 64;) i[o[a] = a < 26 ? a + 65 : a < 52 ? a + 71 : a < 62 ? a - 4 : a - 59 | 43] = a++;
    r.encode = function t(e, n, r) {
      for (var i = null, a = [], s = 0, u = 0, c; n < r;) {
        var l = e[n++];
        switch (u) {
          case 0:
            a[s++] = o[l >> 2], c = (3 & l) << 4, u = 1;
            break;
          case 1:
            a[s++] = o[c | l >> 4], c = (15 & l) << 2, u = 2;
            break;
          case 2:
            a[s++] = o[c | l >> 6], a[s++] = o[63 & l], u = 0
        }
        s > 8191 && ((i || (i = [])).push(String.fromCharCode.apply(String, a)), s = 0)
      }
      return u && (a[s++] = o[c], a[s++] = 61, 1 === u && (a[s++] = 61)), i ? (s && i.push(String.fromCharCode.apply(String, a.slice(0, s))), i.join("")) : String.fromCharCode.apply(String, a.slice(0, s))
    };
    var s = "invalid encoding";
    r.decode = function t(e, n, r) {
      for (var o = r, a = 0, u, c = 0; c < e.length;) {
        var l = e.charCodeAt(c++);
        if (61 === l && a > 1) break;
        if (void 0 === (l = i[l])) throw Error(s);
        switch (a) {
          case 0:
            u = l, a = 1;
            break;
          case 1:
            n[r++] = u << 2 | (48 & l) >> 4, u = l, a = 2;
            break;
          case 2:
            n[r++] = (15 & u) << 4 | (60 & l) >> 2, u = l, a = 3;
            break;
          case 3:
            n[r++] = (3 & u) << 6 | l, a = 0
        }
      }
      if (1 === a) throw Error(s);
      return r - o
    }, r.test = function t(e) {
      return /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)
    }
  }, function(t, e, n) {
    "use strict";

    function r() {
      this._listeners = {}
    }
    t.exports = r, r.prototype.on = function t(e, n, r) {
      return (this._listeners[e] || (this._listeners[e] = [])).push({
        fn: n,
        ctx: r || this
      }), this
    }, r.prototype.off = function t(e, n) {
      if (void 0 === e) this._listeners = {};
      else if (void 0 === n) this._listeners[e] = [];
      else
        for (var r = this._listeners[e], o = 0; o < r.length;) r[o].fn === n ? r.splice(o, 1) : ++o;
      return this
    }, r.prototype.emit = function t(e) {
      var n = this._listeners[e];
      if (n) {
        for (var r = [], o = 1; o < arguments.length;) r.push(arguments[o++]);
        for (o = 0; o < n.length;) n[o].fn.apply(n[o++].ctx, r)
      }
      return this
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      return "undefined" != typeof Float32Array ? function() {
        function e(t, e, n) {
          i[0] = t, e[n] = a[0], e[n + 1] = a[1], e[n + 2] = a[2], e[n + 3] = a[3]
        }

        function n(t, e, n) {
          i[0] = t, e[n] = a[3], e[n + 1] = a[2], e[n + 2] = a[1], e[n + 3] = a[0]
        }

        function r(t, e) {
          return a[0] = t[e], a[1] = t[e + 1], a[2] = t[e + 2], a[3] = t[e + 3], i[0]
        }

        function o(t, e) {
          return a[3] = t[e], a[2] = t[e + 1], a[1] = t[e + 2], a[0] = t[e + 3], i[0]
        }
        var i = new Float32Array([-0]),
          a = new Uint8Array(i.buffer),
          s = 128 === a[3];
        t.writeFloatLE = s ? e : n, t.writeFloatBE = s ? n : e, t.readFloatLE = s ? r : o, t.readFloatBE = s ? o : r
      }() : function() {
        function e(t, e, n, r) {
          var o = e < 0 ? 1 : 0;
          if (o && (e = -e), 0 === e) t(1 / e > 0 ? 0 : 2147483648, n, r);
          else if (isNaN(e)) t(2143289344, n, r);
          else if (e > 3.4028234663852886e38) t((o << 31 | 2139095040) >>> 0, n, r);
          else if (e < 1.1754943508222875e-38) t((o << 31 | Math.round(e / 1.401298464324817e-45)) >>> 0, n, r);
          else {
            var i = Math.floor(Math.log(e) / Math.LN2),
              a = 8388607 & Math.round(e * Math.pow(2, -i) * 8388608);
            t((o << 31 | i + 127 << 23 | a) >>> 0, n, r)
          }
        }

        function n(t, e, n) {
          var r = t(e, n),
            o = 2 * (r >> 31) + 1,
            i = r >>> 23 & 255,
            a = 8388607 & r;
          return 255 === i ? a ? NaN : o * (1 / 0) : 0 === i ? 1.401298464324817e-45 * o * a : o * Math.pow(2, i - 150) * (a + 8388608)
        }
        t.writeFloatLE = e.bind(null, o), t.writeFloatBE = e.bind(null, i), t.readFloatLE = n.bind(null, a), t.readFloatBE = n.bind(null, s)
      }(), "undefined" != typeof Float64Array ? function() {
        function e(t, e, n) {
          i[0] = t, e[n] = a[0], e[n + 1] = a[1], e[n + 2] = a[2], e[n + 3] = a[3], e[n + 4] = a[4], e[n + 5] = a[5], e[n + 6] = a[6], e[n + 7] = a[7]
        }

        function n(t, e, n) {
          i[0] = t, e[n] = a[7], e[n + 1] = a[6], e[n + 2] = a[5], e[n + 3] = a[4], e[n + 4] = a[3], e[n + 5] = a[2], e[n + 6] = a[1], e[n + 7] = a[0]
        }

        function r(t, e) {
          return a[0] = t[e], a[1] = t[e + 1], a[2] = t[e + 2], a[3] = t[e + 3], a[4] = t[e + 4], a[5] = t[e + 5], a[6] = t[e + 6], a[7] = t[e + 7], i[0]
        }

        function o(t, e) {
          return a[7] = t[e], a[6] = t[e + 1], a[5] = t[e + 2], a[4] = t[e + 3], a[3] = t[e + 4], a[2] = t[e + 5], a[1] = t[e + 6], a[0] = t[e + 7], i[0]
        }
        var i = new Float64Array([-0]),
          a = new Uint8Array(i.buffer),
          s = 128 === a[7];
        t.writeDoubleLE = s ? e : n, t.writeDoubleBE = s ? n : e, t.readDoubleLE = s ? r : o, t.readDoubleBE = s ? o : r
      }() : function() {
        function e(t, e, n, r, o, i) {
          var a = r < 0 ? 1 : 0;
          if (a && (r = -r), 0 === r) t(0, o, i + e), t(1 / r > 0 ? 0 : 2147483648, o, i + n);
          else if (isNaN(r)) t(0, o, i + e), t(2146959360, o, i + n);
          else if (r > 1.7976931348623157e308) t(0, o, i + e), t((a << 31 | 2146435072) >>> 0, o, i + n);
          else {
            var s;
            if (r < 2.2250738585072014e-308) s = r / 5e-324, t(s >>> 0, o, i + e), t((a << 31 | s / 4294967296) >>> 0, o, i + n);
            else {
              var u = Math.floor(Math.log(r) / Math.LN2);
              1024 === u && (u = 1023), s = r * Math.pow(2, -u), t(4503599627370496 * s >>> 0, o, i + e), t((a << 31 | u + 1023 << 20 | 1048576 * s & 1048575) >>> 0, o, i + n)
            }
          }
        }

        function n(t, e, n, r, o) {
          var i = t(r, o + e),
            a = t(r, o + n),
            s = 2 * (a >> 31) + 1,
            u = a >>> 20 & 2047,
            c = 4294967296 * (1048575 & a) + i;
          return 2047 === u ? c ? NaN : s * (1 / 0) : 0 === u ? 5e-324 * s * c : s * Math.pow(2, u - 1075) * (c + 4503599627370496)
        }
        t.writeDoubleLE = e.bind(null, o, 0, 4), t.writeDoubleBE = e.bind(null, i, 4, 0), t.readDoubleLE = n.bind(null, a, 0, 4), t.readDoubleBE = n.bind(null, s, 4, 0)
      }(), t
    }

    function o(t, e, n) {
      e[n] = 255 & t, e[n + 1] = t >>> 8 & 255, e[n + 2] = t >>> 16 & 255, e[n + 3] = t >>> 24
    }

    function i(t, e, n) {
      e[n] = t >>> 24, e[n + 1] = t >>> 16 & 255, e[n + 2] = t >>> 8 & 255, e[n + 3] = 255 & t
    }

    function a(t, e) {
      return (t[e] | t[e + 1] << 8 | t[e + 2] << 16 | t[e + 3] << 24) >>> 0
    }

    function s(t, e) {
      return (t[e] << 24 | t[e + 1] << 16 | t[e + 2] << 8 | t[e + 3]) >>> 0
    }
    t.exports = r(r)
  }, function(module, exports, __webpack_require__) {
    "use strict";

    function inquire(moduleName) {
      try {
        var mod = eval("quire".replace(/^/, "re"))(moduleName);
        if (mod && (mod.length || Object.keys(mod).length)) return mod
      } catch (t) {}
      return null
    }
    module.exports = inquire
  }, function(t, e, n) {
    "use strict";
    var r = e;
    r.length = function t(e) {
      for (var n = 0, r = 0, o = 0; o < e.length; ++o) r = e.charCodeAt(o), r < 128 ? n += 1 : r < 2048 ? n += 2 : 55296 == (64512 & r) && 56320 == (64512 & e.charCodeAt(o + 1)) ? (++o, n += 4) : n += 3;
      return n
    }, r.read = function t(e, n, r) {
      if (r - n < 1) return "";
      for (var o = null, i = [], a = 0, s; n < r;) s = e[n++], s < 128 ? i[a++] = s : s > 191 && s < 224 ? i[a++] = (31 & s) << 6 | 63 & e[n++] : s > 239 && s < 365 ? (s = ((7 & s) << 18 | (63 & e[n++]) << 12 | (63 & e[n++]) << 6 | 63 & e[n++]) - 65536, i[a++] = 55296 + (s >> 10), i[a++] = 56320 + (1023 & s)) : i[a++] = (15 & s) << 12 | (63 & e[n++]) << 6 | 63 & e[n++], a > 8191 && ((o || (o = [])).push(String.fromCharCode.apply(String, i)), a = 0);
      return o ? (a && o.push(String.fromCharCode.apply(String, i.slice(0, a))), o.join("")) : String.fromCharCode.apply(String, i.slice(0, a))
    }, r.write = function t(e, n, r) {
      for (var o = r, i, a, s = 0; s < e.length; ++s) i = e.charCodeAt(s), i < 128 ? n[r++] = i : i < 2048 ? (n[r++] = i >> 6 | 192, n[r++] = 63 & i | 128) : 55296 == (64512 & i) && 56320 == (64512 & (a = e.charCodeAt(s + 1))) ? (i = 65536 + ((1023 & i) << 10) + (1023 & a), ++s, n[r++] = i >> 18 | 240, n[r++] = i >> 12 & 63 | 128, n[r++] = i >> 6 & 63 | 128, n[r++] = 63 & i | 128) : (n[r++] = i >> 12 | 224, n[r++] = i >> 6 & 63 | 128, n[r++] = 63 & i | 128);
      return r - o
    }
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      var r = n || 8192,
        o = r >>> 1,
        i = null,
        a = r;
      return function n(s) {
        if (s < 1 || s > o) return t(s);
        a + s > r && (i = t(r), a = 0);
        var u = e.call(i, a, a += s);
        return 7 & a && (a = 1 + (7 | a)), u
      }
    }
    t.exports = r
  }, function(t, e, n) {
    "use strict";

    function r(t, e) {
      this.lo = t >>> 0, this.hi = e >>> 0
    }
    t.exports = r;
    var o = n(33),
      i = r.zero = new r(0, 0);
    i.toNumber = function() {
      return 0
    }, i.zzEncode = i.zzDecode = function() {
      return this
    }, i.length = function() {
      return 1
    };
    var a = r.zeroHash = "\0\0\0\0\0\0\0\0";
    r.fromNumber = function t(e) {
      if (0 === e) return i;
      var n = e < 0;
      n && (e = -e);
      var o = e >>> 0,
        a = (e - o) / 4294967296 >>> 0;
      return n && (a = ~a >>> 0, o = ~o >>> 0, ++o > 4294967295 && (o = 0, ++a > 4294967295 && (a = 0))), new r(o, a)
    }, r.from = function t(e) {
      if ("number" == typeof e) return r.fromNumber(e);
      if (o.isString(e)) {
        if (!o.Long) return r.fromNumber(parseInt(e, 10));
        e = o.Long.fromString(e)
      }
      return e.low || e.high ? new r(e.low >>> 0, e.high >>> 0) : i
    }, r.prototype.toNumber = function t(e) {
      if (!e && this.hi >>> 31) {
        var n = 1 + ~this.lo >>> 0,
          r = ~this.hi >>> 0;
        return n || (r = r + 1 >>> 0), -(n + 4294967296 * r)
      }
      return this.lo + 4294967296 * this.hi
    }, r.prototype.toLong = function t(e) {
      return o.Long ? new o.Long(0 | this.lo, 0 | this.hi, Boolean(e)) : {
        low: 0 | this.lo,
        high: 0 | this.hi,
        unsigned: Boolean(e)
      }
    };
    var s = String.prototype.charCodeAt;
    r.fromHash = function t(e) {
      return e === a ? i : new r((s.call(e, 0) | s.call(e, 1) << 8 | s.call(e, 2) << 16 | s.call(e, 3) << 24) >>> 0, (s.call(e, 4) | s.call(e, 5) << 8 | s.call(e, 6) << 16 | s.call(e, 7) << 24) >>> 0)
    }, r.prototype.toHash = function t() {
      return String.fromCharCode(255 & this.lo, this.lo >>> 8 & 255, this.lo >>> 16 & 255, this.lo >>> 24, 255 & this.hi, this.hi >>> 8 & 255, this.hi >>> 16 & 255, this.hi >>> 24)
    }, r.prototype.zzEncode = function t() {
      var e = this.hi >> 31;
      return this.hi = ((this.hi << 1 | this.lo >>> 31) ^ e) >>> 0, this.lo = (this.lo << 1 ^ e) >>> 0, this
    }, r.prototype.zzDecode = function t() {
      var e = -(1 & this.lo);
      return this.lo = ((this.lo >>> 1 | this.hi << 31) ^ e) >>> 0, this.hi = (this.hi >>> 1 ^ e) >>> 0, this
    }, r.prototype.length = function t() {
      var e = this.lo,
        n = (this.lo >>> 28 | this.hi << 4) >>> 0,
        r = this.hi >>> 24;
      return 0 === r ? 0 === n ? e < 16384 ? e < 128 ? 1 : 2 : e < 2097152 ? 3 : 4 : n < 16384 ? n < 128 ? 5 : 6 : n < 2097152 ? 7 : 8 : r < 128 ? 9 : 10
    }
  }, function(t, e, n) {
    "use strict";

    function r() {
      i.call(this)
    }

    function o(t, e, n) {
      t.length < 40 ? a.utf8.write(t, e, n) : e.utf8Write(t, n)
    }
    t.exports = r;
    var i = n(167);
    (r.prototype = Object.create(i.prototype)).constructor = r;
    var a = n(33),
      s = a.Buffer;
    r.alloc = function t(e) {
      return (r.alloc = a._Buffer_allocUnsafe)(e)
    };
    var u = s && s.prototype instanceof Uint8Array && "set" === s.prototype.set.name ? function t(e, n, r) {
      n.set(e, r)
    } : function t(e, n, r) {
      if (e.copy) e.copy(n, r, 0, e.length);
      else
        for (var o = 0; o < e.length;) n[r++] = e[o++]
    };
    r.prototype.bytes = function t(e) {
      a.isString(e) && (e = a._Buffer_from(e, "base64"));
      var n = e.length >>> 0;
      return this.uint32(n), n && this._push(u, n, e), this
    }, r.prototype.string = function t(e) {
      var n = s.byteLength(e);
      return this.uint32(n), n && this._push(o, n, e), this
    }
  }, function(t, e, n) {
    "use strict";

    function r(t) {
      o.call(this, t)
    }
    t.exports = r;
    var o = n(168);
    (r.prototype = Object.create(o.prototype)).constructor = r;
    var i = n(33);
    i.Buffer && (r.prototype._slice = i.Buffer.prototype.slice), r.prototype.string = function t() {
      var e = this.uint32();
      return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + e, this.len))
    }
  }, function(t, e, n) {
    "use strict";
    e.Service = n(471)
  }, function(t, e, n) {
    "use strict";

    function r(t, e, n) {
      if ("function" != typeof t) throw TypeError("rpcImpl must be a function");
      o.EventEmitter.call(this), this.rpcImpl = t, this.requestDelimited = Boolean(e), this.responseDelimited = Boolean(n)
    }
    t.exports = r;
    var o = n(33);
    (r.prototype = Object.create(o.EventEmitter.prototype)).constructor = r, r.prototype.rpcCall = function t(e, n, r, i, a) {
      if (!i) throw TypeError("request must be specified");
      var s = this;
      if (!a) return o.asPromise(t, s, e, n, r, i);
      if (!s.rpcImpl) return void setTimeout(function() {
        a(Error("already ended"))
      }, 0);
      try {
        return s.rpcImpl(e, n[s.requestDelimited ? "encodeDelimited" : "encode"](i).finish(), function t(n, o) {
          if (n) return s.emit("error", n, e), a(n);
          if (null === o) return void s.end(!0);
          if (!(o instanceof r)) try {
            o = r[s.responseDelimited ? "decodeDelimited" : "decode"](o)
          } catch (n) {
            return s.emit("error", n, e), a(n)
          }
          return s.emit("data", o, e), a(null, o)
        })
      } catch (t) {
        return s.emit("error", t, e), void setTimeout(function() {
          a(t)
        }, 0)
      }
    }, r.prototype.end = function t(e) {
      return this.rpcImpl && (e || this.rpcImpl(null, null, null), this.rpcImpl = null, this.emit("end").off()), this
    }
  }, function(t, e, n) {
    "use strict";
    t.exports = {}
  }, function(t, e) {}, function(t, e, n) {
    function r(t) {
      return "number" == typeof t && i(t)
    }
    var o = n(18),
      i = o.isFinite;
    t.exports = r
  }, function(t, e, n) {
    function r(t) {
      return (null == t ? 0 : t.length) ? o(t, i) : []
    }
    var o = n(152),
      i = 1 / 0;
    t.exports = r
  }, function(t, e, n) {
    "use strict";
    var r = n(166),
      o = n(8),
      i = o({
        args: ["array", "scalar", "index"],
        body: function t(e, n, r) {
          var o = n,
            i;
          for (i = 0; i < r.length - 1; ++i) o = o[r[i]];
          o[r[r.length - 1]] = e
        }
      });
    t.exports = function t(e) {
      var n = r(e.shape);
      return i(e, n), n
    }
  }])
});