UNPKG

@spz-loader/core

Version:
744 lines 252 kB
var TI = (() => { var a = import.meta.url; return async function(R = {}) { var s, D = R, H, t, P = new Promise((I, A) => { H = I, t = A; }), DI = typeof window == "object", wA = typeof WorkerGlobalScope < "u", z = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && process.type != "renderer"; if (z) { const { createRequire: I } = await Promise.resolve().then(() => XI); let A = import.meta.url; A.startsWith("data:") && (A = "/"); var FA = I(A); } var tA = Object.assign({}, D), GA = "./this.program", K = "", v; if (z) { var iI = FA("fs"), rA = FA("path"); import.meta.url.startsWith("data:") || (K = rA.dirname(FA("url").fileURLToPath(import.meta.url)) + "/"), v = (I) => (I = GI(I) ? new URL(I) : rA.normalize(I), iI.readFileSync(I)), !D.thisProgram && 1 < process.argv.length && (GA = process.argv[1].replace(/\\/g, "/")), process.argv.slice(2); } else (DI || wA) && (wA ? K = self.location.href : typeof document < "u" && document.currentScript && (K = document.currentScript.src), a && (K = a), K.startsWith("blob:") ? K = "" : K = K.substr(0, K.replace(/[?#].*/, "").lastIndexOf("/") + 1), wA && (v = (I) => { var A = new XMLHttpRequest(); return A.open("GET", I, !1), A.responseType = "arraybuffer", A.send(null), new Uint8Array(A.response); })); var oI = D.print || console.log.bind(console), $ = D.printErr || console.error.bind(console); Object.assign(D, tA), tA = null, D.thisProgram && (GA = D.thisProgram); var KA = D.wasmBinary, _, nA = !1, Z, S, V, AA, W, y, fA, eA; function qA() { var I = _.buffer; D.HEAP8 = Z = new Int8Array(I), D.HEAP16 = V = new Int16Array(I), D.HEAPU8 = S = new Uint8Array(I), D.HEAPU16 = AA = new Uint16Array(I), D.HEAP32 = W = new Int32Array(I), D.HEAPU32 = y = new Uint32Array(I), D.HEAPF32 = fA = new Float32Array(I), D.HEAPF64 = eA = new Float64Array(I); } var dA = [], lA = [], WA = []; function wI() { var I = D.preRun.shift(); dA.unshift(I); } var q = 0, p = null; function xA(I) { var A; throw (A = D.onAbort) == null || A.call(D, I), I = "Aborted(" + I + ")", $(I), nA = !0, I = new WebAssembly.RuntimeError(I + ". Build with -sASSERTIONS for more info."), t(I), I; } var FI = (I) => I.startsWith("data:application/octet-stream;base64,"), GI = (I) => I.startsWith("file://"), aA; function aI() { var I = aA; return Promise.resolve().then(() => { if (I == aA && KA) var A = new Uint8Array(KA); else { if (FI(I)) if (A = I.slice(37), typeof z < "u" && z) A = Buffer.from(A, "base64"), A = new Uint8Array(A.buffer, A.byteOffset, A.length); else { A = atob(A); for (var B = new Uint8Array(A.length), g = 0; g < A.length; ++g) B[g] = A.charCodeAt(g); A = B; } else A = void 0; if (!A) if (v) A = v(I); else throw "both async and sync fetching of the wasm failed"; } return A; }); } function RI(I, A) { return aI().then((B) => WebAssembly.instantiate(B, I)).then(A, (B) => { $(`failed to asynchronously prepare wasm: ${B}`), xA(B); }); } function hI(I, A) { return RI(I, A); } var RA = (I) => { for (; 0 < I.length; ) I.shift()(D); }, IA = {}, TA = (I) => { for (; I.length; ) { var A = I.pop(); I.pop()(A); } }; function j(I) { return this.fromWireType(y[I >> 2]); } var x = {}, d = {}, BA = {}, O, l = (I, A, B) => { function g(E) { if (E = B(E), E.length !== I.length) throw new O("Mismatched type converter count"); for (var o = 0; o < I.length; ++o) r(I[o], E[o]); } I.forEach((E) => BA[E] = A); var Q = Array(A.length), C = [], i = 0; A.forEach((E, o) => { d.hasOwnProperty(E) ? Q[o] = d[E] : (C.push(E), x.hasOwnProperty(E) || (x[E] = []), x[E].push(() => { Q[o] = d[E], ++i, i === C.length && g(Q); })); }), C.length === 0 && g(Q); }, ZA, k = (I) => { for (var A = ""; S[I]; ) A += ZA[S[I++]]; return A; }, G, sI = (I) => { throw new G(I); }; function yI(I, A, B = {}) { var g = A.name; if (!I) throw new G(`type "${g}" must have a positive integer typeid pointer`); if (d.hasOwnProperty(I)) { if (B.sa) return; throw new G(`Cannot register type '${g}' twice`); } d[I] = A, delete BA[I], x.hasOwnProperty(I) && (A = x[I], delete x[I], A.forEach((Q) => Q())); } function r(I, A, B = {}) { return yI(I, A, B); } var hA = (I) => { throw new G(I.K.N.L.name + " instance already deleted"); }, sA = !1, VA = () => { }, pA = (I, A, B) => A === B ? I : B.R === void 0 ? null : (I = pA(I, A, B.R), I === null ? null : B.la(I)), jA = {}, NI = {}, MI = (I, A) => { if (A === void 0) throw new G("ptr should not be undefined"); for (; I.R; ) A = I.aa(A), I = I.R; return NI[A]; }, gA = (I, A) => { if (!A.N || !A.M) throw new O("makeClassHandle requires ptr and ptrType"); if (!!A.S != !!A.P) throw new O("Both smartPtrType and smartPtr must be specified"); return A.count = { value: 1 }, X(Object.create( I, { K: { value: A, writable: !0 } } )); }, X = (I) => typeof FinalizationRegistry > "u" ? (X = (A) => A, I) : (sA = new FinalizationRegistry((A) => { A = A.K, --A.count.value, A.count.value === 0 && (A.P ? A.S.U(A.P) : A.N.L.U(A.M)); }), X = (A) => { var B = A.K; return B.P && sA.register(A, { K: B }, A), A; }, VA = (A) => { sA.unregister(A); }, X(I)); function QA() { } var CA = (I, A) => Object.defineProperty(A, "name", { value: I }), OA = (I, A, B) => { if (I[A].O === void 0) { var g = I[A]; I[A] = function(...Q) { if (!I[A].O.hasOwnProperty(Q.length)) throw new G(`Function '${B}' called with an invalid number of arguments (${Q.length}) - expects one of (${I[A].O})!`); return I[A].O[Q.length].apply(this, Q); }, I[A].O = [], I[A].O[g.Y] = g; } }, XA = (I, A, B) => { if (D.hasOwnProperty(I)) { if (B === void 0 || D[I].O !== void 0 && D[I].O[B] !== void 0) throw new G(`Cannot register public name '${I}' twice`); if (OA(D, I, I), D[I].O.hasOwnProperty(B)) throw new G(`Cannot register multiple overloads of a function with the same number of arguments (${B})!`); D[I].O[B] = A; } else D[I] = A, D[I].Y = B; }, UI = (I) => { I = I.replace(/[^a-zA-Z0-9_]/g, "$"); var A = I.charCodeAt(0); return 48 <= A && 57 >= A ? `_${I}` : I; }; function SI(I, A, B, g, Q, C, i, E) { this.name = I, this.constructor = A, this.X = B, this.U = g, this.R = Q, this.na = C, this.aa = i, this.la = E, this.ua = []; } var yA = (I, A, B) => { for (; A !== B; ) { if (!A.aa) throw new G(`Expected null or instance of ${B.name}, got an instance of ${A.name}`); I = A.aa(I), A = A.R; } return I; }; function kI(I, A) { if (A === null) { if (this.ea) throw new G(`null is not a valid ${this.name}`); return 0; } if (!A.K) throw new G(`Cannot pass "${JA(A)}" as a ${this.name}`); if (!A.K.M) throw new G(`Cannot pass deleted object as a pointer of type ${this.name}`); return yA(A.K.M, A.K.N.L, this.L); } function JI(I, A) { if (A === null) { if (this.ea) throw new G(`null is not a valid ${this.name}`); if (this.da) { var B = this.fa(); return I !== null && I.push(this.U, B), B; } return 0; } if (!A || !A.K) throw new G(`Cannot pass "${JA(A)}" as a ${this.name}`); if (!A.K.M) throw new G(`Cannot pass deleted object as a pointer of type ${this.name}`); if (!this.ba && A.K.N.ba) throw new G(`Cannot convert argument of type ${A.K.S ? A.K.S.name : A.K.N.name} to parameter type ${this.name}`); if (B = yA(A.K.M, A.K.N.L, this.L), this.da) { if (A.K.P === void 0) throw new G("Passing raw pointer to smart pointer is illegal"); switch (this.za) { case 0: if (A.K.S === this) B = A.K.P; else throw new G(`Cannot convert argument of type ${A.K.S ? A.K.S.name : A.K.N.name} to parameter type ${this.name}`); break; case 1: B = A.K.P; break; case 2: if (A.K.S === this) B = A.K.P; else { var g = A.clone(); B = this.va(B, kA(() => g.delete())), I !== null && I.push(this.U, B); } break; default: throw new G("Unsupporting sharing policy"); } } return B; } function LI(I, A) { if (A === null) { if (this.ea) throw new G(`null is not a valid ${this.name}`); return 0; } if (!A.K) throw new G(`Cannot pass "${JA(A)}" as a ${this.name}`); if (!A.K.M) throw new G(`Cannot pass deleted object as a pointer of type ${this.name}`); if (A.K.N.ba) throw new G(`Cannot convert argument of type ${A.K.N.name} to parameter type ${this.name}`); return yA(A.K.M, A.K.N.L, this.L); } function EA(I, A, B, g, Q, C, i, E, o, w, F) { this.name = I, this.L = A, this.ea = B, this.ba = g, this.da = Q, this.ta = C, this.za = i, this.ja = E, this.fa = o, this.va = w, this.U = F, Q || A.R !== void 0 ? this.toWireType = JI : (this.toWireType = g ? kI : LI, this.T = null); } var uA = (I, A, B) => { if (!D.hasOwnProperty(I)) throw new O("Replacing nonexistent public symbol"); D[I].O !== void 0 && B !== void 0 ? D[I].O[B] = A : (D[I] = A, D[I].Y = B); }, NA, YI = (I, A, B = []) => (I.includes("j") ? (I = I.replace(/p/g, "i"), A = (0, D["dynCall_" + I])(A, ...B)) : A = NA.get(A)(...B), A), HI = (I, A) => (...B) => YI(I, A, B), c = (I, A) => { I = k(I); var B = I.includes("j") ? HI(I, A) : NA.get(A); if (typeof B != "function") throw new G(`unknown function pointer with signature ${I}: ${A}`); return B; }, mA, bA = (I) => { I = QI(I); var A = k(I); return n(I), A; }, DA = (I, A) => { function B(C) { Q[C] || d[C] || (BA[C] ? BA[C].forEach(B) : (g.push(C), Q[C] = !0)); } var g = [], Q = {}; throw A.forEach(B), new mA(`${I}: ` + g.map(bA).join([", "])); }, MA = (I, A) => { for (var B = [], g = 0; g < I; g++) B.push(y[A + 4 * g >> 2]); return B; }; function PA(I) { for (var A = 1; A < I.length; ++A) if (I[A] !== null && I[A].T === void 0) return !0; return !1; } function cI(I) { var A = Function; if (!(A instanceof Function)) throw new TypeError(`new_ called with constructor type ${typeof A} which is not a function`); var B = CA(A.name || "unknownFunctionName", function() { }); return B.prototype = A.prototype, B = new B(), I = A.apply(B, I), I instanceof Object ? I : B; } function UA(I, A, B, g, Q, C) { var i = A.length; if (2 > i) throw new G("argTypes array size mismatch! Must at least get return value and 'this' types!"); var E = A[1] !== null && B !== null, o = PA(A); for (B = A[0].name !== "void", g = [I, sI, g, Q, TA, A[0], A[1]], Q = 0; Q < i - 2; ++Q) g.push(A[Q + 2]); if (!o) for (Q = E ? 1 : 2; Q < A.length; ++Q) A[Q].T !== null && g.push(A[Q].T); o = PA(A), Q = A.length - 2; var w = [], F = ["fn"]; for (E && F.push("thisWired"), i = 0; i < Q; ++i) w.push(`arg${i}`), F.push(`arg${i}Wired`); w = w.join(","), F = F.join(","), w = `return function (${w}) { `, o && (w += `var destructors = []; `); var h = o ? "destructors" : "null", N = "humanName throwBindingError invoker fn runDestructors retType classParam".split(" "); for (E && (w += `var thisWired = classParam['toWireType'](${h}, this); `), i = 0; i < Q; ++i) w += `var arg${i}Wired = argType${i}['toWireType'](${h}, arg${i}); `, N.push(`argType${i}`); if (w += (B || C ? "var rv = " : "") + `invoker(${F}); `, o) w += `runDestructors(destructors); `; else for (i = E ? 1 : 2; i < A.length; ++i) C = i === 1 ? "thisWired" : "arg" + (i - 2) + "Wired", A[i].T !== null && (w += `${C}_dtor(${C}); `, N.push(`${C}_dtor`)); B && (w += `var ret = retType['fromWireType'](rv); return ret; `); let [U, M] = [N, w + `} `]; return U.push(M), A = cI(U)(...g), CA(I, A); } var zA = (I) => { I = I.trim(); const A = I.indexOf("("); return A !== -1 ? I.substr(0, A) : I; }, SA = [], e = [], vA = (I) => { 9 < I && --e[I + 1] === 0 && (e[I] = void 0, SA.push(I)); }, kA = (I) => { switch (I) { case void 0: return 2; case null: return 4; case !0: return 6; case !1: return 8; default: const A = SA.pop() || e.length; return e[A] = I, e[A + 1] = 1, A; } }, $A = { name: "emscripten::val", fromWireType: (I) => { if (!I) throw new G("Cannot use deleted val. handle = " + I); var A = e[I]; return vA(I), A; }, toWireType: (I, A) => kA(A), V: 8, readValueFromPointer: j, T: null }, JA = (I) => { if (I === null) return "null"; var A = typeof I; return A === "object" || A === "array" || A === "function" ? I.toString() : "" + I; }, tI = (I, A) => { switch (A) { case 4: return function(B) { return this.fromWireType(fA[B >> 2]); }; case 8: return function(B) { return this.fromWireType(eA[B >> 3]); }; default: throw new TypeError(`invalid float width (${A}): ${I}`); } }, rI = (I, A, B) => { switch (A) { case 1: return B ? (g) => Z[g] : (g) => S[g]; case 2: return B ? (g) => V[g >> 1] : (g) => AA[g >> 1]; case 4: return B ? (g) => W[g >> 2] : (g) => y[g >> 2]; default: throw new TypeError(`invalid integer width (${A}): ${I}`); } }, KI = Object.assign( { optional: !0 }, $A ), u = (I, A, B) => { var g = S; if (0 < B) { B = A + B - 1; for (var Q = 0; Q < I.length; ++Q) { var C = I.charCodeAt(Q); if (55296 <= C && 57343 >= C) { var i = I.charCodeAt(++Q); C = 65536 + ((C & 1023) << 10) | i & 1023; } if (127 >= C) { if (A >= B) break; g[A++] = C; } else { if (2047 >= C) { if (A + 1 >= B) break; g[A++] = 192 | C >> 6; } else { if (65535 >= C) { if (A + 2 >= B) break; g[A++] = 224 | C >> 12; } else { if (A + 3 >= B) break; g[A++] = 240 | C >> 18, g[A++] = 128 | C >> 12 & 63; } g[A++] = 128 | C >> 6 & 63; } g[A++] = 128 | C & 63; } } g[A] = 0; } }, _A = typeof TextDecoder < "u" ? new TextDecoder() : void 0, AI = (I, A = 0, B = NaN) => { var g = A + B; for (B = A; I[B] && !(B >= g); ) ++B; if (16 < B - A && I.buffer && _A) return _A.decode(I.subarray(A, B)); for (g = ""; A < B; ) { var Q = I[A++]; if (Q & 128) { var C = I[A++] & 63; if ((Q & 224) == 192) g += String.fromCharCode((Q & 31) << 6 | C); else { var i = I[A++] & 63; Q = (Q & 240) == 224 ? (Q & 15) << 12 | C << 6 | i : (Q & 7) << 18 | C << 12 | i << 6 | I[A++] & 63, 65536 > Q ? g += String.fromCharCode(Q) : (Q -= 65536, g += String.fromCharCode(55296 | Q >> 10, 56320 | Q & 1023)); } } else g += String.fromCharCode(Q); } return g; }, II = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, nI = (I, A) => { for (var B = I >> 1, g = B + A / 2; !(B >= g) && AA[B]; ) ++B; if (B <<= 1, 32 < B - I && II) return II.decode(S.subarray(I, B)); for (B = "", g = 0; !(g >= A / 2); ++g) { var Q = V[I + 2 * g >> 1]; if (Q == 0) break; B += String.fromCharCode(Q); } return B; }, fI = (I, A, B) => { if (B ?? (B = 2147483647), 2 > B) return 0; B -= 2; var g = A; B = B < 2 * I.length ? B / 2 : I.length; for (var Q = 0; Q < B; ++Q) V[A >> 1] = I.charCodeAt(Q), A += 2; return V[A >> 1] = 0, A - g; }, eI = (I) => 2 * I.length, qI = (I, A) => { for (var B = 0, g = ""; !(B >= A / 4); ) { var Q = W[I + 4 * B >> 2]; if (Q == 0) break; ++B, 65536 <= Q ? (Q -= 65536, g += String.fromCharCode(55296 | Q >> 10, 56320 | Q & 1023)) : g += String.fromCharCode(Q); } return g; }, dI = (I, A, B) => { if (B ?? (B = 2147483647), 4 > B) return 0; var g = A; B = g + B - 4; for (var Q = 0; Q < I.length; ++Q) { var C = I.charCodeAt(Q); if (55296 <= C && 57343 >= C) { var i = I.charCodeAt(++Q); C = 65536 + ((C & 1023) << 10) | i & 1023; } if (W[A >> 2] = C, A += 4, A + 4 > B) break; } return W[A >> 2] = 0, A - g; }, lI = (I) => { for (var A = 0, B = 0; B < I.length; ++B) { var g = I.charCodeAt(B); 55296 <= g && 57343 >= g && ++B, A += 4; } return A; }, LA = {}, BI = () => { if (!YA) { var I = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", _: GA || "./this.program" }, A; for (A in LA) LA[A] === void 0 ? delete I[A] : I[A] = LA[A]; var B = []; for (A in I) B.push(`${A}=${I[A]}`); YA = B; } return YA; }, YA, WI = [null, [], []]; O = D.InternalError = class extends Error { constructor(I) { super(I), this.name = "InternalError"; } }; for (var gI = Array(256), iA = 0; 256 > iA; ++iA) gI[iA] = String.fromCharCode(iA); ZA = gI, G = D.BindingError = class extends Error { constructor(I) { super(I), this.name = "BindingError"; } }, Object.assign(QA.prototype, { isAliasOf: function(I) { if (!(this instanceof QA && I instanceof QA)) return !1; var A = this.K.N.L, B = this.K.M; I.K = I.K; var g = I.K.N.L; for (I = I.K.M; A.R; ) B = A.aa(B), A = A.R; for (; g.R; ) I = g.aa(I), g = g.R; return A === g && B === I; }, clone: function() { if (this.K.M || hA(this), this.K.$) return this.K.count.value += 1, this; var I = X, A = Object, B = A.create, g = Object.getPrototypeOf(this), Q = this.K; return I = I(B.call(A, g, { K: { value: { count: Q.count, Z: Q.Z, $: Q.$, M: Q.M, N: Q.N, P: Q.P, S: Q.S } } })), I.K.count.value += 1, I.K.Z = !1, I; }, delete() { if (this.K.M || hA(this), this.K.Z && !this.K.$) throw new G("Object already scheduled for deletion"); VA(this); var I = this.K; --I.count.value, I.count.value === 0 && (I.P ? I.S.U(I.P) : I.N.L.U(I.M)), this.K.$ || (this.K.P = void 0, this.K.M = void 0); }, isDeleted: function() { return !this.K.M; }, deleteLater: function() { if (this.K.M || hA(this), this.K.Z && !this.K.$) throw new G("Object already scheduled for deletion"); return this.K.Z = !0, this; } }), Object.assign(EA.prototype, { oa(I) { return this.ja && (I = this.ja(I)), I; }, ha(I) { var A; (A = this.U) == null || A.call(this, I); }, V: 8, readValueFromPointer: j, fromWireType: function(I) { function A() { return this.da ? gA(this.L.X, { N: this.ta, M: B, S: this, P: I }) : gA(this.L.X, { N: this, M: I }); } var B = this.oa(I); if (!B) return this.ha(I), null; var g = MI(this.L, B); if (g !== void 0) return g.K.count.value === 0 ? (g.K.M = B, g.K.P = I, g.clone()) : (g = g.clone(), this.ha(I), g); if (g = this.L.na(B), g = jA[g], !g) return A.call(this); g = this.ba ? g.ka : g.pointerType; var Q = pA(B, this.L, g.L); return Q === null ? A.call(this) : this.da ? gA(g.L.X, { N: g, M: Q, S: this, P: I }) : gA(g.L.X, { N: g, M: Q }); } }), mA = D.UnboundTypeError = ((I, A) => { var B = CA(A, function(g) { this.name = A, this.message = g, g = Error(g).stack, g !== void 0 && (this.stack = this.toString() + ` ` + g.replace(/^Error(:[^\n]*)?\n/, "")); }); return B.prototype = Object.create(I.prototype), B.prototype.constructor = B, B.prototype.toString = function() { return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; }, B; })(Error, "UnboundTypeError"), e.push(0, 1, void 0, 1, null, 1, !0, 1, !1, 1), D.count_emval_handles = () => e.length / 2 - 5 - SA.length; var xI = { u: () => { xA(""); }, y: (I) => { var A = IA[I]; delete IA[I]; var B = A.fa, g = A.U, Q = A.ia, C = Q.map((i) => i.ra).concat(Q.map((i) => i.xa)); l([I], C, (i) => { var E = {}; return Q.forEach((o, w) => { var F = i[w], h = o.pa, N = o.qa, U = i[w + Q.length], M = o.wa, Y = o.ya; E[o.ma] = { read: (f) => F.fromWireType(h(N, f)), write: (f, m) => { var L = []; M(Y, f, U.toWireType(L, m)), TA(L); } }; }), [{ name: A.name, fromWireType: (o) => { var w = {}, F; for (F in E) w[F] = E[F].read(o); return g(o), w; }, toWireType: (o, w) => { for (var F in E) if (!(F in w)) throw new TypeError(`Missing field: "${F}"`); var h = B(); for (F in E) E[F].write(h, w[F]); return o !== null && o.push(g, h), h; }, V: 8, readValueFromPointer: j, T: g }]; }); }, p: () => { }, w: (I, A, B, g) => { A = k(A), r(I, { name: A, fromWireType: function(Q) { return !!Q; }, toWireType: function(Q, C) { return C ? B : g; }, V: 8, readValueFromPointer: function(Q) { return this.fromWireType(S[Q]); }, T: null }); }, i: (I, A, B, g, Q, C, i, E, o, w, F, h, N) => { F = k(F), C = c(Q, C), E && (E = c(i, E)), w && (w = c(o, w)), N = c(h, N); var U = UI(F); XA(U, function() { DA(`Cannot construct ${F} due to unbound types`, [g]); }), l([I, A, B], g ? [g] : [], (M) => { if (M = M[0], g) var Y = M.L, f = Y.X; else f = QA.prototype; M = CA(F, function(...cA) { if (Object.getPrototypeOf(this) !== m) throw new G("Use 'new' to construct " + F); if (L.W === void 0) throw new G(F + " has no accessible constructor"); var EI = L.W[cA.length]; if (EI === void 0) throw new G(`Tried to invoke ctor of ${F} with invalid number of parameters (${cA.length}) - expected (${Object.keys(L.W).toString()}) parameters instead!`); return EI.apply(this, cA); }); var m = Object.create(f, { constructor: { value: M } }); M.prototype = m; var L = new SI( F, M, m, N, Y, C, E, w ); if (L.R) { var b; (b = L.R).ga ?? (b.ga = []), L.R.ga.push(L); } return Y = new EA(F, L, !0, !1, !1), b = new EA(F + "*", L, !1, !1, !1), f = new EA(F + " const*", L, !1, !0, !1), jA[I] = { pointerType: b, ka: f }, uA(U, M), [Y, b, f]; }); }, g: (I, A, B, g, Q, C) => { var i = MA(A, B); Q = c(g, Q), l([], [I], (E) => { E = E[0]; var o = `constructor ${E.name}`; if (E.L.W === void 0 && (E.L.W = []), E.L.W[A - 1] !== void 0) throw new G(`Cannot register multiple constructors with identical number of parameters (${A - 1}) for class '${E.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); return E.L.W[A - 1] = () => { DA(`Cannot construct ${E.name} due to unbound types`, i); }, l([], i, (w) => (w.splice(1, 0, null), E.L.W[A - 1] = UA(o, w, null, Q, C), [])), []; }); }, b: (I, A, B, g, Q, C, i, E, o) => { var w = MA(B, g); A = k(A), A = zA(A), C = c(Q, C), l([], [I], (F) => { function h() { DA(`Cannot call ${N} due to unbound types`, w); } F = F[0]; var N = `${F.name}.${A}`; A.startsWith("@@") && (A = Symbol[A.substring(2)]), E && F.L.ua.push(A); var U = F.L.X, M = U[A]; return M === void 0 || M.O === void 0 && M.className !== F.name && M.Y === B - 2 ? (h.Y = B - 2, h.className = F.name, U[A] = h) : (OA( U, A, N ), U[A].O[B - 2] = h), l([], w, (Y) => (Y = UA(N, Y, F, C, i, o), U[A].O === void 0 ? (Y.Y = B - 2, U[A] = Y) : U[A].O[B - 2] = Y, [])), []; }); }, v: (I) => r(I, $A), l: (I, A, B) => { A = k(A), r(I, { name: A, fromWireType: (g) => g, toWireType: (g, Q) => Q, V: 8, readValueFromPointer: tI(A, B), T: null }); }, m: (I, A, B, g, Q, C, i) => { var E = MA(A, B); I = k(I), I = zA(I), Q = c(g, Q), XA(I, function() { DA(`Cannot call ${I} due to unbound types`, E); }, A - 1), l([], E, (o) => (o = [o[0], null].concat(o.slice(1)), uA(I, UA(I, o, null, Q, C, i), A - 1), [])); }, c: (I, A, B, g, Q) => { if (A = k(A), Q === -1 && (Q = 4294967295), Q = (E) => E, g === 0) { var C = 32 - 8 * B; Q = (E) => E << C >>> C; } var i = A.includes("unsigned") ? function(E, o) { return o >>> 0; } : function(E, o) { return o; }; r(I, { name: A, fromWireType: Q, toWireType: i, V: 8, readValueFromPointer: rI(A, B, g !== 0), T: null }); }, a: (I, A, B) => { function g(C) { return new Q(Z.buffer, y[C + 4 >> 2], y[C >> 2]); } var Q = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][A]; B = k(B), r(I, { name: B, fromWireType: g, V: 8, readValueFromPointer: g }, { sa: !0 }); }, h: (I) => { r(I, KI); }, k: (I, A) => { A = k(A); var B = A === "std::string"; r(I, { name: A, fromWireType: function(g) { var Q = y[g >> 2], C = g + 4; if (B) for (var i = C, E = 0; E <= Q; ++E) { var o = C + E; if (E == Q || S[o] == 0) { if (i = i ? AI(S, i, o - i) : "", w === void 0) var w = i; else w += "\0", w += i; i = o + 1; } } else { for (w = Array(Q), E = 0; E < Q; ++E) w[E] = String.fromCharCode(S[C + E]); w = w.join(""); } return n(g), w; }, toWireType: function(g, Q) { Q instanceof ArrayBuffer && (Q = new Uint8Array(Q)); var C, i = typeof Q == "string"; if (!(i || Q instanceof Uint8Array || Q instanceof Uint8ClampedArray || Q instanceof Int8Array)) throw new G("Cannot pass non-string to std::string"); if (B && i) for (var E = C = 0; E < Q.length; ++E) { var o = Q.charCodeAt(E); 127 >= o ? C++ : 2047 >= o ? C += 2 : 55296 <= o && 57343 >= o ? (C += 4, ++E) : C += 3; } else C = Q.length; if (E = HA(4 + C + 1), o = E + 4, y[E >> 2] = C, B && i) u(Q, o, C + 1); else if (i) for (i = 0; i < C; ++i) { var w = Q.charCodeAt(i); if (255 < w) throw n(o), new G("String has UTF-16 code units that do not fit in 8 bits"); S[o + i] = w; } else for (i = 0; i < C; ++i) S[o + i] = Q[i]; return g !== null && g.push(n, E), E; }, V: 8, readValueFromPointer: j, T(g) { n(g); } }); }, e: (I, A, B) => { if (B = k(B), A === 2) var g = nI, Q = fI, C = eI, i = (E) => AA[E >> 1]; else A === 4 && (g = qI, Q = dI, C = lI, i = (E) => y[E >> 2]); r(I, { name: B, fromWireType: (E) => { for (var o = y[E >> 2], w, F = E + 4, h = 0; h <= o; ++h) { var N = E + 4 + h * A; (h == o || i(N) == 0) && (F = g(F, N - F), w === void 0 ? w = F : (w += "\0", w += F), F = N + A); } return n(E), w; }, toWireType: (E, o) => { if (typeof o != "string") throw new G(`Cannot pass non-string to C++ string type ${B}`); var w = C(o), F = HA(4 + w + A); return y[F >> 2] = w / A, Q(o, F + 4, w + A), E !== null && E.push(n, F), F; }, V: 8, readValueFromPointer: j, T(E) { n(E); } }); }, o: (I, A, B, g, Q, C) => { IA[I] = { name: k(A), fa: c(B, g), U: c(Q, C), ia: [] }; }, d: (I, A, B, g, Q, C, i, E, o, w) => { IA[I].ia.push({ ma: k(A), ra: B, pa: c(g, Q), qa: C, xa: i, wa: c(E, o), ya: w }); }, x: (I, A) => { A = k(A), r(I, { Aa: !0, name: A, V: 0, fromWireType: () => { }, toWireType: () => { } }); }, n: vA, f: (I, A) => { var B = d[I]; if (B === void 0) throw I = `_emval_take_value has unknown type ${bA(I)}`, new G(I); return I = B, I = I.readValueFromPointer(A), kA(I); }, q: (I, A, B, g) => { var Q = (/* @__PURE__ */ new Date()).getFullYear(), C = new Date(Q, 0, 1).getTimezoneOffset(); Q = new Date(Q, 6, 1).getTimezoneOffset(), y[I >> 2] = 60 * Math.max(C, Q), W[A >> 2] = +(C != Q), A = (i) => { var E = Math.abs(i); return `UTC${0 <= i ? "-" : "+"}${String(Math.floor(E / 60)).padStart(2, "0")}${String(E % 60).padStart(2, "0")}`; }, I = A(C), A = A(Q), Q < C ? (u(I, B, 17), u(A, g, 17)) : (u(I, g, 17), u(A, B, 17)); }, t: (I) => { var A = S.length; if (I >>>= 0, 2147483648 < I) return !1; for (var B = 1; 4 >= B; B *= 2) { var g = A * (1 + 0.2 / B); g = Math.min(g, I + 100663296); A: { g = (Math.min(2147483648, 65536 * Math.ceil(Math.max(I, g) / 65536)) - _.buffer.byteLength + 65535) / 65536 | 0; try { _.grow(g), qA(); var Q = 1; break A; } catch { } Q = void 0; } if (Q) return !0; } return !1; }, r: (I, A) => { var B = 0; return BI().forEach((g, Q) => { var C = A + B; for (Q = y[I + 4 * Q >> 2] = C, C = 0; C < g.length; ++C) Z[Q++] = g.charCodeAt(C); Z[Q] = 0, B += g.length + 1; }), 0; }, s: (I, A) => { var B = BI(); y[I >> 2] = B.length; var g = 0; return B.forEach((Q) => g += Q.length + 1), y[A >> 2] = g, 0; }, j: (I, A, B, g) => { for (var Q = 0, C = 0; C < B; C++) { var i = y[A >> 2], E = y[A + 4 >> 2]; A += 8; for (var o = 0; o < E; o++) { var w = S[i + o], F = WI[I]; w === 0 || w === 10 ? ((I === 1 ? oI : $)(AI(F)), F.length = 0) : F.push(w); } Q += E; } return y[g >> 2] = Q, 0; } }, J = function() { var B; function I(g) { var Q; return J = g.exports, _ = J.z, qA(), NA = J.B, lA.unshift(J.A), q--, (Q = D.monitorRunDependencies) == null || Q.call(D, q), q == 0 && p && (g = p, p = null, g()), J; } q++, (B = D.monitorRunDependencies) == null || B.call(D, q); var A = { a: xI }; if (D.instantiateWasm) try { return D.instantiateWasm(A, I); } catch (g) { $(`Module.instantiateWasm callback failed with error: ${g}`), t(g); } return aA ?? (aA = "data:application/octet-stream;base64,AGFzbQEAAAAB1AM4YAF/AX9gAn9/AGABfwBgAn9/AX9gA39/fwF/YAN/f38AYAZ/f39/f38Bf2AEf39/fwBgBX9/f39/AX9gBH9/f38Bf2AGf39/f39/AGAFf39/f38AYAh/f39/f39/fwF/YAAAYAd/f39/f39/AX9gB39/f39/f38AYAV/fn5+fgBgBX9/f39+AX9gCn9/f39/f39/f38AYAABf2AFf39+f38AYAh/f39/f39/fwBgBH9+fn8AYAN/fn8BfmAKf39/f39/f39/fwF/YAd/f39/f35+AX9gBn9/f39+fgF/YAJ/fgBgA39/fwF+YAx/f39/f39/f39/f38Bf2AGf39/f35/AX9gD39/f39/f39/f39/f39/fwBgC39/f39/f39/f39/AX9gBH9/f38BfmAGf3x/f39/AX9gBX9/f398AX9gDX9/f39/f39/f39/f38AYAJ/fABgBH5+fn4Bf2ACfn8Bf2ABfwF8YAR/f39+AX5gAn5+AXxgBH9/fn4AYAN/f38BfGADf39/AX1gA39/fgBgAn5+AX1gAn9/AX5gBH9+fn4AYAN+fn4Bf2ACfH8BfGAEf39/fQF/YAl/f39/f39/f38Bf2AEf39/fQBgA39/fQAClwEZAWEBYQAFAWEBYgASAWEBYwALAWEBZAASAWEBZQAFAWEBZgADAWEBZwAKAWEBaAABAWEBaQAkAWEBagAJAWEBawABAWEBbAAFAWEBbQAVAWEBbgACAWEBbwAKAWEBcAAPAWEBcQAHAWEBcgADAWEBcwADAWEBdAAAAWEBdQANAWEBdgACAWEBdwAHAWEBeAABAWEBeQACA4wFigUAAAEDAAACAAABAQEDAxMCEAADBQIAAAIEAAACDQQBBAAAEAMFBwEWCwEABAEADQAAABADAQgAAQEBBQQDAQAAAQEBAQUABAQFAAIDGwAAAwEICAkEACUADAwHDQEAAAEBAQADAAcDAAAFAwYAAwMBAQYEJgMDAAUWAgQBAAEAAQAFAwMYBAAYAQAAAQEAAwcAAQAnAw0CCAUDBQEAAAQCCwEVAAMAAAIBAAAAAQQHAw4DAwIOCQkDCQMABQMFAQEAAAECAQMoAAQABgEKBQcDBQEcAAAABAMAAwsBAgACBB0LBB0LAQcAKQAAEAACAQIJAgUEAgAAAxsBACoDDQ0CAg0AHgYe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An9B8OQBKAIAIgdBASABdCICcUUEQEHw5AEgAiAHcjYCACAEIAM2AgBBGCEBQQgMAQsgAEEZIAFBAXZrQQAgAUEfRxt0IQEgBCgCACEEA0AgBCICKAIEQXhxIABGDQIgAUEddiEEIAFBAXQhASACIARBBHFqIgcoAhAiBA0ACyAHIAM2AhBBGCEBIAIhBEEICyEAIAMiAgwBCyACKAIIIgQgAzYCDCACIAM2AghBGCEAQQghAUEACyEHIAEgA2ogBDYCACADIAI2AgwgACADaiAHNgIAQYzlAUGM5QEoAgBBAWsiAEF/IAAbNgIACwu7CgIFfw9+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4RCACEBUARAQoCAgICAgOD//wAhCgwDCyAKQoCAgICAgMD//wCEIQoMAgsgASALhFAEQEIAIQEMAgsgAiADhFAEQEIAIQEMAgsgC0L///////8/WARAIAVB0ABqIAEgDSABIA0gDVAiBht5IAZBBnStfKciBkEPaxBAQRAgBmshBiAFKQNYIg1CIIghDiAFKQNQIQELIAJC////////P1YNACAFQUBrIAMgDCADIAwgDFAiCBt5IAhBBnStfKciCEEPaxBAIAYgCGtBEGohBiAFKQNIIQwgBSkDQCEDCyADQg+GIgtCgID+/w+DIgIgAUIgiCIEfiIQIAtCIIgiEyABQv////8PgyIBfnwiD0IghiIRIAEgAn58IgsgEVStIAIgDUL/////D4MiDX4iFSAEIBN+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IgMkACADIAE2AgwgACADQQxqEI0BIgBBBGogAhCNARogA0EQaiQAIAALCgAgACgCABCzAwsLACAAKAIAELgDwAs7AQJ/IwBBEGsiASQAIAEgADYCDCABKAIMIgAoAgAiAgRAIAAgAjYCBCAAKAIIGiACECgLIAFBEGokAAsGABCuAQALLQAgAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyAAKAIEIAEoAgQQ0AFFCyQBAX8gACgCACECIAAgATYCACACBEAgAiAAEJkBKAIAEQIACwspAQF/IAIEQCAAIQMDQCADIAE6AAAgA0EBaiEDIAJBAWsiAg0ACwsgAAsNACAAKAIAELIDGiAACw0AIAAoAgAQmwIaIAALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMACxEAIAAgASAAKAIAKAIcEQMAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEOABDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRBAAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQQAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEEQaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAZRSACIAFrQQVIcg0AIAEgAhDFASACQQRrIQQgABAdIgIgABAZaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACws8ACAALAALQQBIBEAgACgCCBogACgCABAoCyAAIAEpAgA3AgAgACABKAIINgIIIAFBADoACyABQQA6AAALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLaQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgASACIANrIgNBgAIgA0GAAk